aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/00-INDEX2
-rw-r--r--Documentation/ABI/README3
-rw-r--r--Documentation/ABI/obsolete/sysfs-driver-hid-roccat-koneplus38
-rw-r--r--Documentation/ABI/obsolete/sysfs-driver-hid-roccat-kovaplus66
-rw-r--r--Documentation/ABI/obsolete/sysfs-driver-hid-roccat-pyra73
-rw-r--r--Documentation/ABI/stable/sysfs-devices-node96
-rw-r--r--Documentation/ABI/stable/sysfs-driver-ib_srp156
-rw-r--r--Documentation/ABI/stable/sysfs-transport-srp19
-rw-r--r--Documentation/ABI/testing/dev-kmsg2
-rw-r--r--Documentation/ABI/testing/sysfs-bus-iio24
-rw-r--r--Documentation/ABI/testing/sysfs-bus-mdio9
-rw-r--r--Documentation/ABI/testing/sysfs-bus-pci34
-rw-r--r--Documentation/ABI/testing/sysfs-class-devfreq44
-rw-r--r--Documentation/ABI/testing/sysfs-class-net-batman-adv11
-rw-r--r--Documentation/ABI/testing/sysfs-class-net-grcan35
-rw-r--r--Documentation/ABI/testing/sysfs-class-net-mesh40
-rw-r--r--Documentation/ABI/testing/sysfs-devices-power33
-rw-r--r--Documentation/ABI/testing/sysfs-devices-sun14
-rw-r--r--Documentation/ABI/testing/sysfs-driver-hid-roccat-isku8
-rw-r--r--Documentation/ABI/testing/sysfs-driver-hid-roccat-koneplus48
-rw-r--r--Documentation/ABI/testing/sysfs-driver-hid-roccat-kovaplus69
-rw-r--r--Documentation/ABI/testing/sysfs-driver-hid-roccat-lua7
-rw-r--r--Documentation/ABI/testing/sysfs-driver-hid-roccat-pyra76
-rw-r--r--Documentation/ABI/testing/sysfs-driver-hid-roccat-savu3
-rw-r--r--Documentation/ABI/testing/sysfs-driver-ppi2
-rw-r--r--Documentation/ABI/testing/sysfs-profiling6
-rw-r--r--Documentation/ABI/testing/sysfs-tty112
-rw-r--r--Documentation/DMA-attributes.txt9
-rw-r--r--Documentation/DocBook/drm.tmpl39
-rw-r--r--Documentation/DocBook/gadget.tmpl2
-rw-r--r--Documentation/DocBook/kernel-api.tmpl3
-rw-r--r--Documentation/DocBook/media/v4l/compat.xml7
-rw-r--r--Documentation/DocBook/media/v4l/io.xml188
-rw-r--r--Documentation/DocBook/media/v4l/v4l2.xml1
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-create-bufs.xml16
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-expbuf.xml212
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-qbuf.xml17
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-reqbufs.xml47
-rw-r--r--Documentation/DocBook/uio-howto.tmpl56
-rw-r--r--Documentation/DocBook/writing-an-alsa-driver.tmpl85
-rw-r--r--Documentation/HOWTO2
-rw-r--r--Documentation/IRQ-domain.txt34
-rw-r--r--Documentation/PCI/pci-iov-howto.txt48
-rw-r--r--Documentation/RCU/RTFP.txt2
-rw-r--r--Documentation/RCU/checklist.txt17
-rw-r--r--Documentation/RCU/listRCU.txt2
-rw-r--r--Documentation/RCU/rcuref.txt61
-rw-r--r--Documentation/RCU/trace.txt396
-rw-r--r--Documentation/RCU/whatisRCU.txt17
-rw-r--r--Documentation/accounting/getdelays.c1
-rw-r--r--Documentation/acpi/enumeration.txt227
-rw-r--r--Documentation/acpi/initrd_table_override.txt94
-rw-r--r--Documentation/aoe/aoe.txt4
-rw-r--r--Documentation/arm/OMAP/DSS10
-rw-r--r--Documentation/arm/sunxi/README19
-rw-r--r--Documentation/arm64/memory.txt2
-rw-r--r--Documentation/backlight/lp855x-driver.txt10
-rw-r--r--Documentation/bus-devices/ti-gpmc.txt122
-rw-r--r--Documentation/cgroups/00-INDEX8
-rw-r--r--Documentation/cgroups/cgroups.txt61
-rw-r--r--Documentation/cgroups/cpusets.txt2
-rw-r--r--Documentation/cgroups/freezer-subsystem.txt63
-rw-r--r--Documentation/cgroups/memory.txt76
-rw-r--r--Documentation/cgroups/net_prio.txt2
-rw-r--r--Documentation/cgroups/resource_counter.txt7
-rw-r--r--Documentation/cpu-hotplug.txt24
-rw-r--r--Documentation/devices.txt3
-rw-r--r--Documentation/devicetree/bindings/arm/altera/socfpga-reset.txt11
-rw-r--r--Documentation/devicetree/bindings/arm/altera/socfpga-system.txt11
-rw-r--r--Documentation/devicetree/bindings/arm/arm-boards4
-rw-r--r--Documentation/devicetree/bindings/arm/armada-370-xp-mpic.txt12
-rw-r--r--Documentation/devicetree/bindings/arm/armada-370-xp-pmsu.txt20
-rw-r--r--Documentation/devicetree/bindings/arm/armada-370-xp-timer.txt1
-rw-r--r--Documentation/devicetree/bindings/arm/atmel-at91.txt6
-rw-r--r--Documentation/devicetree/bindings/arm/bcm/bcm11351.txt9
-rw-r--r--Documentation/devicetree/bindings/arm/calxeda.txt13
-rw-r--r--Documentation/devicetree/bindings/arm/coherency-fabric.txt21
-rw-r--r--Documentation/devicetree/bindings/arm/cpus.txt77
-rw-r--r--Documentation/devicetree/bindings/arm/davinci.txt17
-rw-r--r--Documentation/devicetree/bindings/arm/davinci/nand.txt37
-rw-r--r--Documentation/devicetree/bindings/arm/exynos/power_domain.txt15
-rw-r--r--Documentation/devicetree/bindings/arm/fsl.txt4
-rw-r--r--Documentation/devicetree/bindings/arm/l2cc.txt11
-rw-r--r--Documentation/devicetree/bindings/arm/omap/counter.txt15
-rw-r--r--Documentation/devicetree/bindings/arm/omap/timer.txt31
-rw-r--r--Documentation/devicetree/bindings/arm/spear/shirq.txt48
-rw-r--r--Documentation/devicetree/bindings/arm/vexpress-sysreg.txt50
-rw-r--r--Documentation/devicetree/bindings/arm/vexpress.txt98
-rw-r--r--Documentation/devicetree/bindings/ata/exynos-sata-phy.txt14
-rw-r--r--Documentation/devicetree/bindings/ata/exynos-sata.txt17
-rw-r--r--Documentation/devicetree/bindings/bus/omap-ocp2scp.txt18
-rw-r--r--Documentation/devicetree/bindings/clock/imx23-clock.txt2
-rw-r--r--Documentation/devicetree/bindings/clock/imx25-clock.txt162
-rw-r--r--Documentation/devicetree/bindings/clock/imx28-clock.txt4
-rw-r--r--Documentation/devicetree/bindings/clock/imx5-clock.txt191
-rw-r--r--Documentation/devicetree/bindings/clock/imx6q-clock.txt9
-rw-r--r--Documentation/devicetree/bindings/clock/mvebu-core-clock.txt47
-rw-r--r--Documentation/devicetree/bindings/clock/mvebu-cpu-clock.txt21
-rw-r--r--Documentation/devicetree/bindings/clock/mvebu-gated-clock.txt119
-rw-r--r--Documentation/devicetree/bindings/clock/zynq-7000.txt55
-rw-r--r--Documentation/devicetree/bindings/cpufreq/cpufreq-spear.txt42
-rw-r--r--Documentation/devicetree/bindings/crypto/fsl-sec4.txt5
-rw-r--r--Documentation/devicetree/bindings/dma/mv-xor.txt40
-rw-r--r--Documentation/devicetree/bindings/drm/exynos/hdmi.txt22
-rw-r--r--Documentation/devicetree/bindings/drm/exynos/hdmiddc.txt12
-rw-r--r--Documentation/devicetree/bindings/drm/exynos/hdmiphy.txt12
-rw-r--r--Documentation/devicetree/bindings/drm/exynos/mixer.txt15
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio-poweroff.txt22
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio-stmpe.txt18
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio.txt36
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio_atmel.txt5
-rw-r--r--Documentation/devicetree/bindings/gpio/leds-ns2.txt26
-rw-r--r--Documentation/devicetree/bindings/gpio/spear_spics.txt50
-rw-r--r--Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt191
-rw-r--r--Documentation/devicetree/bindings/hwmon/vexpress.txt23
-rw-r--r--Documentation/devicetree/bindings/i2c/i2c-at91.txt (renamed from Documentation/devicetree/bindings/i2c/atmel-i2c.txt)0
-rw-r--r--Documentation/devicetree/bindings/i2c/i2c-davinci.txt (renamed from Documentation/devicetree/bindings/i2c/davinci.txt)0
-rw-r--r--Documentation/devicetree/bindings/i2c/i2c-gpio.txt (renamed from Documentation/devicetree/bindings/i2c/gpio-i2c.txt)0
-rw-r--r--Documentation/devicetree/bindings/i2c/i2c-imx.txt (renamed from Documentation/devicetree/bindings/i2c/fsl-imx-i2c.txt)4
-rw-r--r--Documentation/devicetree/bindings/i2c/i2c-mpc.txt (renamed from Documentation/devicetree/bindings/i2c/fsl-i2c.txt)0
-rw-r--r--Documentation/devicetree/bindings/i2c/i2c-mux.txt (renamed from Documentation/devicetree/bindings/i2c/mux.txt)0
-rw-r--r--Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt18
-rw-r--r--Documentation/devicetree/bindings/i2c/i2c-nomadik.txt (renamed from Documentation/devicetree/bindings/i2c/nomadik.txt)0
-rw-r--r--Documentation/devicetree/bindings/i2c/i2c-octeon.txt (renamed from Documentation/devicetree/bindings/i2c/cavium-i2c.txt)0
-rw-r--r--Documentation/devicetree/bindings/i2c/i2c-omap.txt (renamed from Documentation/devicetree/bindings/i2c/omap-i2c.txt)0
-rw-r--r--Documentation/devicetree/bindings/i2c/i2c-pnx.txt (renamed from Documentation/devicetree/bindings/i2c/pnx.txt)0
-rw-r--r--Documentation/devicetree/bindings/i2c/i2c-pxa-pci-ce4100.txt (renamed from Documentation/devicetree/bindings/i2c/ce4100-i2c.txt)0
-rw-r--r--Documentation/devicetree/bindings/i2c/i2c-pxa.txt (renamed from Documentation/devicetree/bindings/i2c/mrvl-i2c.txt)18
-rw-r--r--Documentation/devicetree/bindings/i2c/i2c-s3c2410.txt (renamed from Documentation/devicetree/bindings/i2c/samsung-i2c.txt)0
-rw-r--r--Documentation/devicetree/bindings/i2c/i2c-sirf.txt (renamed from Documentation/devicetree/bindings/i2c/sirf-i2c.txt)0
-rw-r--r--Documentation/devicetree/bindings/i2c/i2c-versatile.txt (renamed from Documentation/devicetree/bindings/i2c/arm-versatile.txt)0
-rw-r--r--Documentation/devicetree/bindings/i2c/i2c-xiic.txt (renamed from Documentation/devicetree/bindings/i2c/xiic.txt)0
-rw-r--r--Documentation/devicetree/bindings/i2c/trivial-devices.txt2
-rw-r--r--Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt46
-rw-r--r--Documentation/devicetree/bindings/input/pwm-beeper.txt7
-rw-r--r--Documentation/devicetree/bindings/input/stmpe-keypad.txt39
-rw-r--r--Documentation/devicetree/bindings/input/tca8418_keypad.txt8
-rw-r--r--Documentation/devicetree/bindings/input/touchscreen/bu21013.txt28
-rw-r--r--Documentation/devicetree/bindings/input/touchscreen/mms114.txt34
-rw-r--r--Documentation/devicetree/bindings/input/touchscreen/stmpe.txt43
-rw-r--r--Documentation/devicetree/bindings/interrupt-controller/allwinner,sunxi-ic.txt104
-rw-r--r--Documentation/devicetree/bindings/leds/common.txt23
-rw-r--r--Documentation/devicetree/bindings/leds/leds-gpio.txt (renamed from Documentation/devicetree/bindings/gpio/led.txt)14
-rw-r--r--Documentation/devicetree/bindings/media/s5p-mfc.txt23
-rw-r--r--Documentation/devicetree/bindings/mfd/ab8500.txt27
-rw-r--r--Documentation/devicetree/bindings/mfd/stmpe.txt28
-rw-r--r--Documentation/devicetree/bindings/misc/atmel-ssc.txt15
-rw-r--r--Documentation/devicetree/bindings/mmc/mmc.txt8
-rw-r--r--Documentation/devicetree/bindings/mmc/samsung-sdhci.txt20
-rw-r--r--Documentation/devicetree/bindings/mmc/synopsis-dw-mshc.txt (renamed from Documentation/devicetree/bindings/mmc/synposis-dw-mshc.txt)0
-rw-r--r--Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt1
-rw-r--r--Documentation/devicetree/bindings/mmc/vt8500-sdmmc.txt23
-rw-r--r--Documentation/devicetree/bindings/net/can/grcan.txt28
-rw-r--r--Documentation/devicetree/bindings/net/cdns-emac.txt23
-rw-r--r--Documentation/devicetree/bindings/net/cpsw.txt48
-rw-r--r--Documentation/devicetree/bindings/net/marvell-armada-370-neta.txt23
-rw-r--r--Documentation/devicetree/bindings/net/marvell-orion-mdio.txt35
-rw-r--r--Documentation/devicetree/bindings/net/mdio-gpio.txt9
-rw-r--r--Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt141
-rw-r--r--Documentation/devicetree/bindings/pinctrl/marvell,kirkwood-pinctrl.txt39
-rw-r--r--Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt119
-rw-r--r--Documentation/devicetree/bindings/power_supply/ab8500/btemp.txt16
-rw-r--r--Documentation/devicetree/bindings/power_supply/ab8500/chargalg.txt16
-rw-r--r--Documentation/devicetree/bindings/power_supply/ab8500/charger.txt25
-rw-r--r--Documentation/devicetree/bindings/power_supply/ab8500/fg.txt58
-rw-r--r--Documentation/devicetree/bindings/powerpc/fsl/raideng.txt81
-rw-r--r--Documentation/devicetree/bindings/regulator/gpio-regulator.txt37
-rw-r--r--Documentation/devicetree/bindings/regulator/max8925-regulator.txt40
-rw-r--r--Documentation/devicetree/bindings/regulator/max8997-regulator.txt146
-rw-r--r--Documentation/devicetree/bindings/regulator/tps65217.txt4
-rw-r--r--Documentation/devicetree/bindings/regulator/vexpress.txt32
-rw-r--r--Documentation/devicetree/bindings/rtc/imxdi-rtc.txt17
-rw-r--r--Documentation/devicetree/bindings/rtc/nvidia,tegra20-rtc.txt19
-rw-r--r--Documentation/devicetree/bindings/rtc/orion-rtc.txt18
-rw-r--r--Documentation/devicetree/bindings/rtc/rtc-omap.txt17
-rw-r--r--Documentation/devicetree/bindings/sound/ak4104.txt22
-rw-r--r--Documentation/devicetree/bindings/sound/atmel-at91sam9g20ek-wm8731-audio.txt26
-rw-r--r--Documentation/devicetree/bindings/sound/cs4271.txt2
-rw-r--r--Documentation/devicetree/bindings/sound/omap-abe-twl6040.txt4
-rw-r--r--Documentation/devicetree/bindings/spi/nvidia,tegra20-sflash.txt26
-rw-r--r--Documentation/devicetree/bindings/spi/nvidia,tegra20-slink.txt26
-rw-r--r--Documentation/devicetree/bindings/spi/omap-spi.txt4
-rw-r--r--Documentation/devicetree/bindings/spi/spi-bus.txt22
-rw-r--r--Documentation/devicetree/bindings/thermal/db8500-thermal.txt44
-rw-r--r--Documentation/devicetree/bindings/timer/allwinner,sunxi-timer.txt17
-rw-r--r--Documentation/devicetree/bindings/timer/nvidia,tegra20-timer.txt21
-rw-r--r--Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt23
-rw-r--r--Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt8
-rw-r--r--Documentation/devicetree/bindings/tty/serial/of-serial.txt5
-rw-r--r--Documentation/devicetree/bindings/usb/am33xx-usb.txt29
-rw-r--r--Documentation/devicetree/bindings/usb/ehci-orion.txt15
-rw-r--r--Documentation/devicetree/bindings/vendor-prefixes.txt7
-rw-r--r--Documentation/devicetree/bindings/video/exynos_dp.txt80
-rw-r--r--Documentation/devicetree/bindings/video/ssd1307fb.txt24
-rw-r--r--Documentation/devicetree/bindings/watchdog/atmel-wdt.txt15
-rw-r--r--Documentation/devicetree/bindings/watchdog/brcm,bcm2835-pm-wdog.txt13
-rw-r--r--Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt13
-rw-r--r--Documentation/devicetree/usage-model.txt2
-rw-r--r--Documentation/dma-buf-sharing.txt4
-rw-r--r--Documentation/dontdiff1
-rw-r--r--Documentation/fault-injection/notifier-error-inject.txt4
-rw-r--r--Documentation/filesystems/00-INDEX2
-rw-r--r--Documentation/filesystems/efivarfs.txt16
-rw-r--r--Documentation/filesystems/ext4.txt9
-rw-r--r--Documentation/filesystems/proc.txt146
-rw-r--r--Documentation/filesystems/vfat.txt9
-rw-r--r--Documentation/filesystems/xfs.txt13
-rw-r--r--Documentation/firmware_class/README12
-rw-r--r--Documentation/gpio.txt42
-rw-r--r--Documentation/hid/uhid.txt2
-rw-r--r--Documentation/hwmon/ads782846
-rw-r--r--Documentation/hwmon/coretemp2
-rw-r--r--Documentation/hwmon/da905547
-rw-r--r--Documentation/hwmon/pmbus2
-rw-r--r--Documentation/hwmon/vexpress34
-rw-r--r--Documentation/i2c/smbus-protocol40
-rw-r--r--Documentation/input/alps.txt2
-rw-r--r--Documentation/input/event-codes.txt11
-rw-r--r--Documentation/kbuild/makefiles.txt15
-rw-r--r--Documentation/kbuild/modules.txt2
-rw-r--r--Documentation/kernel-doc-nano-HOWTO.txt13
-rw-r--r--Documentation/kernel-parameters.txt83
-rw-r--r--Documentation/kref.txt88
-rw-r--r--Documentation/memory-barriers.txt9
-rw-r--r--Documentation/memory-hotplug.txt24
-rw-r--r--Documentation/misc-devices/mei/mei-amt-version.c4
-rw-r--r--Documentation/mmc/mmc-dev-attrs.txt7
-rw-r--r--Documentation/networking/batman-adv.txt3
-rw-r--r--Documentation/networking/ip-sysctl.txt56
-rw-r--r--Documentation/networking/netdev-features.txt2
-rw-r--r--Documentation/networking/packet_mmap.txt246
-rw-r--r--Documentation/networking/stmmac.txt28
-rw-r--r--Documentation/networking/vxlan.txt4
-rw-r--r--Documentation/pinctrl.txt7
-rw-r--r--Documentation/power/pm_qos_interface.txt2
-rw-r--r--Documentation/power/power_supply_class.txt3
-rw-r--r--Documentation/powerpc/ptrace.txt16
-rw-r--r--Documentation/prctl/seccomp_filter.txt74
-rw-r--r--Documentation/scsi/hptiop.txt69
-rw-r--r--Documentation/security/00-INDEX2
-rw-r--r--Documentation/security/keys.txt17
-rw-r--r--Documentation/sound/alsa/ALSA-Configuration.txt3
-rw-r--r--Documentation/sparse.txt18
-rw-r--r--Documentation/telephony/00-INDEX4
-rw-r--r--Documentation/telephony/ixj.txt394
-rw-r--r--Documentation/thermal/sysfs-api.txt64
-rw-r--r--Documentation/usb/error-codes.txt7
-rw-r--r--Documentation/usb/mass-storage.txt15
-rw-r--r--Documentation/video4linux/bttv/Cards2
-rw-r--r--Documentation/video4linux/bttv/Sound-FAQ2
-rw-r--r--Documentation/virtual/kvm/api.txt140
-rw-r--r--Documentation/vm/frontswap.txt2
-rw-r--r--Documentation/vm/transhuge.txt19
-rw-r--r--Documentation/x86/boot.txt4
-rw-r--r--Documentation/zh_CN/arm/kernel_user_helpers.txt284
-rw-r--r--Documentation/zh_CN/arm64/memory.txt14
256 files changed, 7548 insertions, 1329 deletions
diff --git a/Documentation/00-INDEX b/Documentation/00-INDEX
index ceb1ff735469..8afe64fb2009 100644
--- a/Documentation/00-INDEX
+++ b/Documentation/00-INDEX
@@ -136,8 +136,6 @@ fault-injection/
136 - dir with docs about the fault injection capabilities infrastructure. 136 - dir with docs about the fault injection capabilities infrastructure.
137fb/ 137fb/
138 - directory with info on the frame buffer graphics abstraction layer. 138 - directory with info on the frame buffer graphics abstraction layer.
139feature-removal-schedule.txt
140 - list of files and features that are going to be removed.
141filesystems/ 139filesystems/
142 - info on the vfs and the various filesystems that Linux supports. 140 - info on the vfs and the various filesystems that Linux supports.
143firmware_class/ 141firmware_class/
diff --git a/Documentation/ABI/README b/Documentation/ABI/README
index 9feaf16f1617..10069828568b 100644
--- a/Documentation/ABI/README
+++ b/Documentation/ABI/README
@@ -36,9 +36,6 @@ The different levels of stability are:
36 the kernel, but are marked to be removed at some later point in 36 the kernel, but are marked to be removed at some later point in
37 time. The description of the interface will document the reason 37 time. The description of the interface will document the reason
38 why it is obsolete and when it can be expected to be removed. 38 why it is obsolete and when it can be expected to be removed.
39 The file Documentation/feature-removal-schedule.txt may describe
40 some of these interfaces, giving a schedule for when they will
41 be removed.
42 39
43 removed/ 40 removed/
44 This directory contains a list of the old interfaces that have 41 This directory contains a list of the old interfaces that have
diff --git a/Documentation/ABI/obsolete/sysfs-driver-hid-roccat-koneplus b/Documentation/ABI/obsolete/sysfs-driver-hid-roccat-koneplus
index c2a270b45b03..833fd59926a7 100644
--- a/Documentation/ABI/obsolete/sysfs-driver-hid-roccat-koneplus
+++ b/Documentation/ABI/obsolete/sysfs-driver-hid-roccat-koneplus
@@ -8,3 +8,41 @@ Description: The integer value of this attribute ranges from 0-4.
8 When written, this file sets the number of the startup profile 8 When written, this file sets the number of the startup profile
9 and the mouse activates this profile immediately. 9 and the mouse activates this profile immediately.
10 Please use actual_profile, it does the same thing. 10 Please use actual_profile, it does the same thing.
11Users: http://roccat.sourceforge.net
12
13What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/firmware_version
14Date: October 2010
15Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
16Description: When read, this file returns the raw integer version number of the
17 firmware reported by the mouse. Using the integer value eases
18 further usage in other programs. To receive the real version
19 number the decimal point has to be shifted 2 positions to the
20 left. E.g. a returned value of 121 means 1.21
21 This file is readonly.
22 Please read binary attribute info which contains firmware version.
23Users: http://roccat.sourceforge.net
24
25What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/profile[1-5]_buttons
26Date: August 2010
27Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
28Description: The mouse can store 5 profiles which can be switched by the
29 press of a button. A profile is split in settings and buttons.
30 profile_buttons holds information about button layout.
31 When read, these files return the respective profile buttons.
32 The returned data is 77 bytes in size.
33 This file is readonly.
34 Write control to select profile and read profile_buttons instead.
35Users: http://roccat.sourceforge.net
36
37What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/profile[1-5]_settings
38Date: August 2010
39Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
40Description: The mouse can store 5 profiles which can be switched by the
41 press of a button. A profile is split in settings and buttons.
42 profile_settings holds information like resolution, sensitivity
43 and light effects.
44 When read, these files return the respective profile settings.
45 The returned data is 43 bytes in size.
46 This file is readonly.
47 Write control to select profile and read profile_settings instead.
48Users: http://roccat.sourceforge.net \ No newline at end of file
diff --git a/Documentation/ABI/obsolete/sysfs-driver-hid-roccat-kovaplus b/Documentation/ABI/obsolete/sysfs-driver-hid-roccat-kovaplus
new file mode 100644
index 000000000000..4a98e02b6c6a
--- /dev/null
+++ b/Documentation/ABI/obsolete/sysfs-driver-hid-roccat-kovaplus
@@ -0,0 +1,66 @@
1What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kovaplus/roccatkovaplus<minor>/actual_cpi
2Date: January 2011
3Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
4Description: The integer value of this attribute ranges from 1-4.
5 When read, this attribute returns the number of the active
6 cpi level.
7 This file is readonly.
8 Has never been used. If bookkeeping is done, it's done in userland tools.
9Users: http://roccat.sourceforge.net
10
11What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kovaplus/roccatkovaplus<minor>/actual_sensitivity_x
12Date: January 2011
13Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
14Description: The integer value of this attribute ranges from 1-10.
15 When read, this attribute returns the number of the actual
16 sensitivity in x direction.
17 This file is readonly.
18 Has never been used. If bookkeeping is done, it's done in userland tools.
19Users: http://roccat.sourceforge.net
20
21What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kovaplus/roccatkovaplus<minor>/actual_sensitivity_y
22Date: January 2011
23Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
24Description: The integer value of this attribute ranges from 1-10.
25 When read, this attribute returns the number of the actual
26 sensitivity in y direction.
27 This file is readonly.
28 Has never been used. If bookkeeping is done, it's done in userland tools.
29Users: http://roccat.sourceforge.net
30
31What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kovaplus/roccatkovaplus<minor>/firmware_version
32Date: January 2011
33Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
34Description: When read, this file returns the raw integer version number of the
35 firmware reported by the mouse. Using the integer value eases
36 further usage in other programs. To receive the real version
37 number the decimal point has to be shifted 2 positions to the
38 left. E.g. a returned value of 121 means 1.21
39 This file is readonly.
40 Obsoleted by binary sysfs attribute "info".
41Users: http://roccat.sourceforge.net
42
43What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kovaplus/roccatkovaplus<minor>/profile[1-5]_buttons
44Date: January 2011
45Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
46Description: The mouse can store 5 profiles which can be switched by the
47 press of a button. A profile is split in settings and buttons.
48 profile_buttons holds information about button layout.
49 When read, these files return the respective profile buttons.
50 The returned data is 23 bytes in size.
51 This file is readonly.
52 Write control to select profile and read profile_buttons instead.
53Users: http://roccat.sourceforge.net
54
55What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kovaplus/roccatkovaplus<minor>/profile[1-5]_settings
56Date: January 2011
57Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
58Description: The mouse can store 5 profiles which can be switched by the
59 press of a button. A profile is split in settings and buttons.
60 profile_settings holds information like resolution, sensitivity
61 and light effects.
62 When read, these files return the respective profile settings.
63 The returned data is 16 bytes in size.
64 This file is readonly.
65 Write control to select profile and read profile_settings instead.
66Users: http://roccat.sourceforge.net
diff --git a/Documentation/ABI/obsolete/sysfs-driver-hid-roccat-pyra b/Documentation/ABI/obsolete/sysfs-driver-hid-roccat-pyra
new file mode 100644
index 000000000000..87ac87e9556d
--- /dev/null
+++ b/Documentation/ABI/obsolete/sysfs-driver-hid-roccat-pyra
@@ -0,0 +1,73 @@
1What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/actual_cpi
2Date: August 2010
3Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
4Description: It is possible to switch the cpi setting of the mouse with the
5 press of a button.
6 When read, this file returns the raw number of the actual cpi
7 setting reported by the mouse. This number has to be further
8 processed to receive the real dpi value.
9
10 VALUE DPI
11 1 400
12 2 800
13 4 1600
14
15 This file is readonly.
16 Has never been used. If bookkeeping is done, it's done in userland tools.
17Users: http://roccat.sourceforge.net
18
19What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/actual_profile
20Date: August 2010
21Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
22Description: When read, this file returns the number of the actual profile in
23 range 0-4.
24 This file is readonly.
25 Please use binary attribute "settings" which provides this information.
26Users: http://roccat.sourceforge.net
27
28What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/firmware_version
29Date: August 2010
30Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
31Description: When read, this file returns the raw integer version number of the
32 firmware reported by the mouse. Using the integer value eases
33 further usage in other programs. To receive the real version
34 number the decimal point has to be shifted 2 positions to the
35 left. E.g. a returned value of 138 means 1.38
36 This file is readonly.
37 Please use binary attribute "info" which provides this information.
38Users: http://roccat.sourceforge.net
39
40What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/profile[1-5]_buttons
41Date: August 2010
42Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
43Description: The mouse can store 5 profiles which can be switched by the
44 press of a button. A profile is split in settings and buttons.
45 profile_buttons holds information about button layout.
46 When read, these files return the respective profile buttons.
47 The returned data is 19 bytes in size.
48 This file is readonly.
49 Write control to select profile and read profile_buttons instead.
50Users: http://roccat.sourceforge.net
51
52What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/profile[1-5]_settings
53Date: August 2010
54Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
55Description: The mouse can store 5 profiles which can be switched by the
56 press of a button. A profile is split in settings and buttons.
57 profile_settings holds information like resolution, sensitivity
58 and light effects.
59 When read, these files return the respective profile settings.
60 The returned data is 13 bytes in size.
61 This file is readonly.
62 Write control to select profile and read profile_settings instead.
63Users: http://roccat.sourceforge.net
64
65What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/startup_profile
66Date: August 2010
67Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
68Description: The integer value of this attribute ranges from 0-4.
69 When read, this attribute returns the number of the profile
70 that's active when the mouse is powered on.
71 This file is readonly.
72 Please use binary attribute "settings" which provides this information.
73Users: http://roccat.sourceforge.net
diff --git a/Documentation/ABI/stable/sysfs-devices-node b/Documentation/ABI/stable/sysfs-devices-node
index 49b82cad7003..ce259c13c36a 100644
--- a/Documentation/ABI/stable/sysfs-devices-node
+++ b/Documentation/ABI/stable/sysfs-devices-node
@@ -1,7 +1,101 @@
1What: /sys/devices/system/node/possible
2Date: October 2002
3Contact: Linux Memory Management list <linux-mm@kvack.org>
4Description:
5 Nodes that could be possibly become online at some point.
6
7What: /sys/devices/system/node/online
8Date: October 2002
9Contact: Linux Memory Management list <linux-mm@kvack.org>
10Description:
11 Nodes that are online.
12
13What: /sys/devices/system/node/has_normal_memory
14Date: October 2002
15Contact: Linux Memory Management list <linux-mm@kvack.org>
16Description:
17 Nodes that have regular memory.
18
19What: /sys/devices/system/node/has_cpu
20Date: October 2002
21Contact: Linux Memory Management list <linux-mm@kvack.org>
22Description:
23 Nodes that have one or more CPUs.
24
25What: /sys/devices/system/node/has_high_memory
26Date: October 2002
27Contact: Linux Memory Management list <linux-mm@kvack.org>
28Description:
29 Nodes that have regular or high memory.
30 Depends on CONFIG_HIGHMEM.
31
1What: /sys/devices/system/node/nodeX 32What: /sys/devices/system/node/nodeX
2Date: October 2002 33Date: October 2002
3Contact: Linux Memory Management list <linux-mm@kvack.org> 34Contact: Linux Memory Management list <linux-mm@kvack.org>
4Description: 35Description:
5 When CONFIG_NUMA is enabled, this is a directory containing 36 When CONFIG_NUMA is enabled, this is a directory containing
6 information on node X such as what CPUs are local to the 37 information on node X such as what CPUs are local to the
7 node. 38 node. Each file is detailed next.
39
40What: /sys/devices/system/node/nodeX/cpumap
41Date: October 2002
42Contact: Linux Memory Management list <linux-mm@kvack.org>
43Description:
44 The node's cpumap.
45
46What: /sys/devices/system/node/nodeX/cpulist
47Date: October 2002
48Contact: Linux Memory Management list <linux-mm@kvack.org>
49Description:
50 The CPUs associated to the node.
51
52What: /sys/devices/system/node/nodeX/meminfo
53Date: October 2002
54Contact: Linux Memory Management list <linux-mm@kvack.org>
55Description:
56 Provides information about the node's distribution and memory
57 utilization. Similar to /proc/meminfo, see Documentation/filesystems/proc.txt
58
59What: /sys/devices/system/node/nodeX/numastat
60Date: October 2002
61Contact: Linux Memory Management list <linux-mm@kvack.org>
62Description:
63 The node's hit/miss statistics, in units of pages.
64 See Documentation/numastat.txt
65
66What: /sys/devices/system/node/nodeX/distance
67Date: October 2002
68Contact: Linux Memory Management list <linux-mm@kvack.org>
69Description:
70 Distance between the node and all the other nodes
71 in the system.
72
73What: /sys/devices/system/node/nodeX/vmstat
74Date: October 2002
75Contact: Linux Memory Management list <linux-mm@kvack.org>
76Description:
77 The node's zoned virtual memory statistics.
78 This is a superset of numastat.
79
80What: /sys/devices/system/node/nodeX/compact
81Date: February 2010
82Contact: Mel Gorman <mel@csn.ul.ie>
83Description:
84 When this file is written to, all memory within that node
85 will be compacted. When it completes, memory will be freed
86 into blocks which have as many contiguous pages as possible
87
88What: /sys/devices/system/node/nodeX/scan_unevictable_pages
89Date: October 2008
90Contact: Lee Schermerhorn <lee.schermerhorn@hp.com>
91Description:
92 When set, it triggers scanning the node's unevictable lists
93 and move any pages that have become evictable onto the respective
94 zone's inactive list. See mm/vmscan.c
95
96What: /sys/devices/system/node/nodeX/hugepages/hugepages-<size>/
97Date: December 2009
98Contact: Lee Schermerhorn <lee.schermerhorn@hp.com>
99Description:
100 The node's huge page size control/query attributes.
101 See Documentation/vm/hugetlbpage.txt \ No newline at end of file
diff --git a/Documentation/ABI/stable/sysfs-driver-ib_srp b/Documentation/ABI/stable/sysfs-driver-ib_srp
new file mode 100644
index 000000000000..481aae95c7d1
--- /dev/null
+++ b/Documentation/ABI/stable/sysfs-driver-ib_srp
@@ -0,0 +1,156 @@
1What: /sys/class/infiniband_srp/srp-<hca>-<port_number>/add_target
2Date: January 2, 2006
3KernelVersion: 2.6.15
4Contact: linux-rdma@vger.kernel.org
5Description: Interface for making ib_srp connect to a new target.
6 One can request ib_srp to connect to a new target by writing
7 a comma-separated list of login parameters to this sysfs
8 attribute. The supported parameters are:
9 * id_ext, a 16-digit hexadecimal number specifying the eight
10 byte identifier extension in the 16-byte SRP target port
11 identifier. The target port identifier is sent by ib_srp
12 to the target in the SRP_LOGIN_REQ request.
13 * ioc_guid, a 16-digit hexadecimal number specifying the eight
14 byte I/O controller GUID portion of the 16-byte target port
15 identifier.
16 * dgid, a 32-digit hexadecimal number specifying the
17 destination GID.
18 * pkey, a four-digit hexadecimal number specifying the
19 InfiniBand partition key.
20 * service_id, a 16-digit hexadecimal number specifying the
21 InfiniBand service ID used to establish communication with
22 the SRP target. How to find out the value of the service ID
23 is specified in the documentation of the SRP target.
24 * max_sect, a decimal number specifying the maximum number of
25 512-byte sectors to be transferred via a single SCSI command.
26 * max_cmd_per_lun, a decimal number specifying the maximum
27 number of outstanding commands for a single LUN.
28 * io_class, a hexadecimal number specifying the SRP I/O class.
29 Must be either 0xff00 (rev 10) or 0x0100 (rev 16a). The I/O
30 class defines the format of the SRP initiator and target
31 port identifiers.
32 * initiator_ext, a 16-digit hexadecimal number specifying the
33 identifier extension portion of the SRP initiator port
34 identifier. This data is sent by the initiator to the target
35 in the SRP_LOGIN_REQ request.
36 * cmd_sg_entries, a number in the range 1..255 that specifies
37 the maximum number of data buffer descriptors stored in the
38 SRP_CMD information unit itself. With allow_ext_sg=0 the
39 parameter cmd_sg_entries defines the maximum S/G list length
40 for a single SRP_CMD, and commands whose S/G list length
41 exceeds this limit after S/G list collapsing will fail.
42 * allow_ext_sg, whether ib_srp is allowed to include a partial
43 memory descriptor list in an SRP_CMD instead of the entire
44 list. If a partial memory descriptor list has been included
45 in an SRP_CMD the remaining memory descriptors are
46 communicated from initiator to target via an additional RDMA
47 transfer. Setting allow_ext_sg to 1 increases the maximum
48 amount of data that can be transferred between initiator and
49 target via a single SCSI command. Since not all SRP target
50 implementations support partial memory descriptor lists the
51 default value for this option is 0.
52 * sg_tablesize, a number in the range 1..2048 specifying the
53 maximum S/G list length the SCSI layer is allowed to pass to
54 ib_srp. Specifying a value that exceeds cmd_sg_entries is
55 only safe with partial memory descriptor list support enabled
56 (allow_ext_sg=1).
57
58What: /sys/class/infiniband_srp/srp-<hca>-<port_number>/ibdev
59Date: January 2, 2006
60KernelVersion: 2.6.15
61Contact: linux-rdma@vger.kernel.org
62Description: HCA name (<hca>).
63
64What: /sys/class/infiniband_srp/srp-<hca>-<port_number>/port
65Date: January 2, 2006
66KernelVersion: 2.6.15
67Contact: linux-rdma@vger.kernel.org
68Description: HCA port number (<port_number>).
69
70What: /sys/class/scsi_host/host<n>/allow_ext_sg
71Date: May 19, 2011
72KernelVersion: 2.6.39
73Contact: linux-rdma@vger.kernel.org
74Description: Whether ib_srp is allowed to include a partial memory
75 descriptor list in an SRP_CMD when communicating with an SRP
76 target.
77
78What: /sys/class/scsi_host/host<n>/cmd_sg_entries
79Date: May 19, 2011
80KernelVersion: 2.6.39
81Contact: linux-rdma@vger.kernel.org
82Description: Maximum number of data buffer descriptors that may be sent to
83 the target in a single SRP_CMD request.
84
85What: /sys/class/scsi_host/host<n>/dgid
86Date: June 17, 2006
87KernelVersion: 2.6.17
88Contact: linux-rdma@vger.kernel.org
89Description: InfiniBand destination GID used for communication with the SRP
90 target. Differs from orig_dgid if port redirection has happened.
91
92What: /sys/class/scsi_host/host<n>/id_ext
93Date: June 17, 2006
94KernelVersion: 2.6.17
95Contact: linux-rdma@vger.kernel.org
96Description: Eight-byte identifier extension portion of the 16-byte target
97 port identifier.
98
99What: /sys/class/scsi_host/host<n>/ioc_guid
100Date: June 17, 2006
101KernelVersion: 2.6.17
102Contact: linux-rdma@vger.kernel.org
103Description: Eight-byte I/O controller GUID portion of the 16-byte target
104 port identifier.
105
106What: /sys/class/scsi_host/host<n>/local_ib_device
107Date: November 29, 2006
108KernelVersion: 2.6.19
109Contact: linux-rdma@vger.kernel.org
110Description: Name of the InfiniBand HCA used for communicating with the
111 SRP target.
112
113What: /sys/class/scsi_host/host<n>/local_ib_port
114Date: November 29, 2006
115KernelVersion: 2.6.19
116Contact: linux-rdma@vger.kernel.org
117Description: Number of the HCA port used for communicating with the
118 SRP target.
119
120What: /sys/class/scsi_host/host<n>/orig_dgid
121Date: June 17, 2006
122KernelVersion: 2.6.17
123Contact: linux-rdma@vger.kernel.org
124Description: InfiniBand destination GID specified in the parameters
125 written to the add_target sysfs attribute.
126
127What: /sys/class/scsi_host/host<n>/pkey
128Date: June 17, 2006
129KernelVersion: 2.6.17
130Contact: linux-rdma@vger.kernel.org
131Description: A 16-bit number representing the InfiniBand partition key used
132 for communication with the SRP target.
133
134What: /sys/class/scsi_host/host<n>/req_lim
135Date: October 20, 2010
136KernelVersion: 2.6.36
137Contact: linux-rdma@vger.kernel.org
138Description: Number of requests ib_srp can send to the target before it has
139 to wait for more credits. For more information see also the
140 SRP credit algorithm in the SRP specification.
141
142What: /sys/class/scsi_host/host<n>/service_id
143Date: June 17, 2006
144KernelVersion: 2.6.17
145Contact: linux-rdma@vger.kernel.org
146Description: InfiniBand service ID used for establishing communication with
147 the SRP target.
148
149What: /sys/class/scsi_host/host<n>/zero_req_lim
150Date: September 20, 2006
151KernelVersion: 2.6.18
152Contact: linux-rdma@vger.kernel.org
153Description: Number of times the initiator had to wait before sending a
154 request to the target because it ran out of credits. For more
155 information see also the SRP credit algorithm in the SRP
156 specification.
diff --git a/Documentation/ABI/stable/sysfs-transport-srp b/Documentation/ABI/stable/sysfs-transport-srp
new file mode 100644
index 000000000000..b36fb0dc13c8
--- /dev/null
+++ b/Documentation/ABI/stable/sysfs-transport-srp
@@ -0,0 +1,19 @@
1What: /sys/class/srp_remote_ports/port-<h>:<n>/delete
2Date: June 1, 2012
3KernelVersion: 3.7
4Contact: linux-scsi@vger.kernel.org, linux-rdma@vger.kernel.org
5Description: Instructs an SRP initiator to disconnect from a target and to
6 remove all LUNs imported from that target.
7
8What: /sys/class/srp_remote_ports/port-<h>:<n>/port_id
9Date: June 27, 2007
10KernelVersion: 2.6.24
11Contact: linux-scsi@vger.kernel.org
12Description: 16-byte local SRP port identifier in hexadecimal format. An
13 example: 4c:49:4e:55:58:20:56:49:4f:00:00:00:00:00:00:00.
14
15What: /sys/class/srp_remote_ports/port-<h>:<n>/roles
16Date: June 27, 2007
17KernelVersion: 2.6.24
18Contact: linux-scsi@vger.kernel.org
19Description: Role of the remote port. Either "SRP Initiator" or "SRP Target".
diff --git a/Documentation/ABI/testing/dev-kmsg b/Documentation/ABI/testing/dev-kmsg
index 7e7e07a82e0e..bb820be48179 100644
--- a/Documentation/ABI/testing/dev-kmsg
+++ b/Documentation/ABI/testing/dev-kmsg
@@ -92,7 +92,7 @@ Description: The /dev/kmsg character device node provides userspace access
92 The flags field carries '-' by default. A 'c' indicates a 92 The flags field carries '-' by default. A 'c' indicates a
93 fragment of a line. All following fragments are flagged with 93 fragment of a line. All following fragments are flagged with
94 '+'. Note, that these hints about continuation lines are not 94 '+'. Note, that these hints about continuation lines are not
95 neccessarily correct, and the stream could be interleaved with 95 necessarily correct, and the stream could be interleaved with
96 unrelated messages, but merging the lines in the output 96 unrelated messages, but merging the lines in the output
97 usually produces better human readable results. A similar 97 usually produces better human readable results. A similar
98 logic is used internally when messages are printed to the 98 logic is used internally when messages are printed to the
diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio
index 2f06d40fe07d..2e33dc6b2346 100644
--- a/Documentation/ABI/testing/sysfs-bus-iio
+++ b/Documentation/ABI/testing/sysfs-bus-iio
@@ -189,6 +189,14 @@ Description:
189 A computed peak value based on the sum squared magnitude of 189 A computed peak value based on the sum squared magnitude of
190 the underlying value in the specified directions. 190 the underlying value in the specified directions.
191 191
192What: /sys/bus/iio/devices/iio:deviceX/in_pressureY_raw
193What: /sys/bus/iio/devices/iio:deviceX/in_pressure_raw
194KernelVersion: 3.8
195Contact: linux-iio@vger.kernel.org
196Description:
197 Raw pressure measurement from channel Y. Units after
198 application of scale and offset are kilopascal.
199
192What: /sys/bus/iio/devices/iio:deviceX/in_accel_offset 200What: /sys/bus/iio/devices/iio:deviceX/in_accel_offset
193What: /sys/bus/iio/devices/iio:deviceX/in_accel_x_offset 201What: /sys/bus/iio/devices/iio:deviceX/in_accel_x_offset
194What: /sys/bus/iio/devices/iio:deviceX/in_accel_y_offset 202What: /sys/bus/iio/devices/iio:deviceX/in_accel_y_offset
@@ -197,6 +205,8 @@ What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_offset
197What: /sys/bus/iio/devices/iio:deviceX/in_voltage_offset 205What: /sys/bus/iio/devices/iio:deviceX/in_voltage_offset
198What: /sys/bus/iio/devices/iio:deviceX/in_tempY_offset 206What: /sys/bus/iio/devices/iio:deviceX/in_tempY_offset
199What: /sys/bus/iio/devices/iio:deviceX/in_temp_offset 207What: /sys/bus/iio/devices/iio:deviceX/in_temp_offset
208What: /sys/bus/iio/devices/iio:deviceX/in_pressureY_offset
209What: /sys/bus/iio/devices/iio:deviceX/in_pressure_offset
200KernelVersion: 2.6.35 210KernelVersion: 2.6.35
201Contact: linux-iio@vger.kernel.org 211Contact: linux-iio@vger.kernel.org
202Description: 212Description:
@@ -226,6 +236,8 @@ What: /sys/bus/iio/devices/iio:deviceX/in_magn_scale
226What: /sys/bus/iio/devices/iio:deviceX/in_magn_x_scale 236What: /sys/bus/iio/devices/iio:deviceX/in_magn_x_scale
227What: /sys/bus/iio/devices/iio:deviceX/in_magn_y_scale 237What: /sys/bus/iio/devices/iio:deviceX/in_magn_y_scale
228What: /sys/bus/iio/devices/iio:deviceX/in_magn_z_scale 238What: /sys/bus/iio/devices/iio:deviceX/in_magn_z_scale
239What: /sys/bus/iio/devices/iio:deviceX/in_pressureY_scale
240What: /sys/bus/iio/devices/iio:deviceX/in_pressure_scale
229KernelVersion: 2.6.35 241KernelVersion: 2.6.35
230Contact: linux-iio@vger.kernel.org 242Contact: linux-iio@vger.kernel.org
231Description: 243Description:
@@ -245,6 +257,8 @@ What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_y_calibbias
245What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_z_calibbias 257What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_z_calibbias
246What: /sys/bus/iio/devices/iio:deviceX/in_illuminance0_calibbias 258What: /sys/bus/iio/devices/iio:deviceX/in_illuminance0_calibbias
247What: /sys/bus/iio/devices/iio:deviceX/in_proximity0_calibbias 259What: /sys/bus/iio/devices/iio:deviceX/in_proximity0_calibbias
260What: /sys/bus/iio/devices/iio:deviceX/in_pressureY_calibbias
261What: /sys/bus/iio/devices/iio:deviceX/in_pressure_calibbias
248KernelVersion: 2.6.35 262KernelVersion: 2.6.35
249Contact: linux-iio@vger.kernel.org 263Contact: linux-iio@vger.kernel.org
250Description: 264Description:
@@ -262,6 +276,8 @@ What /sys/bus/iio/devices/iio:deviceX/in_anglvel_y_calibscale
262What /sys/bus/iio/devices/iio:deviceX/in_anglvel_z_calibscale 276What /sys/bus/iio/devices/iio:deviceX/in_anglvel_z_calibscale
263what /sys/bus/iio/devices/iio:deviceX/in_illuminance0_calibscale 277what /sys/bus/iio/devices/iio:deviceX/in_illuminance0_calibscale
264what /sys/bus/iio/devices/iio:deviceX/in_proximity0_calibscale 278what /sys/bus/iio/devices/iio:deviceX/in_proximity0_calibscale
279What: /sys/bus/iio/devices/iio:deviceX/in_pressureY_calibscale
280What: /sys/bus/iio/devices/iio:deviceX/in_pressure_calibscale
265KernelVersion: 2.6.35 281KernelVersion: 2.6.35
266Contact: linux-iio@vger.kernel.org 282Contact: linux-iio@vger.kernel.org
267Description: 283Description:
@@ -275,6 +291,8 @@ What: /sys/.../iio:deviceX/in_voltage-voltage_scale_available
275What: /sys/.../iio:deviceX/out_voltageX_scale_available 291What: /sys/.../iio:deviceX/out_voltageX_scale_available
276What: /sys/.../iio:deviceX/out_altvoltageX_scale_available 292What: /sys/.../iio:deviceX/out_altvoltageX_scale_available
277What: /sys/.../iio:deviceX/in_capacitance_scale_available 293What: /sys/.../iio:deviceX/in_capacitance_scale_available
294What: /sys/.../iio:deviceX/in_pressure_scale_available
295What: /sys/.../iio:deviceX/in_pressureY_scale_available
278KernelVersion: 2.6.35 296KernelVersion: 2.6.35
279Contact: linux-iio@vger.kernel.org 297Contact: linux-iio@vger.kernel.org
280Description: 298Description:
@@ -694,6 +712,8 @@ What: /sys/.../buffer/scan_elements/in_voltageY_en
694What: /sys/.../buffer/scan_elements/in_voltageY-voltageZ_en 712What: /sys/.../buffer/scan_elements/in_voltageY-voltageZ_en
695What: /sys/.../buffer/scan_elements/in_incli_x_en 713What: /sys/.../buffer/scan_elements/in_incli_x_en
696What: /sys/.../buffer/scan_elements/in_incli_y_en 714What: /sys/.../buffer/scan_elements/in_incli_y_en
715What: /sys/.../buffer/scan_elements/in_pressureY_en
716What: /sys/.../buffer/scan_elements/in_pressure_en
697KernelVersion: 2.6.37 717KernelVersion: 2.6.37
698Contact: linux-iio@vger.kernel.org 718Contact: linux-iio@vger.kernel.org
699Description: 719Description:
@@ -707,6 +727,8 @@ What: /sys/.../buffer/scan_elements/in_voltageY_type
707What: /sys/.../buffer/scan_elements/in_voltage_type 727What: /sys/.../buffer/scan_elements/in_voltage_type
708What: /sys/.../buffer/scan_elements/in_voltageY_supply_type 728What: /sys/.../buffer/scan_elements/in_voltageY_supply_type
709What: /sys/.../buffer/scan_elements/in_timestamp_type 729What: /sys/.../buffer/scan_elements/in_timestamp_type
730What: /sys/.../buffer/scan_elements/in_pressureY_type
731What: /sys/.../buffer/scan_elements/in_pressure_type
710KernelVersion: 2.6.37 732KernelVersion: 2.6.37
711Contact: linux-iio@vger.kernel.org 733Contact: linux-iio@vger.kernel.org
712Description: 734Description:
@@ -751,6 +773,8 @@ What: /sys/.../buffer/scan_elements/in_magn_z_index
751What: /sys/.../buffer/scan_elements/in_incli_x_index 773What: /sys/.../buffer/scan_elements/in_incli_x_index
752What: /sys/.../buffer/scan_elements/in_incli_y_index 774What: /sys/.../buffer/scan_elements/in_incli_y_index
753What: /sys/.../buffer/scan_elements/in_timestamp_index 775What: /sys/.../buffer/scan_elements/in_timestamp_index
776What: /sys/.../buffer/scan_elements/in_pressureY_index
777What: /sys/.../buffer/scan_elements/in_pressure_index
754KernelVersion: 2.6.37 778KernelVersion: 2.6.37
755Contact: linux-iio@vger.kernel.org 779Contact: linux-iio@vger.kernel.org
756Description: 780Description:
diff --git a/Documentation/ABI/testing/sysfs-bus-mdio b/Documentation/ABI/testing/sysfs-bus-mdio
new file mode 100644
index 000000000000..6349749ebc29
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-bus-mdio
@@ -0,0 +1,9 @@
1What: /sys/bus/mdio_bus/devices/.../phy_id
2Date: November 2012
3KernelVersion: 3.8
4Contact: netdev@vger.kernel.org
5Description:
6 This attribute contains the 32-bit PHY Identifier as reported
7 by the device during bus enumeration, encoded in hexadecimal.
8 This ID is used to match the device with the appropriate
9 driver.
diff --git a/Documentation/ABI/testing/sysfs-bus-pci b/Documentation/ABI/testing/sysfs-bus-pci
index dff1f48d252d..1ce5ae329c04 100644
--- a/Documentation/ABI/testing/sysfs-bus-pci
+++ b/Documentation/ABI/testing/sysfs-bus-pci
@@ -222,3 +222,37 @@ Description:
222 satisfied too. Reading this attribute will show the current 222 satisfied too. Reading this attribute will show the current
223 value of d3cold_allowed bit. Writing this attribute will set 223 value of d3cold_allowed bit. Writing this attribute will set
224 the value of d3cold_allowed bit. 224 the value of d3cold_allowed bit.
225
226What: /sys/bus/pci/devices/.../sriov_totalvfs
227Date: November 2012
228Contact: Donald Dutile <ddutile@redhat.com>
229Description:
230 This file appears when a physical PCIe device supports SR-IOV.
231 Userspace applications can read this file to determine the
232 maximum number of Virtual Functions (VFs) a PCIe physical
233 function (PF) can support. Typically, this is the value reported
234 in the PF's SR-IOV extended capability structure's TotalVFs
235 element. Drivers have the ability at probe time to reduce the
236 value read from this file via the pci_sriov_set_totalvfs()
237 function.
238
239What: /sys/bus/pci/devices/.../sriov_numvfs
240Date: November 2012
241Contact: Donald Dutile <ddutile@redhat.com>
242Description:
243 This file appears when a physical PCIe device supports SR-IOV.
244 Userspace applications can read and write to this file to
245 determine and control the enablement or disablement of Virtual
246 Functions (VFs) on the physical function (PF). A read of this
247 file will return the number of VFs that are enabled on this PF.
248 A number written to this file will enable the specified
249 number of VFs. A userspace application would typically read the
250 file and check that the value is zero, and then write the number
251 of VFs that should be enabled on the PF; the value written
252 should be less than or equal to the value in the sriov_totalvfs
253 file. A userspace application wanting to disable the VFs would
254 write a zero to this file. The core ensures that valid values
255 are written to this file, and returns errors when values are not
256 valid. For example, writing a 2 to this file when sriov_numvfs
257 is not 0 and not 2 already will return an error. Writing a 10
258 when the value of sriov_totalvfs is 8 will return an error.
diff --git a/Documentation/ABI/testing/sysfs-class-devfreq b/Documentation/ABI/testing/sysfs-class-devfreq
index 23d78b5aab11..0ba6ea2f89d9 100644
--- a/Documentation/ABI/testing/sysfs-class-devfreq
+++ b/Documentation/ABI/testing/sysfs-class-devfreq
@@ -11,7 +11,7 @@ What: /sys/class/devfreq/.../governor
11Date: September 2011 11Date: September 2011
12Contact: MyungJoo Ham <myungjoo.ham@samsung.com> 12Contact: MyungJoo Ham <myungjoo.ham@samsung.com>
13Description: 13Description:
14 The /sys/class/devfreq/.../governor shows the name of the 14 The /sys/class/devfreq/.../governor show or set the name of the
15 governor used by the corresponding devfreq object. 15 governor used by the corresponding devfreq object.
16 16
17What: /sys/class/devfreq/.../cur_freq 17What: /sys/class/devfreq/.../cur_freq
@@ -19,15 +19,16 @@ Date: September 2011
19Contact: MyungJoo Ham <myungjoo.ham@samsung.com> 19Contact: MyungJoo Ham <myungjoo.ham@samsung.com>
20Description: 20Description:
21 The /sys/class/devfreq/.../cur_freq shows the current 21 The /sys/class/devfreq/.../cur_freq shows the current
22 frequency of the corresponding devfreq object. 22 frequency of the corresponding devfreq object. Same as
23 target_freq when get_cur_freq() is not implemented by
24 devfreq driver.
23 25
24What: /sys/class/devfreq/.../central_polling 26What: /sys/class/devfreq/.../target_freq
25Date: September 2011 27Date: September 2012
26Contact: MyungJoo Ham <myungjoo.ham@samsung.com> 28Contact: Rajagopal Venkat <rajagopal.venkat@linaro.org>
27Description: 29Description:
28 The /sys/class/devfreq/.../central_polling shows whether 30 The /sys/class/devfreq/.../target_freq shows the next governor
29 the devfreq ojbect is using devfreq-provided central 31 predicted target frequency of the corresponding devfreq object.
30 polling mechanism or not.
31 32
32What: /sys/class/devfreq/.../polling_interval 33What: /sys/class/devfreq/.../polling_interval
33Date: September 2011 34Date: September 2011
@@ -43,6 +44,17 @@ Description:
43 (/sys/class/devfreq/.../central_polling is 0), this value 44 (/sys/class/devfreq/.../central_polling is 0), this value
44 may be useless. 45 may be useless.
45 46
47What: /sys/class/devfreq/.../trans_stat
48Date: October 2012
49Contact: MyungJoo Ham <myungjoo.ham@samsung.com>
50Descrtiption:
51 This ABI shows the statistics of devfreq behavior on a
52 specific device. It shows the time spent in each state and
53 the number of transitions between states.
54 In order to activate this ABI, the devfreq target device
55 driver should provide the list of available frequencies
56 with its profile.
57
46What: /sys/class/devfreq/.../userspace/set_freq 58What: /sys/class/devfreq/.../userspace/set_freq
47Date: September 2011 59Date: September 2011
48Contact: MyungJoo Ham <myungjoo.ham@samsung.com> 60Contact: MyungJoo Ham <myungjoo.ham@samsung.com>
@@ -50,3 +62,19 @@ Description:
50 The /sys/class/devfreq/.../userspace/set_freq shows and 62 The /sys/class/devfreq/.../userspace/set_freq shows and
51 sets the requested frequency for the devfreq object if 63 sets the requested frequency for the devfreq object if
52 userspace governor is in effect. 64 userspace governor is in effect.
65
66What: /sys/class/devfreq/.../available_frequencies
67Date: October 2012
68Contact: Nishanth Menon <nm@ti.com>
69Description:
70 The /sys/class/devfreq/.../available_frequencies shows
71 the available frequencies of the corresponding devfreq object.
72 This is a snapshot of available frequencies and not limited
73 by the min/max frequency restrictions.
74
75What: /sys/class/devfreq/.../available_governors
76Date: October 2012
77Contact: Nishanth Menon <nm@ti.com>
78Description:
79 The /sys/class/devfreq/.../available_governors shows
80 currently available governors in the system.
diff --git a/Documentation/ABI/testing/sysfs-class-net-batman-adv b/Documentation/ABI/testing/sysfs-class-net-batman-adv
index 38dd762def4b..bdc00707c751 100644
--- a/Documentation/ABI/testing/sysfs-class-net-batman-adv
+++ b/Documentation/ABI/testing/sysfs-class-net-batman-adv
@@ -1,4 +1,10 @@
1 1
2What: /sys/class/net/<iface>/batman-adv/iface_status
3Date: May 2010
4Contact: Marek Lindner <lindner_marek@yahoo.de>
5Description:
6 Indicates the status of <iface> as it is seen by batman.
7
2What: /sys/class/net/<iface>/batman-adv/mesh_iface 8What: /sys/class/net/<iface>/batman-adv/mesh_iface
3Date: May 2010 9Date: May 2010
4Contact: Marek Lindner <lindner_marek@yahoo.de> 10Contact: Marek Lindner <lindner_marek@yahoo.de>
@@ -7,8 +13,3 @@ Description:
7 displays the batman mesh interface this <iface> 13 displays the batman mesh interface this <iface>
8 currently is associated with. 14 currently is associated with.
9 15
10What: /sys/class/net/<iface>/batman-adv/iface_status
11Date: May 2010
12Contact: Marek Lindner <lindner_marek@yahoo.de>
13Description:
14 Indicates the status of <iface> as it is seen by batman.
diff --git a/Documentation/ABI/testing/sysfs-class-net-grcan b/Documentation/ABI/testing/sysfs-class-net-grcan
new file mode 100644
index 000000000000..f418c92ca555
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-class-net-grcan
@@ -0,0 +1,35 @@
1
2What: /sys/class/net/<iface>/grcan/enable0
3Date: October 2012
4KernelVersion: 3.8
5Contact: Andreas Larsson <andreas@gaisler.com>
6Description:
7 Hardware configuration of physical interface 0. This file reads
8 and writes the "Enable 0" bit of the configuration register.
9 Possible values: 0 or 1. See the GRCAN chapter of the GRLIB IP
10 core library documentation for details. The default value is 0
11 or set by the module parameter grcan.enable0 and can be read at
12 /sys/module/grcan/parameters/enable0.
13
14What: /sys/class/net/<iface>/grcan/enable1
15Date: October 2012
16KernelVersion: 3.8
17Contact: Andreas Larsson <andreas@gaisler.com>
18Description:
19 Hardware configuration of physical interface 1. This file reads
20 and writes the "Enable 1" bit of the configuration register.
21 Possible values: 0 or 1. See the GRCAN chapter of the GRLIB IP
22 core library documentation for details. The default value is 0
23 or set by the module parameter grcan.enable1 and can be read at
24 /sys/module/grcan/parameters/enable1.
25
26What: /sys/class/net/<iface>/grcan/select
27Date: October 2012
28KernelVersion: 3.8
29Contact: Andreas Larsson <andreas@gaisler.com>
30Description:
31 Configuration of which physical interface to be used. Possible
32 values: 0 or 1. See the GRCAN chapter of the GRLIB IP core
33 library documentation for details. The default value is 0 or is
34 set by the module parameter grcan.select and can be read at
35 /sys/module/grcan/parameters/select.
diff --git a/Documentation/ABI/testing/sysfs-class-net-mesh b/Documentation/ABI/testing/sysfs-class-net-mesh
index c81fe89c4c46..bc41da61608d 100644
--- a/Documentation/ABI/testing/sysfs-class-net-mesh
+++ b/Documentation/ABI/testing/sysfs-class-net-mesh
@@ -6,6 +6,14 @@ Description:
6 Indicates whether the batman protocol messages of the 6 Indicates whether the batman protocol messages of the
7 mesh <mesh_iface> shall be aggregated or not. 7 mesh <mesh_iface> shall be aggregated or not.
8 8
9What: /sys/class/net/<mesh_iface>/mesh/ap_isolation
10Date: May 2011
11Contact: Antonio Quartulli <ordex@autistici.org>
12Description:
13 Indicates whether the data traffic going from a
14 wireless client to another wireless client will be
15 silently dropped.
16
9What: /sys/class/net/<mesh_iface>/mesh/bonding 17What: /sys/class/net/<mesh_iface>/mesh/bonding
10Date: June 2010 18Date: June 2010
11Contact: Simon Wunderlich <siwu@hrz.tu-chemnitz.de> 19Contact: Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
@@ -31,14 +39,6 @@ Description:
31 mesh will be fragmented or silently discarded if the 39 mesh will be fragmented or silently discarded if the
32 packet size exceeds the outgoing interface MTU. 40 packet size exceeds the outgoing interface MTU.
33 41
34What: /sys/class/net/<mesh_iface>/mesh/ap_isolation
35Date: May 2011
36Contact: Antonio Quartulli <ordex@autistici.org>
37Description:
38 Indicates whether the data traffic going from a
39 wireless client to another wireless client will be
40 silently dropped.
41
42What: /sys/class/net/<mesh_iface>/mesh/gw_bandwidth 42What: /sys/class/net/<mesh_iface>/mesh/gw_bandwidth
43Date: October 2010 43Date: October 2010
44Contact: Marek Lindner <lindner_marek@yahoo.de> 44Contact: Marek Lindner <lindner_marek@yahoo.de>
@@ -60,6 +60,13 @@ Description:
60 Defines the selection criteria this node will use 60 Defines the selection criteria this node will use
61 to choose a gateway if gw_mode was set to 'client'. 61 to choose a gateway if gw_mode was set to 'client'.
62 62
63What: /sys/class/net/<mesh_iface>/mesh/hop_penalty
64Date: Oct 2010
65Contact: Linus Lüssing <linus.luessing@web.de>
66Description:
67 Defines the penalty which will be applied to an
68 originator message's tq-field on every hop.
69
63What: /sys/class/net/<mesh_iface>/mesh/orig_interval 70What: /sys/class/net/<mesh_iface>/mesh/orig_interval
64Date: May 2010 71Date: May 2010
65Contact: Marek Lindner <lindner_marek@yahoo.de> 72Contact: Marek Lindner <lindner_marek@yahoo.de>
@@ -67,19 +74,12 @@ Description:
67 Defines the interval in milliseconds in which batman 74 Defines the interval in milliseconds in which batman
68 sends its protocol messages. 75 sends its protocol messages.
69 76
70What: /sys/class/net/<mesh_iface>/mesh/hop_penalty 77What: /sys/class/net/<mesh_iface>/mesh/routing_algo
71Date: Oct 2010 78Date: Dec 2011
72Contact: Linus Lüssing <linus.luessing@web.de> 79Contact: Marek Lindner <lindner_marek@yahoo.de>
73Description:
74 Defines the penalty which will be applied to an
75 originator message's tq-field on every hop.
76
77What: /sys/class/net/<mesh_iface>/mesh/routing_algo
78Date: Dec 2011
79Contact: Marek Lindner <lindner_marek@yahoo.de>
80Description: 80Description:
81 Defines the routing procotol this mesh instance 81 Defines the routing procotol this mesh instance
82 uses to find the optimal paths through the mesh. 82 uses to find the optimal paths through the mesh.
83 83
84What: /sys/class/net/<mesh_iface>/mesh/vis_mode 84What: /sys/class/net/<mesh_iface>/mesh/vis_mode
85Date: May 2010 85Date: May 2010
diff --git a/Documentation/ABI/testing/sysfs-devices-power b/Documentation/ABI/testing/sysfs-devices-power
index 45000f0db4d4..9d43e7670841 100644
--- a/Documentation/ABI/testing/sysfs-devices-power
+++ b/Documentation/ABI/testing/sysfs-devices-power
@@ -164,7 +164,7 @@ Contact: Rafael J. Wysocki <rjw@sisk.pl>
164Description: 164Description:
165 The /sys/devices/.../wakeup_prevent_sleep_time_ms attribute 165 The /sys/devices/.../wakeup_prevent_sleep_time_ms attribute
166 contains the total time the device has been preventing 166 contains the total time the device has been preventing
167 opportunistic transitions to sleep states from occuring. 167 opportunistic transitions to sleep states from occurring.
168 This attribute is read-only. If the device is not enabled to 168 This attribute is read-only. If the device is not enabled to
169 wake up the system from sleep states, this attribute is not 169 wake up the system from sleep states, this attribute is not
170 present. 170 present.
@@ -204,3 +204,34 @@ Description:
204 204
205 This attribute has no effect on system-wide suspend/resume and 205 This attribute has no effect on system-wide suspend/resume and
206 hibernation. 206 hibernation.
207
208What: /sys/devices/.../power/pm_qos_no_power_off
209Date: September 2012
210Contact: Rafael J. Wysocki <rjw@sisk.pl>
211Description:
212 The /sys/devices/.../power/pm_qos_no_power_off attribute
213 is used for manipulating the PM QoS "no power off" flag. If
214 set, this flag indicates to the kernel that power should not
215 be removed entirely from the device.
216
217 Not all drivers support this attribute. If it isn't supported,
218 it is not present.
219
220 This attribute has no effect on system-wide suspend/resume and
221 hibernation.
222
223What: /sys/devices/.../power/pm_qos_remote_wakeup
224Date: September 2012
225Contact: Rafael J. Wysocki <rjw@sisk.pl>
226Description:
227 The /sys/devices/.../power/pm_qos_remote_wakeup attribute
228 is used for manipulating the PM QoS "remote wakeup required"
229 flag. If set, this flag indicates to the kernel that the
230 device is a source of user events that have to be signaled from
231 its low-power states.
232
233 Not all drivers support this attribute. If it isn't supported,
234 it is not present.
235
236 This attribute has no effect on system-wide suspend/resume and
237 hibernation.
diff --git a/Documentation/ABI/testing/sysfs-devices-sun b/Documentation/ABI/testing/sysfs-devices-sun
new file mode 100644
index 000000000000..86be9848a77e
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-devices-sun
@@ -0,0 +1,14 @@
1Whatt: /sys/devices/.../sun
2Date: October 2012
3Contact: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
4Description:
5 The file contains a Slot-unique ID which provided by the _SUN
6 method in the ACPI namespace. The value is written in Advanced
7 Configuration and Power Interface Specification as follows:
8
9 "The _SUN value is required to be unique among the slots of
10 the same type. It is also recommended that this number match
11 the slot number printed on the physical slot whenever possible."
12
13 So reading the sysfs file, we can identify a physical position
14 of the slot in the system.
diff --git a/Documentation/ABI/testing/sysfs-driver-hid-roccat-isku b/Documentation/ABI/testing/sysfs-driver-hid-roccat-isku
index 189dc43891bf..9eca5a182e64 100644
--- a/Documentation/ABI/testing/sysfs-driver-hid-roccat-isku
+++ b/Documentation/ABI/testing/sysfs-driver-hid-roccat-isku
@@ -117,6 +117,14 @@ Description: When written, this file lets one store macros with max 500
117 which profile and key to read. 117 which profile and key to read.
118Users: http://roccat.sourceforge.net 118Users: http://roccat.sourceforge.net
119 119
120What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/reset
121Date: November 2012
122Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
123Description: When written, this file lets one reset the device.
124 The data has to be 3 bytes long.
125 This file is writeonly.
126Users: http://roccat.sourceforge.net
127
120What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/control 128What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/control
121Date: June 2011 129Date: June 2011
122Contact: Stefan Achatz <erazor_de@users.sourceforge.net> 130Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
diff --git a/Documentation/ABI/testing/sysfs-driver-hid-roccat-koneplus b/Documentation/ABI/testing/sysfs-driver-hid-roccat-koneplus
index 65e6e5dd67e8..7bd776f9c3c7 100644
--- a/Documentation/ABI/testing/sysfs-driver-hid-roccat-koneplus
+++ b/Documentation/ABI/testing/sysfs-driver-hid-roccat-koneplus
@@ -9,15 +9,12 @@ Description: The integer value of this attribute ranges from 0-4.
9 and the mouse activates this profile immediately. 9 and the mouse activates this profile immediately.
10Users: http://roccat.sourceforge.net 10Users: http://roccat.sourceforge.net
11 11
12What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/firmware_version 12What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/info
13Date: October 2010 13Date: November 2012
14Contact: Stefan Achatz <erazor_de@users.sourceforge.net> 14Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
15Description: When read, this file returns the raw integer version number of the 15Description: When read, this file returns general data like firmware version.
16 firmware reported by the mouse. Using the integer value eases 16 When written, the device can be reset.
17 further usage in other programs. To receive the real version 17 The data is 8 bytes long.
18 number the decimal point has to be shifted 2 positions to the
19 left. E.g. a returned value of 121 means 1.21
20 This file is readonly.
21Users: http://roccat.sourceforge.net 18Users: http://roccat.sourceforge.net
22 19
23What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/macro 20What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/macro
@@ -42,18 +39,8 @@ Description: The mouse can store 5 profiles which can be switched by the
42 The mouse will reject invalid data. 39 The mouse will reject invalid data.
43 Which profile to write is determined by the profile number 40 Which profile to write is determined by the profile number
44 contained in the data. 41 contained in the data.
45 This file is writeonly. 42 Before reading this file, control has to be written to select
46Users: http://roccat.sourceforge.net 43 which profile to read.
47
48What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/profile[1-5]_buttons
49Date: August 2010
50Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
51Description: The mouse can store 5 profiles which can be switched by the
52 press of a button. A profile is split in settings and buttons.
53 profile_buttons holds information about button layout.
54 When read, these files return the respective profile buttons.
55 The returned data is 77 bytes in size.
56 This file is readonly.
57Users: http://roccat.sourceforge.net 44Users: http://roccat.sourceforge.net
58 45
59What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/profile_settings 46What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/profile_settings
@@ -68,19 +55,8 @@ Description: The mouse can store 5 profiles which can be switched by the
68 The mouse will reject invalid data. 55 The mouse will reject invalid data.
69 Which profile to write is determined by the profile number 56 Which profile to write is determined by the profile number
70 contained in the data. 57 contained in the data.
71 This file is writeonly. 58 Before reading this file, control has to be written to select
72Users: http://roccat.sourceforge.net 59 which profile to read.
73
74What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/profile[1-5]_settings
75Date: August 2010
76Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
77Description: The mouse can store 5 profiles which can be switched by the
78 press of a button. A profile is split in settings and buttons.
79 profile_settings holds information like resolution, sensitivity
80 and light effects.
81 When read, these files return the respective profile settings.
82 The returned data is 43 bytes in size.
83 This file is readonly.
84Users: http://roccat.sourceforge.net 60Users: http://roccat.sourceforge.net
85 61
86What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/sensor 62What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/sensor
@@ -104,9 +80,9 @@ What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-
104Date: October 2010 80Date: October 2010
105Contact: Stefan Achatz <erazor_de@users.sourceforge.net> 81Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
106Description: When written a calibration process for the tracking control unit 82Description: When written a calibration process for the tracking control unit
107 can be initiated/cancelled. 83 can be initiated/cancelled. Also lets one read/write sensor
108 The data has to be 3 bytes long. 84 registers.
109 This file is writeonly. 85 The data has to be 4 bytes long.
110Users: http://roccat.sourceforge.net 86Users: http://roccat.sourceforge.net
111 87
112What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/tcu_image 88What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/tcu_image
diff --git a/Documentation/ABI/testing/sysfs-driver-hid-roccat-kovaplus b/Documentation/ABI/testing/sysfs-driver-hid-roccat-kovaplus
index 20f937c9d84f..a10404f15a54 100644
--- a/Documentation/ABI/testing/sysfs-driver-hid-roccat-kovaplus
+++ b/Documentation/ABI/testing/sysfs-driver-hid-roccat-kovaplus
@@ -1,12 +1,3 @@
1What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kovaplus/roccatkovaplus<minor>/actual_cpi
2Date: January 2011
3Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
4Description: The integer value of this attribute ranges from 1-4.
5 When read, this attribute returns the number of the active
6 cpi level.
7 This file is readonly.
8Users: http://roccat.sourceforge.net
9
10What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kovaplus/roccatkovaplus<minor>/actual_profile 1What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kovaplus/roccatkovaplus<minor>/actual_profile
11Date: January 2011 2Date: January 2011
12Contact: Stefan Achatz <erazor_de@users.sourceforge.net> 3Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
@@ -18,33 +9,12 @@ Description: The integer value of this attribute ranges from 0-4.
18 active when the mouse is powered on. 9 active when the mouse is powered on.
19Users: http://roccat.sourceforge.net 10Users: http://roccat.sourceforge.net
20 11
21What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kovaplus/roccatkovaplus<minor>/actual_sensitivity_x 12What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kovaplus/roccatkovaplus<minor>/info
22Date: January 2011 13Date: November 2012
23Contact: Stefan Achatz <erazor_de@users.sourceforge.net> 14Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
24Description: The integer value of this attribute ranges from 1-10. 15Description: When read, this file returns general data like firmware version.
25 When read, this attribute returns the number of the actual 16 When written, the device can be reset.
26 sensitivity in x direction. 17 The data is 6 bytes long.
27 This file is readonly.
28Users: http://roccat.sourceforge.net
29
30What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kovaplus/roccatkovaplus<minor>/actual_sensitivity_y
31Date: January 2011
32Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
33Description: The integer value of this attribute ranges from 1-10.
34 When read, this attribute returns the number of the actual
35 sensitivity in y direction.
36 This file is readonly.
37Users: http://roccat.sourceforge.net
38
39What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kovaplus/roccatkovaplus<minor>/firmware_version
40Date: January 2011
41Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
42Description: When read, this file returns the raw integer version number of the
43 firmware reported by the mouse. Using the integer value eases
44 further usage in other programs. To receive the real version
45 number the decimal point has to be shifted 2 positions to the
46 left. E.g. a returned value of 121 means 1.21
47 This file is readonly.
48Users: http://roccat.sourceforge.net 18Users: http://roccat.sourceforge.net
49 19
50What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kovaplus/roccatkovaplus<minor>/profile_buttons 20What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kovaplus/roccatkovaplus<minor>/profile_buttons
@@ -58,18 +28,8 @@ Description: The mouse can store 5 profiles which can be switched by the
58 The mouse will reject invalid data. 28 The mouse will reject invalid data.
59 Which profile to write is determined by the profile number 29 Which profile to write is determined by the profile number
60 contained in the data. 30 contained in the data.
61 This file is writeonly. 31 Before reading this file, control has to be written to select
62Users: http://roccat.sourceforge.net 32 which profile to read.
63
64What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kovaplus/roccatkovaplus<minor>/profile[1-5]_buttons
65Date: January 2011
66Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
67Description: The mouse can store 5 profiles which can be switched by the
68 press of a button. A profile is split in settings and buttons.
69 profile_buttons holds information about button layout.
70 When read, these files return the respective profile buttons.
71 The returned data is 23 bytes in size.
72 This file is readonly.
73Users: http://roccat.sourceforge.net 33Users: http://roccat.sourceforge.net
74 34
75What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kovaplus/roccatkovaplus<minor>/profile_settings 35What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kovaplus/roccatkovaplus<minor>/profile_settings
@@ -84,17 +44,6 @@ Description: The mouse can store 5 profiles which can be switched by the
84 The mouse will reject invalid data. 44 The mouse will reject invalid data.
85 Which profile to write is determined by the profile number 45 Which profile to write is determined by the profile number
86 contained in the data. 46 contained in the data.
87 This file is writeonly. 47 Before reading this file, control has to be written to select
88Users: http://roccat.sourceforge.net 48 which profile to read.
89
90What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kovaplus/roccatkovaplus<minor>/profile[1-5]_settings
91Date: January 2011
92Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
93Description: The mouse can store 5 profiles which can be switched by the
94 press of a button. A profile is split in settings and buttons.
95 profile_settings holds information like resolution, sensitivity
96 and light effects.
97 When read, these files return the respective profile settings.
98 The returned data is 16 bytes in size.
99 This file is readonly.
100Users: http://roccat.sourceforge.net 49Users: http://roccat.sourceforge.net
diff --git a/Documentation/ABI/testing/sysfs-driver-hid-roccat-lua b/Documentation/ABI/testing/sysfs-driver-hid-roccat-lua
new file mode 100644
index 000000000000..31c6c4c8ba2b
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-driver-hid-roccat-lua
@@ -0,0 +1,7 @@
1What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/control
2Date: October 2012
3Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
4Description: When written, cpi, button and light settings can be configured.
5 When read, actual cpi setting and sensor data are returned.
6 The data has to be 8 bytes long.
7Users: http://roccat.sourceforge.net
diff --git a/Documentation/ABI/testing/sysfs-driver-hid-roccat-pyra b/Documentation/ABI/testing/sysfs-driver-hid-roccat-pyra
index 3f8de50e4ff1..9fa9de30d14b 100644
--- a/Documentation/ABI/testing/sysfs-driver-hid-roccat-pyra
+++ b/Documentation/ABI/testing/sysfs-driver-hid-roccat-pyra
@@ -1,37 +1,9 @@
1What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/actual_cpi 1What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/info
2Date: August 2010 2Date: November 2012
3Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
4Description: It is possible to switch the cpi setting of the mouse with the
5 press of a button.
6 When read, this file returns the raw number of the actual cpi
7 setting reported by the mouse. This number has to be further
8 processed to receive the real dpi value.
9
10 VALUE DPI
11 1 400
12 2 800
13 4 1600
14
15 This file is readonly.
16Users: http://roccat.sourceforge.net
17
18What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/actual_profile
19Date: August 2010
20Contact: Stefan Achatz <erazor_de@users.sourceforge.net> 3Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
21Description: When read, this file returns the number of the actual profile in 4Description: When read, this file returns general data like firmware version.
22 range 0-4. 5 When written, the device can be reset.
23 This file is readonly. 6 The data is 6 bytes long.
24Users: http://roccat.sourceforge.net
25
26What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/firmware_version
27Date: August 2010
28Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
29Description: When read, this file returns the raw integer version number of the
30 firmware reported by the mouse. Using the integer value eases
31 further usage in other programs. To receive the real version
32 number the decimal point has to be shifted 2 positions to the
33 left. E.g. a returned value of 138 means 1.38
34 This file is readonly.
35Users: http://roccat.sourceforge.net 7Users: http://roccat.sourceforge.net
36 8
37What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/profile_settings 9What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/profile_settings
@@ -46,19 +18,8 @@ Description: The mouse can store 5 profiles which can be switched by the
46 The mouse will reject invalid data. 18 The mouse will reject invalid data.
47 Which profile to write is determined by the profile number 19 Which profile to write is determined by the profile number
48 contained in the data. 20 contained in the data.
49 This file is writeonly. 21 Before reading this file, control has to be written to select
50Users: http://roccat.sourceforge.net 22 which profile to read.
51
52What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/profile[1-5]_settings
53Date: August 2010
54Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
55Description: The mouse can store 5 profiles which can be switched by the
56 press of a button. A profile is split in settings and buttons.
57 profile_settings holds information like resolution, sensitivity
58 and light effects.
59 When read, these files return the respective profile settings.
60 The returned data is 13 bytes in size.
61 This file is readonly.
62Users: http://roccat.sourceforge.net 23Users: http://roccat.sourceforge.net
63 24
64What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/profile_buttons 25What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/profile_buttons
@@ -72,27 +33,8 @@ Description: The mouse can store 5 profiles which can be switched by the
72 The mouse will reject invalid data. 33 The mouse will reject invalid data.
73 Which profile to write is determined by the profile number 34 Which profile to write is determined by the profile number
74 contained in the data. 35 contained in the data.
75 This file is writeonly. 36 Before reading this file, control has to be written to select
76Users: http://roccat.sourceforge.net 37 which profile to read.
77
78What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/profile[1-5]_buttons
79Date: August 2010
80Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
81Description: The mouse can store 5 profiles which can be switched by the
82 press of a button. A profile is split in settings and buttons.
83 profile_buttons holds information about button layout.
84 When read, these files return the respective profile buttons.
85 The returned data is 19 bytes in size.
86 This file is readonly.
87Users: http://roccat.sourceforge.net
88
89What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/startup_profile
90Date: August 2010
91Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
92Description: The integer value of this attribute ranges from 0-4.
93 When read, this attribute returns the number of the profile
94 that's active when the mouse is powered on.
95 This file is readonly.
96Users: http://roccat.sourceforge.net 38Users: http://roccat.sourceforge.net
97 39
98What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/settings 40What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/settings
diff --git a/Documentation/ABI/testing/sysfs-driver-hid-roccat-savu b/Documentation/ABI/testing/sysfs-driver-hid-roccat-savu
index b42922cf6b1f..f1e02a98bd9d 100644
--- a/Documentation/ABI/testing/sysfs-driver-hid-roccat-savu
+++ b/Documentation/ABI/testing/sysfs-driver-hid-roccat-savu
@@ -40,8 +40,8 @@ What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-
40Date: Mai 2012 40Date: Mai 2012
41Contact: Stefan Achatz <erazor_de@users.sourceforge.net> 41Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
42Description: When read, this file returns general data like firmware version. 42Description: When read, this file returns general data like firmware version.
43 When written, the device can be reset.
43 The data is 8 bytes long. 44 The data is 8 bytes long.
44 This file is readonly.
45Users: http://roccat.sourceforge.net 45Users: http://roccat.sourceforge.net
46 46
47What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/savu/roccatsavu<minor>/macro 47What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/savu/roccatsavu<minor>/macro
@@ -74,4 +74,3 @@ Description: The mouse has a Avago ADNS-3090 sensor.
74 This file allows reading and writing of the mouse sensors registers. 74 This file allows reading and writing of the mouse sensors registers.
75 The data has to be 4 bytes long. 75 The data has to be 4 bytes long.
76Users: http://roccat.sourceforge.net 76Users: http://roccat.sourceforge.net
77
diff --git a/Documentation/ABI/testing/sysfs-driver-ppi b/Documentation/ABI/testing/sysfs-driver-ppi
index 97a003ee058b..7d1435bc976c 100644
--- a/Documentation/ABI/testing/sysfs-driver-ppi
+++ b/Documentation/ABI/testing/sysfs-driver-ppi
@@ -5,7 +5,7 @@ Contact: xiaoyan.zhang@intel.com
5Description: 5Description:
6 This folder includes the attributes related with PPI (Physical 6 This folder includes the attributes related with PPI (Physical
7 Presence Interface). Only if TPM is supported by BIOS, this 7 Presence Interface). Only if TPM is supported by BIOS, this
8 folder makes sence. The folder path can be got by command 8 folder makes sense. The folder path can be got by command
9 'find /sys/ -name 'pcrs''. For the detail information of PPI, 9 'find /sys/ -name 'pcrs''. For the detail information of PPI,
10 please refer to the PPI specification from 10 please refer to the PPI specification from
11 http://www.trustedcomputinggroup.org/ 11 http://www.trustedcomputinggroup.org/
diff --git a/Documentation/ABI/testing/sysfs-profiling b/Documentation/ABI/testing/sysfs-profiling
index b02d8b8c173a..8a8e466eb2c0 100644
--- a/Documentation/ABI/testing/sysfs-profiling
+++ b/Documentation/ABI/testing/sysfs-profiling
@@ -1,13 +1,13 @@
1What: /sys/kernel/profile 1What: /sys/kernel/profiling
2Date: September 2008 2Date: September 2008
3Contact: Dave Hansen <dave@linux.vnet.ibm.com> 3Contact: Dave Hansen <dave@linux.vnet.ibm.com>
4Description: 4Description:
5 /sys/kernel/profile is the runtime equivalent 5 /sys/kernel/profiling is the runtime equivalent
6 of the boot-time profile= option. 6 of the boot-time profile= option.
7 7
8 You can get the same effect running: 8 You can get the same effect running:
9 9
10 echo 2 > /sys/kernel/profile 10 echo 2 > /sys/kernel/profiling
11 11
12 as you would by issuing profile=2 on the boot 12 as you would by issuing profile=2 on the boot
13 command line. 13 command line.
diff --git a/Documentation/ABI/testing/sysfs-tty b/Documentation/ABI/testing/sysfs-tty
index 0c430150d929..ad22fb0ee765 100644
--- a/Documentation/ABI/testing/sysfs-tty
+++ b/Documentation/ABI/testing/sysfs-tty
@@ -26,3 +26,115 @@ Description:
26 UART port in serial_core, that is bound to TTY like ttyS0. 26 UART port in serial_core, that is bound to TTY like ttyS0.
27 uartclk = 16 * baud_base 27 uartclk = 16 * baud_base
28 28
29 These sysfs values expose the TIOCGSERIAL interface via
30 sysfs rather than via ioctls.
31
32What: /sys/class/tty/ttyS0/type
33Date: October 2012
34Contact: Alan Cox <alan@linux.intel.com>
35Description:
36 Shows the current tty type for this port.
37
38 These sysfs values expose the TIOCGSERIAL interface via
39 sysfs rather than via ioctls.
40
41What: /sys/class/tty/ttyS0/line
42Date: October 2012
43Contact: Alan Cox <alan@linux.intel.com>
44Description:
45 Shows the current tty line number for this port.
46
47 These sysfs values expose the TIOCGSERIAL interface via
48 sysfs rather than via ioctls.
49
50What: /sys/class/tty/ttyS0/port
51Date: October 2012
52Contact: Alan Cox <alan@linux.intel.com>
53Description:
54 Shows the current tty port I/O address for this port.
55
56 These sysfs values expose the TIOCGSERIAL interface via
57 sysfs rather than via ioctls.
58
59What: /sys/class/tty/ttyS0/irq
60Date: October 2012
61Contact: Alan Cox <alan@linux.intel.com>
62Description:
63 Shows the current primary interrupt for this port.
64
65 These sysfs values expose the TIOCGSERIAL interface via
66 sysfs rather than via ioctls.
67
68What: /sys/class/tty/ttyS0/flags
69Date: October 2012
70Contact: Alan Cox <alan@linux.intel.com>
71Description:
72 Show the tty port status flags for this port.
73
74 These sysfs values expose the TIOCGSERIAL interface via
75 sysfs rather than via ioctls.
76
77What: /sys/class/tty/ttyS0/xmit_fifo_size
78Date: October 2012
79Contact: Alan Cox <alan@linux.intel.com>
80Description:
81 Show the transmit FIFO size for this port.
82
83 These sysfs values expose the TIOCGSERIAL interface via
84 sysfs rather than via ioctls.
85
86What: /sys/class/tty/ttyS0/close_delay
87Date: October 2012
88Contact: Alan Cox <alan@linux.intel.com>
89Description:
90 Show the closing delay time for this port in ms.
91
92 These sysfs values expose the TIOCGSERIAL interface via
93 sysfs rather than via ioctls.
94
95What: /sys/class/tty/ttyS0/closing_wait
96Date: October 2012
97Contact: Alan Cox <alan@linux.intel.com>
98Description:
99 Show the close wait time for this port in ms.
100
101 These sysfs values expose the TIOCGSERIAL interface via
102 sysfs rather than via ioctls.
103
104What: /sys/class/tty/ttyS0/custom_divisor
105Date: October 2012
106Contact: Alan Cox <alan@linux.intel.com>
107Description:
108 Show the custom divisor if any that is set on this port.
109
110 These sysfs values expose the TIOCGSERIAL interface via
111 sysfs rather than via ioctls.
112
113What: /sys/class/tty/ttyS0/io_type
114Date: October 2012
115Contact: Alan Cox <alan@linux.intel.com>
116Description:
117 Show the I/O type that is to be used with the iomem base
118 address.
119
120 These sysfs values expose the TIOCGSERIAL interface via
121 sysfs rather than via ioctls.
122
123What: /sys/class/tty/ttyS0/iomem_base
124Date: October 2012
125Contact: Alan Cox <alan@linux.intel.com>
126Description:
127 The I/O memory base for this port.
128
129 These sysfs values expose the TIOCGSERIAL interface via
130 sysfs rather than via ioctls.
131
132What: /sys/class/tty/ttyS0/iomem_reg_shift
133Date: October 2012
134Contact: Alan Cox <alan@linux.intel.com>
135Description:
136 Show the register shift indicating the spacing to be used
137 for accesses on this iomem address.
138
139 These sysfs values expose the TIOCGSERIAL interface via
140 sysfs rather than via ioctls.
diff --git a/Documentation/DMA-attributes.txt b/Documentation/DMA-attributes.txt
index f50309081ac7..e59480db9ee0 100644
--- a/Documentation/DMA-attributes.txt
+++ b/Documentation/DMA-attributes.txt
@@ -91,3 +91,12 @@ transferred to 'device' domain. This attribute can be also used for
91dma_unmap_{single,page,sg} functions family to force buffer to stay in 91dma_unmap_{single,page,sg} functions family to force buffer to stay in
92device domain after releasing a mapping for it. Use this attribute with 92device domain after releasing a mapping for it. Use this attribute with
93care! 93care!
94
95DMA_ATTR_FORCE_CONTIGUOUS
96-------------------------
97
98By default DMA-mapping subsystem is allowed to assemble the buffer
99allocated by dma_alloc_attrs() function from individual pages if it can
100be mapped as contiguous chunk into device dma address space. By
101specifing this attribute the allocated buffer is forced to be contiguous
102also in physical memory.
diff --git a/Documentation/DocBook/drm.tmpl b/Documentation/DocBook/drm.tmpl
index b0300529ab13..4ee2304f82f9 100644
--- a/Documentation/DocBook/drm.tmpl
+++ b/Documentation/DocBook/drm.tmpl
@@ -1141,23 +1141,13 @@ int max_width, max_height;</synopsis>
1141 the <methodname>page_flip</methodname> operation will be called with a 1141 the <methodname>page_flip</methodname> operation will be called with a
1142 non-NULL <parameter>event</parameter> argument pointing to a 1142 non-NULL <parameter>event</parameter> argument pointing to a
1143 <structname>drm_pending_vblank_event</structname> instance. Upon page 1143 <structname>drm_pending_vblank_event</structname> instance. Upon page
1144 flip completion the driver must fill the 1144 flip completion the driver must call <methodname>drm_send_vblank_event</methodname>
1145 <parameter>event</parameter>::<structfield>event</structfield> 1145 to fill in the event and send to wake up any waiting processes.
1146 <structfield>sequence</structfield>, <structfield>tv_sec</structfield> 1146 This can be performed with
1147 and <structfield>tv_usec</structfield> fields with the associated
1148 vertical blanking count and timestamp, add the event to the
1149 <parameter>drm_file</parameter> list of events to be signaled, and wake
1150 up any waiting process. This can be performed with
1151 <programlisting><![CDATA[ 1147 <programlisting><![CDATA[
1152 struct timeval now;
1153
1154 event->event.sequence = drm_vblank_count_and_time(..., &now);
1155 event->event.tv_sec = now.tv_sec;
1156 event->event.tv_usec = now.tv_usec;
1157
1158 spin_lock_irqsave(&dev->event_lock, flags); 1148 spin_lock_irqsave(&dev->event_lock, flags);
1159 list_add_tail(&event->base.link, &event->base.file_priv->event_list); 1149 ...
1160 wake_up_interruptible(&event->base.file_priv->event_wait); 1150 drm_send_vblank_event(dev, pipe, event);
1161 spin_unlock_irqrestore(&dev->event_lock, flags); 1151 spin_unlock_irqrestore(&dev->event_lock, flags);
1162 ]]></programlisting> 1152 ]]></programlisting>
1163 </para> 1153 </para>
@@ -1621,10 +1611,10 @@ void intel_crt_init(struct drm_device *dev)
1621 </sect2> 1611 </sect2>
1622 </sect1> 1612 </sect1>
1623 1613
1624 <!-- Internals: mid-layer helper functions --> 1614 <!-- Internals: kms helper functions -->
1625 1615
1626 <sect1> 1616 <sect1>
1627 <title>Mid-layer Helper Functions</title> 1617 <title>Mode Setting Helper Functions</title>
1628 <para> 1618 <para>
1629 The CRTC, encoder and connector functions provided by the drivers 1619 The CRTC, encoder and connector functions provided by the drivers
1630 implement the DRM API. They're called by the DRM core and ioctl handlers 1620 implement the DRM API. They're called by the DRM core and ioctl handlers
@@ -2106,6 +2096,21 @@ void intel_crt_init(struct drm_device *dev)
2106 </listitem> 2096 </listitem>
2107 </itemizedlist> 2097 </itemizedlist>
2108 </sect2> 2098 </sect2>
2099 <sect2>
2100 <title>Modeset Helper Functions Reference</title>
2101!Edrivers/gpu/drm/drm_crtc_helper.c
2102 </sect2>
2103 <sect2>
2104 <title>fbdev Helper Functions Reference</title>
2105!Pdrivers/gpu/drm/drm_fb_helper.c fbdev helpers
2106!Edrivers/gpu/drm/drm_fb_helper.c
2107 </sect2>
2108 <sect2>
2109 <title>Display Port Helper Functions Reference</title>
2110!Pdrivers/gpu/drm/drm_dp_helper.c dp helpers
2111!Iinclude/drm/drm_dp_helper.h
2112!Edrivers/gpu/drm/drm_dp_helper.c
2113 </sect2>
2109 </sect1> 2114 </sect1>
2110 2115
2111 <!-- Internals: vertical blanking --> 2116 <!-- Internals: vertical blanking -->
diff --git a/Documentation/DocBook/gadget.tmpl b/Documentation/DocBook/gadget.tmpl
index 6ef2f0073e5a..4017f147ba2f 100644
--- a/Documentation/DocBook/gadget.tmpl
+++ b/Documentation/DocBook/gadget.tmpl
@@ -671,7 +671,7 @@ than a kernel driver.
671<para>There's a USB Mass Storage class driver, which provides 671<para>There's a USB Mass Storage class driver, which provides
672a different solution for interoperability with systems such 672a different solution for interoperability with systems such
673as MS-Windows and MacOS. 673as MS-Windows and MacOS.
674That <emphasis>File-backed Storage</emphasis> driver uses a 674That <emphasis>Mass Storage</emphasis> driver uses a
675file or block device as backing store for a drive, 675file or block device as backing store for a drive,
676like the <filename>loop</filename> driver. 676like the <filename>loop</filename> driver.
677The USB host uses the BBB, CB, or CBI versions of the mass 677The USB host uses the BBB, CB, or CBI versions of the mass
diff --git a/Documentation/DocBook/kernel-api.tmpl b/Documentation/DocBook/kernel-api.tmpl
index 00687ee9d363..f75ab4c1b281 100644
--- a/Documentation/DocBook/kernel-api.tmpl
+++ b/Documentation/DocBook/kernel-api.tmpl
@@ -58,6 +58,9 @@
58 58
59 <sect1><title>String Conversions</title> 59 <sect1><title>String Conversions</title>
60!Elib/vsprintf.c 60!Elib/vsprintf.c
61!Finclude/linux/kernel.h kstrtol
62!Finclude/linux/kernel.h kstrtoul
63!Elib/kstrtox.c
61 </sect1> 64 </sect1>
62 <sect1><title>String Manipulation</title> 65 <sect1><title>String Manipulation</title>
63<!-- All functions are exported at now 66<!-- All functions are exported at now
diff --git a/Documentation/DocBook/media/v4l/compat.xml b/Documentation/DocBook/media/v4l/compat.xml
index 4fdf6b562d1c..3dd9e78815d1 100644
--- a/Documentation/DocBook/media/v4l/compat.xml
+++ b/Documentation/DocBook/media/v4l/compat.xml
@@ -2586,6 +2586,13 @@ ioctls.</para>
2586 <para>Vendor and device specific media bus pixel formats. 2586 <para>Vendor and device specific media bus pixel formats.
2587 <xref linkend="v4l2-mbus-vendor-spec-fmts" />.</para> 2587 <xref linkend="v4l2-mbus-vendor-spec-fmts" />.</para>
2588 </listitem> 2588 </listitem>
2589 <listitem>
2590 <para>Importing DMABUF file descriptors as a new IO method described
2591 in <xref linkend="dmabuf" />.</para>
2592 </listitem>
2593 <listitem>
2594 <para>Exporting DMABUF files using &VIDIOC-EXPBUF; ioctl.</para>
2595 </listitem>
2589 </itemizedlist> 2596 </itemizedlist>
2590 </section> 2597 </section>
2591 2598
diff --git a/Documentation/DocBook/media/v4l/io.xml b/Documentation/DocBook/media/v4l/io.xml
index b5d1cbdc558b..388a34032653 100644
--- a/Documentation/DocBook/media/v4l/io.xml
+++ b/Documentation/DocBook/media/v4l/io.xml
@@ -331,7 +331,7 @@ application until one or more buffers can be dequeued. By default
331outgoing queue. When the <constant>O_NONBLOCK</constant> flag was 331outgoing queue. When the <constant>O_NONBLOCK</constant> flag was
332given to the &func-open; function, <constant>VIDIOC_DQBUF</constant> 332given to the &func-open; function, <constant>VIDIOC_DQBUF</constant>
333returns immediately with an &EAGAIN; when no buffer is available. The 333returns immediately with an &EAGAIN; when no buffer is available. The
334&func-select; or &func-poll; function are always available.</para> 334&func-select; or &func-poll; functions are always available.</para>
335 335
336 <para>To start and stop capturing or output applications call the 336 <para>To start and stop capturing or output applications call the
337&VIDIOC-STREAMON; and &VIDIOC-STREAMOFF; ioctl. Note 337&VIDIOC-STREAMON; and &VIDIOC-STREAMOFF; ioctl. Note
@@ -472,6 +472,165 @@ rest should be evident.</para>
472 </footnote></para> 472 </footnote></para>
473 </section> 473 </section>
474 474
475 <section id="dmabuf">
476 <title>Streaming I/O (DMA buffer importing)</title>
477
478 <note>
479 <title>Experimental</title>
480 <para>This is an <link linkend="experimental"> experimental </link>
481 interface and may change in the future.</para>
482 </note>
483
484<para>The DMABUF framework provides a generic method for sharing buffers
485between multiple devices. Device drivers that support DMABUF can export a DMA
486buffer to userspace as a file descriptor (known as the exporter role), import a
487DMA buffer from userspace using a file descriptor previously exported for a
488different or the same device (known as the importer role), or both. This
489section describes the DMABUF importer role API in V4L2.</para>
490
491 <para>Refer to <link linked="vidioc-expbuf"> DMABUF exporting </link> for
492details about exporting V4L2 buffers as DMABUF file descriptors.</para>
493
494<para>Input and output devices support the streaming I/O method when the
495<constant>V4L2_CAP_STREAMING</constant> flag in the
496<structfield>capabilities</structfield> field of &v4l2-capability; returned by
497the &VIDIOC-QUERYCAP; ioctl is set. Whether importing DMA buffers through
498DMABUF file descriptors is supported is determined by calling the
499&VIDIOC-REQBUFS; ioctl with the memory type set to
500<constant>V4L2_MEMORY_DMABUF</constant>.</para>
501
502 <para>This I/O method is dedicated to sharing DMA buffers between different
503devices, which may be V4L devices or other video-related devices (e.g. DRM).
504Buffers (planes) are allocated by a driver on behalf of an application. Next,
505these buffers are exported to the application as file descriptors using an API
506which is specific for an allocator driver. Only such file descriptor are
507exchanged. The descriptors and meta-information are passed in &v4l2-buffer; (or
508in &v4l2-plane; in the multi-planar API case). The driver must be switched
509into DMABUF I/O mode by calling the &VIDIOC-REQBUFS; with the desired buffer
510type.</para>
511
512 <example>
513 <title>Initiating streaming I/O with DMABUF file descriptors</title>
514
515 <programlisting>
516&v4l2-requestbuffers; reqbuf;
517
518memset(&amp;reqbuf, 0, sizeof (reqbuf));
519reqbuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
520reqbuf.memory = V4L2_MEMORY_DMABUF;
521reqbuf.count = 1;
522
523if (ioctl(fd, &VIDIOC-REQBUFS;, &amp;reqbuf) == -1) {
524 if (errno == EINVAL)
525 printf("Video capturing or DMABUF streaming is not supported\n");
526 else
527 perror("VIDIOC_REQBUFS");
528
529 exit(EXIT_FAILURE);
530}
531 </programlisting>
532 </example>
533
534 <para>The buffer (plane) file descriptor is passed on the fly with the
535&VIDIOC-QBUF; ioctl. In case of multiplanar buffers, every plane can be
536associated with a different DMABUF descriptor. Although buffers are commonly
537cycled, applications can pass a different DMABUF descriptor at each
538<constant>VIDIOC_QBUF</constant> call.</para>
539
540 <example>
541 <title>Queueing DMABUF using single plane API</title>
542
543 <programlisting>
544int buffer_queue(int v4lfd, int index, int dmafd)
545{
546 &v4l2-buffer; buf;
547
548 memset(&amp;buf, 0, sizeof buf);
549 buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
550 buf.memory = V4L2_MEMORY_DMABUF;
551 buf.index = index;
552 buf.m.fd = dmafd;
553
554 if (ioctl(v4lfd, &VIDIOC-QBUF;, &amp;buf) == -1) {
555 perror("VIDIOC_QBUF");
556 return -1;
557 }
558
559 return 0;
560}
561 </programlisting>
562 </example>
563
564 <example>
565 <title>Queueing DMABUF using multi plane API</title>
566
567 <programlisting>
568int buffer_queue_mp(int v4lfd, int index, int dmafd[], int n_planes)
569{
570 &v4l2-buffer; buf;
571 &v4l2-plane; planes[VIDEO_MAX_PLANES];
572 int i;
573
574 memset(&amp;buf, 0, sizeof buf);
575 buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
576 buf.memory = V4L2_MEMORY_DMABUF;
577 buf.index = index;
578 buf.m.planes = planes;
579 buf.length = n_planes;
580
581 memset(&amp;planes, 0, sizeof planes);
582
583 for (i = 0; i &lt; n_planes; ++i)
584 buf.m.planes[i].m.fd = dmafd[i];
585
586 if (ioctl(v4lfd, &VIDIOC-QBUF;, &amp;buf) == -1) {
587 perror("VIDIOC_QBUF");
588 return -1;
589 }
590
591 return 0;
592}
593 </programlisting>
594 </example>
595
596 <para>Captured or displayed buffers are dequeued with the
597&VIDIOC-DQBUF; ioctl. The driver can unlock the buffer at any
598time between the completion of the DMA and this ioctl. The memory is
599also unlocked when &VIDIOC-STREAMOFF; is called, &VIDIOC-REQBUFS;, or
600when the device is closed.</para>
601
602 <para>For capturing applications it is customary to enqueue a
603number of empty buffers, to start capturing and enter the read loop.
604Here the application waits until a filled buffer can be dequeued, and
605re-enqueues the buffer when the data is no longer needed. Output
606applications fill and enqueue buffers, when enough buffers are stacked
607up output is started. In the write loop, when the application
608runs out of free buffers it must wait until an empty buffer can be
609dequeued and reused. Two methods exist to suspend execution of the
610application until one or more buffers can be dequeued. By default
611<constant>VIDIOC_DQBUF</constant> blocks when no buffer is in the
612outgoing queue. When the <constant>O_NONBLOCK</constant> flag was
613given to the &func-open; function, <constant>VIDIOC_DQBUF</constant>
614returns immediately with an &EAGAIN; when no buffer is available. The
615&func-select; and &func-poll; functions are always available.</para>
616
617 <para>To start and stop capturing or displaying applications call the
618&VIDIOC-STREAMON; and &VIDIOC-STREAMOFF; ioctls. Note that
619<constant>VIDIOC_STREAMOFF</constant> removes all buffers from both queues and
620unlocks all buffers as a side effect. Since there is no notion of doing
621anything "now" on a multitasking system, if an application needs to synchronize
622with another event it should examine the &v4l2-buffer;
623<structfield>timestamp</structfield> of captured buffers, or set the field
624before enqueuing buffers for output.</para>
625
626 <para>Drivers implementing DMABUF importing I/O must support the
627<constant>VIDIOC_REQBUFS</constant>, <constant>VIDIOC_QBUF</constant>,
628<constant>VIDIOC_DQBUF</constant>, <constant>VIDIOC_STREAMON</constant> and
629<constant>VIDIOC_STREAMOFF</constant> ioctls, and the
630<function>select()</function> and <function>poll()</function> functions.</para>
631
632 </section>
633
475 <section id="async"> 634 <section id="async">
476 <title>Asynchronous I/O</title> 635 <title>Asynchronous I/O</title>
477 636
@@ -673,6 +832,14 @@ memory, set by the application. See <xref linkend="userp" /> for details.
673 <structname>v4l2_buffer</structname> structure.</entry> 832 <structname>v4l2_buffer</structname> structure.</entry>
674 </row> 833 </row>
675 <row> 834 <row>
835 <entry></entry>
836 <entry>int</entry>
837 <entry><structfield>fd</structfield></entry>
838 <entry>For the single-plane API and when
839<structfield>memory</structfield> is <constant>V4L2_MEMORY_DMABUF</constant> this
840is the file descriptor associated with a DMABUF buffer.</entry>
841 </row>
842 <row>
676 <entry>__u32</entry> 843 <entry>__u32</entry>
677 <entry><structfield>length</structfield></entry> 844 <entry><structfield>length</structfield></entry>
678 <entry></entry> 845 <entry></entry>
@@ -744,6 +911,15 @@ should set this to 0.</entry>
744 </entry> 911 </entry>
745 </row> 912 </row>
746 <row> 913 <row>
914 <entry></entry>
915 <entry>int</entry>
916 <entry><structfield>fd</structfield></entry>
917 <entry>When the memory type in the containing &v4l2-buffer; is
918 <constant>V4L2_MEMORY_DMABUF</constant>, this is a file
919 descriptor associated with a DMABUF buffer, similar to the
920 <structfield>fd</structfield> field in &v4l2-buffer;.</entry>
921 </row>
922 <row>
747 <entry>__u32</entry> 923 <entry>__u32</entry>
748 <entry><structfield>data_offset</structfield></entry> 924 <entry><structfield>data_offset</structfield></entry>
749 <entry></entry> 925 <entry></entry>
@@ -923,7 +1099,7 @@ application. Drivers set or clear this flag when the
923 </row> 1099 </row>
924 <row> 1100 <row>
925 <entry><constant>V4L2_BUF_FLAG_NO_CACHE_INVALIDATE</constant></entry> 1101 <entry><constant>V4L2_BUF_FLAG_NO_CACHE_INVALIDATE</constant></entry>
926 <entry>0x0400</entry> 1102 <entry>0x0800</entry>
927 <entry>Caches do not have to be invalidated for this buffer. 1103 <entry>Caches do not have to be invalidated for this buffer.
928Typically applications shall use this flag if the data captured in the buffer 1104Typically applications shall use this flag if the data captured in the buffer
929is not going to be touched by the CPU, instead the buffer will, probably, be 1105is not going to be touched by the CPU, instead the buffer will, probably, be
@@ -932,7 +1108,7 @@ passed on to a DMA-capable hardware unit for further processing or output.
932 </row> 1108 </row>
933 <row> 1109 <row>
934 <entry><constant>V4L2_BUF_FLAG_NO_CACHE_CLEAN</constant></entry> 1110 <entry><constant>V4L2_BUF_FLAG_NO_CACHE_CLEAN</constant></entry>
935 <entry>0x0800</entry> 1111 <entry>0x1000</entry>
936 <entry>Caches do not have to be cleaned for this buffer. 1112 <entry>Caches do not have to be cleaned for this buffer.
937Typically applications shall use this flag for output buffers if the data 1113Typically applications shall use this flag for output buffers if the data
938in this buffer has not been created by the CPU but by some DMA-capable unit, 1114in this buffer has not been created by the CPU but by some DMA-capable unit,
@@ -964,6 +1140,12 @@ pointer</link> I/O.</entry>
964 <entry>3</entry> 1140 <entry>3</entry>
965 <entry>[to do]</entry> 1141 <entry>[to do]</entry>
966 </row> 1142 </row>
1143 <row>
1144 <entry><constant>V4L2_MEMORY_DMABUF</constant></entry>
1145 <entry>4</entry>
1146 <entry>The buffer is used for <link linkend="dmabuf">DMA shared
1147buffer</link> I/O.</entry>
1148 </row>
967 </tbody> 1149 </tbody>
968 </tgroup> 1150 </tgroup>
969 </table> 1151 </table>
diff --git a/Documentation/DocBook/media/v4l/v4l2.xml b/Documentation/DocBook/media/v4l/v4l2.xml
index 10ccde9d16d0..4d110b1ad3e9 100644
--- a/Documentation/DocBook/media/v4l/v4l2.xml
+++ b/Documentation/DocBook/media/v4l/v4l2.xml
@@ -543,6 +543,7 @@ and discussions on the V4L mailing list.</revremark>
543 &sub-enuminput; 543 &sub-enuminput;
544 &sub-enumoutput; 544 &sub-enumoutput;
545 &sub-enumstd; 545 &sub-enumstd;
546 &sub-expbuf;
546 &sub-g-audio; 547 &sub-g-audio;
547 &sub-g-audioout; 548 &sub-g-audioout;
548 &sub-g-crop; 549 &sub-g-crop;
diff --git a/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml b/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml
index a8cda1acacd9..cd9943672434 100644
--- a/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml
@@ -6,7 +6,8 @@
6 6
7 <refnamediv> 7 <refnamediv>
8 <refname>VIDIOC_CREATE_BUFS</refname> 8 <refname>VIDIOC_CREATE_BUFS</refname>
9 <refpurpose>Create buffers for Memory Mapped or User Pointer I/O</refpurpose> 9 <refpurpose>Create buffers for Memory Mapped or User Pointer or DMA Buffer
10 I/O</refpurpose>
10 </refnamediv> 11 </refnamediv>
11 12
12 <refsynopsisdiv> 13 <refsynopsisdiv>
@@ -55,11 +56,11 @@
55 </note> 56 </note>
56 57
57 <para>This ioctl is used to create buffers for <link linkend="mmap">memory 58 <para>This ioctl is used to create buffers for <link linkend="mmap">memory
58mapped</link> or <link linkend="userp">user pointer</link> 59mapped</link> or <link linkend="userp">user pointer</link> or <link
59I/O. It can be used as an alternative or in addition to the 60linkend="dmabuf">DMA buffer</link> I/O. It can be used as an alternative or in
60<constant>VIDIOC_REQBUFS</constant> ioctl, when a tighter control over buffers 61addition to the <constant>VIDIOC_REQBUFS</constant> ioctl, when a tighter
61is required. This ioctl can be called multiple times to create buffers of 62control over buffers is required. This ioctl can be called multiple times to
62different sizes.</para> 63create buffers of different sizes.</para>
63 64
64 <para>To allocate device buffers applications initialize relevant fields of 65 <para>To allocate device buffers applications initialize relevant fields of
65the <structname>v4l2_create_buffers</structname> structure. They set the 66the <structname>v4l2_create_buffers</structname> structure. They set the
@@ -109,7 +110,8 @@ information.</para>
109 <entry>__u32</entry> 110 <entry>__u32</entry>
110 <entry><structfield>memory</structfield></entry> 111 <entry><structfield>memory</structfield></entry>
111 <entry>Applications set this field to 112 <entry>Applications set this field to
112<constant>V4L2_MEMORY_MMAP</constant> or 113<constant>V4L2_MEMORY_MMAP</constant>,
114<constant>V4L2_MEMORY_DMABUF</constant> or
113<constant>V4L2_MEMORY_USERPTR</constant>. See <xref linkend="v4l2-memory" 115<constant>V4L2_MEMORY_USERPTR</constant>. See <xref linkend="v4l2-memory"
114/></entry> 116/></entry>
115 </row> 117 </row>
diff --git a/Documentation/DocBook/media/v4l/vidioc-expbuf.xml b/Documentation/DocBook/media/v4l/vidioc-expbuf.xml
new file mode 100644
index 000000000000..72dfbd20a802
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/vidioc-expbuf.xml
@@ -0,0 +1,212 @@
1<refentry id="vidioc-expbuf">
2
3 <refmeta>
4 <refentrytitle>ioctl VIDIOC_EXPBUF</refentrytitle>
5 &manvol;
6 </refmeta>
7
8 <refnamediv>
9 <refname>VIDIOC_EXPBUF</refname>
10 <refpurpose>Export a buffer as a DMABUF file descriptor.</refpurpose>
11 </refnamediv>
12
13 <refsynopsisdiv>
14 <funcsynopsis>
15 <funcprototype>
16 <funcdef>int <function>ioctl</function></funcdef>
17 <paramdef>int <parameter>fd</parameter></paramdef>
18 <paramdef>int <parameter>request</parameter></paramdef>
19 <paramdef>struct v4l2_exportbuffer *<parameter>argp</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26
27 <variablelist>
28 <varlistentry>
29 <term><parameter>fd</parameter></term>
30 <listitem>
31 <para>&fd;</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>VIDIOC_EXPBUF</para>
38 </listitem>
39 </varlistentry>
40 <varlistentry>
41 <term><parameter>argp</parameter></term>
42 <listitem>
43 <para></para>
44 </listitem>
45 </varlistentry>
46 </variablelist>
47 </refsect1>
48
49 <refsect1>
50 <title>Description</title>
51
52 <note>
53 <title>Experimental</title>
54 <para>This is an <link linkend="experimental"> experimental </link>
55 interface and may change in the future.</para>
56 </note>
57
58<para>This ioctl is an extension to the <link linkend="mmap">memory
59mapping</link> I/O method, therefore it is available only for
60<constant>V4L2_MEMORY_MMAP</constant> buffers. It can be used to export a
61buffer as a DMABUF file at any time after buffers have been allocated with the
62&VIDIOC-REQBUFS; ioctl.</para>
63
64<para> To export a buffer, applications fill &v4l2-exportbuffer;. The
65<structfield> type </structfield> field is set to the same buffer type as was
66previously used with &v4l2-requestbuffers;<structfield> type </structfield>.
67Applications must also set the <structfield> index </structfield> field. Valid
68index numbers range from zero to the number of buffers allocated with
69&VIDIOC-REQBUFS; (&v4l2-requestbuffers;<structfield> count </structfield>)
70minus one. For the multi-planar API, applications set the <structfield> plane
71</structfield> field to the index of the plane to be exported. Valid planes
72range from zero to the maximal number of valid planes for the currently active
73format. For the single-planar API, applications must set <structfield> plane
74</structfield> to zero. Additional flags may be posted in the <structfield>
75flags </structfield> field. Refer to a manual for open() for details.
76Currently only O_CLOEXEC is supported. All other fields must be set to zero.
77In the case of multi-planar API, every plane is exported separately using
78multiple <constant> VIDIOC_EXPBUF </constant> calls. </para>
79
80<para> After calling <constant>VIDIOC_EXPBUF</constant> the <structfield> fd
81</structfield> field will be set by a driver. This is a DMABUF file
82descriptor. The application may pass it to other DMABUF-aware devices. Refer to
83<link linkend="dmabuf">DMABUF importing</link> for details about importing
84DMABUF files into V4L2 nodes. It is recommended to close a DMABUF file when it
85is no longer used to allow the associated memory to be reclaimed. </para>
86
87 </refsect1>
88 <refsect1>
89 <section>
90 <title>Examples</title>
91
92 <example>
93 <title>Exporting a buffer.</title>
94 <programlisting>
95int buffer_export(int v4lfd, &v4l2-buf-type; bt, int index, int *dmafd)
96{
97 &v4l2-exportbuffer; expbuf;
98
99 memset(&amp;expbuf, 0, sizeof(expbuf));
100 expbuf.type = bt;
101 expbuf.index = index;
102 if (ioctl(v4lfd, &VIDIOC-EXPBUF;, &amp;expbuf) == -1) {
103 perror("VIDIOC_EXPBUF");
104 return -1;
105 }
106
107 *dmafd = expbuf.fd;
108
109 return 0;
110}
111 </programlisting>
112 </example>
113
114 <example>
115 <title>Exporting a buffer using the multi-planar API.</title>
116 <programlisting>
117int buffer_export_mp(int v4lfd, &v4l2-buf-type; bt, int index,
118 int dmafd[], int n_planes)
119{
120 int i;
121
122 for (i = 0; i &lt; n_planes; ++i) {
123 &v4l2-exportbuffer; expbuf;
124
125 memset(&amp;expbuf, 0, sizeof(expbuf));
126 expbuf.type = bt;
127 expbuf.index = index;
128 expbuf.plane = i;
129 if (ioctl(v4lfd, &VIDIOC-EXPBUF;, &amp;expbuf) == -1) {
130 perror("VIDIOC_EXPBUF");
131 while (i)
132 close(dmafd[--i]);
133 return -1;
134 }
135 dmafd[i] = expbuf.fd;
136 }
137
138 return 0;
139}
140 </programlisting>
141 </example>
142 </section>
143 </refsect1>
144
145 <refsect1>
146 <table pgwide="1" frame="none" id="v4l2-exportbuffer">
147 <title>struct <structname>v4l2_exportbuffer</structname></title>
148 <tgroup cols="3">
149 &cs-str;
150 <tbody valign="top">
151 <row>
152 <entry>__u32</entry>
153 <entry><structfield>type</structfield></entry>
154 <entry>Type of the buffer, same as &v4l2-format;
155<structfield>type</structfield> or &v4l2-requestbuffers;
156<structfield>type</structfield>, set by the application. See <xref
157linkend="v4l2-buf-type" /></entry>
158 </row>
159 <row>
160 <entry>__u32</entry>
161 <entry><structfield>index</structfield></entry>
162 <entry>Number of the buffer, set by the application. This field is
163only used for <link linkend="mmap">memory mapping</link> I/O and can range from
164zero to the number of buffers allocated with the &VIDIOC-REQBUFS; and/or
165&VIDIOC-CREATE-BUFS; ioctls. </entry>
166 </row>
167 <row>
168 <entry>__u32</entry>
169 <entry><structfield>plane</structfield></entry>
170 <entry>Index of the plane to be exported when using the
171multi-planar API. Otherwise this value must be set to zero. </entry>
172 </row>
173 <row>
174 <entry>__u32</entry>
175 <entry><structfield>flags</structfield></entry>
176 <entry>Flags for the newly created file, currently only <constant>
177O_CLOEXEC </constant> is supported, refer to the manual of open() for more
178details.</entry>
179 </row>
180 <row>
181 <entry>__s32</entry>
182 <entry><structfield>fd</structfield></entry>
183 <entry>The DMABUF file descriptor associated with a buffer. Set by
184 the driver.</entry>
185 </row>
186 <row>
187 <entry>__u32</entry>
188 <entry><structfield>reserved[11]</structfield></entry>
189 <entry>Reserved field for future use. Must be set to zero.</entry>
190 </row>
191 </tbody>
192 </tgroup>
193 </table>
194
195 </refsect1>
196
197 <refsect1>
198 &return-value;
199 <variablelist>
200 <varlistentry>
201 <term><errorcode>EINVAL</errorcode></term>
202 <listitem>
203 <para>A queue is not in MMAP mode or DMABUF exporting is not
204supported or <structfield> flags </structfield> or <structfield> type
205</structfield> or <structfield> index </structfield> or <structfield> plane
206</structfield> fields are invalid.</para>
207 </listitem>
208 </varlistentry>
209 </variablelist>
210 </refsect1>
211
212</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-qbuf.xml b/Documentation/DocBook/media/v4l/vidioc-qbuf.xml
index 2d37abefce13..3504a7f2f382 100644
--- a/Documentation/DocBook/media/v4l/vidioc-qbuf.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-qbuf.xml
@@ -109,6 +109,23 @@ they cannot be swapped out to disk. Buffers remain locked until
109dequeued, until the &VIDIOC-STREAMOFF; or &VIDIOC-REQBUFS; ioctl is 109dequeued, until the &VIDIOC-STREAMOFF; or &VIDIOC-REQBUFS; ioctl is
110called, or until the device is closed.</para> 110called, or until the device is closed.</para>
111 111
112 <para>To enqueue a <link linkend="dmabuf">DMABUF</link> buffer applications
113set the <structfield>memory</structfield> field to
114<constant>V4L2_MEMORY_DMABUF</constant> and the <structfield>m.fd</structfield>
115field to a file descriptor associated with a DMABUF buffer. When the
116multi-planar API is used the <structfield>m.fd</structfield> fields of the
117passed array of &v4l2-plane; have to be used instead. When
118<constant>VIDIOC_QBUF</constant> is called with a pointer to this structure the
119driver sets the <constant>V4L2_BUF_FLAG_QUEUED</constant> flag and clears the
120<constant>V4L2_BUF_FLAG_MAPPED</constant> and
121<constant>V4L2_BUF_FLAG_DONE</constant> flags in the
122<structfield>flags</structfield> field, or it returns an error code. This
123ioctl locks the buffer. Locking a buffer means passing it to a driver for a
124hardware access (usually DMA). If an application accesses (reads/writes) a
125locked buffer then the result is undefined. Buffers remain locked until
126dequeued, until the &VIDIOC-STREAMOFF; or &VIDIOC-REQBUFS; ioctl is called, or
127until the device is closed.</para>
128
112 <para>Applications call the <constant>VIDIOC_DQBUF</constant> 129 <para>Applications call the <constant>VIDIOC_DQBUF</constant>
113ioctl to dequeue a filled (capturing) or displayed (output) buffer 130ioctl to dequeue a filled (capturing) or displayed (output) buffer
114from the driver's outgoing queue. They just set the 131from the driver's outgoing queue. They just set the
diff --git a/Documentation/DocBook/media/v4l/vidioc-reqbufs.xml b/Documentation/DocBook/media/v4l/vidioc-reqbufs.xml
index 2b50ef2007f3..78a06a9a5ece 100644
--- a/Documentation/DocBook/media/v4l/vidioc-reqbufs.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-reqbufs.xml
@@ -48,28 +48,30 @@
48 <refsect1> 48 <refsect1>
49 <title>Description</title> 49 <title>Description</title>
50 50
51 <para>This ioctl is used to initiate <link linkend="mmap">memory 51<para>This ioctl is used to initiate <link linkend="mmap">memory mapped</link>,
52mapped</link> or <link linkend="userp">user pointer</link> 52<link linkend="userp">user pointer</link> or <link
53I/O. Memory mapped buffers are located in device memory and must be 53linkend="dmabuf">DMABUF</link> based I/O. Memory mapped buffers are located in
54allocated with this ioctl before they can be mapped into the 54device memory and must be allocated with this ioctl before they can be mapped
55application's address space. User buffers are allocated by 55into the application's address space. User buffers are allocated by
56applications themselves, and this ioctl is merely used to switch the 56applications themselves, and this ioctl is merely used to switch the driver
57driver into user pointer I/O mode and to setup some internal structures.</para> 57into user pointer I/O mode and to setup some internal structures.
58Similarly, DMABUF buffers are allocated by applications through a device
59driver, and this ioctl only configures the driver into DMABUF I/O mode without
60performing any direct allocation.</para>
58 61
59 <para>To allocate device buffers applications initialize all 62 <para>To allocate device buffers applications initialize all fields of the
60fields of the <structname>v4l2_requestbuffers</structname> structure. 63<structname>v4l2_requestbuffers</structname> structure. They set the
61They set the <structfield>type</structfield> field to the respective 64<structfield>type</structfield> field to the respective stream or buffer type,
62stream or buffer type, the <structfield>count</structfield> field to 65the <structfield>count</structfield> field to the desired number of buffers,
63the desired number of buffers, <structfield>memory</structfield> 66<structfield>memory</structfield> must be set to the requested I/O method and
64must be set to the requested I/O method and the <structfield>reserved</structfield> array 67the <structfield>reserved</structfield> array must be zeroed. When the ioctl is
65must be zeroed. When the ioctl 68called with a pointer to this structure the driver will attempt to allocate the
66is called with a pointer to this structure the driver will attempt to allocate 69requested number of buffers and it stores the actual number allocated in the
67the requested number of buffers and it stores the actual number 70<structfield>count</structfield> field. It can be smaller than the number
68allocated in the <structfield>count</structfield> field. It can be 71requested, even zero, when the driver runs out of free memory. A larger number
69smaller than the number requested, even zero, when the driver runs out 72is also possible when the driver requires more buffers to function correctly.
70of free memory. A larger number is also possible when the driver requires 73For example video output requires at least two buffers, one displayed and one
71more buffers to function correctly. For example video output requires at least two buffers, 74filled by the application.</para>
72one displayed and one filled by the application.</para>
73 <para>When the I/O method is not supported the ioctl 75 <para>When the I/O method is not supported the ioctl
74returns an &EINVAL;.</para> 76returns an &EINVAL;.</para>
75 77
@@ -102,7 +104,8 @@ as the &v4l2-format; <structfield>type</structfield> field. See <xref
102 <entry>__u32</entry> 104 <entry>__u32</entry>
103 <entry><structfield>memory</structfield></entry> 105 <entry><structfield>memory</structfield></entry>
104 <entry>Applications set this field to 106 <entry>Applications set this field to
105<constant>V4L2_MEMORY_MMAP</constant> or 107<constant>V4L2_MEMORY_MMAP</constant>,
108<constant>V4L2_MEMORY_DMABUF</constant> or
106<constant>V4L2_MEMORY_USERPTR</constant>. See <xref linkend="v4l2-memory" 109<constant>V4L2_MEMORY_USERPTR</constant>. See <xref linkend="v4l2-memory"
107/>.</entry> 110/>.</entry>
108 </row> 111 </row>
diff --git a/Documentation/DocBook/uio-howto.tmpl b/Documentation/DocBook/uio-howto.tmpl
index ac3d0018140c..ddb05e98af0d 100644
--- a/Documentation/DocBook/uio-howto.tmpl
+++ b/Documentation/DocBook/uio-howto.tmpl
@@ -719,6 +719,62 @@ framework to set up sysfs files for this region. Simply leave it alone.
719 </para> 719 </para>
720</sect1> 720</sect1>
721 721
722<sect1 id="using uio_dmem_genirq">
723<title>Using uio_dmem_genirq for platform devices</title>
724 <para>
725 In addition to statically allocated memory ranges, they may also be
726 a desire to use dynamically allocated regions in a user space driver.
727 In particular, being able to access memory made available through the
728 dma-mapping API, may be particularly useful. The
729 <varname>uio_dmem_genirq</varname> driver provides a way to accomplish
730 this.
731 </para>
732 <para>
733 This driver is used in a similar manner to the
734 <varname>"uio_pdrv_genirq"</varname> driver with respect to interrupt
735 configuration and handling.
736 </para>
737 <para>
738 Set the <varname>.name</varname> element of
739 <varname>struct platform_device</varname> to
740 <varname>"uio_dmem_genirq"</varname> to use this driver.
741 </para>
742 <para>
743 When using this driver, fill in the <varname>.platform_data</varname>
744 element of <varname>struct platform_device</varname>, which is of type
745 <varname>struct uio_dmem_genirq_pdata</varname> and which contains the
746 following elements:
747 </para>
748 <itemizedlist>
749 <listitem><varname>struct uio_info uioinfo</varname>: The same
750 structure used as the <varname>uio_pdrv_genirq</varname> platform
751 data</listitem>
752 <listitem><varname>unsigned int *dynamic_region_sizes</varname>:
753 Pointer to list of sizes of dynamic memory regions to be mapped into
754 user space.
755 </listitem>
756 <listitem><varname>unsigned int num_dynamic_regions</varname>:
757 Number of elements in <varname>dynamic_region_sizes</varname> array.
758 </listitem>
759 </itemizedlist>
760 <para>
761 The dynamic regions defined in the platform data will be appended to
762 the <varname> mem[] </varname> array after the platform device
763 resources, which implies that the total number of static and dynamic
764 memory regions cannot exceed <varname>MAX_UIO_MAPS</varname>.
765 </para>
766 <para>
767 The dynamic memory regions will be allocated when the UIO device file,
768 <varname>/dev/uioX</varname> is opened.
769 Simiar to static memory resources, the memory region information for
770 dynamic regions is then visible via sysfs at
771 <varname>/sys/class/uio/uioX/maps/mapY/*</varname>.
772 The dynmaic memory regions will be freed when the UIO device file is
773 closed. When no processes are holding the device file open, the address
774 returned to userspace is ~0.
775 </para>
776</sect1>
777
722</chapter> 778</chapter>
723 779
724<chapter id="userspace_driver" xreflabel="Writing a driver in user space"> 780<chapter id="userspace_driver" xreflabel="Writing a driver in user space">
diff --git a/Documentation/DocBook/writing-an-alsa-driver.tmpl b/Documentation/DocBook/writing-an-alsa-driver.tmpl
index cab4ec58e46e..fb32aead5a0b 100644
--- a/Documentation/DocBook/writing-an-alsa-driver.tmpl
+++ b/Documentation/DocBook/writing-an-alsa-driver.tmpl
@@ -433,9 +433,9 @@
433 /* chip-specific constructor 433 /* chip-specific constructor
434 * (see "Management of Cards and Components") 434 * (see "Management of Cards and Components")
435 */ 435 */
436 static int __devinit snd_mychip_create(struct snd_card *card, 436 static int snd_mychip_create(struct snd_card *card,
437 struct pci_dev *pci, 437 struct pci_dev *pci,
438 struct mychip **rchip) 438 struct mychip **rchip)
439 { 439 {
440 struct mychip *chip; 440 struct mychip *chip;
441 int err; 441 int err;
@@ -475,8 +475,8 @@
475 } 475 }
476 476
477 /* constructor -- see "Constructor" sub-section */ 477 /* constructor -- see "Constructor" sub-section */
478 static int __devinit snd_mychip_probe(struct pci_dev *pci, 478 static int snd_mychip_probe(struct pci_dev *pci,
479 const struct pci_device_id *pci_id) 479 const struct pci_device_id *pci_id)
480 { 480 {
481 static int dev; 481 static int dev;
482 struct snd_card *card; 482 struct snd_card *card;
@@ -526,7 +526,7 @@
526 } 526 }
527 527
528 /* destructor -- see the "Destructor" sub-section */ 528 /* destructor -- see the "Destructor" sub-section */
529 static void __devexit snd_mychip_remove(struct pci_dev *pci) 529 static void snd_mychip_remove(struct pci_dev *pci)
530 { 530 {
531 snd_card_free(pci_get_drvdata(pci)); 531 snd_card_free(pci_get_drvdata(pci));
532 pci_set_drvdata(pci, NULL); 532 pci_set_drvdata(pci, NULL);
@@ -542,9 +542,8 @@
542 <para> 542 <para>
543 The real constructor of PCI drivers is the <function>probe</function> callback. 543 The real constructor of PCI drivers is the <function>probe</function> callback.
544 The <function>probe</function> callback and other component-constructors which are called 544 The <function>probe</function> callback and other component-constructors which are called
545 from the <function>probe</function> callback should be defined with 545 from the <function>probe</function> callback cannot be used with
546 the <parameter>__devinit</parameter> prefix. You 546 the <parameter>__init</parameter> prefix
547 cannot use the <parameter>__init</parameter> prefix for them,
548 because any PCI device could be a hotplug device. 547 because any PCI device could be a hotplug device.
549 </para> 548 </para>
550 549
@@ -728,7 +727,7 @@
728 <informalexample> 727 <informalexample>
729 <programlisting> 728 <programlisting>
730<![CDATA[ 729<![CDATA[
731 static void __devexit snd_mychip_remove(struct pci_dev *pci) 730 static void snd_mychip_remove(struct pci_dev *pci)
732 { 731 {
733 snd_card_free(pci_get_drvdata(pci)); 732 snd_card_free(pci_get_drvdata(pci));
734 pci_set_drvdata(pci, NULL); 733 pci_set_drvdata(pci, NULL);
@@ -1059,14 +1058,6 @@
1059 </para> 1058 </para>
1060 1059
1061 <para> 1060 <para>
1062 As further notes, the destructors (both
1063 <function>snd_mychip_dev_free</function> and
1064 <function>snd_mychip_free</function>) cannot be defined with
1065 the <parameter>__devexit</parameter> prefix, because they may be
1066 called from the constructor, too, at the false path.
1067 </para>
1068
1069 <para>
1070 For a device which allows hotplugging, you can use 1061 For a device which allows hotplugging, you can use
1071 <function>snd_card_free_when_closed</function>. This one will 1062 <function>snd_card_free_when_closed</function>. This one will
1072 postpone the destruction until all devices are closed. 1063 postpone the destruction until all devices are closed.
@@ -1120,9 +1111,9 @@
1120 } 1111 }
1121 1112
1122 /* chip-specific constructor */ 1113 /* chip-specific constructor */
1123 static int __devinit snd_mychip_create(struct snd_card *card, 1114 static int snd_mychip_create(struct snd_card *card,
1124 struct pci_dev *pci, 1115 struct pci_dev *pci,
1125 struct mychip **rchip) 1116 struct mychip **rchip)
1126 { 1117 {
1127 struct mychip *chip; 1118 struct mychip *chip;
1128 int err; 1119 int err;
@@ -1200,7 +1191,7 @@
1200 .name = KBUILD_MODNAME, 1191 .name = KBUILD_MODNAME,
1201 .id_table = snd_mychip_ids, 1192 .id_table = snd_mychip_ids,
1202 .probe = snd_mychip_probe, 1193 .probe = snd_mychip_probe,
1203 .remove = __devexit_p(snd_mychip_remove), 1194 .remove = snd_mychip_remove,
1204 }; 1195 };
1205 1196
1206 /* module initialization */ 1197 /* module initialization */
@@ -1465,11 +1456,6 @@
1465 </para> 1456 </para>
1466 1457
1467 <para> 1458 <para>
1468 Again, remember that you cannot
1469 use the <parameter>__devexit</parameter> prefix for this destructor.
1470 </para>
1471
1472 <para>
1473 We didn't implement the hardware disabling part in the above. 1459 We didn't implement the hardware disabling part in the above.
1474 If you need to do this, please note that the destructor may be 1460 If you need to do this, please note that the destructor may be
1475 called even before the initialization of the chip is completed. 1461 called even before the initialization of the chip is completed.
@@ -1619,7 +1605,7 @@
1619 .name = KBUILD_MODNAME, 1605 .name = KBUILD_MODNAME,
1620 .id_table = snd_mychip_ids, 1606 .id_table = snd_mychip_ids,
1621 .probe = snd_mychip_probe, 1607 .probe = snd_mychip_probe,
1622 .remove = __devexit_p(snd_mychip_remove), 1608 .remove = snd_mychip_remove,
1623 }; 1609 };
1624]]> 1610]]>
1625 </programlisting> 1611 </programlisting>
@@ -1630,11 +1616,7 @@
1630 The <structfield>probe</structfield> and 1616 The <structfield>probe</structfield> and
1631 <structfield>remove</structfield> functions have already 1617 <structfield>remove</structfield> functions have already
1632 been defined in the previous sections. 1618 been defined in the previous sections.
1633 The <structfield>remove</structfield> function should 1619 The <structfield>name</structfield>
1634 be defined with the
1635 <function>__devexit_p()</function> macro, so that it's not
1636 defined for built-in (and non-hot-pluggable) case. The
1637 <structfield>name</structfield>
1638 field is the name string of this device. Note that you must not 1620 field is the name string of this device. Note that you must not
1639 use a slash <quote>/</quote> in this string. 1621 use a slash <quote>/</quote> in this string.
1640 </para> 1622 </para>
@@ -1665,9 +1647,7 @@
1665 <para> 1647 <para>
1666 Note that these module entries are tagged with 1648 Note that these module entries are tagged with
1667 <parameter>__init</parameter> and 1649 <parameter>__init</parameter> and
1668 <parameter>__exit</parameter> prefixes, not 1650 <parameter>__exit</parameter> prefixes.
1669 <parameter>__devinit</parameter> nor
1670 <parameter>__devexit</parameter>.
1671 </para> 1651 </para>
1672 1652
1673 <para> 1653 <para>
@@ -1918,7 +1898,7 @@
1918 */ 1898 */
1919 1899
1920 /* create a pcm device */ 1900 /* create a pcm device */
1921 static int __devinit snd_mychip_new_pcm(struct mychip *chip) 1901 static int snd_mychip_new_pcm(struct mychip *chip)
1922 { 1902 {
1923 struct snd_pcm *pcm; 1903 struct snd_pcm *pcm;
1924 int err; 1904 int err;
@@ -1957,7 +1937,7 @@
1957 <informalexample> 1937 <informalexample>
1958 <programlisting> 1938 <programlisting>
1959<![CDATA[ 1939<![CDATA[
1960 static int __devinit snd_mychip_new_pcm(struct mychip *chip) 1940 static int snd_mychip_new_pcm(struct mychip *chip)
1961 { 1941 {
1962 struct snd_pcm *pcm; 1942 struct snd_pcm *pcm;
1963 int err; 1943 int err;
@@ -2124,7 +2104,7 @@
2124 .... 2104 ....
2125 } 2105 }
2126 2106
2127 static int __devinit snd_mychip_new_pcm(struct mychip *chip) 2107 static int snd_mychip_new_pcm(struct mychip *chip)
2128 { 2108 {
2129 struct snd_pcm *pcm; 2109 struct snd_pcm *pcm;
2130 .... 2110 ....
@@ -3399,7 +3379,7 @@ struct _snd_pcm_runtime {
3399 <title>Definition of a Control</title> 3379 <title>Definition of a Control</title>
3400 <programlisting> 3380 <programlisting>
3401<![CDATA[ 3381<![CDATA[
3402 static struct snd_kcontrol_new my_control __devinitdata = { 3382 static struct snd_kcontrol_new my_control = {
3403 .iface = SNDRV_CTL_ELEM_IFACE_MIXER, 3383 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3404 .name = "PCM Playback Switch", 3384 .name = "PCM Playback Switch",
3405 .index = 0, 3385 .index = 0,
@@ -3415,13 +3395,6 @@ struct _snd_pcm_runtime {
3415 </para> 3395 </para>
3416 3396
3417 <para> 3397 <para>
3418 Most likely the control is created via
3419 <function>snd_ctl_new1()</function>, and in such a case, you can
3420 add the <parameter>__devinitdata</parameter> prefix to the
3421 definition as above.
3422 </para>
3423
3424 <para>
3425 The <structfield>iface</structfield> field specifies the control 3398 The <structfield>iface</structfield> field specifies the control
3426 type, <constant>SNDRV_CTL_ELEM_IFACE_XXX</constant>, which 3399 type, <constant>SNDRV_CTL_ELEM_IFACE_XXX</constant>, which
3427 is usually <constant>MIXER</constant>. 3400 is usually <constant>MIXER</constant>.
@@ -3847,10 +3820,8 @@ struct _snd_pcm_runtime {
3847 3820
3848 <para> 3821 <para>
3849 <function>snd_ctl_new1()</function> allocates a new 3822 <function>snd_ctl_new1()</function> allocates a new
3850 <structname>snd_kcontrol</structname> instance (that's why the definition 3823 <structname>snd_kcontrol</structname> instance,
3851 of <parameter>my_control</parameter> can be with 3824 and <function>snd_ctl_add</function> assigns the given
3852 the <parameter>__devinitdata</parameter>
3853 prefix), and <function>snd_ctl_add</function> assigns the given
3854 control component to the card. 3825 control component to the card.
3855 </para> 3826 </para>
3856 </section> 3827 </section>
@@ -3896,7 +3867,7 @@ struct _snd_pcm_runtime {
3896<![CDATA[ 3867<![CDATA[
3897 static DECLARE_TLV_DB_SCALE(db_scale_my_control, -4050, 150, 0); 3868 static DECLARE_TLV_DB_SCALE(db_scale_my_control, -4050, 150, 0);
3898 3869
3899 static struct snd_kcontrol_new my_control __devinitdata = { 3870 static struct snd_kcontrol_new my_control = {
3900 ... 3871 ...
3901 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE | 3872 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE |
3902 SNDRV_CTL_ELEM_ACCESS_TLV_READ, 3873 SNDRV_CTL_ELEM_ACCESS_TLV_READ,
@@ -5761,8 +5732,8 @@ struct _snd_pcm_runtime {
5761 <informalexample> 5732 <informalexample>
5762 <programlisting> 5733 <programlisting>
5763<![CDATA[ 5734<![CDATA[
5764 static int __devinit snd_mychip_probe(struct pci_dev *pci, 5735 static int snd_mychip_probe(struct pci_dev *pci,
5765 const struct pci_device_id *pci_id) 5736 const struct pci_device_id *pci_id)
5766 { 5737 {
5767 .... 5738 ....
5768 struct snd_card *card; 5739 struct snd_card *card;
@@ -5787,8 +5758,8 @@ struct _snd_pcm_runtime {
5787 <informalexample> 5758 <informalexample>
5788 <programlisting> 5759 <programlisting>
5789<![CDATA[ 5760<![CDATA[
5790 static int __devinit snd_mychip_probe(struct pci_dev *pci, 5761 static int snd_mychip_probe(struct pci_dev *pci,
5791 const struct pci_device_id *pci_id) 5762 const struct pci_device_id *pci_id)
5792 { 5763 {
5793 .... 5764 ....
5794 struct snd_card *card; 5765 struct snd_card *card;
@@ -5825,7 +5796,7 @@ struct _snd_pcm_runtime {
5825 .name = KBUILD_MODNAME, 5796 .name = KBUILD_MODNAME,
5826 .id_table = snd_my_ids, 5797 .id_table = snd_my_ids,
5827 .probe = snd_my_probe, 5798 .probe = snd_my_probe,
5828 .remove = __devexit_p(snd_my_remove), 5799 .remove = snd_my_remove,
5829 #ifdef CONFIG_PM 5800 #ifdef CONFIG_PM
5830 .suspend = snd_my_suspend, 5801 .suspend = snd_my_suspend,
5831 .resume = snd_my_resume, 5802 .resume = snd_my_resume,
diff --git a/Documentation/HOWTO b/Documentation/HOWTO
index 59c080f084ef..a9f288ff54f9 100644
--- a/Documentation/HOWTO
+++ b/Documentation/HOWTO
@@ -462,7 +462,7 @@ Differences between the kernel community and corporate structures
462 462
463The kernel community works differently than most traditional corporate 463The kernel community works differently than most traditional corporate
464development environments. Here are a list of things that you can try to 464development environments. Here are a list of things that you can try to
465do to try to avoid problems: 465do to avoid problems:
466 Good things to say regarding your proposed changes: 466 Good things to say regarding your proposed changes:
467 - "This solves multiple problems." 467 - "This solves multiple problems."
468 - "This deletes 2000 lines of code." 468 - "This deletes 2000 lines of code."
diff --git a/Documentation/IRQ-domain.txt b/Documentation/IRQ-domain.txt
index 1401cece745a..9bc95942ec22 100644
--- a/Documentation/IRQ-domain.txt
+++ b/Documentation/IRQ-domain.txt
@@ -7,6 +7,21 @@ systems with multiple interrupt controllers the kernel must ensure
7that each one gets assigned non-overlapping allocations of Linux 7that each one gets assigned non-overlapping allocations of Linux
8IRQ numbers. 8IRQ numbers.
9 9
10The number of interrupt controllers registered as unique irqchips
11show a rising tendency: for example subdrivers of different kinds
12such as GPIO controllers avoid reimplementing identical callback
13mechanisms as the IRQ core system by modelling their interrupt
14handlers as irqchips, i.e. in effect cascading interrupt controllers.
15
16Here the interrupt number loose all kind of correspondence to
17hardware interrupt numbers: whereas in the past, IRQ numbers could
18be chosen so they matched the hardware IRQ line into the root
19interrupt controller (i.e. the component actually fireing the
20interrupt line to the CPU) nowadays this number is just a number.
21
22For this reason we need a mechanism to separate controller-local
23interrupt numbers, called hardware irq's, from Linux IRQ numbers.
24
10The irq_alloc_desc*() and irq_free_desc*() APIs provide allocation of 25The irq_alloc_desc*() and irq_free_desc*() APIs provide allocation of
11irq numbers, but they don't provide any support for reverse mapping of 26irq numbers, but they don't provide any support for reverse mapping of
12the controller-local IRQ (hwirq) number into the Linux IRQ number 27the controller-local IRQ (hwirq) number into the Linux IRQ number
@@ -40,6 +55,10 @@ required hardware setup.
40When an interrupt is received, irq_find_mapping() function should 55When an interrupt is received, irq_find_mapping() function should
41be used to find the Linux IRQ number from the hwirq number. 56be used to find the Linux IRQ number from the hwirq number.
42 57
58The irq_create_mapping() function must be called *atleast once*
59before any call to irq_find_mapping(), lest the descriptor will not
60be allocated.
61
43If the driver has the Linux IRQ number or the irq_data pointer, and 62If the driver has the Linux IRQ number or the irq_data pointer, and
44needs to know the associated hwirq number (such as in the irq_chip 63needs to know the associated hwirq number (such as in the irq_chip
45callbacks) then it can be directly obtained from irq_data->hwirq. 64callbacks) then it can be directly obtained from irq_data->hwirq.
@@ -119,4 +138,17 @@ numbers.
119 138
120Most users of legacy mappings should use irq_domain_add_simple() which 139Most users of legacy mappings should use irq_domain_add_simple() which
121will use a legacy domain only if an IRQ range is supplied by the 140will use a legacy domain only if an IRQ range is supplied by the
122system and will otherwise use a linear domain mapping. 141system and will otherwise use a linear domain mapping. The semantics
142of this call are such that if an IRQ range is specified then
143descriptors will be allocated on-the-fly for it, and if no range is
144specified it will fall through to irq_domain_add_linear() which meand
145*no* irq descriptors will be allocated.
146
147A typical use case for simple domains is where an irqchip provider
148is supporting both dynamic and static IRQ assignments.
149
150In order to avoid ending up in a situation where a linear domain is
151used and no descriptor gets allocated it is very important to make sure
152that the driver using the simple domain call irq_create_mapping()
153before any irq_find_mapping() since the latter will actually work
154for the static IRQ assignment case.
diff --git a/Documentation/PCI/pci-iov-howto.txt b/Documentation/PCI/pci-iov-howto.txt
index fc73ef5d65b8..cfaca7e69893 100644
--- a/Documentation/PCI/pci-iov-howto.txt
+++ b/Documentation/PCI/pci-iov-howto.txt
@@ -2,6 +2,9 @@
2 Copyright (C) 2009 Intel Corporation 2 Copyright (C) 2009 Intel Corporation
3 Yu Zhao <yu.zhao@intel.com> 3 Yu Zhao <yu.zhao@intel.com>
4 4
5 Update: November 2012
6 -- sysfs-based SRIOV enable-/disable-ment
7 Donald Dutile <ddutile@redhat.com>
5 8
61. Overview 91. Overview
7 10
@@ -24,10 +27,21 @@ real existing PCI device.
24 27
252.1 How can I enable SR-IOV capability 282.1 How can I enable SR-IOV capability
26 29
27The device driver (PF driver) will control the enabling and disabling 30Multiple methods are available for SR-IOV enablement.
28of the capability via API provided by SR-IOV core. If the hardware 31In the first method, the device driver (PF driver) will control the
29has SR-IOV capability, loading its PF driver would enable it and all 32enabling and disabling of the capability via API provided by SR-IOV core.
30VFs associated with the PF. 33If the hardware has SR-IOV capability, loading its PF driver would
34enable it and all VFs associated with the PF. Some PF drivers require
35a module parameter to be set to determine the number of VFs to enable.
36In the second method, a write to the sysfs file sriov_numvfs will
37enable and disable the VFs associated with a PCIe PF. This method
38enables per-PF, VF enable/disable values versus the first method,
39which applies to all PFs of the same device. Additionally, the
40PCI SRIOV core support ensures that enable/disable operations are
41valid to reduce duplication in multiple drivers for the same
42checks, e.g., check numvfs == 0 if enabling VFs, ensure
43numvfs <= totalvfs.
44The second method is the recommended method for new/future VF devices.
31 45
322.2 How can I use the Virtual Functions 462.2 How can I use the Virtual Functions
33 47
@@ -40,13 +54,22 @@ requires device driver that is same as a normal PCI device's.
403.1 SR-IOV API 543.1 SR-IOV API
41 55
42To enable SR-IOV capability: 56To enable SR-IOV capability:
57(a) For the first method, in the driver:
43 int pci_enable_sriov(struct pci_dev *dev, int nr_virtfn); 58 int pci_enable_sriov(struct pci_dev *dev, int nr_virtfn);
44 'nr_virtfn' is number of VFs to be enabled. 59 'nr_virtfn' is number of VFs to be enabled.
60(b) For the second method, from sysfs:
61 echo 'nr_virtfn' > \
62 /sys/bus/pci/devices/<DOMAIN:BUS:DEVICE.FUNCTION>/sriov_numvfs
45 63
46To disable SR-IOV capability: 64To disable SR-IOV capability:
65(a) For the first method, in the driver:
47 void pci_disable_sriov(struct pci_dev *dev); 66 void pci_disable_sriov(struct pci_dev *dev);
67(b) For the second method, from sysfs:
68 echo 0 > \
69 /sys/bus/pci/devices/<DOMAIN:BUS:DEVICE.FUNCTION>/sriov_numvfs
48 70
49To notify SR-IOV core of Virtual Function Migration: 71To notify SR-IOV core of Virtual Function Migration:
72(a) In the driver:
50 irqreturn_t pci_sriov_migration(struct pci_dev *dev); 73 irqreturn_t pci_sriov_migration(struct pci_dev *dev);
51 74
523.2 Usage example 753.2 Usage example
@@ -88,6 +111,22 @@ static void dev_shutdown(struct pci_dev *dev)
88 ... 111 ...
89} 112}
90 113
114static int dev_sriov_configure(struct pci_dev *dev, int numvfs)
115{
116 if (numvfs > 0) {
117 ...
118 pci_enable_sriov(dev, numvfs);
119 ...
120 return numvfs;
121 }
122 if (numvfs == 0) {
123 ....
124 pci_disable_sriov(dev);
125 ...
126 return 0;
127 }
128}
129
91static struct pci_driver dev_driver = { 130static struct pci_driver dev_driver = {
92 .name = "SR-IOV Physical Function driver", 131 .name = "SR-IOV Physical Function driver",
93 .id_table = dev_id_table, 132 .id_table = dev_id_table,
@@ -96,4 +135,5 @@ static struct pci_driver dev_driver = {
96 .suspend = dev_suspend, 135 .suspend = dev_suspend,
97 .resume = dev_resume, 136 .resume = dev_resume,
98 .shutdown = dev_shutdown, 137 .shutdown = dev_shutdown,
138 .sriov_configure = dev_sriov_configure,
99}; 139};
diff --git a/Documentation/RCU/RTFP.txt b/Documentation/RCU/RTFP.txt
index 7c1dfb19fc40..7f40c72a9c51 100644
--- a/Documentation/RCU/RTFP.txt
+++ b/Documentation/RCU/RTFP.txt
@@ -186,7 +186,7 @@ Bibtex Entries
186 186
187@article{Kung80 187@article{Kung80
188,author="H. T. Kung and Q. Lehman" 188,author="H. T. Kung and Q. Lehman"
189,title="Concurrent Maintenance of Binary Search Trees" 189,title="Concurrent Manipulation of Binary Search Trees"
190,Year="1980" 190,Year="1980"
191,Month="September" 191,Month="September"
192,journal="ACM Transactions on Database Systems" 192,journal="ACM Transactions on Database Systems"
diff --git a/Documentation/RCU/checklist.txt b/Documentation/RCU/checklist.txt
index cdb20d41a44a..31ef8fe07f82 100644
--- a/Documentation/RCU/checklist.txt
+++ b/Documentation/RCU/checklist.txt
@@ -271,15 +271,14 @@ over a rather long period of time, but improvements are always welcome!
271 The same cautions apply to call_rcu_bh() and call_rcu_sched(). 271 The same cautions apply to call_rcu_bh() and call_rcu_sched().
272 272
2739. All RCU list-traversal primitives, which include 2739. All RCU list-traversal primitives, which include
274 rcu_dereference(), list_for_each_entry_rcu(), 274 rcu_dereference(), list_for_each_entry_rcu(), and
275 list_for_each_continue_rcu(), and list_for_each_safe_rcu(), 275 list_for_each_safe_rcu(), must be either within an RCU read-side
276 must be either within an RCU read-side critical section or 276 critical section or must be protected by appropriate update-side
277 must be protected by appropriate update-side locks. RCU 277 locks. RCU read-side critical sections are delimited by
278 read-side critical sections are delimited by rcu_read_lock() 278 rcu_read_lock() and rcu_read_unlock(), or by similar primitives
279 and rcu_read_unlock(), or by similar primitives such as 279 such as rcu_read_lock_bh() and rcu_read_unlock_bh(), in which
280 rcu_read_lock_bh() and rcu_read_unlock_bh(), in which case 280 case the matching rcu_dereference() primitive must be used in
281 the matching rcu_dereference() primitive must be used in order 281 order to keep lockdep happy, in this case, rcu_dereference_bh().
282 to keep lockdep happy, in this case, rcu_dereference_bh().
283 282
284 The reason that it is permissible to use RCU list-traversal 283 The reason that it is permissible to use RCU list-traversal
285 primitives when the update-side lock is held is that doing so 284 primitives when the update-side lock is held is that doing so
diff --git a/Documentation/RCU/listRCU.txt b/Documentation/RCU/listRCU.txt
index 4349c1487e91..adb5a3782846 100644
--- a/Documentation/RCU/listRCU.txt
+++ b/Documentation/RCU/listRCU.txt
@@ -205,7 +205,7 @@ RCU ("read-copy update") its name. The RCU code is as follows:
205 audit_copy_rule(&ne->rule, &e->rule); 205 audit_copy_rule(&ne->rule, &e->rule);
206 ne->rule.action = newaction; 206 ne->rule.action = newaction;
207 ne->rule.file_count = newfield_count; 207 ne->rule.file_count = newfield_count;
208 list_replace_rcu(e, ne); 208 list_replace_rcu(&e->list, &ne->list);
209 call_rcu(&e->rcu, audit_free_rule); 209 call_rcu(&e->rcu, audit_free_rule);
210 return 0; 210 return 0;
211 } 211 }
diff --git a/Documentation/RCU/rcuref.txt b/Documentation/RCU/rcuref.txt
index 4202ad093130..141d531aa14b 100644
--- a/Documentation/RCU/rcuref.txt
+++ b/Documentation/RCU/rcuref.txt
@@ -20,7 +20,7 @@ release_referenced() delete()
20{ { 20{ {
21 ... write_lock(&list_lock); 21 ... write_lock(&list_lock);
22 atomic_dec(&el->rc, relfunc) ... 22 atomic_dec(&el->rc, relfunc) ...
23 ... delete_element 23 ... remove_element
24} write_unlock(&list_lock); 24} write_unlock(&list_lock);
25 ... 25 ...
26 if (atomic_dec_and_test(&el->rc)) 26 if (atomic_dec_and_test(&el->rc))
@@ -52,7 +52,7 @@ release_referenced() delete()
52{ { 52{ {
53 ... spin_lock(&list_lock); 53 ... spin_lock(&list_lock);
54 if (atomic_dec_and_test(&el->rc)) ... 54 if (atomic_dec_and_test(&el->rc)) ...
55 call_rcu(&el->head, el_free); delete_element 55 call_rcu(&el->head, el_free); remove_element
56 ... spin_unlock(&list_lock); 56 ... spin_unlock(&list_lock);
57} ... 57} ...
58 if (atomic_dec_and_test(&el->rc)) 58 if (atomic_dec_and_test(&el->rc))
@@ -64,3 +64,60 @@ Sometimes, a reference to the element needs to be obtained in the
64update (write) stream. In such cases, atomic_inc_not_zero() might be 64update (write) stream. In such cases, atomic_inc_not_zero() might be
65overkill, since we hold the update-side spinlock. One might instead 65overkill, since we hold the update-side spinlock. One might instead
66use atomic_inc() in such cases. 66use atomic_inc() in such cases.
67
68It is not always convenient to deal with "FAIL" in the
69search_and_reference() code path. In such cases, the
70atomic_dec_and_test() may be moved from delete() to el_free()
71as follows:
72
731. 2.
74add() search_and_reference()
75{ {
76 alloc_object rcu_read_lock();
77 ... search_for_element
78 atomic_set(&el->rc, 1); atomic_inc(&el->rc);
79 spin_lock(&list_lock); ...
80
81 add_element rcu_read_unlock();
82 ... }
83 spin_unlock(&list_lock); 4.
84} delete()
853. {
86release_referenced() spin_lock(&list_lock);
87{ ...
88 ... remove_element
89 if (atomic_dec_and_test(&el->rc)) spin_unlock(&list_lock);
90 kfree(el); ...
91 ... call_rcu(&el->head, el_free);
92} ...
935. }
94void el_free(struct rcu_head *rhp)
95{
96 release_referenced();
97}
98
99The key point is that the initial reference added by add() is not removed
100until after a grace period has elapsed following removal. This means that
101search_and_reference() cannot find this element, which means that the value
102of el->rc cannot increase. Thus, once it reaches zero, there are no
103readers that can or ever will be able to reference the element. The
104element can therefore safely be freed. This in turn guarantees that if
105any reader finds the element, that reader may safely acquire a reference
106without checking the value of the reference counter.
107
108In cases where delete() can sleep, synchronize_rcu() can be called from
109delete(), so that el_free() can be subsumed into delete as follows:
110
1114.
112delete()
113{
114 spin_lock(&list_lock);
115 ...
116 remove_element
117 spin_unlock(&list_lock);
118 ...
119 synchronize_rcu();
120 if (atomic_dec_and_test(&el->rc))
121 kfree(el);
122 ...
123}
diff --git a/Documentation/RCU/trace.txt b/Documentation/RCU/trace.txt
index 672d19083252..c776968f4463 100644
--- a/Documentation/RCU/trace.txt
+++ b/Documentation/RCU/trace.txt
@@ -10,51 +10,63 @@ for rcutree and next for rcutiny.
10 10
11CONFIG_TREE_RCU and CONFIG_TREE_PREEMPT_RCU debugfs Files and Formats 11CONFIG_TREE_RCU and CONFIG_TREE_PREEMPT_RCU debugfs Files and Formats
12 12
13These implementations of RCU provides several debugfs files under the 13These implementations of RCU provide several debugfs directories under the
14top-level directory "rcu": 14top-level directory "rcu":
15 15
16rcu/rcudata: 16rcu/rcu_bh
17rcu/rcu_preempt
18rcu/rcu_sched
19
20Each directory contains files for the corresponding flavor of RCU.
21Note that rcu/rcu_preempt is only present for CONFIG_TREE_PREEMPT_RCU.
22For CONFIG_TREE_RCU, the RCU flavor maps onto the RCU-sched flavor,
23so that activity for both appears in rcu/rcu_sched.
24
25In addition, the following file appears in the top-level directory:
26rcu/rcutorture. This file displays rcutorture test progress. The output
27of "cat rcu/rcutorture" looks as follows:
28
29rcutorture test sequence: 0 (test in progress)
30rcutorture update version number: 615
31
32The first line shows the number of rcutorture tests that have completed
33since boot. If a test is currently running, the "(test in progress)"
34string will appear as shown above. The second line shows the number of
35update cycles that the current test has started, or zero if there is
36no test in progress.
37
38
39Within each flavor directory (rcu/rcu_bh, rcu/rcu_sched, and possibly
40also rcu/rcu_preempt) the following files will be present:
41
42rcudata:
17 Displays fields in struct rcu_data. 43 Displays fields in struct rcu_data.
18rcu/rcudata.csv: 44rcuexp:
19 Comma-separated values spreadsheet version of rcudata. 45 Displays statistics for expedited grace periods.
20rcu/rcugp: 46rcugp:
21 Displays grace-period counters. 47 Displays grace-period counters.
22rcu/rcuhier: 48rcuhier:
23 Displays the struct rcu_node hierarchy. 49 Displays the struct rcu_node hierarchy.
24rcu/rcu_pending: 50rcu_pending:
25 Displays counts of the reasons rcu_pending() decided that RCU had 51 Displays counts of the reasons rcu_pending() decided that RCU had
26 work to do. 52 work to do.
27rcu/rcutorture: 53rcuboost:
28 Displays rcutorture test progress.
29rcu/rcuboost:
30 Displays RCU boosting statistics. Only present if 54 Displays RCU boosting statistics. Only present if
31 CONFIG_RCU_BOOST=y. 55 CONFIG_RCU_BOOST=y.
32 56
33The output of "cat rcu/rcudata" looks as follows: 57The output of "cat rcu/rcu_preempt/rcudata" looks as follows:
34 58
35rcu_sched: 59 0!c=30455 g=30456 pq=1 qp=1 dt=126535/140000000000000/0 df=2002 of=4 ql=0/0 qs=N... b=10 ci=74572 nci=0 co=1131 ca=716
36 0 c=20972 g=20973 pq=1 pgp=20973 qp=0 dt=545/1/0 df=50 of=0 ql=163 qs=NRW. kt=0/W/0 ktl=ebc3 b=10 ci=153737 co=0 ca=0 60 1!c=30719 g=30720 pq=1 qp=0 dt=132007/140000000000000/0 df=1874 of=10 ql=0/0 qs=N... b=10 ci=123209 nci=0 co=685 ca=982
37 1 c=20972 g=20973 pq=1 pgp=20973 qp=0 dt=967/1/0 df=58 of=0 ql=634 qs=NRW. kt=0/W/1 ktl=58c b=10 ci=191037 co=0 ca=0 61 2!c=30150 g=30151 pq=1 qp=1 dt=138537/140000000000000/0 df=1707 of=8 ql=0/0 qs=N... b=10 ci=80132 nci=0 co=1328 ca=1458
38 2 c=20972 g=20973 pq=1 pgp=20973 qp=0 dt=1081/1/0 df=175 of=0 ql=74 qs=N.W. kt=0/W/2 ktl=da94 b=10 ci=75991 co=0 ca=0 62 3 c=31249 g=31250 pq=1 qp=0 dt=107255/140000000000000/0 df=1749 of=6 ql=0/450 qs=NRW. b=10 ci=151700 nci=0 co=509 ca=622
39 3 c=20942 g=20943 pq=1 pgp=20942 qp=1 dt=1846/0/0 df=404 of=0 ql=0 qs=.... kt=0/W/3 ktl=d1cd b=10 ci=72261 co=0 ca=0 63 4!c=29502 g=29503 pq=1 qp=1 dt=83647/140000000000000/0 df=965 of=5 ql=0/0 qs=N... b=10 ci=65643 nci=0 co=1373 ca=1521
40 4 c=20972 g=20973 pq=1 pgp=20973 qp=0 dt=369/1/0 df=83 of=0 ql=48 qs=N.W. kt=0/W/4 ktl=e0e7 b=10 ci=128365 co=0 ca=0 64 5 c=31201 g=31202 pq=1 qp=1 dt=70422/0/0 df=535 of=7 ql=0/0 qs=.... b=10 ci=58500 nci=0 co=764 ca=698
41 5 c=20972 g=20973 pq=1 pgp=20973 qp=0 dt=381/1/0 df=64 of=0 ql=169 qs=NRW. kt=0/W/5 ktl=fb2f b=10 ci=164360 co=0 ca=0 65 6!c=30253 g=30254 pq=1 qp=1 dt=95363/140000000000000/0 df=780 of=5 ql=0/0 qs=N... b=10 ci=100607 nci=0 co=1414 ca=1353
42 6 c=20972 g=20973 pq=1 pgp=20973 qp=0 dt=1037/1/0 df=183 of=0 ql=62 qs=N.W. kt=0/W/6 ktl=d2ad b=10 ci=65663 co=0 ca=0 66 7 c=31178 g=31178 pq=1 qp=0 dt=91536/0/0 df=547 of=4 ql=0/0 qs=.... b=10 ci=109819 nci=0 co=1115 ca=969
43 7 c=20897 g=20897 pq=1 pgp=20896 qp=0 dt=1572/0/0 df=382 of=0 ql=0 qs=.... kt=0/W/7 ktl=cf15 b=10 ci=75006 co=0 ca=0 67
44rcu_bh: 68This file has one line per CPU, or eight for this 8-CPU system.
45 0 c=1480 g=1480 pq=1 pgp=1480 qp=0 dt=545/1/0 df=6 of=0 ql=0 qs=.... kt=0/W/0 ktl=ebc3 b=10 ci=0 co=0 ca=0 69The fields are as follows:
46 1 c=1480 g=1480 pq=1 pgp=1480 qp=0 dt=967/1/0 df=3 of=0 ql=0 qs=.... kt=0/W/1 ktl=58c b=10 ci=151 co=0 ca=0
47 2 c=1480 g=1480 pq=1 pgp=1480 qp=0 dt=1081/1/0 df=6 of=0 ql=0 qs=.... kt=0/W/2 ktl=da94 b=10 ci=0 co=0 ca=0
48 3 c=1480 g=1480 pq=1 pgp=1480 qp=0 dt=1846/0/0 df=8 of=0 ql=0 qs=.... kt=0/W/3 ktl=d1cd b=10 ci=0 co=0 ca=0
49 4 c=1480 g=1480 pq=1 pgp=1480 qp=0 dt=369/1/0 df=6 of=0 ql=0 qs=.... kt=0/W/4 ktl=e0e7 b=10 ci=0 co=0 ca=0
50 5 c=1480 g=1480 pq=1 pgp=1480 qp=0 dt=381/1/0 df=4 of=0 ql=0 qs=.... kt=0/W/5 ktl=fb2f b=10 ci=0 co=0 ca=0
51 6 c=1480 g=1480 pq=1 pgp=1480 qp=0 dt=1037/1/0 df=6 of=0 ql=0 qs=.... kt=0/W/6 ktl=d2ad b=10 ci=0 co=0 ca=0
52 7 c=1474 g=1474 pq=1 pgp=1473 qp=0 dt=1572/0/0 df=8 of=0 ql=0 qs=.... kt=0/W/7 ktl=cf15 b=10 ci=0 co=0 ca=0
53
54The first section lists the rcu_data structures for rcu_sched, the second
55for rcu_bh. Note that CONFIG_TREE_PREEMPT_RCU kernels will have an
56additional section for rcu_preempt. Each section has one line per CPU,
57or eight for this 8-CPU system. The fields are as follows:
58 70
59o The number at the beginning of each line is the CPU number. 71o The number at the beginning of each line is the CPU number.
60 CPUs numbers followed by an exclamation mark are offline, 72 CPUs numbers followed by an exclamation mark are offline,
@@ -64,11 +76,13 @@ o The number at the beginning of each line is the CPU number.
64 substantially larger than the number of actual CPUs. 76 substantially larger than the number of actual CPUs.
65 77
66o "c" is the count of grace periods that this CPU believes have 78o "c" is the count of grace periods that this CPU believes have
67 completed. Offlined CPUs and CPUs in dynticks idle mode may 79 completed. Offlined CPUs and CPUs in dynticks idle mode may lag
68 lag quite a ways behind, for example, CPU 6 under "rcu_sched" 80 quite a ways behind, for example, CPU 4 under "rcu_sched" above,
69 above, which has been offline through not quite 40,000 RCU grace 81 which has been offline through 16 RCU grace periods. It is not
70 periods. It is not unusual to see CPUs lagging by thousands of 82 unusual to see offline CPUs lagging by thousands of grace periods.
71 grace periods. 83 Note that although the grace-period number is an unsigned long,
84 it is printed out as a signed long to allow more human-friendly
85 representation near boot time.
72 86
73o "g" is the count of grace periods that this CPU believes have 87o "g" is the count of grace periods that this CPU believes have
74 started. Again, offlined CPUs and CPUs in dynticks idle mode 88 started. Again, offlined CPUs and CPUs in dynticks idle mode
@@ -84,30 +98,25 @@ o "pq" indicates that this CPU has passed through a quiescent state
84 CPU has not yet reported that fact, (2) some other CPU has not 98 CPU has not yet reported that fact, (2) some other CPU has not
85 yet reported for this grace period, or (3) both. 99 yet reported for this grace period, or (3) both.
86 100
87o "pgp" indicates which grace period the last-observed quiescent
88 state for this CPU corresponds to. This is important for handling
89 the race between CPU 0 reporting an extended dynticks-idle
90 quiescent state for CPU 1 and CPU 1 suddenly waking up and
91 reporting its own quiescent state. If CPU 1 was the last CPU
92 for the current grace period, then the CPU that loses this race
93 will attempt to incorrectly mark CPU 1 as having checked in for
94 the next grace period!
95
96o "qp" indicates that RCU still expects a quiescent state from 101o "qp" indicates that RCU still expects a quiescent state from
97 this CPU. Offlined CPUs and CPUs in dyntick idle mode might 102 this CPU. Offlined CPUs and CPUs in dyntick idle mode might
98 well have qp=1, which is OK: RCU is still ignoring them. 103 well have qp=1, which is OK: RCU is still ignoring them.
99 104
100o "dt" is the current value of the dyntick counter that is incremented 105o "dt" is the current value of the dyntick counter that is incremented
101 when entering or leaving dynticks idle state, either by the 106 when entering or leaving idle, either due to a context switch or
102 scheduler or by irq. This number is even if the CPU is in 107 due to an interrupt. This number is even if the CPU is in idle
103 dyntick idle mode and odd otherwise. The number after the first 108 from RCU's viewpoint and odd otherwise. The number after the
104 "/" is the interrupt nesting depth when in dyntick-idle state, 109 first "/" is the interrupt nesting depth when in idle state,
105 or one greater than the interrupt-nesting depth otherwise. 110 or a large number added to the interrupt-nesting depth when
106 The number after the second "/" is the NMI nesting depth. 111 running a non-idle task. Some architectures do not accurately
112 count interrupt nesting when running in non-idle kernel context,
113 which can result in interesting anomalies such as negative
114 interrupt-nesting levels. The number after the second "/"
115 is the NMI nesting depth.
107 116
108o "df" is the number of times that some other CPU has forced a 117o "df" is the number of times that some other CPU has forced a
109 quiescent state on behalf of this CPU due to this CPU being in 118 quiescent state on behalf of this CPU due to this CPU being in
110 dynticks-idle state. 119 idle state.
111 120
112o "of" is the number of times that some other CPU has forced a 121o "of" is the number of times that some other CPU has forced a
113 quiescent state on behalf of this CPU due to this CPU being 122 quiescent state on behalf of this CPU due to this CPU being
@@ -120,9 +129,13 @@ o "of" is the number of times that some other CPU has forced a
120 error, so it makes sense to err conservatively. 129 error, so it makes sense to err conservatively.
121 130
122o "ql" is the number of RCU callbacks currently residing on 131o "ql" is the number of RCU callbacks currently residing on
123 this CPU. This is the total number of callbacks, regardless 132 this CPU. The first number is the number of "lazy" callbacks
124 of what state they are in (new, waiting for grace period to 133 that are known to RCU to only be freeing memory, and the number
125 start, waiting for grace period to end, ready to invoke). 134 after the "/" is the total number of callbacks, lazy or not.
135 These counters count callbacks regardless of what phase of
136 grace-period processing that they are in (new, waiting for
137 grace period to start, waiting for grace period to end, ready
138 to invoke).
126 139
127o "qs" gives an indication of the state of the callback queue 140o "qs" gives an indication of the state of the callback queue
128 with four characters: 141 with four characters:
@@ -150,6 +163,43 @@ o "qs" gives an indication of the state of the callback queue
150 If there are no callbacks in a given one of the above states, 163 If there are no callbacks in a given one of the above states,
151 the corresponding character is replaced by ".". 164 the corresponding character is replaced by ".".
152 165
166o "b" is the batch limit for this CPU. If more than this number
167 of RCU callbacks is ready to invoke, then the remainder will
168 be deferred.
169
170o "ci" is the number of RCU callbacks that have been invoked for
171 this CPU. Note that ci+nci+ql is the number of callbacks that have
172 been registered in absence of CPU-hotplug activity.
173
174o "nci" is the number of RCU callbacks that have been offloaded from
175 this CPU. This will always be zero unless the kernel was built
176 with CONFIG_RCU_NOCB_CPU=y and the "rcu_nocbs=" kernel boot
177 parameter was specified.
178
179o "co" is the number of RCU callbacks that have been orphaned due to
180 this CPU going offline. These orphaned callbacks have been moved
181 to an arbitrarily chosen online CPU.
182
183o "ca" is the number of RCU callbacks that have been adopted by this
184 CPU due to other CPUs going offline. Note that ci+co-ca+ql is
185 the number of RCU callbacks registered on this CPU.
186
187
188Kernels compiled with CONFIG_RCU_BOOST=y display the following from
189/debug/rcu/rcu_preempt/rcudata:
190
191 0!c=12865 g=12866 pq=1 qp=1 dt=83113/140000000000000/0 df=288 of=11 ql=0/0 qs=N... kt=0/O ktl=944 b=10 ci=60709 nci=0 co=748 ca=871
192 1 c=14407 g=14408 pq=1 qp=0 dt=100679/140000000000000/0 df=378 of=7 ql=0/119 qs=NRW. kt=0/W ktl=9b6 b=10 ci=109740 nci=0 co=589 ca=485
193 2 c=14407 g=14408 pq=1 qp=0 dt=105486/0/0 df=90 of=9 ql=0/89 qs=NRW. kt=0/W ktl=c0c b=10 ci=83113 nci=0 co=533 ca=490
194 3 c=14407 g=14408 pq=1 qp=0 dt=107138/0/0 df=142 of=8 ql=0/188 qs=NRW. kt=0/W ktl=b96 b=10 ci=121114 nci=0 co=426 ca=290
195 4 c=14405 g=14406 pq=1 qp=1 dt=50238/0/0 df=706 of=7 ql=0/0 qs=.... kt=0/W ktl=812 b=10 ci=34929 nci=0 co=643 ca=114
196 5!c=14168 g=14169 pq=1 qp=0 dt=45465/140000000000000/0 df=161 of=11 ql=0/0 qs=N... kt=0/O ktl=b4d b=10 ci=47712 nci=0 co=677 ca=722
197 6 c=14404 g=14405 pq=1 qp=0 dt=59454/0/0 df=94 of=6 ql=0/0 qs=.... kt=0/W ktl=e57 b=10 ci=55597 nci=0 co=701 ca=811
198 7 c=14407 g=14408 pq=1 qp=1 dt=68850/0/0 df=31 of=8 ql=0/0 qs=.... kt=0/W ktl=14bd b=10 ci=77475 nci=0 co=508 ca=1042
199
200This is similar to the output discussed above, but contains the following
201additional fields:
202
153o "kt" is the per-CPU kernel-thread state. The digit preceding 203o "kt" is the per-CPU kernel-thread state. The digit preceding
154 the first slash is zero if there is no work pending and 1 204 the first slash is zero if there is no work pending and 1
155 otherwise. The character between the first pair of slashes is 205 otherwise. The character between the first pair of slashes is
@@ -184,35 +234,51 @@ o "ktl" is the low-order 16 bits (in hexadecimal) of the count of
184 234
185 This field is displayed only for CONFIG_RCU_BOOST kernels. 235 This field is displayed only for CONFIG_RCU_BOOST kernels.
186 236
187o "b" is the batch limit for this CPU. If more than this number
188 of RCU callbacks is ready to invoke, then the remainder will
189 be deferred.
190 237
191o "ci" is the number of RCU callbacks that have been invoked for 238The output of "cat rcu/rcu_preempt/rcuexp" looks as follows:
192 this CPU. Note that ci+ql is the number of callbacks that have
193 been registered in absence of CPU-hotplug activity.
194 239
195o "co" is the number of RCU callbacks that have been orphaned due to 240s=21872 d=21872 w=0 tf=0 wd1=0 wd2=0 n=0 sc=21872 dt=21872 dl=0 dx=21872
196 this CPU going offline. These orphaned callbacks have been moved 241
197 to an arbitrarily chosen online CPU. 242These fields are as follows:
243
244o "s" is the starting sequence number.
198 245
199o "ca" is the number of RCU callbacks that have been adopted due to 246o "d" is the ending sequence number. When the starting and ending
200 other CPUs going offline. Note that ci+co-ca+ql is the number of 247 numbers differ, there is an expedited grace period in progress.
201 RCU callbacks registered on this CPU.
202 248
203There is also an rcu/rcudata.csv file with the same information in 249o "w" is the number of times that the sequence numbers have been
204comma-separated-variable spreadsheet format. 250 in danger of wrapping.
205 251
252o "tf" is the number of times that contention has resulted in a
253 failure to begin an expedited grace period.
206 254
207The output of "cat rcu/rcugp" looks as follows: 255o "wd1" and "wd2" are the number of times that an attempt to
256 start an expedited grace period found that someone else had
257 completed an expedited grace period that satisfies the
258 attempted request. "Our work is done."
208 259
209rcu_sched: completed=33062 gpnum=33063 260o "n" is number of times that contention was so great that
210rcu_bh: completed=464 gpnum=464 261 the request was demoted from an expedited grace period to
262 a normal grace period.
263
264o "sc" is the number of times that the attempt to start a
265 new expedited grace period succeeded.
266
267o "dt" is the number of times that we attempted to update
268 the "d" counter.
269
270o "dl" is the number of times that we failed to update the "d"
271 counter.
272
273o "dx" is the number of times that we succeeded in updating
274 the "d" counter.
211 275
212Again, this output is for both "rcu_sched" and "rcu_bh". Note that 276
213kernels built with CONFIG_TREE_PREEMPT_RCU will have an additional 277The output of "cat rcu/rcu_preempt/rcugp" looks as follows:
214"rcu_preempt" line. The fields are taken from the rcu_state structure, 278
215and are as follows: 279completed=31249 gpnum=31250 age=1 max=18
280
281These fields are taken from the rcu_state structure, and are as follows:
216 282
217o "completed" is the number of grace periods that have completed. 283o "completed" is the number of grace periods that have completed.
218 It is comparable to the "c" field from rcu/rcudata in that a 284 It is comparable to the "c" field from rcu/rcudata in that a
@@ -220,44 +286,42 @@ o "completed" is the number of grace periods that have completed.
220 that the corresponding RCU grace period has completed. 286 that the corresponding RCU grace period has completed.
221 287
222o "gpnum" is the number of grace periods that have started. It is 288o "gpnum" is the number of grace periods that have started. It is
223 comparable to the "g" field from rcu/rcudata in that a CPU 289 similarly comparable to the "g" field from rcu/rcudata in that
224 whose "g" field matches the value of "gpnum" is aware that the 290 a CPU whose "g" field matches the value of "gpnum" is aware that
225 corresponding RCU grace period has started. 291 the corresponding RCU grace period has started.
292
293 If these two fields are equal, then there is no grace period
294 in progress, in other words, RCU is idle. On the other hand,
295 if the two fields differ (as they are above), then an RCU grace
296 period is in progress.
226 297
227 If these two fields are equal (as they are for "rcu_bh" above), 298o "age" is the number of jiffies that the current grace period
228 then there is no grace period in progress, in other words, RCU 299 has extended for, or zero if there is no grace period currently
229 is idle. On the other hand, if the two fields differ (as they 300 in effect.
230 do for "rcu_sched" above), then an RCU grace period is in progress.
231 301
302o "max" is the age in jiffies of the longest-duration grace period
303 thus far.
232 304
233The output of "cat rcu/rcuhier" looks as follows, with very long lines: 305The output of "cat rcu/rcu_preempt/rcuhier" looks as follows:
234 306
235c=6902 g=6903 s=2 jfq=3 j=72c7 nfqs=13142/nfqsng=0(13142) fqlh=6 307c=14407 g=14408 s=0 jfq=2 j=c863 nfqs=12040/nfqsng=0(12040) fqlh=1051 oqlen=0/0
2361/1 ..>. 0:127 ^0 3083/3 ..>. 0:7 ^0
2373/3 ..>. 0:35 ^0 0/0 ..>. 36:71 ^1 0/0 ..>. 72:107 ^2 0/0 ..>. 108:127 ^3 309e/e ..>. 0:3 ^0 d/d ..>. 4:7 ^1
2383/3f ..>. 0:5 ^0 2/3 ..>. 6:11 ^1 0/0 ..>. 12:17 ^2 0/0 ..>. 18:23 ^3 0/0 ..>. 24:29 ^4 0/0 ..>. 30:35 ^5 0/0 ..>. 36:41 ^0 0/0 ..>. 42:47 ^1 0/0 ..>. 48:53 ^2 0/0 ..>. 54:59 ^3 0/0 ..>. 60:65 ^4 0/0 ..>. 66:71 ^5 0/0 ..>. 72:77 ^0 0/0 ..>. 78:83 ^1 0/0 ..>. 84:89 ^2 0/0 ..>. 90:95 ^3 0/0 ..>. 96:101 ^4 0/0 ..>. 102:107 ^5 0/0 ..>. 108:113 ^0 0/0 ..>. 114:119 ^1 0/0 ..>. 120:125 ^2 0/0 ..>. 126:127 ^3
239rcu_bh:
240c=-226 g=-226 s=1 jfq=-5701 j=72c7 nfqs=88/nfqsng=0(88) fqlh=0
2410/1 ..>. 0:127 ^0
2420/3 ..>. 0:35 ^0 0/0 ..>. 36:71 ^1 0/0 ..>. 72:107 ^2 0/0 ..>. 108:127 ^3
2430/3f ..>. 0:5 ^0 0/3 ..>. 6:11 ^1 0/0 ..>. 12:17 ^2 0/0 ..>. 18:23 ^3 0/0 ..>. 24:29 ^4 0/0 ..>. 30:35 ^5 0/0 ..>. 36:41 ^0 0/0 ..>. 42:47 ^1 0/0 ..>. 48:53 ^2 0/0 ..>. 54:59 ^3 0/0 ..>. 60:65 ^4 0/0 ..>. 66:71 ^5 0/0 ..>. 72:77 ^0 0/0 ..>. 78:83 ^1 0/0 ..>. 84:89 ^2 0/0 ..>. 90:95 ^3 0/0 ..>. 96:101 ^4 0/0 ..>. 102:107 ^5 0/0 ..>. 108:113 ^0 0/0 ..>. 114:119 ^1 0/0 ..>. 120:125 ^2 0/0 ..>. 126:127 ^3
244 310
245This is once again split into "rcu_sched" and "rcu_bh" portions, 311The fields are as follows:
246and CONFIG_TREE_PREEMPT_RCU kernels will again have an additional
247"rcu_preempt" section. The fields are as follows:
248 312
249o "c" is exactly the same as "completed" under rcu/rcugp. 313o "c" is exactly the same as "completed" under rcu/rcu_preempt/rcugp.
250 314
251o "g" is exactly the same as "gpnum" under rcu/rcugp. 315o "g" is exactly the same as "gpnum" under rcu/rcu_preempt/rcugp.
252 316
253o "s" is the "signaled" state that drives force_quiescent_state()'s 317o "s" is the current state of the force_quiescent_state()
254 state machine. 318 state machine.
255 319
256o "jfq" is the number of jiffies remaining for this grace period 320o "jfq" is the number of jiffies remaining for this grace period
257 before force_quiescent_state() is invoked to help push things 321 before force_quiescent_state() is invoked to help push things
258 along. Note that CPUs in dyntick-idle mode throughout the grace 322 along. Note that CPUs in idle mode throughout the grace period
259 period will not report on their own, but rather must be check by 323 will not report on their own, but rather must be check by some
260 some other CPU via force_quiescent_state(). 324 other CPU via force_quiescent_state().
261 325
262o "j" is the low-order four hex digits of the jiffies counter. 326o "j" is the low-order four hex digits of the jiffies counter.
263 Yes, Paul did run into a number of problems that turned out to 327 Yes, Paul did run into a number of problems that turned out to
@@ -268,7 +332,8 @@ o "nfqs" is the number of calls to force_quiescent_state() since
268 332
269o "nfqsng" is the number of useless calls to force_quiescent_state(), 333o "nfqsng" is the number of useless calls to force_quiescent_state(),
270 where there wasn't actually a grace period active. This can 334 where there wasn't actually a grace period active. This can
271 happen due to races. The number in parentheses is the difference 335 no longer happen due to grace-period processing being pushed
336 into a kthread. The number in parentheses is the difference
272 between "nfqs" and "nfqsng", or the number of times that 337 between "nfqs" and "nfqsng", or the number of times that
273 force_quiescent_state() actually did some real work. 338 force_quiescent_state() actually did some real work.
274 339
@@ -276,28 +341,27 @@ o "fqlh" is the number of calls to force_quiescent_state() that
276 exited immediately (without even being counted in nfqs above) 341 exited immediately (without even being counted in nfqs above)
277 due to contention on ->fqslock. 342 due to contention on ->fqslock.
278 343
279o Each element of the form "1/1 0:127 ^0" represents one struct 344o Each element of the form "3/3 ..>. 0:7 ^0" represents one rcu_node
280 rcu_node. Each line represents one level of the hierarchy, from 345 structure. Each line represents one level of the hierarchy,
281 root to leaves. It is best to think of the rcu_data structures 346 from root to leaves. It is best to think of the rcu_data
282 as forming yet another level after the leaves. Note that there 347 structures as forming yet another level after the leaves.
283 might be either one, two, or three levels of rcu_node structures, 348 Note that there might be either one, two, three, or even four
284 depending on the relationship between CONFIG_RCU_FANOUT and 349 levels of rcu_node structures, depending on the relationship
285 CONFIG_NR_CPUS. 350 between CONFIG_RCU_FANOUT, CONFIG_RCU_FANOUT_LEAF (possibly
351 adjusted using the rcu_fanout_leaf kernel boot parameter), and
352 CONFIG_NR_CPUS (possibly adjusted using the nr_cpu_ids count of
353 possible CPUs for the booting hardware).
286 354
287 o The numbers separated by the "/" are the qsmask followed 355 o The numbers separated by the "/" are the qsmask followed
288 by the qsmaskinit. The qsmask will have one bit 356 by the qsmaskinit. The qsmask will have one bit
289 set for each entity in the next lower level that 357 set for each entity in the next lower level that has
290 has not yet checked in for the current grace period. 358 not yet checked in for the current grace period ("e"
359 indicating CPUs 5, 6, and 7 in the example above).
291 The qsmaskinit will have one bit for each entity that is 360 The qsmaskinit will have one bit for each entity that is
292 currently expected to check in during each grace period. 361 currently expected to check in during each grace period.
293 The value of qsmaskinit is assigned to that of qsmask 362 The value of qsmaskinit is assigned to that of qsmask
294 at the beginning of each grace period. 363 at the beginning of each grace period.
295 364
296 For example, for "rcu_sched", the qsmask of the first
297 entry of the lowest level is 0x14, meaning that we
298 are still waiting for CPUs 2 and 4 to check in for the
299 current grace period.
300
301 o The characters separated by the ">" indicate the state 365 o The characters separated by the ">" indicate the state
302 of the blocked-tasks lists. A "G" preceding the ">" 366 of the blocked-tasks lists. A "G" preceding the ">"
303 indicates that at least one task blocked in an RCU 367 indicates that at least one task blocked in an RCU
@@ -312,48 +376,39 @@ o Each element of the form "1/1 0:127 ^0" represents one struct
312 A "." character appears if the corresponding condition 376 A "." character appears if the corresponding condition
313 does not hold, so that "..>." indicates that no tasks 377 does not hold, so that "..>." indicates that no tasks
314 are blocked. In contrast, "GE>T" indicates maximal 378 are blocked. In contrast, "GE>T" indicates maximal
315 inconvenience from blocked tasks. 379 inconvenience from blocked tasks. CONFIG_TREE_RCU
380 builds of the kernel will always show "..>.".
316 381
317 o The numbers separated by the ":" are the range of CPUs 382 o The numbers separated by the ":" are the range of CPUs
318 served by this struct rcu_node. This can be helpful 383 served by this struct rcu_node. This can be helpful
319 in working out how the hierarchy is wired together. 384 in working out how the hierarchy is wired together.
320 385
321 For example, the first entry at the lowest level shows 386 For example, the example rcu_node structure shown above
322 "0:5", indicating that it covers CPUs 0 through 5. 387 has "0:7", indicating that it covers CPUs 0 through 7.
323 388
324 o The number after the "^" indicates the bit in the 389 o The number after the "^" indicates the bit in the
325 next higher level rcu_node structure that this 390 next higher level rcu_node structure that this rcu_node
326 rcu_node structure corresponds to. 391 structure corresponds to. For example, the "d/d ..>. 4:7
327 392 ^1" has a "1" in this position, indicating that it
328 For example, the first entry at the lowest level shows 393 corresponds to the "1" bit in the "3" shown in the
329 "^0", indicating that it corresponds to bit zero in 394 "3/3 ..>. 0:7 ^0" entry on the next level up.
330 the first entry at the middle level. 395
331 396
332 397The output of "cat rcu/rcu_sched/rcu_pending" looks as follows:
333The output of "cat rcu/rcu_pending" looks as follows: 398
334 399 0!np=26111 qsp=29 rpq=5386 cbr=1 cng=570 gpc=3674 gps=577 nn=15903
335rcu_sched: 400 1!np=28913 qsp=35 rpq=6097 cbr=1 cng=448 gpc=3700 gps=554 nn=18113
336 0 np=255892 qsp=53936 rpq=85 cbr=0 cng=14417 gpc=10033 gps=24320 nn=146741 401 2!np=32740 qsp=37 rpq=6202 cbr=0 cng=476 gpc=4627 gps=546 nn=20889
337 1 np=261224 qsp=54638 rpq=33 cbr=0 cng=25723 gpc=16310 gps=2849 nn=155792 402 3 np=23679 qsp=22 rpq=5044 cbr=1 cng=415 gpc=3403 gps=347 nn=14469
338 2 np=237496 qsp=49664 rpq=23 cbr=0 cng=2762 gpc=45478 gps=1762 nn=136629 403 4!np=30714 qsp=4 rpq=5574 cbr=0 cng=528 gpc=3931 gps=639 nn=20042
339 3 np=236249 qsp=48766 rpq=98 cbr=0 cng=286 gpc=48049 gps=1218 nn=137723 404 5 np=28910 qsp=2 rpq=5246 cbr=0 cng=428 gpc=4105 gps=709 nn=18422
340 4 np=221310 qsp=46850 rpq=7 cbr=0 cng=26 gpc=43161 gps=4634 nn=123110 405 6!np=38648 qsp=5 rpq=7076 cbr=0 cng=840 gpc=4072 gps=961 nn=25699
341 5 np=237332 qsp=48449 rpq=9 cbr=0 cng=54 gpc=47920 gps=3252 nn=137456 406 7 np=37275 qsp=2 rpq=6873 cbr=0 cng=868 gpc=3416 gps=971 nn=25147
342 6 np=219995 qsp=46718 rpq=12 cbr=0 cng=50 gpc=42098 gps=6093 nn=120834 407
343 7 np=249893 qsp=49390 rpq=42 cbr=0 cng=72 gpc=38400 gps=17102 nn=144888 408The fields are as follows:
344rcu_bh: 409
345 0 np=146741 qsp=1419 rpq=6 cbr=0 cng=6 gpc=0 gps=0 nn=145314 410o The leading number is the CPU number, with "!" indicating
346 1 np=155792 qsp=12597 rpq=3 cbr=0 cng=0 gpc=4 gps=8 nn=143180 411 an offline CPU.
347 2 np=136629 qsp=18680 rpq=1 cbr=0 cng=0 gpc=7 gps=6 nn=117936
348 3 np=137723 qsp=2843 rpq=0 cbr=0 cng=0 gpc=10 gps=7 nn=134863
349 4 np=123110 qsp=12433 rpq=0 cbr=0 cng=0 gpc=4 gps=2 nn=110671
350 5 np=137456 qsp=4210 rpq=1 cbr=0 cng=0 gpc=6 gps=5 nn=133235
351 6 np=120834 qsp=9902 rpq=2 cbr=0 cng=0 gpc=6 gps=3 nn=110921
352 7 np=144888 qsp=26336 rpq=0 cbr=0 cng=0 gpc=8 gps=2 nn=118542
353
354As always, this is once again split into "rcu_sched" and "rcu_bh"
355portions, with CONFIG_TREE_PREEMPT_RCU kernels having an additional
356"rcu_preempt" section. The fields are as follows:
357 412
358o "np" is the number of times that __rcu_pending() has been invoked 413o "np" is the number of times that __rcu_pending() has been invoked
359 for the corresponding flavor of RCU. 414 for the corresponding flavor of RCU.
@@ -377,38 +432,23 @@ o "gpc" is the number of times that an old grace period had
377o "gps" is the number of times that a new grace period had started, 432o "gps" is the number of times that a new grace period had started,
378 but this CPU was not yet aware of it. 433 but this CPU was not yet aware of it.
379 434
380o "nn" is the number of times that this CPU needed nothing. Alert 435o "nn" is the number of times that this CPU needed nothing.
381 readers will note that the rcu "nn" number for a given CPU very
382 closely matches the rcu_bh "np" number for that same CPU. This
383 is due to short-circuit evaluation in rcu_pending().
384
385
386The output of "cat rcu/rcutorture" looks as follows:
387
388rcutorture test sequence: 0 (test in progress)
389rcutorture update version number: 615
390
391The first line shows the number of rcutorture tests that have completed
392since boot. If a test is currently running, the "(test in progress)"
393string will appear as shown above. The second line shows the number of
394update cycles that the current test has started, or zero if there is
395no test in progress.
396 436
397 437
398The output of "cat rcu/rcuboost" looks as follows: 438The output of "cat rcu/rcuboost" looks as follows:
399 439
4000:5 tasks=.... kt=W ntb=0 neb=0 nnb=0 j=2f95 bt=300f 4400:3 tasks=.... kt=W ntb=0 neb=0 nnb=0 j=c864 bt=c894
401 balk: nt=0 egt=989 bt=0 nb=0 ny=0 nos=16 441 balk: nt=0 egt=4695 bt=0 nb=0 ny=56 nos=0
4026:7 tasks=.... kt=W ntb=0 neb=0 nnb=0 j=2f95 bt=300f 4424:7 tasks=.... kt=W ntb=0 neb=0 nnb=0 j=c864 bt=c894
403 balk: nt=0 egt=225 bt=0 nb=0 ny=0 nos=6 443 balk: nt=0 egt=6541 bt=0 nb=0 ny=126 nos=0
404 444
405This information is output only for rcu_preempt. Each two-line entry 445This information is output only for rcu_preempt. Each two-line entry
406corresponds to a leaf rcu_node strcuture. The fields are as follows: 446corresponds to a leaf rcu_node strcuture. The fields are as follows:
407 447
408o "n:m" is the CPU-number range for the corresponding two-line 448o "n:m" is the CPU-number range for the corresponding two-line
409 entry. In the sample output above, the first entry covers 449 entry. In the sample output above, the first entry covers
410 CPUs zero through five and the second entry covers CPUs 6 450 CPUs zero through three and the second entry covers CPUs four
411 and 7. 451 through seven.
412 452
413o "tasks=TNEB" gives the state of the various segments of the 453o "tasks=TNEB" gives the state of the various segments of the
414 rnp->blocked_tasks list: 454 rnp->blocked_tasks list:
diff --git a/Documentation/RCU/whatisRCU.txt b/Documentation/RCU/whatisRCU.txt
index bf0f6de2aa00..0cc7820967f4 100644
--- a/Documentation/RCU/whatisRCU.txt
+++ b/Documentation/RCU/whatisRCU.txt
@@ -499,6 +499,8 @@ The foo_reclaim() function might appear as follows:
499 { 499 {
500 struct foo *fp = container_of(rp, struct foo, rcu); 500 struct foo *fp = container_of(rp, struct foo, rcu);
501 501
502 foo_cleanup(fp->a);
503
502 kfree(fp); 504 kfree(fp);
503 } 505 }
504 506
@@ -521,6 +523,12 @@ o Use call_rcu() -after- removing a data element from an
521 read-side critical sections that might be referencing that 523 read-side critical sections that might be referencing that
522 data item. 524 data item.
523 525
526If the callback for call_rcu() is not doing anything more than calling
527kfree() on the structure, you can use kfree_rcu() instead of call_rcu()
528to avoid having to write your own callback:
529
530 kfree_rcu(old_fp, rcu);
531
524Again, see checklist.txt for additional rules governing the use of RCU. 532Again, see checklist.txt for additional rules governing the use of RCU.
525 533
526 534
@@ -773,8 +781,8 @@ a single atomic update, converting to RCU will require special care.
773 781
774Also, the presence of synchronize_rcu() means that the RCU version of 782Also, the presence of synchronize_rcu() means that the RCU version of
775delete() can now block. If this is a problem, there is a callback-based 783delete() can now block. If this is a problem, there is a callback-based
776mechanism that never blocks, namely call_rcu(), that can be used in 784mechanism that never blocks, namely call_rcu() or kfree_rcu(), that can
777place of synchronize_rcu(). 785be used in place of synchronize_rcu().
778 786
779 787
7807. FULL LIST OF RCU APIs 7887. FULL LIST OF RCU APIs
@@ -789,9 +797,7 @@ RCU list traversal:
789 list_for_each_entry_rcu 797 list_for_each_entry_rcu
790 hlist_for_each_entry_rcu 798 hlist_for_each_entry_rcu
791 hlist_nulls_for_each_entry_rcu 799 hlist_nulls_for_each_entry_rcu
792 800 list_for_each_entry_continue_rcu
793 list_for_each_continue_rcu (to be deprecated in favor of new
794 list_for_each_entry_continue_rcu)
795 801
796RCU pointer/list update: 802RCU pointer/list update:
797 803
@@ -813,6 +819,7 @@ RCU: Critical sections Grace period Barrier
813 rcu_read_unlock synchronize_rcu 819 rcu_read_unlock synchronize_rcu
814 rcu_dereference synchronize_rcu_expedited 820 rcu_dereference synchronize_rcu_expedited
815 call_rcu 821 call_rcu
822 kfree_rcu
816 823
817 824
818bh: Critical sections Grace period Barrier 825bh: Critical sections Grace period Barrier
diff --git a/Documentation/accounting/getdelays.c b/Documentation/accounting/getdelays.c
index 6f706aca2049..f8ebcde43b17 100644
--- a/Documentation/accounting/getdelays.c
+++ b/Documentation/accounting/getdelays.c
@@ -51,7 +51,6 @@ int dbg;
51int print_delays; 51int print_delays;
52int print_io_accounting; 52int print_io_accounting;
53int print_task_context_switch_counts; 53int print_task_context_switch_counts;
54__u64 stime, utime;
55 54
56#define PRINTF(fmt, arg...) { \ 55#define PRINTF(fmt, arg...) { \
57 if (dbg) { \ 56 if (dbg) { \
diff --git a/Documentation/acpi/enumeration.txt b/Documentation/acpi/enumeration.txt
new file mode 100644
index 000000000000..4f27785ca0c8
--- /dev/null
+++ b/Documentation/acpi/enumeration.txt
@@ -0,0 +1,227 @@
1ACPI based device enumeration
2~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3ACPI 5 introduced a set of new resources (UartTSerialBus, I2cSerialBus,
4SpiSerialBus, GpioIo and GpioInt) which can be used in enumerating slave
5devices behind serial bus controllers.
6
7In addition we are starting to see peripherals integrated in the
8SoC/Chipset to appear only in ACPI namespace. These are typically devices
9that are accessed through memory-mapped registers.
10
11In order to support this and re-use the existing drivers as much as
12possible we decided to do following:
13
14 o Devices that have no bus connector resource are represented as
15 platform devices.
16
17 o Devices behind real busses where there is a connector resource
18 are represented as struct spi_device or struct i2c_device
19 (standard UARTs are not busses so there is no struct uart_device).
20
21As both ACPI and Device Tree represent a tree of devices (and their
22resources) this implementation follows the Device Tree way as much as
23possible.
24
25The ACPI implementation enumerates devices behind busses (platform, SPI and
26I2C), creates the physical devices and binds them to their ACPI handle in
27the ACPI namespace.
28
29This means that when ACPI_HANDLE(dev) returns non-NULL the device was
30enumerated from ACPI namespace. This handle can be used to extract other
31device-specific configuration. There is an example of this below.
32
33Platform bus support
34~~~~~~~~~~~~~~~~~~~~
35Since we are using platform devices to represent devices that are not
36connected to any physical bus we only need to implement a platform driver
37for the device and add supported ACPI IDs. If this same IP-block is used on
38some other non-ACPI platform, the driver might work out of the box or needs
39some minor changes.
40
41Adding ACPI support for an existing driver should be pretty
42straightforward. Here is the simplest example:
43
44 #ifdef CONFIG_ACPI
45 static struct acpi_device_id mydrv_acpi_match[] = {
46 /* ACPI IDs here */
47 { }
48 };
49 MODULE_DEVICE_TABLE(acpi, mydrv_acpi_match);
50 #endif
51
52 static struct platform_driver my_driver = {
53 ...
54 .driver = {
55 .acpi_match_table = ACPI_PTR(mydrv_acpi_match),
56 },
57 };
58
59If the driver needs to perform more complex initialization like getting and
60configuring GPIOs it can get its ACPI handle and extract this information
61from ACPI tables.
62
63Currently the kernel is not able to automatically determine from which ACPI
64device it should make the corresponding platform device so we need to add
65the ACPI device explicitly to acpi_platform_device_ids list defined in
66drivers/acpi/scan.c. This limitation is only for the platform devices, SPI
67and I2C devices are created automatically as described below.
68
69SPI serial bus support
70~~~~~~~~~~~~~~~~~~~~~~
71Slave devices behind SPI bus have SpiSerialBus resource attached to them.
72This is extracted automatically by the SPI core and the slave devices are
73enumerated once spi_register_master() is called by the bus driver.
74
75Here is what the ACPI namespace for a SPI slave might look like:
76
77 Device (EEP0)
78 {
79 Name (_ADR, 1)
80 Name (_CID, Package() {
81 "ATML0025",
82 "AT25",
83 })
84 ...
85 Method (_CRS, 0, NotSerialized)
86 {
87 SPISerialBus(1, PolarityLow, FourWireMode, 8,
88 ControllerInitiated, 1000000, ClockPolarityLow,
89 ClockPhaseFirst, "\\_SB.PCI0.SPI1",)
90 }
91 ...
92
93The SPI device drivers only need to add ACPI IDs in a similar way than with
94the platform device drivers. Below is an example where we add ACPI support
95to at25 SPI eeprom driver (this is meant for the above ACPI snippet):
96
97 #ifdef CONFIG_ACPI
98 static struct acpi_device_id at25_acpi_match[] = {
99 { "AT25", 0 },
100 { },
101 };
102 MODULE_DEVICE_TABLE(acpi, at25_acpi_match);
103 #endif
104
105 static struct spi_driver at25_driver = {
106 .driver = {
107 ...
108 .acpi_match_table = ACPI_PTR(at25_acpi_match),
109 },
110 };
111
112Note that this driver actually needs more information like page size of the
113eeprom etc. but at the time writing this there is no standard way of
114passing those. One idea is to return this in _DSM method like:
115
116 Device (EEP0)
117 {
118 ...
119 Method (_DSM, 4, NotSerialized)
120 {
121 Store (Package (6)
122 {
123 "byte-len", 1024,
124 "addr-mode", 2,
125 "page-size, 32
126 }, Local0)
127
128 // Check UUIDs etc.
129
130 Return (Local0)
131 }
132
133Then the at25 SPI driver can get this configation by calling _DSM on its
134ACPI handle like:
135
136 struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL };
137 struct acpi_object_list input;
138 acpi_status status;
139
140 /* Fill in the input buffer */
141
142 status = acpi_evaluate_object(ACPI_HANDLE(&spi->dev), "_DSM",
143 &input, &output);
144 if (ACPI_FAILURE(status))
145 /* Handle the error */
146
147 /* Extract the data here */
148
149 kfree(output.pointer);
150
151I2C serial bus support
152~~~~~~~~~~~~~~~~~~~~~~
153The slaves behind I2C bus controller only need to add the ACPI IDs like
154with the platform and SPI drivers. However the I2C bus controller driver
155needs to call acpi_i2c_register_devices() after it has added the adapter.
156
157An I2C bus (controller) driver does:
158
159 ...
160 ret = i2c_add_numbered_adapter(adapter);
161 if (ret)
162 /* handle error */
163
164 of_i2c_register_devices(adapter);
165 /* Enumerate the slave devices behind this bus via ACPI */
166 acpi_i2c_register_devices(adapter);
167
168Below is an example of how to add ACPI support to the existing mpu3050
169input driver:
170
171 #ifdef CONFIG_ACPI
172 static struct acpi_device_id mpu3050_acpi_match[] = {
173 { "MPU3050", 0 },
174 { },
175 };
176 MODULE_DEVICE_TABLE(acpi, mpu3050_acpi_match);
177 #endif
178
179 static struct i2c_driver mpu3050_i2c_driver = {
180 .driver = {
181 .name = "mpu3050",
182 .owner = THIS_MODULE,
183 .pm = &mpu3050_pm,
184 .of_match_table = mpu3050_of_match,
185 .acpi_match_table ACPI_PTR(mpu3050_acpi_match),
186 },
187 .probe = mpu3050_probe,
188 .remove = __devexit_p(mpu3050_remove),
189 .id_table = mpu3050_ids,
190 };
191
192GPIO support
193~~~~~~~~~~~~
194ACPI 5 introduced two new resources to describe GPIO connections: GpioIo
195and GpioInt. These resources are used be used to pass GPIO numbers used by
196the device to the driver. For example:
197
198 Method (_CRS, 0, NotSerialized)
199 {
200 Name (SBUF, ResourceTemplate()
201 {
202 GpioIo (Exclusive, PullDefault, 0x0000, 0x0000,
203 IoRestrictionOutputOnly, "\\_SB.PCI0.GPI0",
204 0x00, ResourceConsumer,,)
205 {
206 // Pin List
207 0x0055
208 }
209 ...
210
211 Return (SBUF)
212 }
213 }
214
215These GPIO numbers are controller relative and path "\\_SB.PCI0.GPI0"
216specifies the path to the controller. In order to use these GPIOs in Linux
217we need to translate them to the Linux GPIO numbers.
218
219The driver can do this by including <linux/acpi_gpio.h> and then calling
220acpi_get_gpio(path, gpio). This will return the Linux GPIO number or
221negative errno if there was no translation found.
222
223Other GpioIo parameters must be converted first by the driver to be
224suitable to the gpiolib before passing them.
225
226In case of GpioInt resource an additional call to gpio_to_irq() must be
227done before calling request_irq().
diff --git a/Documentation/acpi/initrd_table_override.txt b/Documentation/acpi/initrd_table_override.txt
new file mode 100644
index 000000000000..35c3f5415476
--- /dev/null
+++ b/Documentation/acpi/initrd_table_override.txt
@@ -0,0 +1,94 @@
1Overriding ACPI tables via initrd
2=================================
3
41) Introduction (What is this about)
52) What is this for
63) How does it work
74) References (Where to retrieve userspace tools)
8
91) What is this about
10---------------------
11
12If the ACPI_INITRD_TABLE_OVERRIDE compile option is true, it is possible to
13override nearly any ACPI table provided by the BIOS with an instrumented,
14modified one.
15
16For a full list of ACPI tables that can be overridden, take a look at
17the char *table_sigs[MAX_ACPI_SIGNATURE]; definition in drivers/acpi/osl.c
18All ACPI tables iasl (Intel's ACPI compiler and disassembler) knows should
19be overridable, except:
20 - ACPI_SIG_RSDP (has a signature of 6 bytes)
21 - ACPI_SIG_FACS (does not have an ordinary ACPI table header)
22Both could get implemented as well.
23
24
252) What is this for
26-------------------
27
28Please keep in mind that this is a debug option.
29ACPI tables should not get overridden for productive use.
30If BIOS ACPI tables are overridden the kernel will get tainted with the
31TAINT_OVERRIDDEN_ACPI_TABLE flag.
32Complain to your platform/BIOS vendor if you find a bug which is so sever
33that a workaround is not accepted in the Linux kernel.
34
35Still, it can and should be enabled in any kernel, because:
36 - There is no functional change with not instrumented initrds
37 - It provides a powerful feature to easily debug and test ACPI BIOS table
38 compatibility with the Linux kernel.
39
40
413) How does it work
42-------------------
43
44# Extract the machine's ACPI tables:
45cd /tmp
46acpidump >acpidump
47acpixtract -a acpidump
48# Disassemble, modify and recompile them:
49iasl -d *.dat
50# For example add this statement into a _PRT (PCI Routing Table) function
51# of the DSDT:
52Store("HELLO WORLD", debug)
53iasl -sa dsdt.dsl
54# Add the raw ACPI tables to an uncompressed cpio archive.
55# They must be put into a /kernel/firmware/acpi directory inside the
56# cpio archive.
57# The uncompressed cpio archive must be the first.
58# Other, typically compressed cpio archives, must be
59# concatenated on top of the uncompressed one.
60mkdir -p kernel/firmware/acpi
61cp dsdt.aml kernel/firmware/acpi
62# A maximum of: #define ACPI_OVERRIDE_TABLES 10
63# tables are currently allowed (see osl.c):
64iasl -sa facp.dsl
65iasl -sa ssdt1.dsl
66cp facp.aml kernel/firmware/acpi
67cp ssdt1.aml kernel/firmware/acpi
68# Create the uncompressed cpio archive and concatenate the original initrd
69# on top:
70find kernel | cpio -H newc --create > /boot/instrumented_initrd
71cat /boot/initrd >>/boot/instrumented_initrd
72# reboot with increased acpi debug level, e.g. boot params:
73acpi.debug_level=0x2 acpi.debug_layer=0xFFFFFFFF
74# and check your syslog:
75[ 1.268089] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
76[ 1.272091] [ACPI Debug] String [0x0B] "HELLO WORLD"
77
78iasl is able to disassemble and recompile quite a lot different,
79also static ACPI tables.
80
81
824) Where to retrieve userspace tools
83------------------------------------
84
85iasl and acpixtract are part of Intel's ACPICA project:
86http://acpica.org/
87and should be packaged by distributions (for example in the acpica package
88on SUSE).
89
90acpidump can be found in Len Browns pmtools:
91ftp://kernel.org/pub/linux/kernel/people/lenb/acpi/utils/pmtools/acpidump
92This tool is also part of the acpica package on SUSE.
93Alternatively, used ACPI tables can be retrieved via sysfs in latest kernels:
94/sys/firmware/acpi/tables
diff --git a/Documentation/aoe/aoe.txt b/Documentation/aoe/aoe.txt
index bfc9cb19abcd..c71487d399d1 100644
--- a/Documentation/aoe/aoe.txt
+++ b/Documentation/aoe/aoe.txt
@@ -125,7 +125,9 @@ DRIVER OPTIONS
125 The aoe_deadsecs module parameter determines the maximum number of 125 The aoe_deadsecs module parameter determines the maximum number of
126 seconds that the driver will wait for an AoE device to provide a 126 seconds that the driver will wait for an AoE device to provide a
127 response to an AoE command. After aoe_deadsecs seconds have 127 response to an AoE command. After aoe_deadsecs seconds have
128 elapsed, the AoE device will be marked as "down". 128 elapsed, the AoE device will be marked as "down". A value of zero
129 is supported for testing purposes and makes the aoe driver keep
130 trying AoE commands forever.
129 131
130 The aoe_maxout module parameter has a default of 128. This is the 132 The aoe_maxout module parameter has a default of 128. This is the
131 maximum number of unresponded packets that will be sent to an AoE 133 maximum number of unresponded packets that will be sent to an AoE
diff --git a/Documentation/arm/OMAP/DSS b/Documentation/arm/OMAP/DSS
index a564ceea9e98..4484e021290e 100644
--- a/Documentation/arm/OMAP/DSS
+++ b/Documentation/arm/OMAP/DSS
@@ -285,7 +285,10 @@ FB0 +-- GFX ---- LCD ---- LCD
285Misc notes 285Misc notes
286---------- 286----------
287 287
288OMAP FB allocates the framebuffer memory using the OMAP VRAM allocator. 288OMAP FB allocates the framebuffer memory using the standard dma allocator. You
289can enable Contiguous Memory Allocator (CONFIG_CMA) to improve the dma
290allocator, and if CMA is enabled, you use "cma=" kernel parameter to increase
291the global memory area for CMA.
289 292
290Using DSI DPLL to generate pixel clock it is possible produce the pixel clock 293Using DSI DPLL to generate pixel clock it is possible produce the pixel clock
291of 86.5MHz (max possible), and with that you get 1280x1024@57 output from DVI. 294of 86.5MHz (max possible), and with that you get 1280x1024@57 output from DVI.
@@ -301,11 +304,6 @@ framebuffer parameters.
301Kernel boot arguments 304Kernel boot arguments
302--------------------- 305---------------------
303 306
304vram=<size>[,<physaddr>]
305 - Amount of total VRAM to preallocate and optionally a physical start
306 memory address. For example, "10M". omapfb allocates memory for
307 framebuffers from VRAM.
308
309omapfb.mode=<display>:<mode>[,...] 307omapfb.mode=<display>:<mode>[,...]
310 - Default video mode for specified displays. For example, 308 - Default video mode for specified displays. For example,
311 "dvi:800x400MR-24@60". See drivers/video/modedb.c. 309 "dvi:800x400MR-24@60". See drivers/video/modedb.c.
diff --git a/Documentation/arm/sunxi/README b/Documentation/arm/sunxi/README
new file mode 100644
index 000000000000..87a1e8fb6242
--- /dev/null
+++ b/Documentation/arm/sunxi/README
@@ -0,0 +1,19 @@
1ARM Allwinner SoCs
2==================
3
4This document lists all the ARM Allwinner SoCs that are currently
5supported in mainline by the Linux kernel. This document will also
6provide links to documentation and or datasheet for these SoCs.
7
8SunXi family
9------------
10
11 Flavors:
12 Allwinner A10 (sun4i)
13 Datasheet : http://dl.linux-sunxi.org/A10/A10%20Datasheet%20-%20v1.21%20%282012-04-06%29.pdf
14
15 Allwinner A13 (sun5i)
16 Datasheet : http://dl.linux-sunxi.org/A13/A13%20Datasheet%20-%20v1.12%20%282012-03-29%29.pdf
17
18 Core: Cortex A8
19 Linux kernel mach directory: arch/arm/mach-sunxi \ No newline at end of file
diff --git a/Documentation/arm64/memory.txt b/Documentation/arm64/memory.txt
index 4110cca96bd6..d758702fc03c 100644
--- a/Documentation/arm64/memory.txt
+++ b/Documentation/arm64/memory.txt
@@ -41,7 +41,7 @@ ffffffbbffff0000 ffffffbcffffffff ~2MB [guard]
41 41
42ffffffbffc000000 ffffffbfffffffff 64MB modules 42ffffffbffc000000 ffffffbfffffffff 64MB modules
43 43
44ffffffc000000000 ffffffffffffffff 256GB memory 44ffffffc000000000 ffffffffffffffff 256GB kernel logical memory map
45 45
46 46
47Translation table lookup with 4KB pages: 47Translation table lookup with 4KB pages:
diff --git a/Documentation/backlight/lp855x-driver.txt b/Documentation/backlight/lp855x-driver.txt
index f5e4caafab7d..1529394cfe8b 100644
--- a/Documentation/backlight/lp855x-driver.txt
+++ b/Documentation/backlight/lp855x-driver.txt
@@ -35,11 +35,8 @@ For supporting platform specific data, the lp855x platform data can be used.
35* mode : Brightness control mode. PWM or register based. 35* mode : Brightness control mode. PWM or register based.
36* device_control : Value of DEVICE CONTROL register. 36* device_control : Value of DEVICE CONTROL register.
37* initial_brightness : Initial value of backlight brightness. 37* initial_brightness : Initial value of backlight brightness.
38* pwm_data : Platform specific pwm generation functions. 38* period_ns : Platform specific PWM period value. unit is nano.
39 Only valid when brightness is pwm input mode. 39 Only valid when brightness is pwm input mode.
40 Functions should be implemented by PWM driver.
41 - pwm_set_intensity() : set duty of PWM
42 - pwm_get_intensity() : get current duty of PWM
43* load_new_rom_data : 40* load_new_rom_data :
44 0 : use default configuration data 41 0 : use default configuration data
45 1 : update values of eeprom or eprom registers on loading driver 42 1 : update values of eeprom or eprom registers on loading driver
@@ -71,8 +68,5 @@ static struct lp855x_platform_data lp8556_pdata = {
71 .mode = PWM_BASED, 68 .mode = PWM_BASED,
72 .device_control = PWM_CONFIG(LP8556), 69 .device_control = PWM_CONFIG(LP8556),
73 .initial_brightness = INITIAL_BRT, 70 .initial_brightness = INITIAL_BRT,
74 .pwm_data = { 71 .period_ns = 1000000,
75 .pwm_set_intensity = platform_pwm_set_intensity,
76 .pwm_get_intensity = platform_pwm_get_intensity,
77 },
78}; 72};
diff --git a/Documentation/bus-devices/ti-gpmc.txt b/Documentation/bus-devices/ti-gpmc.txt
new file mode 100644
index 000000000000..cc9ce57e0a26
--- /dev/null
+++ b/Documentation/bus-devices/ti-gpmc.txt
@@ -0,0 +1,122 @@
1GPMC (General Purpose Memory Controller):
2=========================================
3
4GPMC is an unified memory controller dedicated to interfacing external
5memory devices like
6 * Asynchronous SRAM like memories and application specific integrated
7 circuit devices.
8 * Asynchronous, synchronous, and page mode burst NOR flash devices
9 NAND flash
10 * Pseudo-SRAM devices
11
12GPMC is found on Texas Instruments SoC's (OMAP based)
13IP details: http://www.ti.com/lit/pdf/spruh73 section 7.1
14
15
16GPMC generic timing calculation:
17================================
18
19GPMC has certain timings that has to be programmed for proper
20functioning of the peripheral, while peripheral has another set of
21timings. To have peripheral work with gpmc, peripheral timings has to
22be translated to the form gpmc can understand. The way it has to be
23translated depends on the connected peripheral. Also there is a
24dependency for certain gpmc timings on gpmc clock frequency. Hence a
25generic timing routine was developed to achieve above requirements.
26
27Generic routine provides a generic method to calculate gpmc timings
28from gpmc peripheral timings. struct gpmc_device_timings fields has to
29be updated with timings from the datasheet of the peripheral that is
30connected to gpmc. A few of the peripheral timings can be fed either
31in time or in cycles, provision to handle this scenario has been
32provided (refer struct gpmc_device_timings definition). It may so
33happen that timing as specified by peripheral datasheet is not present
34in timing structure, in this scenario, try to correlate peripheral
35timing to the one available. If that doesn't work, try to add a new
36field as required by peripheral, educate generic timing routine to
37handle it, make sure that it does not break any of the existing.
38Then there may be cases where peripheral datasheet doesn't mention
39certain fields of struct gpmc_device_timings, zero those entries.
40
41Generic timing routine has been verified to work properly on
42multiple onenand's and tusb6010 peripherals.
43
44A word of caution: generic timing routine has been developed based
45on understanding of gpmc timings, peripheral timings, available
46custom timing routines, a kind of reverse engineering without
47most of the datasheets & hardware (to be exact none of those supported
48in mainline having custom timing routine) and by simulation.
49
50gpmc timing dependency on peripheral timings:
51[<gpmc_timing>: <peripheral timing1>, <peripheral timing2> ...]
52
531. common
54cs_on: t_ceasu
55adv_on: t_avdasu, t_ceavd
56
572. sync common
58sync_clk: clk
59page_burst_access: t_bacc
60clk_activation: t_ces, t_avds
61
623. read async muxed
63adv_rd_off: t_avdp_r
64oe_on: t_oeasu, t_aavdh
65access: t_iaa, t_oe, t_ce, t_aa
66rd_cycle: t_rd_cycle, t_cez_r, t_oez
67
684. read async non-muxed
69adv_rd_off: t_avdp_r
70oe_on: t_oeasu
71access: t_iaa, t_oe, t_ce, t_aa
72rd_cycle: t_rd_cycle, t_cez_r, t_oez
73
745. read sync muxed
75adv_rd_off: t_avdp_r, t_avdh
76oe_on: t_oeasu, t_ach, cyc_aavdh_oe
77access: t_iaa, cyc_iaa, cyc_oe
78rd_cycle: t_cez_r, t_oez, t_ce_rdyz
79
806. read sync non-muxed
81adv_rd_off: t_avdp_r
82oe_on: t_oeasu
83access: t_iaa, cyc_iaa, cyc_oe
84rd_cycle: t_cez_r, t_oez, t_ce_rdyz
85
867. write async muxed
87adv_wr_off: t_avdp_w
88we_on, wr_data_mux_bus: t_weasu, t_aavdh, cyc_aavhd_we
89we_off: t_wpl
90cs_wr_off: t_wph
91wr_cycle: t_cez_w, t_wr_cycle
92
938. write async non-muxed
94adv_wr_off: t_avdp_w
95we_on, wr_data_mux_bus: t_weasu
96we_off: t_wpl
97cs_wr_off: t_wph
98wr_cycle: t_cez_w, t_wr_cycle
99
1009. write sync muxed
101adv_wr_off: t_avdp_w, t_avdh
102we_on, wr_data_mux_bus: t_weasu, t_rdyo, t_aavdh, cyc_aavhd_we
103we_off: t_wpl, cyc_wpl
104cs_wr_off: t_wph
105wr_cycle: t_cez_w, t_ce_rdyz
106
10710. write sync non-muxed
108adv_wr_off: t_avdp_w
109we_on, wr_data_mux_bus: t_weasu, t_rdyo
110we_off: t_wpl, cyc_wpl
111cs_wr_off: t_wph
112wr_cycle: t_cez_w, t_ce_rdyz
113
114
115Note: Many of gpmc timings are dependent on other gpmc timings (a few
116gpmc timings purely dependent on other gpmc timings, a reason that
117some of the gpmc timings are missing above), and it will result in
118indirect dependency of peripheral timings to gpmc timings other than
119mentioned above, refer timing routine for more details. To know what
120these peripheral timings correspond to, please see explanations in
121struct gpmc_device_timings definition. And for gpmc timings refer
122IP details (link above).
diff --git a/Documentation/cgroups/00-INDEX b/Documentation/cgroups/00-INDEX
index 3f58fa3d6d00..f78b90a35ad0 100644
--- a/Documentation/cgroups/00-INDEX
+++ b/Documentation/cgroups/00-INDEX
@@ -1,7 +1,11 @@
100-INDEX 100-INDEX
2 - this file 2 - this file
3blkio-controller.txt
4 - Description for Block IO Controller, implementation and usage details.
3cgroups.txt 5cgroups.txt
4 - Control Groups definition, implementation details, examples and API. 6 - Control Groups definition, implementation details, examples and API.
7cgroup_event_listener.c
8 - A user program for cgroup listener.
5cpuacct.txt 9cpuacct.txt
6 - CPU Accounting Controller; account CPU usage for groups of tasks. 10 - CPU Accounting Controller; account CPU usage for groups of tasks.
7cpusets.txt 11cpusets.txt
@@ -10,9 +14,13 @@ devices.txt
10 - Device Whitelist Controller; description, interface and security. 14 - Device Whitelist Controller; description, interface and security.
11freezer-subsystem.txt 15freezer-subsystem.txt
12 - checkpointing; rationale to not use signals, interface. 16 - checkpointing; rationale to not use signals, interface.
17hugetlb.txt
18 - HugeTLB Controller implementation and usage details.
13memcg_test.txt 19memcg_test.txt
14 - Memory Resource Controller; implementation details. 20 - Memory Resource Controller; implementation details.
15memory.txt 21memory.txt
16 - Memory Resource Controller; design, accounting, interface, testing. 22 - Memory Resource Controller; design, accounting, interface, testing.
23net_prio.txt
24 - Network priority cgroups details and usages.
17resource_counter.txt 25resource_counter.txt
18 - Resource Counter API. 26 - Resource Counter API.
diff --git a/Documentation/cgroups/cgroups.txt b/Documentation/cgroups/cgroups.txt
index 9e04196c4d78..bcf1a00b06a1 100644
--- a/Documentation/cgroups/cgroups.txt
+++ b/Documentation/cgroups/cgroups.txt
@@ -299,11 +299,9 @@ a cgroup hierarchy's release_agent path is empty.
2991.5 What does clone_children do ? 2991.5 What does clone_children do ?
300--------------------------------- 300---------------------------------
301 301
302If the clone_children flag is enabled (1) in a cgroup, then all 302This flag only affects the cpuset controller. If the clone_children
303cgroups created beneath will call the post_clone callbacks for each 303flag is enabled (1) in a cgroup, a new cpuset cgroup will copy its
304subsystem of the newly created cgroup. Usually when this callback is 304configuration from the parent during initialization.
305implemented for a subsystem, it copies the values of the parent
306subsystem, this is the case for the cpuset.
307 305
3081.6 How do I use cgroups ? 3061.6 How do I use cgroups ?
309-------------------------- 307--------------------------
@@ -553,16 +551,16 @@ call to cgroup_unload_subsys(). It should also set its_subsys.module =
553THIS_MODULE in its .c file. 551THIS_MODULE in its .c file.
554 552
555Each subsystem may export the following methods. The only mandatory 553Each subsystem may export the following methods. The only mandatory
556methods are create/destroy. Any others that are null are presumed to 554methods are css_alloc/free. Any others that are null are presumed to
557be successful no-ops. 555be successful no-ops.
558 556
559struct cgroup_subsys_state *create(struct cgroup *cgrp) 557struct cgroup_subsys_state *css_alloc(struct cgroup *cgrp)
560(cgroup_mutex held by caller) 558(cgroup_mutex held by caller)
561 559
562Called to create a subsystem state object for a cgroup. The 560Called to allocate a subsystem state object for a cgroup. The
563subsystem should allocate its subsystem state object for the passed 561subsystem should allocate its subsystem state object for the passed
564cgroup, returning a pointer to the new object on success or a 562cgroup, returning a pointer to the new object on success or a
565negative error code. On success, the subsystem pointer should point to 563ERR_PTR() value. On success, the subsystem pointer should point to
566a structure of type cgroup_subsys_state (typically embedded in a 564a structure of type cgroup_subsys_state (typically embedded in a
567larger subsystem-specific object), which will be initialized by the 565larger subsystem-specific object), which will be initialized by the
568cgroup system. Note that this will be called at initialization to 566cgroup system. Note that this will be called at initialization to
@@ -571,24 +569,33 @@ identified by the passed cgroup object having a NULL parent (since
571it's the root of the hierarchy) and may be an appropriate place for 569it's the root of the hierarchy) and may be an appropriate place for
572initialization code. 570initialization code.
573 571
574void destroy(struct cgroup *cgrp) 572int css_online(struct cgroup *cgrp)
575(cgroup_mutex held by caller) 573(cgroup_mutex held by caller)
576 574
577The cgroup system is about to destroy the passed cgroup; the subsystem 575Called after @cgrp successfully completed all allocations and made
578should do any necessary cleanup and free its subsystem state 576visible to cgroup_for_each_child/descendant_*() iterators. The
579object. By the time this method is called, the cgroup has already been 577subsystem may choose to fail creation by returning -errno. This
580unlinked from the file system and from the child list of its parent; 578callback can be used to implement reliable state sharing and
581cgroup->parent is still valid. (Note - can also be called for a 579propagation along the hierarchy. See the comment on
582newly-created cgroup if an error occurs after this subsystem's 580cgroup_for_each_descendant_pre() for details.
583create() method has been called for the new cgroup).
584 581
585int pre_destroy(struct cgroup *cgrp); 582void css_offline(struct cgroup *cgrp);
586 583
587Called before checking the reference count on each subsystem. This may 584This is the counterpart of css_online() and called iff css_online()
588be useful for subsystems which have some extra references even if 585has succeeded on @cgrp. This signifies the beginning of the end of
589there are not tasks in the cgroup. If pre_destroy() returns error code, 586@cgrp. @cgrp is being removed and the subsystem should start dropping
590rmdir() will fail with it. From this behavior, pre_destroy() can be 587all references it's holding on @cgrp. When all references are dropped,
591called multiple times against a cgroup. 588cgroup removal will proceed to the next step - css_free(). After this
589callback, @cgrp should be considered dead to the subsystem.
590
591void css_free(struct cgroup *cgrp)
592(cgroup_mutex held by caller)
593
594The cgroup system is about to free @cgrp; the subsystem should free
595its subsystem state object. By the time this method is called, @cgrp
596is completely unused; @cgrp->parent is still valid. (Note - can also
597be called for a newly-created cgroup if an error occurs after this
598subsystem's create() method has been called for the new cgroup).
592 599
593int can_attach(struct cgroup *cgrp, struct cgroup_taskset *tset) 600int can_attach(struct cgroup *cgrp, struct cgroup_taskset *tset)
594(cgroup_mutex held by caller) 601(cgroup_mutex held by caller)
@@ -635,14 +642,6 @@ void exit(struct task_struct *task)
635 642
636Called during task exit. 643Called during task exit.
637 644
638void post_clone(struct cgroup *cgrp)
639(cgroup_mutex held by caller)
640
641Called during cgroup_create() to do any parameter
642initialization which might be required before a task could attach. For
643example, in cpusets, no task may attach before 'cpus' and 'mems' are set
644up.
645
646void bind(struct cgroup *root) 645void bind(struct cgroup *root)
647(cgroup_mutex held by caller) 646(cgroup_mutex held by caller)
648 647
diff --git a/Documentation/cgroups/cpusets.txt b/Documentation/cgroups/cpusets.txt
index cefd3d8bbd11..12e01d432bfe 100644
--- a/Documentation/cgroups/cpusets.txt
+++ b/Documentation/cgroups/cpusets.txt
@@ -218,7 +218,7 @@ and name space for cpusets, with a minimum of additional kernel code.
218The cpus and mems files in the root (top_cpuset) cpuset are 218The cpus and mems files in the root (top_cpuset) cpuset are
219read-only. The cpus file automatically tracks the value of 219read-only. The cpus file automatically tracks the value of
220cpu_online_mask using a CPU hotplug notifier, and the mems file 220cpu_online_mask using a CPU hotplug notifier, and the mems file
221automatically tracks the value of node_states[N_HIGH_MEMORY]--i.e., 221automatically tracks the value of node_states[N_MEMORY]--i.e.,
222nodes with memory--using the cpuset_track_online_nodes() hook. 222nodes with memory--using the cpuset_track_online_nodes() hook.
223 223
224 224
diff --git a/Documentation/cgroups/freezer-subsystem.txt b/Documentation/cgroups/freezer-subsystem.txt
index 7e62de1e59ff..c96a72cbb30a 100644
--- a/Documentation/cgroups/freezer-subsystem.txt
+++ b/Documentation/cgroups/freezer-subsystem.txt
@@ -49,13 +49,49 @@ prevent the freeze/unfreeze cycle from becoming visible to the tasks
49being frozen. This allows the bash example above and gdb to run as 49being frozen. This allows the bash example above and gdb to run as
50expected. 50expected.
51 51
52The freezer subsystem in the container filesystem defines a file named 52The cgroup freezer is hierarchical. Freezing a cgroup freezes all
53freezer.state. Writing "FROZEN" to the state file will freeze all tasks in the 53tasks beloning to the cgroup and all its descendant cgroups. Each
54cgroup. Subsequently writing "THAWED" will unfreeze the tasks in the cgroup. 54cgroup has its own state (self-state) and the state inherited from the
55Reading will return the current state. 55parent (parent-state). Iff both states are THAWED, the cgroup is
56THAWED.
56 57
57Note freezer.state doesn't exist in root cgroup, which means root cgroup 58The following cgroupfs files are created by cgroup freezer.
58is non-freezable. 59
60* freezer.state: Read-write.
61
62 When read, returns the effective state of the cgroup - "THAWED",
63 "FREEZING" or "FROZEN". This is the combined self and parent-states.
64 If any is freezing, the cgroup is freezing (FREEZING or FROZEN).
65
66 FREEZING cgroup transitions into FROZEN state when all tasks
67 belonging to the cgroup and its descendants become frozen. Note that
68 a cgroup reverts to FREEZING from FROZEN after a new task is added
69 to the cgroup or one of its descendant cgroups until the new task is
70 frozen.
71
72 When written, sets the self-state of the cgroup. Two values are
73 allowed - "FROZEN" and "THAWED". If FROZEN is written, the cgroup,
74 if not already freezing, enters FREEZING state along with all its
75 descendant cgroups.
76
77 If THAWED is written, the self-state of the cgroup is changed to
78 THAWED. Note that the effective state may not change to THAWED if
79 the parent-state is still freezing. If a cgroup's effective state
80 becomes THAWED, all its descendants which are freezing because of
81 the cgroup also leave the freezing state.
82
83* freezer.self_freezing: Read only.
84
85 Shows the self-state. 0 if the self-state is THAWED; otherwise, 1.
86 This value is 1 iff the last write to freezer.state was "FROZEN".
87
88* freezer.parent_freezing: Read only.
89
90 Shows the parent-state. 0 if none of the cgroup's ancestors is
91 frozen; otherwise, 1.
92
93The root cgroup is non-freezable and the above interface files don't
94exist.
59 95
60* Examples of usage : 96* Examples of usage :
61 97
@@ -85,18 +121,3 @@ to unfreeze all tasks in the container :
85 121
86This is the basic mechanism which should do the right thing for user space task 122This is the basic mechanism which should do the right thing for user space task
87in a simple scenario. 123in a simple scenario.
88
89It's important to note that freezing can be incomplete. In that case we return
90EBUSY. This means that some tasks in the cgroup are busy doing something that
91prevents us from completely freezing the cgroup at this time. After EBUSY,
92the cgroup will remain partially frozen -- reflected by freezer.state reporting
93"FREEZING" when read. The state will remain "FREEZING" until one of these
94things happens:
95
96 1) Userspace cancels the freezing operation by writing "THAWED" to
97 the freezer.state file
98 2) Userspace retries the freezing operation by writing "FROZEN" to
99 the freezer.state file (writing "FREEZING" is not legal
100 and returns EINVAL)
101 3) The tasks that blocked the cgroup from entering the "FROZEN"
102 state disappear from the cgroup's set of tasks.
diff --git a/Documentation/cgroups/memory.txt b/Documentation/cgroups/memory.txt
index c07f7b4fb88d..8b8c28b9864c 100644
--- a/Documentation/cgroups/memory.txt
+++ b/Documentation/cgroups/memory.txt
@@ -71,6 +71,11 @@ Brief summary of control files.
71 memory.oom_control # set/show oom controls. 71 memory.oom_control # set/show oom controls.
72 memory.numa_stat # show the number of memory usage per numa node 72 memory.numa_stat # show the number of memory usage per numa node
73 73
74 memory.kmem.limit_in_bytes # set/show hard limit for kernel memory
75 memory.kmem.usage_in_bytes # show current kernel memory allocation
76 memory.kmem.failcnt # show the number of kernel memory usage hits limits
77 memory.kmem.max_usage_in_bytes # show max kernel memory usage recorded
78
74 memory.kmem.tcp.limit_in_bytes # set/show hard limit for tcp buf memory 79 memory.kmem.tcp.limit_in_bytes # set/show hard limit for tcp buf memory
75 memory.kmem.tcp.usage_in_bytes # show current tcp buf memory allocation 80 memory.kmem.tcp.usage_in_bytes # show current tcp buf memory allocation
76 memory.kmem.tcp.failcnt # show the number of tcp buf memory usage hits limits 81 memory.kmem.tcp.failcnt # show the number of tcp buf memory usage hits limits
@@ -144,9 +149,9 @@ Figure 1 shows the important aspects of the controller
1443. Each page has a pointer to the page_cgroup, which in turn knows the 1493. Each page has a pointer to the page_cgroup, which in turn knows the
145 cgroup it belongs to 150 cgroup it belongs to
146 151
147The accounting is done as follows: mem_cgroup_charge() is invoked to set up 152The accounting is done as follows: mem_cgroup_charge_common() is invoked to
148the necessary data structures and check if the cgroup that is being charged 153set up the necessary data structures and check if the cgroup that is being
149is over its limit. If it is, then reclaim is invoked on the cgroup. 154charged is over its limit. If it is, then reclaim is invoked on the cgroup.
150More details can be found in the reclaim section of this document. 155More details can be found in the reclaim section of this document.
151If everything goes well, a page meta-data-structure called page_cgroup is 156If everything goes well, a page meta-data-structure called page_cgroup is
152updated. page_cgroup has its own LRU on cgroup. 157updated. page_cgroup has its own LRU on cgroup.
@@ -268,20 +273,73 @@ the amount of kernel memory used by the system. Kernel memory is fundamentally
268different than user memory, since it can't be swapped out, which makes it 273different than user memory, since it can't be swapped out, which makes it
269possible to DoS the system by consuming too much of this precious resource. 274possible to DoS the system by consuming too much of this precious resource.
270 275
276Kernel memory won't be accounted at all until limit on a group is set. This
277allows for existing setups to continue working without disruption. The limit
278cannot be set if the cgroup have children, or if there are already tasks in the
279cgroup. Attempting to set the limit under those conditions will return -EBUSY.
280When use_hierarchy == 1 and a group is accounted, its children will
281automatically be accounted regardless of their limit value.
282
283After a group is first limited, it will be kept being accounted until it
284is removed. The memory limitation itself, can of course be removed by writing
285-1 to memory.kmem.limit_in_bytes. In this case, kmem will be accounted, but not
286limited.
287
271Kernel memory limits are not imposed for the root cgroup. Usage for the root 288Kernel memory limits are not imposed for the root cgroup. Usage for the root
272cgroup may or may not be accounted. 289cgroup may or may not be accounted. The memory used is accumulated into
290memory.kmem.usage_in_bytes, or in a separate counter when it makes sense.
291(currently only for tcp).
292The main "kmem" counter is fed into the main counter, so kmem charges will
293also be visible from the user counter.
273 294
274Currently no soft limit is implemented for kernel memory. It is future work 295Currently no soft limit is implemented for kernel memory. It is future work
275to trigger slab reclaim when those limits are reached. 296to trigger slab reclaim when those limits are reached.
276 297
2772.7.1 Current Kernel Memory resources accounted 2982.7.1 Current Kernel Memory resources accounted
278 299
300* stack pages: every process consumes some stack pages. By accounting into
301kernel memory, we prevent new processes from being created when the kernel
302memory usage is too high.
303
304* slab pages: pages allocated by the SLAB or SLUB allocator are tracked. A copy
305of each kmem_cache is created everytime the cache is touched by the first time
306from inside the memcg. The creation is done lazily, so some objects can still be
307skipped while the cache is being created. All objects in a slab page should
308belong to the same memcg. This only fails to hold when a task is migrated to a
309different memcg during the page allocation by the cache.
310
279* sockets memory pressure: some sockets protocols have memory pressure 311* sockets memory pressure: some sockets protocols have memory pressure
280thresholds. The Memory Controller allows them to be controlled individually 312thresholds. The Memory Controller allows them to be controlled individually
281per cgroup, instead of globally. 313per cgroup, instead of globally.
282 314
283* tcp memory pressure: sockets memory pressure for the tcp protocol. 315* tcp memory pressure: sockets memory pressure for the tcp protocol.
284 316
3172.7.3 Common use cases
318
319Because the "kmem" counter is fed to the main user counter, kernel memory can
320never be limited completely independently of user memory. Say "U" is the user
321limit, and "K" the kernel limit. There are three possible ways limits can be
322set:
323
324 U != 0, K = unlimited:
325 This is the standard memcg limitation mechanism already present before kmem
326 accounting. Kernel memory is completely ignored.
327
328 U != 0, K < U:
329 Kernel memory is a subset of the user memory. This setup is useful in
330 deployments where the total amount of memory per-cgroup is overcommited.
331 Overcommiting kernel memory limits is definitely not recommended, since the
332 box can still run out of non-reclaimable memory.
333 In this case, the admin could set up K so that the sum of all groups is
334 never greater than the total memory, and freely set U at the cost of his
335 QoS.
336
337 U != 0, K >= U:
338 Since kmem charges will also be fed to the user counter and reclaim will be
339 triggered for the cgroup for both kinds of memory. This setup gives the
340 admin a unified view of memory, and it is also useful for people who just
341 want to track kernel memory usage.
342
2853. User Interface 3433. User Interface
286 344
2870. Configuration 3450. Configuration
@@ -290,6 +348,7 @@ a. Enable CONFIG_CGROUPS
290b. Enable CONFIG_RESOURCE_COUNTERS 348b. Enable CONFIG_RESOURCE_COUNTERS
291c. Enable CONFIG_MEMCG 349c. Enable CONFIG_MEMCG
292d. Enable CONFIG_MEMCG_SWAP (to use swap extension) 350d. Enable CONFIG_MEMCG_SWAP (to use swap extension)
351d. Enable CONFIG_MEMCG_KMEM (to use kmem extension)
293 352
2941. Prepare the cgroups (see cgroups.txt, Why are cgroups needed?) 3531. Prepare the cgroups (see cgroups.txt, Why are cgroups needed?)
295# mount -t tmpfs none /sys/fs/cgroup 354# mount -t tmpfs none /sys/fs/cgroup
@@ -406,6 +465,11 @@ About use_hierarchy, see Section 6.
406 Because rmdir() moves all pages to parent, some out-of-use page caches can be 465 Because rmdir() moves all pages to parent, some out-of-use page caches can be
407 moved to the parent. If you want to avoid that, force_empty will be useful. 466 moved to the parent. If you want to avoid that, force_empty will be useful.
408 467
468 Also, note that when memory.kmem.limit_in_bytes is set the charges due to
469 kernel pages will still be seen. This is not considered a failure and the
470 write will still return success. In this case, it is expected that
471 memory.kmem.usage_in_bytes == memory.usage_in_bytes.
472
409 About use_hierarchy, see Section 6. 473 About use_hierarchy, see Section 6.
410 474
4115.2 stat file 4755.2 stat file
@@ -466,6 +530,10 @@ Note:
4665.3 swappiness 5305.3 swappiness
467 531
468Similar to /proc/sys/vm/swappiness, but affecting a hierarchy of groups only. 532Similar to /proc/sys/vm/swappiness, but affecting a hierarchy of groups only.
533Please note that unlike the global swappiness, memcg knob set to 0
534really prevents from any swapping even if there is a swap storage
535available. This might lead to memcg OOM killer if there are no file
536pages to reclaim.
469 537
470Following cgroups' swappiness can't be changed. 538Following cgroups' swappiness can't be changed.
471- root cgroup (uses /proc/sys/vm/swappiness). 539- root cgroup (uses /proc/sys/vm/swappiness).
diff --git a/Documentation/cgroups/net_prio.txt b/Documentation/cgroups/net_prio.txt
index 01b322635591..a82cbd28ea8a 100644
--- a/Documentation/cgroups/net_prio.txt
+++ b/Documentation/cgroups/net_prio.txt
@@ -51,3 +51,5 @@ One usage for the net_prio cgroup is with mqprio qdisc allowing application
51traffic to be steered to hardware/driver based traffic classes. These mappings 51traffic to be steered to hardware/driver based traffic classes. These mappings
52can then be managed by administrators or other networking protocols such as 52can then be managed by administrators or other networking protocols such as
53DCBX. 53DCBX.
54
55A new net_prio cgroup inherits the parent's configuration.
diff --git a/Documentation/cgroups/resource_counter.txt b/Documentation/cgroups/resource_counter.txt
index 0c4a344e78fa..c4d99ed0b418 100644
--- a/Documentation/cgroups/resource_counter.txt
+++ b/Documentation/cgroups/resource_counter.txt
@@ -83,16 +83,17 @@ to work with it.
83 res_counter->lock internally (it must be called with res_counter->lock 83 res_counter->lock internally (it must be called with res_counter->lock
84 held). The force parameter indicates whether we can bypass the limit. 84 held). The force parameter indicates whether we can bypass the limit.
85 85
86 e. void res_counter_uncharge[_locked] 86 e. u64 res_counter_uncharge[_locked]
87 (struct res_counter *rc, unsigned long val) 87 (struct res_counter *rc, unsigned long val)
88 88
89 When a resource is released (freed) it should be de-accounted 89 When a resource is released (freed) it should be de-accounted
90 from the resource counter it was accounted to. This is called 90 from the resource counter it was accounted to. This is called
91 "uncharging". 91 "uncharging". The return value of this function indicate the amount
92 of charges still present in the counter.
92 93
93 The _locked routines imply that the res_counter->lock is taken. 94 The _locked routines imply that the res_counter->lock is taken.
94 95
95 f. void res_counter_uncharge_until 96 f. u64 res_counter_uncharge_until
96 (struct res_counter *rc, struct res_counter *top, 97 (struct res_counter *rc, struct res_counter *top,
97 unsinged long val) 98 unsinged long val)
98 99
diff --git a/Documentation/cpu-hotplug.txt b/Documentation/cpu-hotplug.txt
index 66ef8f35613d..9f401350f502 100644
--- a/Documentation/cpu-hotplug.txt
+++ b/Documentation/cpu-hotplug.txt
@@ -207,6 +207,30 @@ by making it not-removable.
207 207
208In such cases you will also notice that the online file is missing under cpu0. 208In such cases you will also notice that the online file is missing under cpu0.
209 209
210Q: Is CPU0 removable on X86?
211A: Yes. If kernel is compiled with CONFIG_BOOTPARAM_HOTPLUG_CPU0=y, CPU0 is
212removable by default. Otherwise, CPU0 is also removable by kernel option
213cpu0_hotplug.
214
215But some features depend on CPU0. Two known dependencies are:
216
2171. Resume from hibernate/suspend depends on CPU0. Hibernate/suspend will fail if
218CPU0 is offline and you need to online CPU0 before hibernate/suspend can
219continue.
2202. PIC interrupts also depend on CPU0. CPU0 can't be removed if a PIC interrupt
221is detected.
222
223It's said poweroff/reboot may depend on CPU0 on some machines although I haven't
224seen any poweroff/reboot failure so far after CPU0 is offline on a few tested
225machines.
226
227Please let me know if you know or see any other dependencies of CPU0.
228
229If the dependencies are under your control, you can turn on CPU0 hotplug feature
230either by CONFIG_BOOTPARAM_HOTPLUG_CPU0 or by kernel parameter cpu0_hotplug.
231
232--Fenghua Yu <fenghua.yu@intel.com>
233
210Q: How do i find out if a particular CPU is not removable? 234Q: How do i find out if a particular CPU is not removable?
211A: Depending on the implementation, some architectures may show this by the 235A: Depending on the implementation, some architectures may show this by the
212absence of the "online" file. This is done if it can be determined ahead of 236absence of the "online" file. This is done if it can be determined ahead of
diff --git a/Documentation/devices.txt b/Documentation/devices.txt
index b6251cca9263..08f01e79c41a 100644
--- a/Documentation/devices.txt
+++ b/Documentation/devices.txt
@@ -2561,9 +2561,6 @@ Your cooperation is appreciated.
2561 192 = /dev/usb/yurex1 First USB Yurex device 2561 192 = /dev/usb/yurex1 First USB Yurex device
2562 ... 2562 ...
2563 209 = /dev/usb/yurex16 16th USB Yurex device 2563 209 = /dev/usb/yurex16 16th USB Yurex device
2564 240 = /dev/usb/dabusb0 First daubusb device
2565 ...
2566 243 = /dev/usb/dabusb3 Fourth dabusb device
2567 2564
2568180 block USB block devices 2565180 block USB block devices
2569 0 = /dev/uba First USB block device 2566 0 = /dev/uba First USB block device
diff --git a/Documentation/devicetree/bindings/arm/altera/socfpga-reset.txt b/Documentation/devicetree/bindings/arm/altera/socfpga-reset.txt
new file mode 100644
index 000000000000..ecdb57d69dbf
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/altera/socfpga-reset.txt
@@ -0,0 +1,11 @@
1Altera SOCFPGA Reset Manager
2
3Required properties:
4- compatible : "altr,rst-mgr"
5- reg : Should contain 1 register ranges(address and length)
6
7Example:
8 rstmgr@ffd05000 {
9 compatible = "altr,rst-mgr";
10 reg = <0xffd05000 0x1000>;
11 };
diff --git a/Documentation/devicetree/bindings/arm/altera/socfpga-system.txt b/Documentation/devicetree/bindings/arm/altera/socfpga-system.txt
new file mode 100644
index 000000000000..07c65e3cdcbe
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/altera/socfpga-system.txt
@@ -0,0 +1,11 @@
1Altera SOCFPGA System Manager
2
3Required properties:
4- compatible : "altr,sys-mgr"
5- reg : Should contain 1 register ranges(address and length)
6
7Example:
8 sysmgr@ffd08000 {
9 compatible = "altr,sys-mgr";
10 reg = <0xffd08000 0x1000>;
11 };
diff --git a/Documentation/devicetree/bindings/arm/arm-boards b/Documentation/devicetree/bindings/arm/arm-boards
index fc81a7d6b0f1..db5858e32d3f 100644
--- a/Documentation/devicetree/bindings/arm/arm-boards
+++ b/Documentation/devicetree/bindings/arm/arm-boards
@@ -9,6 +9,10 @@ Required properties (in root node):
9 9
10FPGA type interrupt controllers, see the versatile-fpga-irq binding doc. 10FPGA type interrupt controllers, see the versatile-fpga-irq binding doc.
11 11
12In the root node the Integrator/CP must have a /cpcon node pointing
13to the CP control registers, and the Integrator/AP must have a
14/syscon node pointing to the Integrator/AP system controller.
15
12 16
13ARM Versatile Application and Platform Baseboards 17ARM Versatile Application and Platform Baseboards
14------------------------------------------------- 18-------------------------------------------------
diff --git a/Documentation/devicetree/bindings/arm/armada-370-xp-mpic.txt b/Documentation/devicetree/bindings/arm/armada-370-xp-mpic.txt
index 70c0dc5f00ed..61df564c0d23 100644
--- a/Documentation/devicetree/bindings/arm/armada-370-xp-mpic.txt
+++ b/Documentation/devicetree/bindings/arm/armada-370-xp-mpic.txt
@@ -6,9 +6,15 @@ Required properties:
6- interrupt-controller: Identifies the node as an interrupt controller. 6- interrupt-controller: Identifies the node as an interrupt controller.
7- #interrupt-cells: The number of cells to define the interrupts. Should be 1. 7- #interrupt-cells: The number of cells to define the interrupts. Should be 1.
8 The cell is the IRQ number 8 The cell is the IRQ number
9
9- reg: Should contain PMIC registers location and length. First pair 10- reg: Should contain PMIC registers location and length. First pair
10 for the main interrupt registers, second pair for the per-CPU 11 for the main interrupt registers, second pair for the per-CPU
11 interrupt registers 12 interrupt registers. For this last pair, to be compliant with SMP
13 support, the "virtual" must be use (For the record, these registers
14 automatically map to the interrupt controller registers of the
15 current CPU)
16
17
12 18
13Example: 19Example:
14 20
@@ -18,6 +24,6 @@ Example:
18 #address-cells = <1>; 24 #address-cells = <1>;
19 #size-cells = <1>; 25 #size-cells = <1>;
20 interrupt-controller; 26 interrupt-controller;
21 reg = <0xd0020000 0x1000>, 27 reg = <0xd0020a00 0x1d0>,
22 <0xd0021000 0x1000>; 28 <0xd0021070 0x58>;
23 }; 29 };
diff --git a/Documentation/devicetree/bindings/arm/armada-370-xp-pmsu.txt b/Documentation/devicetree/bindings/arm/armada-370-xp-pmsu.txt
new file mode 100644
index 000000000000..926b4d6aae7e
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/armada-370-xp-pmsu.txt
@@ -0,0 +1,20 @@
1Power Management Service Unit(PMSU)
2-----------------------------------
3Available on Marvell SOCs: Armada 370 and Armada XP
4
5Required properties:
6
7- compatible: "marvell,armada-370-xp-pmsu"
8
9- reg: Should contain PMSU registers location and length. First pair
10 for the per-CPU SW Reset Control registers, second pair for the
11 Power Management Service Unit.
12
13Example:
14
15armada-370-xp-pmsu@d0022000 {
16 compatible = "marvell,armada-370-xp-pmsu";
17 reg = <0xd0022100 0x430>,
18 <0xd0020800 0x20>;
19};
20
diff --git a/Documentation/devicetree/bindings/arm/armada-370-xp-timer.txt b/Documentation/devicetree/bindings/arm/armada-370-xp-timer.txt
index 8b6ea2267c94..64830118b013 100644
--- a/Documentation/devicetree/bindings/arm/armada-370-xp-timer.txt
+++ b/Documentation/devicetree/bindings/arm/armada-370-xp-timer.txt
@@ -5,6 +5,7 @@ Required properties:
5- compatible: Should be "marvell,armada-370-xp-timer" 5- compatible: Should be "marvell,armada-370-xp-timer"
6- interrupts: Should contain the list of Global Timer interrupts 6- interrupts: Should contain the list of Global Timer interrupts
7- reg: Should contain the base address of the Global Timer registers 7- reg: Should contain the base address of the Global Timer registers
8- clocks: clock driving the timer hardware
8 9
9Optional properties: 10Optional properties:
10- marvell,timer-25Mhz: Tells whether the Global timer supports the 25 11- marvell,timer-25Mhz: Tells whether the Global timer supports the 25
diff --git a/Documentation/devicetree/bindings/arm/atmel-at91.txt b/Documentation/devicetree/bindings/arm/atmel-at91.txt
index d187e9f7cf1c..1196290082d1 100644
--- a/Documentation/devicetree/bindings/arm/atmel-at91.txt
+++ b/Documentation/devicetree/bindings/arm/atmel-at91.txt
@@ -7,6 +7,12 @@ PIT Timer required properties:
7- interrupts: Should contain interrupt for the PIT which is the IRQ line 7- interrupts: Should contain interrupt for the PIT which is the IRQ line
8 shared across all System Controller members. 8 shared across all System Controller members.
9 9
10System Timer (ST) required properties:
11- compatible: Should be "atmel,at91rm9200-st"
12- reg: Should contain registers location and length
13- interrupts: Should contain interrupt for the ST which is the IRQ line
14 shared across all System Controller members.
15
10TC/TCLIB Timer required properties: 16TC/TCLIB Timer required properties:
11- compatible: Should be "atmel,<chip>-tcb". 17- compatible: Should be "atmel,<chip>-tcb".
12 <chip> can be "at91rm9200" or "at91sam9x5" 18 <chip> can be "at91rm9200" or "at91sam9x5"
diff --git a/Documentation/devicetree/bindings/arm/bcm/bcm11351.txt b/Documentation/devicetree/bindings/arm/bcm/bcm11351.txt
new file mode 100644
index 000000000000..fb7b5cd2652f
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/bcm/bcm11351.txt
@@ -0,0 +1,9 @@
1Broadcom BCM11351 device tree bindings
2-------------------------------------------
3
4Boards with the bcm281xx SoC family (which includes bcm11130, bcm11140,
5bcm11351, bcm28145, bcm28155 SoCs) shall have the following properties:
6
7Required root node property:
8
9compatible = "bcm,bcm11351";
diff --git a/Documentation/devicetree/bindings/arm/calxeda.txt b/Documentation/devicetree/bindings/arm/calxeda.txt
index 4755caaccba6..25fcf96795ca 100644
--- a/Documentation/devicetree/bindings/arm/calxeda.txt
+++ b/Documentation/devicetree/bindings/arm/calxeda.txt
@@ -1,8 +1,15 @@
1Calxeda Highbank Platforms Device Tree Bindings 1Calxeda Platforms Device Tree Bindings
2----------------------------------------------- 2-----------------------------------------------
3 3
4Boards with Calxeda Cortex-A9 based Highbank SOC shall have the following 4Boards with Calxeda Cortex-A9 based ECX-1000 (Highbank) SOC shall have the
5properties. 5following properties.
6 6
7Required root node properties: 7Required root node properties:
8 - compatible = "calxeda,highbank"; 8 - compatible = "calxeda,highbank";
9
10
11Boards with Calxeda Cortex-A15 based ECX-2000 SOC shall have the following
12properties.
13
14Required root node properties:
15 - compatible = "calxeda,ecx-2000";
diff --git a/Documentation/devicetree/bindings/arm/coherency-fabric.txt b/Documentation/devicetree/bindings/arm/coherency-fabric.txt
new file mode 100644
index 000000000000..17d8cd107559
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/coherency-fabric.txt
@@ -0,0 +1,21 @@
1Coherency fabric
2----------------
3Available on Marvell SOCs: Armada 370 and Armada XP
4
5Required properties:
6
7- compatible: "marvell,coherency-fabric"
8
9- reg: Should contain coherency fabric registers location and
10 length. First pair for the coherency fabric registers, second pair
11 for the per-CPU fabric registers registers.
12
13Example:
14
15coherency-fabric@d0020200 {
16 compatible = "marvell,coherency-fabric";
17 reg = <0xd0020200 0xb0>,
18 <0xd0021810 0x1c>;
19
20};
21
diff --git a/Documentation/devicetree/bindings/arm/cpus.txt b/Documentation/devicetree/bindings/arm/cpus.txt
new file mode 100644
index 000000000000..f32494dbfe19
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/cpus.txt
@@ -0,0 +1,77 @@
1* ARM CPUs binding description
2
3The device tree allows to describe the layout of CPUs in a system through
4the "cpus" node, which in turn contains a number of subnodes (ie "cpu")
5defining properties for every cpu.
6
7Bindings for CPU nodes follow the ePAPR standard, available from:
8
9http://devicetree.org
10
11For the ARM architecture every CPU node must contain the following properties:
12
13- device_type: must be "cpu"
14- reg: property matching the CPU MPIDR[23:0] register bits
15 reg[31:24] bits must be set to 0
16- compatible: should be one of:
17 "arm,arm1020"
18 "arm,arm1020e"
19 "arm,arm1022"
20 "arm,arm1026"
21 "arm,arm720"
22 "arm,arm740"
23 "arm,arm7tdmi"
24 "arm,arm920"
25 "arm,arm922"
26 "arm,arm925"
27 "arm,arm926"
28 "arm,arm940"
29 "arm,arm946"
30 "arm,arm9tdmi"
31 "arm,cortex-a5"
32 "arm,cortex-a7"
33 "arm,cortex-a8"
34 "arm,cortex-a9"
35 "arm,cortex-a15"
36 "arm,arm1136"
37 "arm,arm1156"
38 "arm,arm1176"
39 "arm,arm11mpcore"
40 "faraday,fa526"
41 "intel,sa110"
42 "intel,sa1100"
43 "marvell,feroceon"
44 "marvell,mohawk"
45 "marvell,xsc3"
46 "marvell,xscale"
47
48Example:
49
50 cpus {
51 #size-cells = <0>;
52 #address-cells = <1>;
53
54 CPU0: cpu@0 {
55 device_type = "cpu";
56 compatible = "arm,cortex-a15";
57 reg = <0x0>;
58 };
59
60 CPU1: cpu@1 {
61 device_type = "cpu";
62 compatible = "arm,cortex-a15";
63 reg = <0x1>;
64 };
65
66 CPU2: cpu@100 {
67 device_type = "cpu";
68 compatible = "arm,cortex-a7";
69 reg = <0x100>;
70 };
71
72 CPU3: cpu@101 {
73 device_type = "cpu";
74 compatible = "arm,cortex-a7";
75 reg = <0x101>;
76 };
77 };
diff --git a/Documentation/devicetree/bindings/arm/davinci.txt b/Documentation/devicetree/bindings/arm/davinci.txt
new file mode 100644
index 000000000000..cfaeda4274e6
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/davinci.txt
@@ -0,0 +1,17 @@
1Texas Instruments DaVinci Platforms Device Tree Bindings
2--------------------------------------------------------
3
4DA850/OMAP-L138/AM18x Evaluation Module (EVM) board
5Required root node properties:
6 - compatible = "ti,da850-evm", "ti,da850";
7
8EnBW AM1808 based CMC board
9Required root node properties:
10 - compatible = "enbw,cmc", "ti,da850;
11
12Generic DaVinci Boards
13----------------------
14
15DA850/OMAP-L138/AM18x generic board
16Required root node properties:
17 - compatible = "ti,da850";
diff --git a/Documentation/devicetree/bindings/arm/davinci/nand.txt b/Documentation/devicetree/bindings/arm/davinci/nand.txt
index e37241f1fdd8..49fc7ada929a 100644
--- a/Documentation/devicetree/bindings/arm/davinci/nand.txt
+++ b/Documentation/devicetree/bindings/arm/davinci/nand.txt
@@ -23,29 +23,16 @@ Recommended properties :
23- ti,davinci-nand-buswidth: buswidth 8 or 16 23- ti,davinci-nand-buswidth: buswidth 8 or 16
24- ti,davinci-nand-use-bbt: use flash based bad block table support. 24- ti,davinci-nand-use-bbt: use flash based bad block table support.
25 25
26Example (enbw_cmc board): 26Example(da850 EVM ):
27aemif@60000000 { 27nand_cs3@62000000 {
28 compatible = "ti,davinci-aemif"; 28 compatible = "ti,davinci-nand";
29 #address-cells = <2>; 29 reg = <0x62000000 0x807ff
30 #size-cells = <1>; 30 0x68000000 0x8000>;
31 reg = <0x68000000 0x80000>; 31 ti,davinci-chipselect = <1>;
32 ranges = <2 0 0x60000000 0x02000000 32 ti,davinci-mask-ale = <0>;
33 3 0 0x62000000 0x02000000 33 ti,davinci-mask-cle = <0>;
34 4 0 0x64000000 0x02000000 34 ti,davinci-mask-chipsel = <0>;
35 5 0 0x66000000 0x02000000 35 ti,davinci-ecc-mode = "hw";
36 6 0 0x68000000 0x02000000>; 36 ti,davinci-ecc-bits = <4>;
37 nand@3,0 { 37 ti,davinci-nand-use-bbt;
38 compatible = "ti,davinci-nand";
39 reg = <3 0x0 0x807ff
40 6 0x0 0x8000>;
41 #address-cells = <1>;
42 #size-cells = <1>;
43 ti,davinci-chipselect = <1>;
44 ti,davinci-mask-ale = <0>;
45 ti,davinci-mask-cle = <0>;
46 ti,davinci-mask-chipsel = <0>;
47 ti,davinci-ecc-mode = "hw";
48 ti,davinci-ecc-bits = <4>;
49 ti,davinci-nand-use-bbt;
50 };
51}; 38};
diff --git a/Documentation/devicetree/bindings/arm/exynos/power_domain.txt b/Documentation/devicetree/bindings/arm/exynos/power_domain.txt
index 6528e215c5fe..5216b419016a 100644
--- a/Documentation/devicetree/bindings/arm/exynos/power_domain.txt
+++ b/Documentation/devicetree/bindings/arm/exynos/power_domain.txt
@@ -4,14 +4,13 @@ Exynos processors include support for multiple power domains which are used
4to gate power to one or more peripherals on the processor. 4to gate power to one or more peripherals on the processor.
5 5
6Required Properties: 6Required Properties:
7- compatiable: should be one of the following. 7- compatible: should be one of the following.
8 * samsung,exynos4210-pd - for exynos4210 type power domain. 8 * samsung,exynos4210-pd - for exynos4210 type power domain.
9- reg: physical base address of the controller and length of memory mapped 9- reg: physical base address of the controller and length of memory mapped
10 region. 10 region.
11 11
12Optional Properties: 12Node of a device using power domains must have a samsung,power-domain property
13- samsung,exynos4210-pd-off: Specifies that the power domain is in turned-off 13defined with a phandle to respective power domain.
14 state during boot and remains to be turned-off until explicitly turned-on.
15 14
16Example: 15Example:
17 16
@@ -19,3 +18,11 @@ Example:
19 compatible = "samsung,exynos4210-pd"; 18 compatible = "samsung,exynos4210-pd";
20 reg = <0x10023C00 0x10>; 19 reg = <0x10023C00 0x10>;
21 }; 20 };
21
22Example of the node using power domain:
23
24 node {
25 /* ... */
26 samsung,power-domain = <&lcd0>;
27 /* ... */
28 };
diff --git a/Documentation/devicetree/bindings/arm/fsl.txt b/Documentation/devicetree/bindings/arm/fsl.txt
index ac9e7516756e..f79818711e83 100644
--- a/Documentation/devicetree/bindings/arm/fsl.txt
+++ b/Documentation/devicetree/bindings/arm/fsl.txt
@@ -41,6 +41,10 @@ i.MX6 Quad SABRE Smart Device Board
41Required root node properties: 41Required root node properties:
42 - compatible = "fsl,imx6q-sabresd", "fsl,imx6q"; 42 - compatible = "fsl,imx6q-sabresd", "fsl,imx6q";
43 43
44i.MX6 Quad SABRE Automotive Board
45Required root node properties:
46 - compatible = "fsl,imx6q-sabreauto", "fsl,imx6q";
47
44Generic i.MX boards 48Generic i.MX boards
45------------------- 49-------------------
46 50
diff --git a/Documentation/devicetree/bindings/arm/l2cc.txt b/Documentation/devicetree/bindings/arm/l2cc.txt
index 7ca52161e7ab..cbef09b5c8a7 100644
--- a/Documentation/devicetree/bindings/arm/l2cc.txt
+++ b/Documentation/devicetree/bindings/arm/l2cc.txt
@@ -10,6 +10,12 @@ Required properties:
10 "arm,pl310-cache" 10 "arm,pl310-cache"
11 "arm,l220-cache" 11 "arm,l220-cache"
12 "arm,l210-cache" 12 "arm,l210-cache"
13 "marvell,aurora-system-cache": Marvell Controller designed to be
14 compatible with the ARM one, with system cache mode (meaning
15 maintenance operations on L1 are broadcasted to the L2 and L2
16 performs the same operation).
17 "marvell,"aurora-outer-cache: Marvell Controller designed to be
18 compatible with the ARM one with outer cache mode.
13- cache-unified : Specifies the cache is a unified cache. 19- cache-unified : Specifies the cache is a unified cache.
14- cache-level : Should be set to 2 for a level 2 cache. 20- cache-level : Should be set to 2 for a level 2 cache.
15- reg : Physical base address and size of cache controller's memory mapped 21- reg : Physical base address and size of cache controller's memory mapped
@@ -29,6 +35,9 @@ Optional properties:
29 filter. Addresses in the filter window are directed to the M1 port. Other 35 filter. Addresses in the filter window are directed to the M1 port. Other
30 addresses will go to the M0 port. 36 addresses will go to the M0 port.
31- interrupts : 1 combined interrupt. 37- interrupts : 1 combined interrupt.
38- cache-id-part: cache id part number to be used if it is not present
39 on hardware
40- wt-override: If present then L2 is forced to Write through mode
32 41
33Example: 42Example:
34 43
@@ -37,7 +46,7 @@ L2: cache-controller {
37 reg = <0xfff12000 0x1000>; 46 reg = <0xfff12000 0x1000>;
38 arm,data-latency = <1 1 1>; 47 arm,data-latency = <1 1 1>;
39 arm,tag-latency = <2 2 2>; 48 arm,tag-latency = <2 2 2>;
40 arm,filter-latency = <0x80000000 0x8000000>; 49 arm,filter-ranges = <0x80000000 0x8000000>;
41 cache-unified; 50 cache-unified;
42 cache-level = <2>; 51 cache-level = <2>;
43 interrupts = <45>; 52 interrupts = <45>;
diff --git a/Documentation/devicetree/bindings/arm/omap/counter.txt b/Documentation/devicetree/bindings/arm/omap/counter.txt
new file mode 100644
index 000000000000..5bd8aa091315
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/omap/counter.txt
@@ -0,0 +1,15 @@
1OMAP Counter-32K bindings
2
3Required properties:
4- compatible: Must be "ti,omap-counter32k" for OMAP controllers
5- reg: Contains timer register address range (base address and length)
6- ti,hwmods: Name of the hwmod associated to the counter, which is typically
7 "counter_32k"
8
9Example:
10
11counter32k: counter@4a304000 {
12 compatible = "ti,omap-counter32k";
13 reg = <0x4a304000 0x20>;
14 ti,hwmods = "counter_32k";
15};
diff --git a/Documentation/devicetree/bindings/arm/omap/timer.txt b/Documentation/devicetree/bindings/arm/omap/timer.txt
new file mode 100644
index 000000000000..8732d4d41f8b
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/omap/timer.txt
@@ -0,0 +1,31 @@
1OMAP Timer bindings
2
3Required properties:
4- compatible: Must be "ti,omap2-timer" for OMAP2+ controllers.
5- reg: Contains timer register address range (base address and
6 length).
7- interrupts: Contains the interrupt information for the timer. The
8 format is being dependent on which interrupt controller
9 the OMAP device uses.
10- ti,hwmods: Name of the hwmod associated to the timer, "timer<X>",
11 where <X> is the instance number of the timer from the
12 HW spec.
13
14Optional properties:
15- ti,timer-alwon: Indicates the timer is in an alway-on power domain.
16- ti,timer-dsp: Indicates the timer can interrupt the on-chip DSP in
17 addition to the ARM CPU.
18- ti,timer-pwm: Indicates the timer can generate a PWM output.
19- ti,timer-secure: Indicates the timer is reserved on a secure OMAP device
20 and therefore cannot be used by the kernel.
21
22Example:
23
24timer12: timer@48304000 {
25 compatible = "ti,omap2-timer";
26 reg = <0x48304000 0x400>;
27 interrupts = <95>;
28 ti,hwmods = "timer12"
29 ti,timer-alwon;
30 ti,timer-secure;
31};
diff --git a/Documentation/devicetree/bindings/arm/spear/shirq.txt b/Documentation/devicetree/bindings/arm/spear/shirq.txt
new file mode 100644
index 000000000000..13fbb8866bd6
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/spear/shirq.txt
@@ -0,0 +1,48 @@
1* SPEAr Shared IRQ layer (shirq)
2
3SPEAr3xx architecture includes shared/multiplexed irqs for certain set
4of devices. The multiplexor provides a single interrupt to parent
5interrupt controller (VIC) on behalf of a group of devices.
6
7There can be multiple groups available on SPEAr3xx variants but not
8exceeding 4. The number of devices in a group can differ, further they
9may share same set of status/mask registers spanning across different
10bit masks. Also in some cases the group may not have enable or other
11registers. This makes software little complex.
12
13A single node in the device tree is used to describe the shared
14interrupt multiplexor (one node for all groups). A group in the
15interrupt controller shares config/control registers with other groups.
16For example, a 32-bit interrupt enable/disable config register can
17accommodate upto 4 interrupt groups.
18
19Required properties:
20 - compatible: should be, either of
21 - "st,spear300-shirq"
22 - "st,spear310-shirq"
23 - "st,spear320-shirq"
24 - interrupt-controller: Identifies the node as an interrupt controller.
25 - #interrupt-cells: should be <1> which basically contains the offset
26 (starting from 0) of interrupts for all the groups.
27 - reg: Base address and size of shirq registers.
28 - interrupts: The list of interrupts generated by the groups which are
29 then connected to a parent interrupt controller. Each group is
30 associated with one of the interrupts, hence number of interrupts (to
31 parent) is equal to number of groups. The format of the interrupt
32 specifier depends in the interrupt parent controller.
33
34 Optional properties:
35 - interrupt-parent: pHandle of the parent interrupt controller, if not
36 inherited from the parent node.
37
38Example:
39
40The following is an example from the SPEAr320 SoC dtsi file.
41
42shirq: interrupt-controller@0xb3000000 {
43 compatible = "st,spear320-shirq";
44 reg = <0xb3000000 0x1000>;
45 interrupts = <28 29 30 1>;
46 #interrupt-cells = <1>;
47 interrupt-controller;
48};
diff --git a/Documentation/devicetree/bindings/arm/vexpress-sysreg.txt b/Documentation/devicetree/bindings/arm/vexpress-sysreg.txt
new file mode 100644
index 000000000000..9cf3f25544c7
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/vexpress-sysreg.txt
@@ -0,0 +1,50 @@
1ARM Versatile Express system registers
2--------------------------------------
3
4This is a system control registers block, providing multiple low level
5platform functions like board detection and identification, software
6interrupt generation, MMC and NOR Flash control etc.
7
8Required node properties:
9- compatible value : = "arm,vexpress,sysreg";
10- reg : physical base address and the size of the registers window
11- gpio-controller : specifies that the node is a GPIO controller
12- #gpio-cells : size of the GPIO specifier, should be 2:
13 - first cell is the pseudo-GPIO line number:
14 0 - MMC CARDIN
15 1 - MMC WPROT
16 2 - NOR FLASH WPn
17 - second cell can take standard GPIO flags (currently ignored).
18
19Example:
20 v2m_sysreg: sysreg@10000000 {
21 compatible = "arm,vexpress-sysreg";
22 reg = <0x10000000 0x1000>;
23 gpio-controller;
24 #gpio-cells = <2>;
25 };
26
27This block also can also act a bridge to the platform's configuration
28bus via "system control" interface, addressing devices with site number,
29position in the board stack, config controller, function and device
30numbers - see motherboard's TRM for more details.
31
32The node describing a config device must refer to the sysreg node via
33"arm,vexpress,config-bridge" phandle (can be also defined in the node's
34parent) and relies on the board topology properties - see main vexpress
35node documentation for more details. It must must also define the
36following property:
37- arm,vexpress-sysreg,func : must contain two cells:
38 - first cell defines function number (eg. 1 for clock generator,
39 2 for voltage regulators etc.)
40 - device number (eg. osc 0, osc 1 etc.)
41
42Example:
43 mcc {
44 arm,vexpress,config-bridge = <&v2m_sysreg>;
45
46 osc@0 {
47 compatible = "arm,vexpress-osc";
48 arm,vexpress-sysreg,func = <1 0>;
49 };
50 };
diff --git a/Documentation/devicetree/bindings/arm/vexpress.txt b/Documentation/devicetree/bindings/arm/vexpress.txt
index ec8b50cbb2e8..ae49161e478a 100644
--- a/Documentation/devicetree/bindings/arm/vexpress.txt
+++ b/Documentation/devicetree/bindings/arm/vexpress.txt
@@ -11,6 +11,10 @@ the motherboard file using a /include/ directive. As the motherboard
11can be initialized in one of two different configurations ("memory 11can be initialized in one of two different configurations ("memory
12maps"), care must be taken to include the correct one. 12maps"), care must be taken to include the correct one.
13 13
14
15Root node
16---------
17
14Required properties in the root node: 18Required properties in the root node:
15- compatible value: 19- compatible value:
16 compatible = "arm,vexpress,<model>", "arm,vexpress"; 20 compatible = "arm,vexpress,<model>", "arm,vexpress";
@@ -45,6 +49,10 @@ Optional properties in the root node:
45 - Coretile Express A9x4 (V2P-CA9) HBI-0225: 49 - Coretile Express A9x4 (V2P-CA9) HBI-0225:
46 arm,hbi = <0x225>; 50 arm,hbi = <0x225>;
47 51
52
53CPU nodes
54---------
55
48Top-level standard "cpus" node is required. It must contain a node 56Top-level standard "cpus" node is required. It must contain a node
49with device_type = "cpu" property for every available core, eg.: 57with device_type = "cpu" property for every available core, eg.:
50 58
@@ -59,6 +67,52 @@ with device_type = "cpu" property for every available core, eg.:
59 }; 67 };
60 }; 68 };
61 69
70
71Configuration infrastructure
72----------------------------
73
74The platform has an elaborated configuration system, consisting of
75microcontrollers residing on the mother- and daughterboards known
76as Motherboard/Daughterboard Configuration Controller (MCC and DCC).
77The controllers are responsible for the platform initialization
78(reset generation, flash programming, FPGA bitfiles loading etc.)
79but also control clock generators, voltage regulators, gather
80environmental data like temperature, power consumption etc. Even
81the video output switch (FPGA) is controlled that way.
82
83Nodes describing devices controlled by this infrastructure should
84point at the bridge device node:
85- bridge phandle:
86 arm,vexpress,config-bridge = <phandle>;
87This property can be also defined in a parent node (eg. for a DCC)
88and is effective for all children.
89
90
91Platform topology
92-----------------
93
94As Versatile Express can be configured in number of physically
95different setups, the device tree should describe platform topology.
96Root node and main motherboard node must define the following
97property, describing physical location of the children nodes:
98- site number:
99 arm,vexpress,site = <number>;
100 where 0 means motherboard, 1 or 2 are daugtherboard sites,
101 0xf means "master" site (site containing main CPU tile)
102- when daughterboards are stacked on one site, their position
103 in the stack be be described with:
104 arm,vexpress,position = <number>;
105- when describing tiles consisting more than one DCC, its number
106 can be described with:
107 arm,vexpress,dcc = <number>;
108
109Any of the numbers above defaults to zero if not defined in
110the node or any of its parent.
111
112
113Motherboard
114-----------
115
62The motherboard description file provides a single "motherboard" node 116The motherboard description file provides a single "motherboard" node
63using 2 address cells corresponding to the Static Memory Bus used 117using 2 address cells corresponding to the Static Memory Bus used
64between the motherboard and the tile. The first cell defines the Chip 118between the motherboard and the tile. The first cell defines the Chip
@@ -87,22 +141,30 @@ can be used to obtain required phandle in the tile's "aliases" node:
87- SP804 timers: 141- SP804 timers:
88 v2m_timer01 and v2m_timer23 142 v2m_timer01 and v2m_timer23
89 143
90Current Linux implementation requires a "arm,v2m_timer" alias 144The tile description should define a "smb" node, describing the
91pointing at one of the motherboard's SP804 timers, if it is to be 145Static Memory Bus between the tile and motherboard. It must define
92used as the system timer. This alias should be defined in the 146the following properties:
93motherboard files. 147- "simple-bus" compatible value (to ensure creation of the children)
148 compatible = "simple-bus";
149- mapping of the SMB CS/offset addresses into main address space:
150 #address-cells = <2>;
151 #size-cells = <1>;
152 ranges = <...>;
153- interrupts mapping:
154 #interrupt-cells = <1>;
155 interrupt-map-mask = <0 0 63>;
156 interrupt-map = <...>;
94 157
95The tile description must define "ranges", "interrupt-map-mask" and
96"interrupt-map" properties to translate the motherboard's address
97and interrupt space into one used by the tile's processor.
98 158
99Abbreviated example: 159Example of a VE tile description (simplified)
160---------------------------------------------
100 161
101/dts-v1/; 162/dts-v1/;
102 163
103/ { 164/ {
104 model = "V2P-CA5s"; 165 model = "V2P-CA5s";
105 arm,hbi = <0x225>; 166 arm,hbi = <0x225>;
167 arm,vexpress,site = <0xf>;
106 compatible = "arm,vexpress-v2p-ca5s", "arm,vexpress"; 168 compatible = "arm,vexpress-v2p-ca5s", "arm,vexpress";
107 interrupt-parent = <&gic>; 169 interrupt-parent = <&gic>;
108 #address-cells = <1>; 170 #address-cells = <1>;
@@ -134,13 +196,29 @@ Abbreviated example:
134 <0x2c000100 0x100>; 196 <0x2c000100 0x100>;
135 }; 197 };
136 198
137 motherboard { 199 dcc {
200 compatible = "simple-bus";
201 arm,vexpress,config-bridge = <&v2m_sysreg>;
202
203 osc@0 {
204 compatible = "arm,vexpress-osc";
205 };
206 };
207
208 smb {
209 compatible = "simple-bus";
210
211 #address-cells = <2>;
212 #size-cells = <1>;
138 /* CS0 is visible at 0x08000000 */ 213 /* CS0 is visible at 0x08000000 */
139 ranges = <0 0 0x08000000 0x04000000>; 214 ranges = <0 0 0x08000000 0x04000000>;
215
216 #interrupt-cells = <1>;
140 interrupt-map-mask = <0 0 63>; 217 interrupt-map-mask = <0 0 63>;
141 /* Active high IRQ 0 is connected to GIC's SPI0 */ 218 /* Active high IRQ 0 is connected to GIC's SPI0 */
142 interrupt-map = <0 0 0 &gic 0 0 4>; 219 interrupt-map = <0 0 0 &gic 0 0 4>;
220
221 /include/ "vexpress-v2m-rs1.dtsi"
143 }; 222 };
144}; 223};
145 224
146/include/ "vexpress-v2m-rs1.dtsi"
diff --git a/Documentation/devicetree/bindings/ata/exynos-sata-phy.txt b/Documentation/devicetree/bindings/ata/exynos-sata-phy.txt
new file mode 100644
index 000000000000..37824fac688e
--- /dev/null
+++ b/Documentation/devicetree/bindings/ata/exynos-sata-phy.txt
@@ -0,0 +1,14 @@
1* Samsung SATA PHY Controller
2
3SATA PHY nodes are defined to describe on-chip SATA Physical layer controllers.
4Each SATA PHY controller should have its own node.
5
6Required properties:
7- compatible : compatible list, contains "samsung,exynos5-sata-phy"
8- reg : <registers mapping>
9
10Example:
11 sata@ffe07000 {
12 compatible = "samsung,exynos5-sata-phy";
13 reg = <0xffe07000 0x1000>;
14 };
diff --git a/Documentation/devicetree/bindings/ata/exynos-sata.txt b/Documentation/devicetree/bindings/ata/exynos-sata.txt
new file mode 100644
index 000000000000..0849f1025e34
--- /dev/null
+++ b/Documentation/devicetree/bindings/ata/exynos-sata.txt
@@ -0,0 +1,17 @@
1* Samsung AHCI SATA Controller
2
3SATA nodes are defined to describe on-chip Serial ATA controllers.
4Each SATA controller should have its own node.
5
6Required properties:
7- compatible : compatible list, contains "samsung,exynos5-sata"
8- interrupts : <interrupt mapping for SATA IRQ>
9- reg : <registers mapping>
10- samsung,sata-freq : <frequency in MHz>
11
12Example:
13 sata@ffe08000 {
14 compatible = "samsung,exynos5-sata";
15 reg = <0xffe08000 0x1000>;
16 interrupts = <115>;
17 };
diff --git a/Documentation/devicetree/bindings/bus/omap-ocp2scp.txt b/Documentation/devicetree/bindings/bus/omap-ocp2scp.txt
index d2fe064a828b..63dd8051521c 100644
--- a/Documentation/devicetree/bindings/bus/omap-ocp2scp.txt
+++ b/Documentation/devicetree/bindings/bus/omap-ocp2scp.txt
@@ -2,9 +2,27 @@
2 2
3properties: 3properties:
4- compatible : Should be "ti,omap-ocp2scp" 4- compatible : Should be "ti,omap-ocp2scp"
5- reg : Address and length of the register set for the device
5- #address-cells, #size-cells : Must be present if the device has sub-nodes 6- #address-cells, #size-cells : Must be present if the device has sub-nodes
6- ranges : the child address space are mapped 1:1 onto the parent address space 7- ranges : the child address space are mapped 1:1 onto the parent address space
7- ti,hwmods : must be "ocp2scp_usb_phy" 8- ti,hwmods : must be "ocp2scp_usb_phy"
8 9
9Sub-nodes: 10Sub-nodes:
10All the devices connected to ocp2scp are described using sub-node to ocp2scp 11All the devices connected to ocp2scp are described using sub-node to ocp2scp
12
13ocp2scp@4a0ad000 {
14 compatible = "ti,omap-ocp2scp";
15 reg = <0x4a0ad000 0x1f>;
16 #address-cells = <1>;
17 #size-cells = <1>;
18 ranges;
19 ti,hwmods = "ocp2scp_usb_phy";
20
21 subnode1 {
22 ...
23 };
24
25 subnode2 {
26 ...
27 };
28};
diff --git a/Documentation/devicetree/bindings/clock/imx23-clock.txt b/Documentation/devicetree/bindings/clock/imx23-clock.txt
index a0b867ef8d96..baadbb11fe98 100644
--- a/Documentation/devicetree/bindings/clock/imx23-clock.txt
+++ b/Documentation/devicetree/bindings/clock/imx23-clock.txt
@@ -52,7 +52,7 @@ clocks and IDs.
52 lcdif 38 52 lcdif 38
53 etm 39 53 etm 39
54 usb 40 54 usb 40
55 usb_pwr 41 55 usb_phy 41
56 56
57Examples: 57Examples:
58 58
diff --git a/Documentation/devicetree/bindings/clock/imx25-clock.txt b/Documentation/devicetree/bindings/clock/imx25-clock.txt
new file mode 100644
index 000000000000..c2a3525ecb4e
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/imx25-clock.txt
@@ -0,0 +1,162 @@
1* Clock bindings for Freescale i.MX25
2
3Required properties:
4- compatible: Should be "fsl,imx25-ccm"
5- reg: Address and length of the register set
6- interrupts: Should contain CCM interrupt
7- #clock-cells: Should be <1>
8
9The clock consumer should specify the desired clock by having the clock
10ID in its "clocks" phandle cell. The following is a full list of i.MX25
11clocks and IDs.
12
13 Clock ID
14 ---------------------------
15 dummy 0
16 osc 1
17 mpll 2
18 upll 3
19 mpll_cpu_3_4 4
20 cpu_sel 5
21 cpu 6
22 ahb 7
23 usb_div 8
24 ipg 9
25 per0_sel 10
26 per1_sel 11
27 per2_sel 12
28 per3_sel 13
29 per4_sel 14
30 per5_sel 15
31 per6_sel 16
32 per7_sel 17
33 per8_sel 18
34 per9_sel 19
35 per10_sel 20
36 per11_sel 21
37 per12_sel 22
38 per13_sel 23
39 per14_sel 24
40 per15_sel 25
41 per0 26
42 per1 27
43 per2 28
44 per3 29
45 per4 30
46 per5 31
47 per6 32
48 per7 33
49 per8 34
50 per9 35
51 per10 36
52 per11 37
53 per12 38
54 per13 39
55 per14 40
56 per15 41
57 csi_ipg_per 42
58 epit_ipg_per 43
59 esai_ipg_per 44
60 esdhc1_ipg_per 45
61 esdhc2_ipg_per 46
62 gpt_ipg_per 47
63 i2c_ipg_per 48
64 lcdc_ipg_per 49
65 nfc_ipg_per 50
66 owire_ipg_per 51
67 pwm_ipg_per 52
68 sim1_ipg_per 53
69 sim2_ipg_per 54
70 ssi1_ipg_per 55
71 ssi2_ipg_per 56
72 uart_ipg_per 57
73 ata_ahb 58
74 reserved 59
75 csi_ahb 60
76 emi_ahb 61
77 esai_ahb 62
78 esdhc1_ahb 63
79 esdhc2_ahb 64
80 fec_ahb 65
81 lcdc_ahb 66
82 rtic_ahb 67
83 sdma_ahb 68
84 slcdc_ahb 69
85 usbotg_ahb 70
86 reserved 71
87 reserved 72
88 reserved 73
89 reserved 74
90 can1_ipg 75
91 can2_ipg 76
92 csi_ipg 77
93 cspi1_ipg 78
94 cspi2_ipg 79
95 cspi3_ipg 80
96 dryice_ipg 81
97 ect_ipg 82
98 epit1_ipg 83
99 epit2_ipg 84
100 reserved 85
101 esdhc1_ipg 86
102 esdhc2_ipg 87
103 fec_ipg 88
104 reserved 89
105 reserved 90
106 reserved 91
107 gpt1_ipg 92
108 gpt2_ipg 93
109 gpt3_ipg 94
110 gpt4_ipg 95
111 reserved 96
112 reserved 97
113 reserved 98
114 iim_ipg 99
115 reserved 100
116 reserved 101
117 kpp_ipg 102
118 lcdc_ipg 103
119 reserved 104
120 pwm1_ipg 105
121 pwm2_ipg 106
122 pwm3_ipg 107
123 pwm4_ipg 108
124 rngb_ipg 109
125 reserved 110
126 scc_ipg 111
127 sdma_ipg 112
128 sim1_ipg 113
129 sim2_ipg 114
130 slcdc_ipg 115
131 spba_ipg 116
132 ssi1_ipg 117
133 ssi2_ipg 118
134 tsc_ipg 119
135 uart1_ipg 120
136 uart2_ipg 121
137 uart3_ipg 122
138 uart4_ipg 123
139 uart5_ipg 124
140 reserved 125
141 wdt_ipg 126
142
143Examples:
144
145clks: ccm@53f80000 {
146 compatible = "fsl,imx25-ccm";
147 reg = <0x53f80000 0x4000>;
148 interrupts = <31>;
149 clock-output-names = ...
150 "uart_ipg",
151 "uart_serial",
152 ...;
153};
154
155uart1: serial@43f90000 {
156 compatible = "fsl,imx25-uart", "fsl,imx21-uart";
157 reg = <0x43f90000 0x4000>;
158 interrupts = <45>;
159 clocks = <&clks 79>, <&clks 50>;
160 clock-names = "ipg", "per";
161 status = "disabled";
162};
diff --git a/Documentation/devicetree/bindings/clock/imx28-clock.txt b/Documentation/devicetree/bindings/clock/imx28-clock.txt
index aa2af2866fe8..52a49a4a50b3 100644
--- a/Documentation/devicetree/bindings/clock/imx28-clock.txt
+++ b/Documentation/devicetree/bindings/clock/imx28-clock.txt
@@ -73,8 +73,8 @@ clocks and IDs.
73 can1 59 73 can1 59
74 usb0 60 74 usb0 60
75 usb1 61 75 usb1 61
76 usb0_pwr 62 76 usb0_phy 62
77 usb1_pwr 63 77 usb1_phy 63
78 enet_out 64 78 enet_out 64
79 79
80Examples: 80Examples:
diff --git a/Documentation/devicetree/bindings/clock/imx5-clock.txt b/Documentation/devicetree/bindings/clock/imx5-clock.txt
new file mode 100644
index 000000000000..04ad47876be0
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/imx5-clock.txt
@@ -0,0 +1,191 @@
1* Clock bindings for Freescale i.MX5
2
3Required properties:
4- compatible: Should be "fsl,<soc>-ccm" , where <soc> can be imx51 or imx53
5- reg: Address and length of the register set
6- interrupts: Should contain CCM interrupt
7- #clock-cells: Should be <1>
8
9The clock consumer should specify the desired clock by having the clock
10ID in its "clocks" phandle cell. The following is a full list of i.MX5
11clocks and IDs.
12
13 Clock ID
14 ---------------------------
15 dummy 0
16 ckil 1
17 osc 2
18 ckih1 3
19 ckih2 4
20 ahb 5
21 ipg 6
22 axi_a 7
23 axi_b 8
24 uart_pred 9
25 uart_root 10
26 esdhc_a_pred 11
27 esdhc_b_pred 12
28 esdhc_c_s 13
29 esdhc_d_s 14
30 emi_sel 15
31 emi_slow_podf 16
32 nfc_podf 17
33 ecspi_pred 18
34 ecspi_podf 19
35 usboh3_pred 20
36 usboh3_podf 21
37 usb_phy_pred 22
38 usb_phy_podf 23
39 cpu_podf 24
40 di_pred 25
41 tve_di 26
42 tve_s 27
43 uart1_ipg_gate 28
44 uart1_per_gate 29
45 uart2_ipg_gate 30
46 uart2_per_gate 31
47 uart3_ipg_gate 32
48 uart3_per_gate 33
49 i2c1_gate 34
50 i2c2_gate 35
51 gpt_ipg_gate 36
52 pwm1_ipg_gate 37
53 pwm1_hf_gate 38
54 pwm2_ipg_gate 39
55 pwm2_hf_gate 40
56 gpt_hf_gate 41
57 fec_gate 42
58 usboh3_per_gate 43
59 esdhc1_ipg_gate 44
60 esdhc2_ipg_gate 45
61 esdhc3_ipg_gate 46
62 esdhc4_ipg_gate 47
63 ssi1_ipg_gate 48
64 ssi2_ipg_gate 49
65 ssi3_ipg_gate 50
66 ecspi1_ipg_gate 51
67 ecspi1_per_gate 52
68 ecspi2_ipg_gate 53
69 ecspi2_per_gate 54
70 cspi_ipg_gate 55
71 sdma_gate 56
72 emi_slow_gate 57
73 ipu_s 58
74 ipu_gate 59
75 nfc_gate 60
76 ipu_di1_gate 61
77 vpu_s 62
78 vpu_gate 63
79 vpu_reference_gate 64
80 uart4_ipg_gate 65
81 uart4_per_gate 66
82 uart5_ipg_gate 67
83 uart5_per_gate 68
84 tve_gate 69
85 tve_pred 70
86 esdhc1_per_gate 71
87 esdhc2_per_gate 72
88 esdhc3_per_gate 73
89 esdhc4_per_gate 74
90 usb_phy_gate 75
91 hsi2c_gate 76
92 mipi_hsc1_gate 77
93 mipi_hsc2_gate 78
94 mipi_esc_gate 79
95 mipi_hsp_gate 80
96 ldb_di1_div_3_5 81
97 ldb_di1_div 82
98 ldb_di0_div_3_5 83
99 ldb_di0_div 84
100 ldb_di1_gate 85
101 can2_serial_gate 86
102 can2_ipg_gate 87
103 i2c3_gate 88
104 lp_apm 89
105 periph_apm 90
106 main_bus 91
107 ahb_max 92
108 aips_tz1 93
109 aips_tz2 94
110 tmax1 95
111 tmax2 96
112 tmax3 97
113 spba 98
114 uart_sel 99
115 esdhc_a_sel 100
116 esdhc_b_sel 101
117 esdhc_a_podf 102
118 esdhc_b_podf 103
119 ecspi_sel 104
120 usboh3_sel 105
121 usb_phy_sel 106
122 iim_gate 107
123 usboh3_gate 108
124 emi_fast_gate 109
125 ipu_di0_gate 110
126 gpc_dvfs 111
127 pll1_sw 112
128 pll2_sw 113
129 pll3_sw 114
130 ipu_di0_sel 115
131 ipu_di1_sel 116
132 tve_ext_sel 117
133 mx51_mipi 118
134 pll4_sw 119
135 ldb_di1_sel 120
136 di_pll4_podf 121
137 ldb_di0_sel 122
138 ldb_di0_gate 123
139 usb_phy1_gate 124
140 usb_phy2_gate 125
141 per_lp_apm 126
142 per_pred1 127
143 per_pred2 128
144 per_podf 129
145 per_root 130
146 ssi_apm 131
147 ssi1_root_sel 132
148 ssi2_root_sel 133
149 ssi3_root_sel 134
150 ssi_ext1_sel 135
151 ssi_ext2_sel 136
152 ssi_ext1_com_sel 137
153 ssi_ext2_com_sel 138
154 ssi1_root_pred 139
155 ssi1_root_podf 140
156 ssi2_root_pred 141
157 ssi2_root_podf 142
158 ssi_ext1_pred 143
159 ssi_ext1_podf 144
160 ssi_ext2_pred 145
161 ssi_ext2_podf 146
162 ssi1_root_gate 147
163 ssi2_root_gate 148
164 ssi3_root_gate 149
165 ssi_ext1_gate 150
166 ssi_ext2_gate 151
167 epit1_ipg_gate 152
168 epit1_hf_gate 153
169 epit2_ipg_gate 154
170 epit2_hf_gate 155
171 can_sel 156
172 can1_serial_gate 157
173 can1_ipg_gate 158
174
175Examples (for mx53):
176
177clks: ccm@53fd4000{
178 compatible = "fsl,imx53-ccm";
179 reg = <0x53fd4000 0x4000>;
180 interrupts = <0 71 0x04 0 72 0x04>;
181 #clock-cells = <1>;
182};
183
184can1: can@53fc8000 {
185 compatible = "fsl,imx53-flexcan", "fsl,p1010-flexcan";
186 reg = <0x53fc8000 0x4000>;
187 interrupts = <82>;
188 clocks = <&clks 158>, <&clks 157>;
189 clock-names = "ipg", "per";
190 status = "disabled";
191};
diff --git a/Documentation/devicetree/bindings/clock/imx6q-clock.txt b/Documentation/devicetree/bindings/clock/imx6q-clock.txt
index 492bd991d52a..d77b4e68dc42 100644
--- a/Documentation/devicetree/bindings/clock/imx6q-clock.txt
+++ b/Documentation/devicetree/bindings/clock/imx6q-clock.txt
@@ -187,9 +187,9 @@ clocks and IDs.
187 pll3_usb_otg 172 187 pll3_usb_otg 172
188 pll4_audio 173 188 pll4_audio 173
189 pll5_video 174 189 pll5_video 174
190 pll6_mlb 175 190 pll8_mlb 175
191 pll7_usb_host 176 191 pll7_usb_host 176
192 pll8_enet 177 192 pll6_enet 177
193 ssi1_ipg 178 193 ssi1_ipg 178
194 ssi2_ipg 179 194 ssi2_ipg 179
195 ssi3_ipg 180 195 ssi3_ipg 180
@@ -198,6 +198,11 @@ clocks and IDs.
198 usbphy2 183 198 usbphy2 183
199 ldb_di0_div_3_5 184 199 ldb_di0_div_3_5 184
200 ldb_di1_div_3_5 185 200 ldb_di1_div_3_5 185
201 sata_ref 186
202 sata_ref_100m 187
203 pcie_ref 188
204 pcie_ref_125m 189
205 enet_ref 190
201 206
202Examples: 207Examples:
203 208
diff --git a/Documentation/devicetree/bindings/clock/mvebu-core-clock.txt b/Documentation/devicetree/bindings/clock/mvebu-core-clock.txt
new file mode 100644
index 000000000000..1e662948661e
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/mvebu-core-clock.txt
@@ -0,0 +1,47 @@
1* Core Clock bindings for Marvell MVEBU SoCs
2
3Marvell MVEBU SoCs usually allow to determine core clock frequencies by
4reading the Sample-At-Reset (SAR) register. The core clock consumer should
5specify the desired clock by having the clock ID in its "clocks" phandle cell.
6
7The following is a list of provided IDs and clock names on Armada 370/XP:
8 0 = tclk (Internal Bus clock)
9 1 = cpuclk (CPU clock)
10 2 = nbclk (L2 Cache clock)
11 3 = hclk (DRAM control clock)
12 4 = dramclk (DDR clock)
13
14The following is a list of provided IDs and clock names on Kirkwood and Dove:
15 0 = tclk (Internal Bus clock)
16 1 = cpuclk (CPU0 clock)
17 2 = l2clk (L2 Cache clock derived from CPU0 clock)
18 3 = ddrclk (DDR controller clock derived from CPU0 clock)
19
20Required properties:
21- compatible : shall be one of the following:
22 "marvell,armada-370-core-clock" - For Armada 370 SoC core clocks
23 "marvell,armada-xp-core-clock" - For Armada XP SoC core clocks
24 "marvell,dove-core-clock" - for Dove SoC core clocks
25 "marvell,kirkwood-core-clock" - for Kirkwood SoC (except mv88f6180)
26 "marvell,mv88f6180-core-clock" - for Kirkwood MV88f6180 SoC
27- reg : shall be the register address of the Sample-At-Reset (SAR) register
28- #clock-cells : from common clock binding; shall be set to 1
29
30Optional properties:
31- clock-output-names : from common clock binding; allows overwrite default clock
32 output names ("tclk", "cpuclk", "l2clk", "ddrclk")
33
34Example:
35
36core_clk: core-clocks@d0214 {
37 compatible = "marvell,dove-core-clock";
38 reg = <0xd0214 0x4>;
39 #clock-cells = <1>;
40};
41
42spi0: spi@10600 {
43 compatible = "marvell,orion-spi";
44 /* ... */
45 /* get tclk from core clock provider */
46 clocks = <&core_clk 0>;
47};
diff --git a/Documentation/devicetree/bindings/clock/mvebu-cpu-clock.txt b/Documentation/devicetree/bindings/clock/mvebu-cpu-clock.txt
new file mode 100644
index 000000000000..feb830130714
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/mvebu-cpu-clock.txt
@@ -0,0 +1,21 @@
1Device Tree Clock bindings for cpu clock of Marvell EBU platforms
2
3Required properties:
4- compatible : shall be one of the following:
5 "marvell,armada-xp-cpu-clock" - cpu clocks for Armada XP
6- reg : Address and length of the clock complex register set
7- #clock-cells : should be set to 1.
8- clocks : shall be the input parent clock phandle for the clock.
9
10cpuclk: clock-complex@d0018700 {
11 #clock-cells = <1>;
12 compatible = "marvell,armada-xp-cpu-clock";
13 reg = <0xd0018700 0xA0>;
14 clocks = <&coreclk 1>;
15}
16
17cpu@0 {
18 compatible = "marvell,sheeva-v7";
19 reg = <0>;
20 clocks = <&cpuclk 0>;
21};
diff --git a/Documentation/devicetree/bindings/clock/mvebu-gated-clock.txt b/Documentation/devicetree/bindings/clock/mvebu-gated-clock.txt
new file mode 100644
index 000000000000..7337005ef5e1
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/mvebu-gated-clock.txt
@@ -0,0 +1,119 @@
1* Gated Clock bindings for Marvell Orion SoCs
2
3Marvell Dove and Kirkwood allow some peripheral clocks to be gated to save
4some power. The clock consumer should specify the desired clock by having
5the clock ID in its "clocks" phandle cell. The clock ID is directly mapped to
6the corresponding clock gating control bit in HW to ease manual clock lookup
7in datasheet.
8
9The following is a list of provided IDs for Armada 370:
10ID Clock Peripheral
11-----------------------------------
120 Audio AC97 Cntrl
131 pex0_en PCIe 0 Clock out
142 pex1_en PCIe 1 Clock out
153 ge1 Gigabit Ethernet 1
164 ge0 Gigabit Ethernet 0
175 pex0 PCIe Cntrl 0
189 pex1 PCIe Cntrl 1
1915 sata0 SATA Host 0
2017 sdio SDHCI Host
2125 tdm Time Division Mplx
2228 ddr DDR Cntrl
2330 sata1 SATA Host 0
24
25The following is a list of provided IDs for Armada XP:
26ID Clock Peripheral
27-----------------------------------
280 audio Audio Cntrl
291 ge3 Gigabit Ethernet 3
302 ge2 Gigabit Ethernet 2
313 ge1 Gigabit Ethernet 1
324 ge0 Gigabit Ethernet 0
335 pex0 PCIe Cntrl 0
346 pex1 PCIe Cntrl 1
357 pex2 PCIe Cntrl 2
368 pex3 PCIe Cntrl 3
3713 bp
3814 sata0lnk
3915 sata0 SATA Host 0
4016 lcd LCD Cntrl
4117 sdio SDHCI Host
4218 usb0 USB Host 0
4319 usb1 USB Host 1
4420 usb2 USB Host 2
4522 xor0 XOR DMA 0
4623 crypto CESA engine
4725 tdm Time Division Mplx
4828 xor1 XOR DMA 1
4929 sata1lnk
5030 sata1 SATA Host 0
51
52The following is a list of provided IDs for Dove:
53ID Clock Peripheral
54-----------------------------------
550 usb0 USB Host 0
561 usb1 USB Host 1
572 ge Gigabit Ethernet
583 sata SATA Host
594 pex0 PCIe Cntrl 0
605 pex1 PCIe Cntrl 1
618 sdio0 SDHCI Host 0
629 sdio1 SDHCI Host 1
6310 nand NAND Cntrl
6411 camera Camera Cntrl
6512 i2s0 I2S Cntrl 0
6613 i2s1 I2S Cntrl 1
6715 crypto CESA engine
6821 ac97 AC97 Cntrl
6922 pdma Peripheral DMA
7023 xor0 XOR DMA 0
7124 xor1 XOR DMA 1
7230 gephy Gigabit Ethernel PHY
73Note: gephy(30) is implemented as a parent clock of ge(2)
74
75The following is a list of provided IDs for Kirkwood:
76ID Clock Peripheral
77-----------------------------------
780 ge0 Gigabit Ethernet 0
792 pex0 PCIe Cntrl 0
803 usb0 USB Host 0
814 sdio SDIO Cntrl
825 tsu Transp. Stream Unit
836 dunit SDRAM Cntrl
847 runit Runit
858 xor0 XOR DMA 0
869 audio I2S Cntrl 0
8714 sata0 SATA Host 0
8815 sata1 SATA Host 1
8916 xor1 XOR DMA 1
9017 crypto CESA engine
9118 pex1 PCIe Cntrl 1
9219 ge1 Gigabit Ethernet 0
9320 tdm Time Division Mplx
94
95Required properties:
96- compatible : shall be one of the following:
97 "marvell,dove-gating-clock" - for Dove SoC clock gating
98 "marvell,kirkwood-gating-clock" - for Kirkwood SoC clock gating
99- reg : shall be the register address of the Clock Gating Control register
100- #clock-cells : from common clock binding; shall be set to 1
101
102Optional properties:
103- clocks : default parent clock phandle (e.g. tclk)
104
105Example:
106
107gate_clk: clock-gating-control@d0038 {
108 compatible = "marvell,dove-gating-clock";
109 reg = <0xd0038 0x4>;
110 /* default parent clock is tclk */
111 clocks = <&core_clk 0>;
112 #clock-cells = <1>;
113};
114
115sdio0: sdio@92000 {
116 compatible = "marvell,dove-sdhci";
117 /* get clk gate bit 8 (sdio0) */
118 clocks = <&gate_clk 8>;
119};
diff --git a/Documentation/devicetree/bindings/clock/zynq-7000.txt b/Documentation/devicetree/bindings/clock/zynq-7000.txt
new file mode 100644
index 000000000000..23ae1db1bc13
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/zynq-7000.txt
@@ -0,0 +1,55 @@
1Device Tree Clock bindings for the Zynq 7000 EPP
2
3The Zynq EPP has several different clk providers, each with there own bindings.
4The purpose of this document is to document their usage.
5
6See clock_bindings.txt for more information on the generic clock bindings.
7See Chapter 25 of Zynq TRM for more information about Zynq clocks.
8
9== PLLs ==
10
11Used to describe the ARM_PLL, DDR_PLL, and IO_PLL.
12
13Required properties:
14- #clock-cells : shall be 0 (only one clock is output from this node)
15- compatible : "xlnx,zynq-pll"
16- reg : pair of u32 values, which are the address offsets within the SLCR
17 of the relevant PLL_CTRL register and PLL_CFG register respectively
18- clocks : phandle for parent clock. should be the phandle for ps_clk
19
20Optional properties:
21- clock-output-names : name of the output clock
22
23Example:
24 armpll: armpll {
25 #clock-cells = <0>;
26 compatible = "xlnx,zynq-pll";
27 clocks = <&ps_clk>;
28 reg = <0x100 0x110>;
29 clock-output-names = "armpll";
30 };
31
32== Peripheral clocks ==
33
34Describes clock node for the SDIO, SMC, SPI, QSPI, and UART clocks.
35
36Required properties:
37- #clock-cells : shall be 1
38- compatible : "xlnx,zynq-periph-clock"
39- reg : a single u32 value, describing the offset within the SLCR where
40 the CLK_CTRL register is found for this peripheral
41- clocks : phandle for parent clocks. should hold phandles for
42 the IO_PLL, ARM_PLL, and DDR_PLL in order
43- clock-output-names : names of the output clock(s). For peripherals that have
44 two output clocks (for example, the UART), two clocks
45 should be listed.
46
47Example:
48 uart_clk: uart_clk {
49 #clock-cells = <1>;
50 compatible = "xlnx,zynq-periph-clock";
51 clocks = <&iopll &armpll &ddrpll>;
52 reg = <0x154>;
53 clock-output-names = "uart0_ref_clk",
54 "uart1_ref_clk";
55 };
diff --git a/Documentation/devicetree/bindings/cpufreq/cpufreq-spear.txt b/Documentation/devicetree/bindings/cpufreq/cpufreq-spear.txt
new file mode 100644
index 000000000000..f3d44984d91c
--- /dev/null
+++ b/Documentation/devicetree/bindings/cpufreq/cpufreq-spear.txt
@@ -0,0 +1,42 @@
1SPEAr cpufreq driver
2-------------------
3
4SPEAr SoC cpufreq driver for CPU frequency scaling.
5It supports both uniprocessor (UP) and symmetric multiprocessor (SMP) systems
6which share clock across all CPUs.
7
8Required properties:
9- cpufreq_tbl: Table of frequencies CPU could be transitioned into, in the
10 increasing order.
11
12Optional properties:
13- clock-latency: Specify the possible maximum transition latency for clock, in
14 unit of nanoseconds.
15
16Both required and optional properties listed above must be defined under node
17/cpus/cpu@0.
18
19Examples:
20--------
21cpus {
22
23 <...>
24
25 cpu@0 {
26 compatible = "arm,cortex-a9";
27 reg = <0>;
28
29 <...>
30
31 cpufreq_tbl = < 166000
32 200000
33 250000
34 300000
35 400000
36 500000
37 600000 >;
38 };
39
40 <...>
41
42};
diff --git a/Documentation/devicetree/bindings/crypto/fsl-sec4.txt b/Documentation/devicetree/bindings/crypto/fsl-sec4.txt
index bd7ce120bc13..fc9ce6f1688c 100644
--- a/Documentation/devicetree/bindings/crypto/fsl-sec4.txt
+++ b/Documentation/devicetree/bindings/crypto/fsl-sec4.txt
@@ -54,7 +54,8 @@ PROPERTIES
54 - compatible 54 - compatible
55 Usage: required 55 Usage: required
56 Value type: <string> 56 Value type: <string>
57 Definition: Must include "fsl,sec-v4.0" 57 Definition: Must include "fsl,sec-v4.0". Also includes SEC
58 ERA versions (optional) with which the device is compatible.
58 59
59 - #address-cells 60 - #address-cells
60 Usage: required 61 Usage: required
@@ -106,7 +107,7 @@ PROPERTIES
106 107
107EXAMPLE 108EXAMPLE
108 crypto@300000 { 109 crypto@300000 {
109 compatible = "fsl,sec-v4.0"; 110 compatible = "fsl,sec-v4.0", "fsl,sec-era-v2.0";
110 #address-cells = <1>; 111 #address-cells = <1>;
111 #size-cells = <1>; 112 #size-cells = <1>;
112 reg = <0x300000 0x10000>; 113 reg = <0x300000 0x10000>;
diff --git a/Documentation/devicetree/bindings/dma/mv-xor.txt b/Documentation/devicetree/bindings/dma/mv-xor.txt
new file mode 100644
index 000000000000..7c6cb7fcecd2
--- /dev/null
+++ b/Documentation/devicetree/bindings/dma/mv-xor.txt
@@ -0,0 +1,40 @@
1* Marvell XOR engines
2
3Required properties:
4- compatible: Should be "marvell,orion-xor"
5- reg: Should contain registers location and length (two sets)
6 the first set is the low registers, the second set the high
7 registers for the XOR engine.
8- clocks: pointer to the reference clock
9
10The DT node must also contains sub-nodes for each XOR channel that the
11XOR engine has. Those sub-nodes have the following required
12properties:
13- interrupts: interrupt of the XOR channel
14
15And the following optional properties:
16- dmacap,memcpy to indicate that the XOR channel is capable of memcpy operations
17- dmacap,memset to indicate that the XOR channel is capable of memset operations
18- dmacap,xor to indicate that the XOR channel is capable of xor operations
19
20Example:
21
22xor@d0060900 {
23 compatible = "marvell,orion-xor";
24 reg = <0xd0060900 0x100
25 0xd0060b00 0x100>;
26 clocks = <&coreclk 0>;
27 status = "okay";
28
29 xor00 {
30 interrupts = <51>;
31 dmacap,memcpy;
32 dmacap,xor;
33 };
34 xor01 {
35 interrupts = <52>;
36 dmacap,memcpy;
37 dmacap,xor;
38 dmacap,memset;
39 };
40};
diff --git a/Documentation/devicetree/bindings/drm/exynos/hdmi.txt b/Documentation/devicetree/bindings/drm/exynos/hdmi.txt
new file mode 100644
index 000000000000..589edee37394
--- /dev/null
+++ b/Documentation/devicetree/bindings/drm/exynos/hdmi.txt
@@ -0,0 +1,22 @@
1Device-Tree bindings for drm hdmi driver
2
3Required properties:
4- compatible: value should be "samsung,exynos5-hdmi".
5- reg: physical base address of the hdmi and length of memory mapped
6 region.
7- interrupts: interrupt number to the cpu.
8- hpd-gpio: following information about the hotplug gpio pin.
9 a) phandle of the gpio controller node.
10 b) pin number within the gpio controller.
11 c) pin function mode.
12 d) optional flags and pull up/down.
13 e) drive strength.
14
15Example:
16
17 hdmi {
18 compatible = "samsung,exynos5-hdmi";
19 reg = <0x14530000 0x100000>;
20 interrupts = <0 95 0>;
21 hpd-gpio = <&gpx3 7 0xf 1 3>;
22 };
diff --git a/Documentation/devicetree/bindings/drm/exynos/hdmiddc.txt b/Documentation/devicetree/bindings/drm/exynos/hdmiddc.txt
new file mode 100644
index 000000000000..fa166d945809
--- /dev/null
+++ b/Documentation/devicetree/bindings/drm/exynos/hdmiddc.txt
@@ -0,0 +1,12 @@
1Device-Tree bindings for hdmiddc driver
2
3Required properties:
4- compatible: value should be "samsung,exynos5-hdmiddc".
5- reg: I2C address of the hdmiddc device.
6
7Example:
8
9 hdmiddc {
10 compatible = "samsung,exynos5-hdmiddc";
11 reg = <0x50>;
12 };
diff --git a/Documentation/devicetree/bindings/drm/exynos/hdmiphy.txt b/Documentation/devicetree/bindings/drm/exynos/hdmiphy.txt
new file mode 100644
index 000000000000..858f4f9b902f
--- /dev/null
+++ b/Documentation/devicetree/bindings/drm/exynos/hdmiphy.txt
@@ -0,0 +1,12 @@
1Device-Tree bindings for hdmiphy driver
2
3Required properties:
4- compatible: value should be "samsung,exynos5-hdmiphy".
5- reg: I2C address of the hdmiphy device.
6
7Example:
8
9 hdmiphy {
10 compatible = "samsung,exynos5-hdmiphy";
11 reg = <0x38>;
12 };
diff --git a/Documentation/devicetree/bindings/drm/exynos/mixer.txt b/Documentation/devicetree/bindings/drm/exynos/mixer.txt
new file mode 100644
index 000000000000..9b2ea0343566
--- /dev/null
+++ b/Documentation/devicetree/bindings/drm/exynos/mixer.txt
@@ -0,0 +1,15 @@
1Device-Tree bindings for mixer driver
2
3Required properties:
4- compatible: value should be "samsung,exynos5-mixer".
5- reg: physical base address of the mixer and length of memory mapped
6 region.
7- interrupts: interrupt number to the cpu.
8
9Example:
10
11 mixer {
12 compatible = "samsung,exynos5-mixer";
13 reg = <0x14450000 0x10000>;
14 interrupts = <0 94 0>;
15 };
diff --git a/Documentation/devicetree/bindings/gpio/gpio-poweroff.txt b/Documentation/devicetree/bindings/gpio/gpio-poweroff.txt
new file mode 100644
index 000000000000..558cdf3c9abc
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/gpio-poweroff.txt
@@ -0,0 +1,22 @@
1GPIO line that should be set high/low to power off a device
2
3Required properties:
4- compatible : should be "gpio-poweroff".
5- gpios : The GPIO to set high/low, see "gpios property" in
6 Documentation/devicetree/bindings/gpio/gpio.txt. If the pin should be
7 low to power down the board set it to "Active Low", otherwise set
8 gpio to "Active High".
9
10Optional properties:
11- input : Initially configure the GPIO line as an input. Only reconfigure
12 it to an output when the pm_power_off function is called. If this optional
13 property is not specified, the GPIO is initialized as an output in its
14 inactive state.
15
16
17Examples:
18
19gpio-poweroff {
20 compatible = "gpio-poweroff";
21 gpios = <&gpio 4 0>; /* GPIO 4 Active Low */
22};
diff --git a/Documentation/devicetree/bindings/gpio/gpio-stmpe.txt b/Documentation/devicetree/bindings/gpio/gpio-stmpe.txt
new file mode 100644
index 000000000000..a0e4cf885213
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/gpio-stmpe.txt
@@ -0,0 +1,18 @@
1STMPE gpio
2----------
3
4Required properties:
5 - compatible: "st,stmpe-gpio"
6
7Optional properties:
8 - st,norequest-mask: bitmask specifying which GPIOs should _not_ be requestable
9 due to different usage (e.g. touch, keypad)
10
11Node name must be stmpe_gpio and should be child node of stmpe node to which it
12belongs.
13
14Example:
15 stmpe_gpio {
16 compatible = "st,stmpe-gpio";
17 st,norequest-mask = <0x20>; //gpio 5 can't be used
18 };
diff --git a/Documentation/devicetree/bindings/gpio/gpio.txt b/Documentation/devicetree/bindings/gpio/gpio.txt
index 4e16ba4feab0..a33628759d36 100644
--- a/Documentation/devicetree/bindings/gpio/gpio.txt
+++ b/Documentation/devicetree/bindings/gpio/gpio.txt
@@ -75,4 +75,40 @@ Example of two SOC GPIO banks defined as gpio-controller nodes:
75 gpio-controller; 75 gpio-controller;
76 }; 76 };
77 77
782.1) gpio-controller and pinctrl subsystem
79------------------------------------------
78 80
81gpio-controller on a SOC might be tightly coupled with the pinctrl
82subsystem, in the sense that the pins can be used by other functions
83together with optional gpio feature.
84
85While the pin allocation is totally managed by the pin ctrl subsystem,
86gpio (under gpiolib) is still maintained by gpio drivers. It may happen
87that different pin ranges in a SoC is managed by different gpio drivers.
88
89This makes it logical to let gpio drivers announce their pin ranges to
90the pin ctrl subsystem and call 'pinctrl_request_gpio' in order to
91request the corresponding pin before any gpio usage.
92
93For this, the gpio controller can use a pinctrl phandle and pins to
94announce the pinrange to the pin ctrl subsystem. For example,
95
96 qe_pio_e: gpio-controller@1460 {
97 #gpio-cells = <2>;
98 compatible = "fsl,qe-pario-bank-e", "fsl,qe-pario-bank";
99 reg = <0x1460 0x18>;
100 gpio-controller;
101 gpio-ranges = <&pinctrl1 20 10>, <&pinctrl2 50 20>;
102
103 }
104
105where,
106 &pinctrl1 and &pinctrl2 is the phandle to the pinctrl DT node.
107
108 Next values specify the base pin and number of pins for the range
109 handled by 'qe_pio_e' gpio. In the given example from base pin 20 to
110 pin 29 under pinctrl1 and pin 50 to pin 69 under pinctrl2 is handled
111 by this gpio controller.
112
113The pinctrl node must have "#gpio-range-cells" property to show number of
114arguments to pass with phandle from gpio controllers node.
diff --git a/Documentation/devicetree/bindings/gpio/gpio_atmel.txt b/Documentation/devicetree/bindings/gpio/gpio_atmel.txt
index 66efc804806a..85f8c0d084fa 100644
--- a/Documentation/devicetree/bindings/gpio/gpio_atmel.txt
+++ b/Documentation/devicetree/bindings/gpio/gpio_atmel.txt
@@ -9,6 +9,10 @@ Required properties:
9 unused). 9 unused).
10- gpio-controller: Marks the device node as a GPIO controller. 10- gpio-controller: Marks the device node as a GPIO controller.
11 11
12optional properties:
13- #gpio-lines: Number of gpio if absent 32.
14
15
12Example: 16Example:
13 pioA: gpio@fffff200 { 17 pioA: gpio@fffff200 {
14 compatible = "atmel,at91rm9200-gpio"; 18 compatible = "atmel,at91rm9200-gpio";
@@ -16,5 +20,6 @@ Example:
16 interrupts = <2 4>; 20 interrupts = <2 4>;
17 #gpio-cells = <2>; 21 #gpio-cells = <2>;
18 gpio-controller; 22 gpio-controller;
23 #gpio-lines = <19>;
19 }; 24 };
20 25
diff --git a/Documentation/devicetree/bindings/gpio/leds-ns2.txt b/Documentation/devicetree/bindings/gpio/leds-ns2.txt
new file mode 100644
index 000000000000..aef3aca34d2d
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/leds-ns2.txt
@@ -0,0 +1,26 @@
1Binding for dual-GPIO LED found on Network Space v2 (and parents).
2
3Required properties:
4- compatible: "lacie,ns2-leds".
5
6Each LED is represented as a sub-node of the ns2-leds device.
7
8Required sub-node properties:
9- cmd-gpio: Command LED GPIO. See OF device-tree GPIO specification.
10- slow-gpio: Slow LED GPIO. See OF device-tree GPIO specification.
11
12Optional sub-node properties:
13- label: Name for this LED. If omitted, the label is taken from the node name.
14- linux,default-trigger: Trigger assigned to the LED.
15
16Example:
17
18ns2-leds {
19 compatible = "lacie,ns2-leds";
20
21 blue-sata {
22 label = "ns2:blue:sata";
23 slow-gpio = <&gpio0 29 0>;
24 cmd-gpio = <&gpio0 30 0>;
25 };
26};
diff --git a/Documentation/devicetree/bindings/gpio/spear_spics.txt b/Documentation/devicetree/bindings/gpio/spear_spics.txt
new file mode 100644
index 000000000000..96c37eb15075
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/spear_spics.txt
@@ -0,0 +1,50 @@
1=== ST Microelectronics SPEAr SPI CS Driver ===
2
3SPEAr platform provides a provision to control chipselects of ARM PL022 Prime
4Cell spi controller through its system registers, which otherwise remains under
5PL022 control. If chipselect remain under PL022 control then they would be
6released as soon as transfer is over and TxFIFO becomes empty. This is not
7desired by some of the device protocols above spi which expect (multiple)
8transfers without releasing their chipselects.
9
10Chipselects can be controlled by software by turning them as GPIOs. SPEAr
11provides another interface through system registers through which software can
12directly control each PL022 chipselect. Hence, it is natural for SPEAr to export
13the control of this interface as gpio.
14
15Required properties:
16
17 * compatible: should be defined as "st,spear-spics-gpio"
18 * reg: mentioning address range of spics controller
19 * st-spics,peripcfg-reg: peripheral configuration register offset
20 * st-spics,sw-enable-bit: bit offset to enable sw control
21 * st-spics,cs-value-bit: bit offset to drive chipselect low or high
22 * st-spics,cs-enable-mask: chip select number bit mask
23 * st-spics,cs-enable-shift: chip select number program offset
24 * gpio-controller: Marks the device node as gpio controller
25 * #gpio-cells: should be 1 and will mention chip select number
26
27All the above bit offsets are within peripcfg register.
28
29Example:
30-------
31spics: spics@e0700000{
32 compatible = "st,spear-spics-gpio";
33 reg = <0xe0700000 0x1000>;
34 st-spics,peripcfg-reg = <0x3b0>;
35 st-spics,sw-enable-bit = <12>;
36 st-spics,cs-value-bit = <11>;
37 st-spics,cs-enable-mask = <3>;
38 st-spics,cs-enable-shift = <8>;
39 gpio-controller;
40 #gpio-cells = <2>;
41};
42
43
44spi0: spi@e0100000 {
45 status = "okay";
46 num-cs = <3>;
47 cs-gpios = <&gpio1 7 0>, <&spics 0>,
48 <&spics 1>;
49 ...
50}
diff --git a/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt b/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt
new file mode 100644
index 000000000000..b4fa934ae3a2
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt
@@ -0,0 +1,191 @@
1NVIDIA Tegra host1x
2
3Required properties:
4- compatible: "nvidia,tegra<chip>-host1x"
5- reg: Physical base address and length of the controller's registers.
6- interrupts: The interrupt outputs from the controller.
7- #address-cells: The number of cells used to represent physical base addresses
8 in the host1x address space. Should be 1.
9- #size-cells: The number of cells used to represent the size of an address
10 range in the host1x address space. Should be 1.
11- ranges: The mapping of the host1x address space to the CPU address space.
12
13The host1x top-level node defines a number of children, each representing one
14of the following host1x client modules:
15
16- mpe: video encoder
17
18 Required properties:
19 - compatible: "nvidia,tegra<chip>-mpe"
20 - reg: Physical base address and length of the controller's registers.
21 - interrupts: The interrupt outputs from the controller.
22
23- vi: video input
24
25 Required properties:
26 - compatible: "nvidia,tegra<chip>-vi"
27 - reg: Physical base address and length of the controller's registers.
28 - interrupts: The interrupt outputs from the controller.
29
30- epp: encoder pre-processor
31
32 Required properties:
33 - compatible: "nvidia,tegra<chip>-epp"
34 - reg: Physical base address and length of the controller's registers.
35 - interrupts: The interrupt outputs from the controller.
36
37- isp: image signal processor
38
39 Required properties:
40 - compatible: "nvidia,tegra<chip>-isp"
41 - reg: Physical base address and length of the controller's registers.
42 - interrupts: The interrupt outputs from the controller.
43
44- gr2d: 2D graphics engine
45
46 Required properties:
47 - compatible: "nvidia,tegra<chip>-gr2d"
48 - reg: Physical base address and length of the controller's registers.
49 - interrupts: The interrupt outputs from the controller.
50
51- gr3d: 3D graphics engine
52
53 Required properties:
54 - compatible: "nvidia,tegra<chip>-gr3d"
55 - reg: Physical base address and length of the controller's registers.
56
57- dc: display controller
58
59 Required properties:
60 - compatible: "nvidia,tegra<chip>-dc"
61 - reg: Physical base address and length of the controller's registers.
62 - interrupts: The interrupt outputs from the controller.
63
64 Each display controller node has a child node, named "rgb", that represents
65 the RGB output associated with the controller. It can take the following
66 optional properties:
67 - nvidia,ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing
68 - nvidia,hpd-gpio: specifies a GPIO used for hotplug detection
69 - nvidia,edid: supplies a binary EDID blob
70
71- hdmi: High Definition Multimedia Interface
72
73 Required properties:
74 - compatible: "nvidia,tegra<chip>-hdmi"
75 - reg: Physical base address and length of the controller's registers.
76 - interrupts: The interrupt outputs from the controller.
77 - vdd-supply: regulator for supply voltage
78 - pll-supply: regulator for PLL
79
80 Optional properties:
81 - nvidia,ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing
82 - nvidia,hpd-gpio: specifies a GPIO used for hotplug detection
83 - nvidia,edid: supplies a binary EDID blob
84
85- tvo: TV encoder output
86
87 Required properties:
88 - compatible: "nvidia,tegra<chip>-tvo"
89 - reg: Physical base address and length of the controller's registers.
90 - interrupts: The interrupt outputs from the controller.
91
92- dsi: display serial interface
93
94 Required properties:
95 - compatible: "nvidia,tegra<chip>-dsi"
96 - reg: Physical base address and length of the controller's registers.
97
98Example:
99
100/ {
101 ...
102
103 host1x {
104 compatible = "nvidia,tegra20-host1x", "simple-bus";
105 reg = <0x50000000 0x00024000>;
106 interrupts = <0 65 0x04 /* mpcore syncpt */
107 0 67 0x04>; /* mpcore general */
108
109 #address-cells = <1>;
110 #size-cells = <1>;
111
112 ranges = <0x54000000 0x54000000 0x04000000>;
113
114 mpe {
115 compatible = "nvidia,tegra20-mpe";
116 reg = <0x54040000 0x00040000>;
117 interrupts = <0 68 0x04>;
118 };
119
120 vi {
121 compatible = "nvidia,tegra20-vi";
122 reg = <0x54080000 0x00040000>;
123 interrupts = <0 69 0x04>;
124 };
125
126 epp {
127 compatible = "nvidia,tegra20-epp";
128 reg = <0x540c0000 0x00040000>;
129 interrupts = <0 70 0x04>;
130 };
131
132 isp {
133 compatible = "nvidia,tegra20-isp";
134 reg = <0x54100000 0x00040000>;
135 interrupts = <0 71 0x04>;
136 };
137
138 gr2d {
139 compatible = "nvidia,tegra20-gr2d";
140 reg = <0x54140000 0x00040000>;
141 interrupts = <0 72 0x04>;
142 };
143
144 gr3d {
145 compatible = "nvidia,tegra20-gr3d";
146 reg = <0x54180000 0x00040000>;
147 };
148
149 dc@54200000 {
150 compatible = "nvidia,tegra20-dc";
151 reg = <0x54200000 0x00040000>;
152 interrupts = <0 73 0x04>;
153
154 rgb {
155 status = "disabled";
156 };
157 };
158
159 dc@54240000 {
160 compatible = "nvidia,tegra20-dc";
161 reg = <0x54240000 0x00040000>;
162 interrupts = <0 74 0x04>;
163
164 rgb {
165 status = "disabled";
166 };
167 };
168
169 hdmi {
170 compatible = "nvidia,tegra20-hdmi";
171 reg = <0x54280000 0x00040000>;
172 interrupts = <0 75 0x04>;
173 status = "disabled";
174 };
175
176 tvo {
177 compatible = "nvidia,tegra20-tvo";
178 reg = <0x542c0000 0x00040000>;
179 interrupts = <0 76 0x04>;
180 status = "disabled";
181 };
182
183 dsi {
184 compatible = "nvidia,tegra20-dsi";
185 reg = <0x54300000 0x00040000>;
186 status = "disabled";
187 };
188 };
189
190 ...
191};
diff --git a/Documentation/devicetree/bindings/hwmon/vexpress.txt b/Documentation/devicetree/bindings/hwmon/vexpress.txt
new file mode 100644
index 000000000000..9c27ed694bbb
--- /dev/null
+++ b/Documentation/devicetree/bindings/hwmon/vexpress.txt
@@ -0,0 +1,23 @@
1Versatile Express hwmon sensors
2-------------------------------
3
4Requires node properties:
5- "compatible" value : one of
6 "arm,vexpress-volt"
7 "arm,vexpress-amp"
8 "arm,vexpress-temp"
9 "arm,vexpress-power"
10 "arm,vexpress-energy"
11- "arm,vexpress-sysreg,func" when controlled via vexpress-sysreg
12 (see Documentation/devicetree/bindings/arm/vexpress-sysreg.txt
13 for more details)
14
15Optional node properties:
16- label : string describing the monitored value
17
18Example:
19 energy@0 {
20 compatible = "arm,vexpress-energy";
21 arm,vexpress-sysreg,func = <13 0>;
22 label = "A15 Jcore";
23 };
diff --git a/Documentation/devicetree/bindings/i2c/atmel-i2c.txt b/Documentation/devicetree/bindings/i2c/i2c-at91.txt
index b689a0d9441c..b689a0d9441c 100644
--- a/Documentation/devicetree/bindings/i2c/atmel-i2c.txt
+++ b/Documentation/devicetree/bindings/i2c/i2c-at91.txt
diff --git a/Documentation/devicetree/bindings/i2c/davinci.txt b/Documentation/devicetree/bindings/i2c/i2c-davinci.txt
index 2dc935b4113d..2dc935b4113d 100644
--- a/Documentation/devicetree/bindings/i2c/davinci.txt
+++ b/Documentation/devicetree/bindings/i2c/i2c-davinci.txt
diff --git a/Documentation/devicetree/bindings/i2c/gpio-i2c.txt b/Documentation/devicetree/bindings/i2c/i2c-gpio.txt
index 4f8ec947c6bd..4f8ec947c6bd 100644
--- a/Documentation/devicetree/bindings/i2c/gpio-i2c.txt
+++ b/Documentation/devicetree/bindings/i2c/i2c-gpio.txt
diff --git a/Documentation/devicetree/bindings/i2c/fsl-imx-i2c.txt b/Documentation/devicetree/bindings/i2c/i2c-imx.txt
index f3cf43b66f7e..3614242e7732 100644
--- a/Documentation/devicetree/bindings/i2c/fsl-imx-i2c.txt
+++ b/Documentation/devicetree/bindings/i2c/i2c-imx.txt
@@ -12,13 +12,13 @@ Optional properties:
12Examples: 12Examples:
13 13
14i2c@83fc4000 { /* I2C2 on i.MX51 */ 14i2c@83fc4000 { /* I2C2 on i.MX51 */
15 compatible = "fsl,imx51-i2c", "fsl,imx1-i2c"; 15 compatible = "fsl,imx51-i2c", "fsl,imx21-i2c";
16 reg = <0x83fc4000 0x4000>; 16 reg = <0x83fc4000 0x4000>;
17 interrupts = <63>; 17 interrupts = <63>;
18}; 18};
19 19
20i2c@70038000 { /* HS-I2C on i.MX51 */ 20i2c@70038000 { /* HS-I2C on i.MX51 */
21 compatible = "fsl,imx51-i2c", "fsl,imx1-i2c"; 21 compatible = "fsl,imx51-i2c", "fsl,imx21-i2c";
22 reg = <0x70038000 0x4000>; 22 reg = <0x70038000 0x4000>;
23 interrupts = <64>; 23 interrupts = <64>;
24 clock-frequency = <400000>; 24 clock-frequency = <400000>;
diff --git a/Documentation/devicetree/bindings/i2c/fsl-i2c.txt b/Documentation/devicetree/bindings/i2c/i2c-mpc.txt
index 1eacd6b20ed5..1eacd6b20ed5 100644
--- a/Documentation/devicetree/bindings/i2c/fsl-i2c.txt
+++ b/Documentation/devicetree/bindings/i2c/i2c-mpc.txt
diff --git a/Documentation/devicetree/bindings/i2c/mux.txt b/Documentation/devicetree/bindings/i2c/i2c-mux.txt
index af84cce5cd7b..af84cce5cd7b 100644
--- a/Documentation/devicetree/bindings/i2c/mux.txt
+++ b/Documentation/devicetree/bindings/i2c/i2c-mux.txt
diff --git a/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt b/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt
new file mode 100644
index 000000000000..f46d928aa73d
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt
@@ -0,0 +1,18 @@
1
2* Marvell MV64XXX I2C controller
3
4Required properties :
5
6 - reg : Offset and length of the register set for the device
7 - compatible : Should be "marvell,mv64xxx-i2c"
8 - interrupts : The interrupt number
9 - clock-frequency : Desired I2C bus clock frequency in Hz.
10
11Examples:
12
13 i2c@11000 {
14 compatible = "marvell,mv64xxx-i2c";
15 reg = <0x11000 0x20>;
16 interrupts = <29>;
17 clock-frequency = <100000>;
18 };
diff --git a/Documentation/devicetree/bindings/i2c/nomadik.txt b/Documentation/devicetree/bindings/i2c/i2c-nomadik.txt
index 72065b0ff680..72065b0ff680 100644
--- a/Documentation/devicetree/bindings/i2c/nomadik.txt
+++ b/Documentation/devicetree/bindings/i2c/i2c-nomadik.txt
diff --git a/Documentation/devicetree/bindings/i2c/cavium-i2c.txt b/Documentation/devicetree/bindings/i2c/i2c-octeon.txt
index dced82ebe31d..dced82ebe31d 100644
--- a/Documentation/devicetree/bindings/i2c/cavium-i2c.txt
+++ b/Documentation/devicetree/bindings/i2c/i2c-octeon.txt
diff --git a/Documentation/devicetree/bindings/i2c/omap-i2c.txt b/Documentation/devicetree/bindings/i2c/i2c-omap.txt
index 56564aa4b444..56564aa4b444 100644
--- a/Documentation/devicetree/bindings/i2c/omap-i2c.txt
+++ b/Documentation/devicetree/bindings/i2c/i2c-omap.txt
diff --git a/Documentation/devicetree/bindings/i2c/pnx.txt b/Documentation/devicetree/bindings/i2c/i2c-pnx.txt
index fe98ada33ee4..fe98ada33ee4 100644
--- a/Documentation/devicetree/bindings/i2c/pnx.txt
+++ b/Documentation/devicetree/bindings/i2c/i2c-pnx.txt
diff --git a/Documentation/devicetree/bindings/i2c/ce4100-i2c.txt b/Documentation/devicetree/bindings/i2c/i2c-pxa-pci-ce4100.txt
index 569b16248514..569b16248514 100644
--- a/Documentation/devicetree/bindings/i2c/ce4100-i2c.txt
+++ b/Documentation/devicetree/bindings/i2c/i2c-pxa-pci-ce4100.txt
diff --git a/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt b/Documentation/devicetree/bindings/i2c/i2c-pxa.txt
index 0f7945019f6f..12b78ac507e9 100644
--- a/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt
+++ b/Documentation/devicetree/bindings/i2c/i2c-pxa.txt
@@ -31,21 +31,3 @@ Examples:
31 reg = <0xd4025000 0x1000>; 31 reg = <0xd4025000 0x1000>;
32 interrupts = <58>; 32 interrupts = <58>;
33 }; 33 };
34
35* Marvell MV64XXX I2C controller
36
37Required properties :
38
39 - reg : Offset and length of the register set for the device
40 - compatible : Should be "marvell,mv64xxx-i2c"
41 - interrupts : The interrupt number
42 - clock-frequency : Desired I2C bus clock frequency in Hz.
43
44Examples:
45
46 i2c@11000 {
47 compatible = "marvell,mv64xxx-i2c";
48 reg = <0x11000 0x20>;
49 interrupts = <29>;
50 clock-frequency = <100000>;
51 };
diff --git a/Documentation/devicetree/bindings/i2c/samsung-i2c.txt b/Documentation/devicetree/bindings/i2c/i2c-s3c2410.txt
index e9611ace8792..e9611ace8792 100644
--- a/Documentation/devicetree/bindings/i2c/samsung-i2c.txt
+++ b/Documentation/devicetree/bindings/i2c/i2c-s3c2410.txt
diff --git a/Documentation/devicetree/bindings/i2c/sirf-i2c.txt b/Documentation/devicetree/bindings/i2c/i2c-sirf.txt
index 7baf9e133fa8..7baf9e133fa8 100644
--- a/Documentation/devicetree/bindings/i2c/sirf-i2c.txt
+++ b/Documentation/devicetree/bindings/i2c/i2c-sirf.txt
diff --git a/Documentation/devicetree/bindings/i2c/arm-versatile.txt b/Documentation/devicetree/bindings/i2c/i2c-versatile.txt
index 361d31c51b6f..361d31c51b6f 100644
--- a/Documentation/devicetree/bindings/i2c/arm-versatile.txt
+++ b/Documentation/devicetree/bindings/i2c/i2c-versatile.txt
diff --git a/Documentation/devicetree/bindings/i2c/xiic.txt b/Documentation/devicetree/bindings/i2c/i2c-xiic.txt
index ceabbe91ae44..ceabbe91ae44 100644
--- a/Documentation/devicetree/bindings/i2c/xiic.txt
+++ b/Documentation/devicetree/bindings/i2c/i2c-xiic.txt
diff --git a/Documentation/devicetree/bindings/i2c/trivial-devices.txt b/Documentation/devicetree/bindings/i2c/trivial-devices.txt
index 2f5322b119eb..446859fcdca4 100644
--- a/Documentation/devicetree/bindings/i2c/trivial-devices.txt
+++ b/Documentation/devicetree/bindings/i2c/trivial-devices.txt
@@ -55,5 +55,7 @@ st-micro,24c256 i2c serial eeprom (24cxx)
55stm,m41t00 Serial Access TIMEKEEPER 55stm,m41t00 Serial Access TIMEKEEPER
56stm,m41t62 Serial real-time clock (RTC) with alarm 56stm,m41t62 Serial real-time clock (RTC) with alarm
57stm,m41t80 M41T80 - SERIAL ACCESS RTC WITH ALARMS 57stm,m41t80 M41T80 - SERIAL ACCESS RTC WITH ALARMS
58taos,tsl2550 Ambient Light Sensor with SMBUS/Two Wire Serial Interface
58ti,tsc2003 I2C Touch-Screen Controller 59ti,tsc2003 I2C Touch-Screen Controller
59ti,tmp102 Low Power Digital Temperature Sensor with SMBUS/Two Wire Serial Interface 60ti,tmp102 Low Power Digital Temperature Sensor with SMBUS/Two Wire Serial Interface
61ti,tmp275 Digital Temperature Sensor
diff --git a/Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt b/Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt
new file mode 100644
index 000000000000..ead641c65e0a
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt
@@ -0,0 +1,46 @@
1* GPIO driven matrix keypad device tree bindings
2
3GPIO driven matrix keypad is used to interface a SoC with a matrix keypad.
4The matrix keypad supports multiple row and column lines, a key can be
5placed at each intersection of a unique row and a unique column. The matrix
6keypad can sense a key-press and key-release by means of GPIO lines and
7report the event using GPIO interrupts to the cpu.
8
9Required Properties:
10- compatible: Should be "gpio-matrix-keypad"
11- row-gpios: List of gpios used as row lines. The gpio specifier
12 for this property depends on the gpio controller to
13 which these row lines are connected.
14- col-gpios: List of gpios used as column lines. The gpio specifier
15 for this property depends on the gpio controller to
16 which these column lines are connected.
17- linux,keymap: The definition can be found at
18 bindings/input/matrix-keymap.txt
19
20Optional Properties:
21- linux,no-autorepeat: do no enable autorepeat feature.
22- linux,wakeup: use any event on keypad as wakeup event.
23- debounce-delay-ms: debounce interval in milliseconds
24- col-scan-delay-us: delay, measured in microseconds, that is needed
25 before we can scan keypad after activating column gpio
26
27Example:
28 matrix-keypad {
29 compatible = "gpio-matrix-keypad";
30 debounce-delay-ms = <5>;
31 col-scan-delay-us = <2>;
32
33 row-gpios = <&gpio2 25 0
34 &gpio2 26 0
35 &gpio2 27 0>;
36
37 col-gpios = <&gpio2 21 0
38 &gpio2 22 0>;
39
40 linux,keymap = <0x0000008B
41 0x0100009E
42 0x02000069
43 0x0001006A
44 0x0101001C
45 0x0201006C>;
46 };
diff --git a/Documentation/devicetree/bindings/input/pwm-beeper.txt b/Documentation/devicetree/bindings/input/pwm-beeper.txt
new file mode 100644
index 000000000000..be332ae4f2d6
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/pwm-beeper.txt
@@ -0,0 +1,7 @@
1* PWM beeper device tree bindings
2
3Registers a PWM device as beeper.
4
5Required properties:
6- compatible: should be "pwm-beeper"
7- pwms: phandle to the physical PWM device
diff --git a/Documentation/devicetree/bindings/input/stmpe-keypad.txt b/Documentation/devicetree/bindings/input/stmpe-keypad.txt
new file mode 100644
index 000000000000..1b97222e8a0b
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/stmpe-keypad.txt
@@ -0,0 +1,39 @@
1* STMPE Keypad
2
3Required properties:
4 - compatible : "st,stmpe-keypad"
5 - linux,keymap : See ./matrix-keymap.txt
6
7Optional properties:
8 - debounce-interval : Debouncing interval time in milliseconds
9 - st,scan-count : Scanning cycles elapsed before key data is updated
10 - st,no-autorepeat : If specified device will not autorepeat
11
12Example:
13
14 stmpe_keypad {
15 compatible = "st,stmpe-keypad";
16
17 debounce-interval = <64>;
18 st,scan-count = <8>;
19 st,no-autorepeat;
20
21 linux,keymap = <0x205006b
22 0x4010074
23 0x3050072
24 0x1030004
25 0x502006a
26 0x500000a
27 0x5008b
28 0x706001c
29 0x405000b
30 0x6070003
31 0x3040067
32 0x303006c
33 0x60400e7
34 0x602009e
35 0x4020073
36 0x5050002
37 0x4030069
38 0x3020008>;
39 };
diff --git a/Documentation/devicetree/bindings/input/tca8418_keypad.txt b/Documentation/devicetree/bindings/input/tca8418_keypad.txt
new file mode 100644
index 000000000000..2a1538f0053f
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/tca8418_keypad.txt
@@ -0,0 +1,8 @@
1
2Required properties:
3- compatible: "ti,tca8418"
4- reg: the I2C address
5- interrupts: IRQ line number, should trigger on falling edge
6- keypad,num-rows: The number of rows
7- keypad,num-columns: The number of columns
8- linux,keymap: Keys definitions, see keypad-matrix.
diff --git a/Documentation/devicetree/bindings/input/touchscreen/bu21013.txt b/Documentation/devicetree/bindings/input/touchscreen/bu21013.txt
new file mode 100644
index 000000000000..ca5a2c86480c
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/touchscreen/bu21013.txt
@@ -0,0 +1,28 @@
1* Rohm BU21013 Touch Screen
2
3Required properties:
4 - compatible : "rohm,bu21013_tp"
5 - reg : I2C device address
6
7Optional properties:
8 - touch-gpio : GPIO pin registering a touch event
9 - <supply_name>-supply : Phandle to a regulator supply
10 - rohm,touch-max-x : Maximum outward permitted limit in the X axis
11 - rohm,touch-max-y : Maximum outward permitted limit in the Y axis
12 - rohm,flip-x : Flip touch coordinates on the X axis
13 - rohm,flip-y : Flip touch coordinates on the Y axis
14
15Example:
16
17 i2c@80110000 {
18 bu21013_tp@0x5c {
19 compatible = "rohm,bu21013_tp";
20 reg = <0x5c>;
21 touch-gpio = <&gpio2 20 0x4>;
22 avdd-supply = <&ab8500_ldo_aux1_reg>;
23
24 rohm,touch-max-x = <384>;
25 rohm,touch-max-y = <704>;
26 rohm,flip-y;
27 };
28 };
diff --git a/Documentation/devicetree/bindings/input/touchscreen/mms114.txt b/Documentation/devicetree/bindings/input/touchscreen/mms114.txt
new file mode 100644
index 000000000000..89d4c56c5671
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/touchscreen/mms114.txt
@@ -0,0 +1,34 @@
1* MELFAS MMS114 touchscreen controller
2
3Required properties:
4- compatible: must be "melfas,mms114"
5- reg: I2C address of the chip
6- interrupts: interrupt to which the chip is connected
7- x-size: horizontal resolution of touchscreen
8- y-size: vertical resolution of touchscreen
9
10Optional properties:
11- contact-threshold:
12- moving-threshold:
13- x-invert: invert X axis
14- y-invert: invert Y axis
15
16Example:
17
18 i2c@00000000 {
19 /* ... */
20
21 touchscreen@48 {
22 compatible = "melfas,mms114";
23 reg = <0x48>;
24 interrupts = <39 0>;
25 x-size = <720>;
26 y-size = <1280>;
27 contact-threshold = <10>;
28 moving-threshold = <10>;
29 x-invert;
30 y-invert;
31 };
32
33 /* ... */
34 };
diff --git a/Documentation/devicetree/bindings/input/touchscreen/stmpe.txt b/Documentation/devicetree/bindings/input/touchscreen/stmpe.txt
new file mode 100644
index 000000000000..127baa31a77a
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/touchscreen/stmpe.txt
@@ -0,0 +1,43 @@
1STMPE Touchscreen
2----------------
3
4Required properties:
5 - compatible: "st,stmpe-ts"
6
7Optional properties:
8- st,sample-time: ADC converstion time in number of clock. (0 -> 36 clocks, 1 ->
9 44 clocks, 2 -> 56 clocks, 3 -> 64 clocks, 4 -> 80 clocks, 5 -> 96 clocks, 6
10 -> 144 clocks), recommended is 4.
11- st,mod-12b: ADC Bit mode (0 -> 10bit ADC, 1 -> 12bit ADC)
12- st,ref-sel: ADC reference source (0 -> internal reference, 1 -> external
13 reference)
14- st,adc-freq: ADC Clock speed (0 -> 1.625 MHz, 1 -> 3.25 MHz, 2 || 3 -> 6.5 MHz)
15- st,ave-ctrl: Sample average control (0 -> 1 sample, 1 -> 2 samples, 2 -> 4
16 samples, 3 -> 8 samples)
17- st,touch-det-delay: Touch detect interrupt delay (0 -> 10 us, 1 -> 50 us, 2 ->
18 100 us, 3 -> 500 us, 4-> 1 ms, 5 -> 5 ms, 6 -> 10 ms, 7 -> 50 ms) recommended
19 is 3
20- st,settling: Panel driver settling time (0 -> 10 us, 1 -> 100 us, 2 -> 500 us, 3
21 -> 1 ms, 4 -> 5 ms, 5 -> 10 ms, 6 for 50 ms, 7 -> 100 ms) recommended is 2
22- st,fraction-z: Length of the fractional part in z (fraction-z ([0..7]) = Count of
23 the fractional part) recommended is 7
24- st,i-drive: current limit value of the touchscreen drivers (0 -> 20 mA typical 35
25 mA max, 1 -> 50 mA typical 80 mA max)
26
27Node name must be stmpe_touchscreen and should be child node of stmpe node to
28which it belongs.
29
30Example:
31
32 stmpe_touchscreen {
33 compatible = "st,stmpe-ts";
34 st,sample-time = <4>;
35 st,mod-12b = <1>;
36 st,ref-sel = <0>;
37 st,adc-freq = <1>;
38 st,ave-ctrl = <1>;
39 st,touch-det-delay = <2>;
40 st,settling = <2>;
41 st,fraction-z = <7>;
42 st,i-drive = <1>;
43 };
diff --git a/Documentation/devicetree/bindings/interrupt-controller/allwinner,sunxi-ic.txt b/Documentation/devicetree/bindings/interrupt-controller/allwinner,sunxi-ic.txt
new file mode 100644
index 000000000000..7f9fb85f5456
--- /dev/null
+++ b/Documentation/devicetree/bindings/interrupt-controller/allwinner,sunxi-ic.txt
@@ -0,0 +1,104 @@
1Allwinner Sunxi Interrupt Controller
2
3Required properties:
4
5- compatible : should be "allwinner,sunxi-ic"
6- reg : Specifies base physical address and size of the registers.
7- interrupt-controller : Identifies the node as an interrupt controller
8- #interrupt-cells : Specifies the number of cells needed to encode an
9 interrupt source. The value shall be 1.
10
11The interrupt sources are as follows:
12
130: ENMI
141: UART0
152: UART1
163: UART2
174: UART3
185: IR0
196: IR1
207: I2C0
218: I2C1
229: I2C2
2310: SPI0
2411: SPI1
2512: SPI2
2613: SPDIF
2714: AC97
2815: TS
2916: I2S
3017: UART4
3118: UART5
3219: UART6
3320: UART7
3421: KEYPAD
3522: TIMER0
3623: TIMER1
3724: TIMER2
3825: TIMER3
3926: CAN
4027: DMA
4128: PIO
4229: TOUCH_PANEL
4330: AUDIO_CODEC
4431: LRADC
4532: SDMC0
4633: SDMC1
4734: SDMC2
4835: SDMC3
4936: MEMSTICK
5037: NAND
5138: USB0
5239: USB1
5340: USB2
5441: SCR
5542: CSI0
5643: CSI1
5744: LCDCTRL0
5845: LCDCTRL1
5946: MP
6047: DEFEBE0
6148: DEFEBE1
6249: PMU
6350: SPI3
6451: TZASC
6552: PATA
6653: VE
6754: SS
6855: EMAC
6956: SATA
7057: GPS
7158: HDMI
7259: TVE
7360: ACE
7461: TVD
7562: PS2_0
7663: PS2_1
7764: USB3
7865: USB4
7966: PLE_PFM
8067: TIMER4
8168: TIMER5
8269: GPU_GP
8370: GPU_GPMMU
8471: GPU_PP0
8572: GPU_PPMMU0
8673: GPU_PMU
8774: GPU_RSV0
8875: GPU_RSV1
8976: GPU_RSV2
9077: GPU_RSV3
9178: GPU_RSV4
9279: GPU_RSV5
9380: GPU_RSV6
9482: SYNC_TIMER0
9583: SYNC_TIMER1
96
97Example:
98
99intc: interrupt-controller {
100 compatible = "allwinner,sunxi-ic";
101 reg = <0x01c20400 0x400>;
102 interrupt-controller;
103 #interrupt-cells = <2>;
104};
diff --git a/Documentation/devicetree/bindings/leds/common.txt b/Documentation/devicetree/bindings/leds/common.txt
new file mode 100644
index 000000000000..2d88816dd550
--- /dev/null
+++ b/Documentation/devicetree/bindings/leds/common.txt
@@ -0,0 +1,23 @@
1Common leds properties.
2
3Optional properties for child nodes:
4- label : The label for this LED. If omitted, the label is
5 taken from the node name (excluding the unit address).
6
7- linux,default-trigger : This parameter, if present, is a
8 string defining the trigger assigned to the LED. Current triggers are:
9 "backlight" - LED will act as a back-light, controlled by the framebuffer
10 system
11 "default-on" - LED will turn on (but for leds-gpio see "default-state"
12 property in Documentation/devicetree/bindings/gpio/led.txt)
13 "heartbeat" - LED "double" flashes at a load average based rate
14 "ide-disk" - LED indicates disk activity
15 "timer" - LED flashes at a fixed, configurable rate
16
17Examples:
18
19system-status {
20 label = "Status";
21 linux,default-trigger = "heartbeat";
22 ...
23};
diff --git a/Documentation/devicetree/bindings/gpio/led.txt b/Documentation/devicetree/bindings/leds/leds-gpio.txt
index edc83c1c0d54..df1b3080f6b8 100644
--- a/Documentation/devicetree/bindings/gpio/led.txt
+++ b/Documentation/devicetree/bindings/leds/leds-gpio.txt
@@ -10,16 +10,10 @@ LED sub-node properties:
10- gpios : Should specify the LED's GPIO, see "gpios property" in 10- gpios : Should specify the LED's GPIO, see "gpios property" in
11 Documentation/devicetree/bindings/gpio/gpio.txt. Active low LEDs should be 11 Documentation/devicetree/bindings/gpio/gpio.txt. Active low LEDs should be
12 indicated using flags in the GPIO specifier. 12 indicated using flags in the GPIO specifier.
13- label : (optional) The label for this LED. If omitted, the label is 13- label : (optional)
14 taken from the node name (excluding the unit address). 14 see Documentation/devicetree/bindings/leds/common.txt
15- linux,default-trigger : (optional) This parameter, if present, is a 15- linux,default-trigger : (optional)
16 string defining the trigger assigned to the LED. Current triggers are: 16 see Documentation/devicetree/bindings/leds/common.txt
17 "backlight" - LED will act as a back-light, controlled by the framebuffer
18 system
19 "default-on" - LED will turn on, but see "default-state" below
20 "heartbeat" - LED "double" flashes at a load average based rate
21 "ide-disk" - LED indicates disk activity
22 "timer" - LED flashes at a fixed, configurable rate
23- default-state: (optional) The initial state of the LED. Valid 17- default-state: (optional) The initial state of the LED. Valid
24 values are "on", "off", and "keep". If the LED is already on or off 18 values are "on", "off", and "keep". If the LED is already on or off
25 and the default-state property is set the to same value, then no 19 and the default-state property is set the to same value, then no
diff --git a/Documentation/devicetree/bindings/media/s5p-mfc.txt b/Documentation/devicetree/bindings/media/s5p-mfc.txt
new file mode 100644
index 000000000000..67ec3d4ccc7f
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/s5p-mfc.txt
@@ -0,0 +1,23 @@
1* Samsung Multi Format Codec (MFC)
2
3Multi Format Codec (MFC) is the IP present in Samsung SoCs which
4supports high resolution decoding and encoding functionalities.
5The MFC device driver is a v4l2 driver which can encode/decode
6video raw/elementary streams and has support for all popular
7video codecs.
8
9Required properties:
10 - compatible : value should be either one among the following
11 (a) "samsung,mfc-v5" for MFC v5 present in Exynos4 SoCs
12 (b) "samsung,mfc-v6" for MFC v6 present in Exynos5 SoCs
13
14 - reg : Physical base address of the IP registers and length of memory
15 mapped region.
16
17 - interrupts : MFC interrupt number to the CPU.
18
19 - samsung,mfc-r : Base address of the first memory bank used by MFC
20 for DMA contiguous memory allocation and its size.
21
22 - samsung,mfc-l : Base address of the second memory bank used by MFC
23 for DMA contiguous memory allocation and its size.
diff --git a/Documentation/devicetree/bindings/mfd/ab8500.txt b/Documentation/devicetree/bindings/mfd/ab8500.txt
index ce83c8d3c00e..13b707b7355c 100644
--- a/Documentation/devicetree/bindings/mfd/ab8500.txt
+++ b/Documentation/devicetree/bindings/mfd/ab8500.txt
@@ -24,7 +24,32 @@ ab8500-bm : : : Battery Manager
24ab8500-btemp : : : Battery Temperature 24ab8500-btemp : : : Battery Temperature
25ab8500-charger : : : Battery Charger 25ab8500-charger : : : Battery Charger
26ab8500-codec : : : Audio Codec 26ab8500-codec : : : Audio Codec
27ab8500-fg : : : Fuel Gauge 27ab8500-fg : : vddadc : Fuel Gauge
28 : NCONV_ACCU : : Accumulate N Sample Conversion
29 : BATT_OVV : : Battery Over Voltage
30 : LOW_BAT_F : : LOW threshold battery voltage
31 : CC_INT_CALIB : : Coulomb Counter Internal Calibration
32 : CCEOC : : Coulomb Counter End of Conversion
33ab8500-btemp : : vtvout : Battery Temperature
34 : BAT_CTRL_INDB : : Battery Removal Indicator
35 : BTEMP_LOW : : Btemp < BtempLow, if battery temperature is lower than -10°C
36 : BTEMP_LOW_MEDIUM : : BtempLow < Btemp < BtempMedium,if battery temperature is between -10 and 0°C
37 : BTEMP_MEDIUM_HIGH : : BtempMedium < Btemp < BtempHigh,if battery temperature is between 0°C and“MaxTemp
38 : BTEMP_HIGH : : Btemp > BtempHigh, if battery temperature is higher than “MaxTemp
39ab8500-charger : : vddadc : Charger interface
40 : MAIN_CH_UNPLUG_DET : : main charger unplug detection management (not in 8505)
41 : MAIN_CHARGE_PLUG_DET : : main charger plug detection management (not in 8505)
42 : MAIN_EXT_CH_NOT_OK : : main charger not OK
43 : MAIN_CH_TH_PROT_R : : Die temp is above main charger
44 : MAIN_CH_TH_PROT_F : : Die temp is below main charger
45 : VBUS_DET_F : : VBUS falling detected
46 : VBUS_DET_R : : VBUS rising detected
47 : USB_LINK_STATUS : : USB link status has changed
48 : USB_CH_TH_PROT_R : : Die temp is above usb charger
49 : USB_CH_TH_PROT_F : : Die temp is below usb charger
50 : USB_CHARGER_NOT_OKR : : allowed USB charger not ok detection
51 : VBUS_OVV : : Overvoltage on Vbus ball detected (USB charge is stopped)
52 : CH_WD_EXP : : Charger watchdog detected
28ab8500-gpadc : HW_CONV_END : vddadc : Analogue to Digital Converter 53ab8500-gpadc : HW_CONV_END : vddadc : Analogue to Digital Converter
29 SW_CONV_END : : 54 SW_CONV_END : :
30ab8500-gpio : : : GPIO Controller 55ab8500-gpio : : : GPIO Controller
diff --git a/Documentation/devicetree/bindings/mfd/stmpe.txt b/Documentation/devicetree/bindings/mfd/stmpe.txt
new file mode 100644
index 000000000000..56edb5520685
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/stmpe.txt
@@ -0,0 +1,28 @@
1* ST Microelectronics STMPE Multi-Functional Device
2
3STMPE is an MFD device which may expose the following inbuilt devices: gpio,
4keypad, touchscreen, adc, pwm, rotator.
5
6Required properties:
7 - compatible : "st,stmpe[610|801|811|1601|2401|2403]"
8 - reg : I2C/SPI address of the device
9
10Optional properties:
11 - interrupts : The interrupt outputs from the controller
12 - interrupt-controller : Marks the device node as an interrupt controller
13 - interrupt-parent : Specifies which IRQ controller we're connected to
14 - wakeup-source : Marks the input device as wakable
15 - st,autosleep-timeout : Valid entries (ms); 4, 16, 32, 64, 128, 256, 512 and 1024
16
17Example:
18
19 stmpe1601: stmpe1601@40 {
20 compatible = "st,stmpe1601";
21 reg = <0x40>;
22 interrupts = <26 0x4>;
23 interrupt-parent = <&gpio6>;
24 interrupt-controller;
25
26 wakeup-source;
27 st,autosleep-timeout = <1024>;
28 };
diff --git a/Documentation/devicetree/bindings/misc/atmel-ssc.txt b/Documentation/devicetree/bindings/misc/atmel-ssc.txt
new file mode 100644
index 000000000000..38e51ad2e07e
--- /dev/null
+++ b/Documentation/devicetree/bindings/misc/atmel-ssc.txt
@@ -0,0 +1,15 @@
1* Atmel SSC driver.
2
3Required properties:
4- compatible: "atmel,at91rm9200-ssc" or "atmel,at91sam9g45-ssc"
5 - atmel,at91rm9200-ssc: support pdc transfer
6 - atmel,at91sam9g45-ssc: support dma transfer
7- reg: Should contain SSC registers location and length
8- interrupts: Should contain SSC interrupt
9
10Example:
11ssc0: ssc@fffbc000 {
12 compatible = "atmel,at91rm9200-ssc";
13 reg = <0xfffbc000 0x4000>;
14 interrupts = <14 4 5>;
15};
diff --git a/Documentation/devicetree/bindings/mmc/mmc.txt b/Documentation/devicetree/bindings/mmc/mmc.txt
index 8e2e0ba2f486..a591c6741d75 100644
--- a/Documentation/devicetree/bindings/mmc/mmc.txt
+++ b/Documentation/devicetree/bindings/mmc/mmc.txt
@@ -21,6 +21,12 @@ Optional properties:
21- cd-inverted: when present, polarity on the cd gpio line is inverted 21- cd-inverted: when present, polarity on the cd gpio line is inverted
22- wp-inverted: when present, polarity on the wp gpio line is inverted 22- wp-inverted: when present, polarity on the wp gpio line is inverted
23- max-frequency: maximum operating clock frequency 23- max-frequency: maximum operating clock frequency
24- no-1-8-v: when present, denotes that 1.8v card voltage is not supported on
25 this system, even if the controller claims it is.
26
27Optional SDIO properties:
28- keep-power-in-suspend: Preserves card power during a suspend/resume cycle
29- enable-sdio-wakeup: Enables wake up of host system on SDIO IRQ assertion
24 30
25Example: 31Example:
26 32
@@ -33,4 +39,6 @@ sdhci@ab000000 {
33 cd-inverted; 39 cd-inverted;
34 wp-gpios = <&gpio 70 0>; 40 wp-gpios = <&gpio 70 0>;
35 max-frequency = <50000000>; 41 max-frequency = <50000000>;
42 keep-power-in-suspend;
43 enable-sdio-wakeup;
36} 44}
diff --git a/Documentation/devicetree/bindings/mmc/samsung-sdhci.txt b/Documentation/devicetree/bindings/mmc/samsung-sdhci.txt
index 630a7d7f4718..97e9e315400d 100644
--- a/Documentation/devicetree/bindings/mmc/samsung-sdhci.txt
+++ b/Documentation/devicetree/bindings/mmc/samsung-sdhci.txt
@@ -12,10 +12,6 @@ is used. The Samsung's SDHCI controller bindings extends this as listed below.
12[A] The property "samsung,cd-pinmux-gpio" can be used as stated in the 12[A] The property "samsung,cd-pinmux-gpio" can be used as stated in the
13 "Optional Board Specific Properties" section below. 13 "Optional Board Specific Properties" section below.
14 14
15[B] If core card-detect bindings and "samsung,cd-pinmux-gpio" property
16 is not specified, it is assumed that there is no card detection
17 mechanism used.
18
19Required SoC Specific Properties: 15Required SoC Specific Properties:
20- compatible: should be one of the following 16- compatible: should be one of the following
21 - "samsung,s3c6410-sdhci": For controllers compatible with s3c6410 sdhci 17 - "samsung,s3c6410-sdhci": For controllers compatible with s3c6410 sdhci
@@ -24,14 +20,18 @@ Required SoC Specific Properties:
24 controller. 20 controller.
25 21
26Required Board Specific Properties: 22Required Board Specific Properties:
27- gpios: Should specify the gpios used for clock, command and data lines. The 23- Samsung GPIO variant (will be completely replaced by pinctrl):
28 gpio specifier format depends on the gpio controller. 24 - gpios: Should specify the gpios used for clock, command and data lines. The
25 gpio specifier format depends on the gpio controller.
26- Pinctrl variant (preferred if available):
27 - pinctrl-0: Should specify pin control groups used for this controller.
28 - pinctrl-names: Should contain only one value - "default".
29 29
30Optional Board Specific Properties: 30Optional Board Specific Properties:
31- samsung,cd-pinmux-gpio: Specifies the card detect line that is routed 31- samsung,cd-pinmux-gpio: Specifies the card detect line that is routed
32 through a pinmux to the card-detect pin of the card slot. This property 32 through a pinmux to the card-detect pin of the card slot. This property
33 should be used only if none of the mmc core card-detect properties are 33 should be used only if none of the mmc core card-detect properties are
34 used. 34 used. Only for Samsung GPIO variant.
35 35
36Example: 36Example:
37 sdhci@12530000 { 37 sdhci@12530000 {
@@ -40,12 +40,18 @@ Example:
40 interrupts = <0 75 0>; 40 interrupts = <0 75 0>;
41 bus-width = <4>; 41 bus-width = <4>;
42 cd-gpios = <&gpk2 2 2 3 3>; 42 cd-gpios = <&gpk2 2 2 3 3>;
43
44 /* Samsung GPIO variant */
43 gpios = <&gpk2 0 2 0 3>, /* clock line */ 45 gpios = <&gpk2 0 2 0 3>, /* clock line */
44 <&gpk2 1 2 0 3>, /* command line */ 46 <&gpk2 1 2 0 3>, /* command line */
45 <&gpk2 3 2 3 3>, /* data line 0 */ 47 <&gpk2 3 2 3 3>, /* data line 0 */
46 <&gpk2 4 2 3 3>, /* data line 1 */ 48 <&gpk2 4 2 3 3>, /* data line 1 */
47 <&gpk2 5 2 3 3>, /* data line 2 */ 49 <&gpk2 5 2 3 3>, /* data line 2 */
48 <&gpk2 6 2 3 3>; /* data line 3 */ 50 <&gpk2 6 2 3 3>; /* data line 3 */
51
52 /* Pinctrl variant */
53 pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4>;
54 pinctrl-names = "default";
49 }; 55 };
50 56
51 Note: This example shows both SoC specific and board specific properties 57 Note: This example shows both SoC specific and board specific properties
diff --git a/Documentation/devicetree/bindings/mmc/synposis-dw-mshc.txt b/Documentation/devicetree/bindings/mmc/synopsis-dw-mshc.txt
index 06cd32d08052..06cd32d08052 100644
--- a/Documentation/devicetree/bindings/mmc/synposis-dw-mshc.txt
+++ b/Documentation/devicetree/bindings/mmc/synopsis-dw-mshc.txt
diff --git a/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt b/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt
index be76a23b34c4..ed271fc255b2 100644
--- a/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt
+++ b/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt
@@ -19,6 +19,7 @@ ti,dual-volt: boolean, supports dual voltage cards
19"supply-name" examples are "vmmc", "vmmc_aux" etc 19"supply-name" examples are "vmmc", "vmmc_aux" etc
20ti,non-removable: non-removable slot (like eMMC) 20ti,non-removable: non-removable slot (like eMMC)
21ti,needs-special-reset: Requires a special softreset sequence 21ti,needs-special-reset: Requires a special softreset sequence
22ti,needs-special-hs-handling: HSMMC IP needs special setting for handling High Speed
22 23
23Example: 24Example:
24 mmc1: mmc@0x4809c000 { 25 mmc1: mmc@0x4809c000 {
diff --git a/Documentation/devicetree/bindings/mmc/vt8500-sdmmc.txt b/Documentation/devicetree/bindings/mmc/vt8500-sdmmc.txt
new file mode 100644
index 000000000000..d7fb6abb3eb8
--- /dev/null
+++ b/Documentation/devicetree/bindings/mmc/vt8500-sdmmc.txt
@@ -0,0 +1,23 @@
1* Wondermedia WM8505/WM8650 SD/MMC Host Controller
2
3This file documents differences between the core properties described
4by mmc.txt and the properties used by the wmt-sdmmc driver.
5
6Required properties:
7- compatible: Should be "wm,wm8505-sdhc".
8- interrupts: Two interrupts are required - regular irq and dma irq.
9
10Optional properties:
11- sdon-inverted: SD_ON bit is inverted on the controller
12
13Examples:
14
15sdhc@d800a000 {
16 compatible = "wm,wm8505-sdhc";
17 reg = <0xd800a000 0x1000>;
18 interrupts = <20 21>;
19 clocks = <&sdhc>;
20 bus-width = <4>;
21 sdon-inverted;
22};
23
diff --git a/Documentation/devicetree/bindings/net/can/grcan.txt b/Documentation/devicetree/bindings/net/can/grcan.txt
new file mode 100644
index 000000000000..34ef3498f887
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/can/grcan.txt
@@ -0,0 +1,28 @@
1Aeroflex Gaisler GRCAN and GRHCAN CAN controllers.
2
3The GRCAN and CRHCAN CAN controllers are available in the GRLIB VHDL IP core
4library.
5
6Note: These properties are built from the AMBA plug&play in a Leon SPARC system
7(the ordinary environment for GRCAN and GRHCAN). There are no dts files for
8sparc.
9
10Required properties:
11
12- name : Should be "GAISLER_GRCAN", "01_03d", "GAISLER_GRHCAN" or "01_034"
13
14- reg : Address and length of the register set for the device
15
16- freq : Frequency of the external oscillator clock in Hz (the frequency of
17 the amba bus in the ordinary case)
18
19- interrupts : Interrupt number for this device
20
21Optional properties:
22
23- systemid : If not present or if the value of the least significant 16 bits
24 of this 32-bit property is smaller than GRCAN_TXBUG_SAFE_GRLIB_VERSION
25 a bug workaround is activated.
26
27For further information look in the documentation for the GLIB IP core library:
28http://www.gaisler.com/products/grlib/grip.pdf
diff --git a/Documentation/devicetree/bindings/net/cdns-emac.txt b/Documentation/devicetree/bindings/net/cdns-emac.txt
new file mode 100644
index 000000000000..09055c2495f0
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/cdns-emac.txt
@@ -0,0 +1,23 @@
1* Cadence EMAC Ethernet controller
2
3Required properties:
4- compatible: Should be "cdns,[<chip>-]{emac}"
5 Use "cdns,at91rm9200-emac" Atmel at91rm9200 SoC.
6 or the generic form: "cdns,emac".
7- reg: Address and length of the register set for the device
8- interrupts: Should contain macb interrupt
9- phy-mode: String, operation mode of the PHY interface.
10 Supported values are: "mii", "rmii".
11
12Optional properties:
13- local-mac-address: 6 bytes, mac address
14
15Examples:
16
17 macb0: ethernet@fffc4000 {
18 compatible = "cdns,at91rm9200-emac";
19 reg = <0xfffc4000 0x4000>;
20 interrupts = <21>;
21 phy-mode = "rmii";
22 local-mac-address = [3a 0e 03 04 05 06];
23 };
diff --git a/Documentation/devicetree/bindings/net/cpsw.txt b/Documentation/devicetree/bindings/net/cpsw.txt
index dcaabe9fe869..6ddd0286a9b7 100644
--- a/Documentation/devicetree/bindings/net/cpsw.txt
+++ b/Documentation/devicetree/bindings/net/cpsw.txt
@@ -9,21 +9,15 @@ Required properties:
9 number 9 number
10- interrupt-parent : The parent interrupt controller 10- interrupt-parent : The parent interrupt controller
11- cpdma_channels : Specifies number of channels in CPDMA 11- cpdma_channels : Specifies number of channels in CPDMA
12- host_port_no : Specifies host port shift
13- cpdma_reg_ofs : Specifies CPDMA submodule register offset
14- cpdma_sram_ofs : Specifies CPDMA SRAM offset
15- ale_reg_ofs : Specifies ALE submodule register offset
16- ale_entries : Specifies No of entries ALE can hold 12- ale_entries : Specifies No of entries ALE can hold
17- host_port_reg_ofs : Specifies host port register offset
18- hw_stats_reg_ofs : Specifies hardware statistics register offset
19- bd_ram_ofs : Specifies internal desciptor RAM offset
20- bd_ram_size : Specifies internal descriptor RAM size 13- bd_ram_size : Specifies internal descriptor RAM size
21- rx_descs : Specifies number of Rx descriptors 14- rx_descs : Specifies number of Rx descriptors
22- mac_control : Specifies Default MAC control register content 15- mac_control : Specifies Default MAC control register content
23 for the specific platform 16 for the specific platform
24- slaves : Specifies number for slaves 17- slaves : Specifies number for slaves
25- slave_reg_ofs : Specifies slave register offset 18- cpts_active_slave : Specifies the slave to use for time stamping
26- sliver_reg_ofs : Specifies slave sliver register offset 19- cpts_clock_mult : Numerator to convert input clock ticks into nanoseconds
20- cpts_clock_shift : Denominator to convert input clock ticks into nanoseconds
27- phy_id : Specifies slave phy id 21- phy_id : Specifies slave phy id
28- mac-address : Specifies slave MAC address 22- mac-address : Specifies slave MAC address
29 23
@@ -45,30 +39,22 @@ Examples:
45 interrupts = <55 0x4>; 39 interrupts = <55 0x4>;
46 interrupt-parent = <&intc>; 40 interrupt-parent = <&intc>;
47 cpdma_channels = <8>; 41 cpdma_channels = <8>;
48 host_port_no = <0>;
49 cpdma_reg_ofs = <0x800>;
50 cpdma_sram_ofs = <0xa00>;
51 ale_reg_ofs = <0xd00>;
52 ale_entries = <1024>; 42 ale_entries = <1024>;
53 host_port_reg_ofs = <0x108>;
54 hw_stats_reg_ofs = <0x900>;
55 bd_ram_ofs = <0x2000>;
56 bd_ram_size = <0x2000>; 43 bd_ram_size = <0x2000>;
57 no_bd_ram = <0>; 44 no_bd_ram = <0>;
58 rx_descs = <64>; 45 rx_descs = <64>;
59 mac_control = <0x20>; 46 mac_control = <0x20>;
60 slaves = <2>; 47 slaves = <2>;
48 cpts_active_slave = <0>;
49 cpts_clock_mult = <0x80000000>;
50 cpts_clock_shift = <29>;
61 cpsw_emac0: slave@0 { 51 cpsw_emac0: slave@0 {
62 slave_reg_ofs = <0x208>; 52 phy_id = <&davinci_mdio>, <0>;
63 sliver_reg_ofs = <0xd80>;
64 phy_id = "davinci_mdio.16:00";
65 /* Filled in by U-Boot */ 53 /* Filled in by U-Boot */
66 mac-address = [ 00 00 00 00 00 00 ]; 54 mac-address = [ 00 00 00 00 00 00 ];
67 }; 55 };
68 cpsw_emac1: slave@1 { 56 cpsw_emac1: slave@1 {
69 slave_reg_ofs = <0x308>; 57 phy_id = <&davinci_mdio>, <1>;
70 sliver_reg_ofs = <0xdc0>;
71 phy_id = "davinci_mdio.16:01";
72 /* Filled in by U-Boot */ 58 /* Filled in by U-Boot */
73 mac-address = [ 00 00 00 00 00 00 ]; 59 mac-address = [ 00 00 00 00 00 00 ];
74 }; 60 };
@@ -79,30 +65,22 @@ Examples:
79 compatible = "ti,cpsw"; 65 compatible = "ti,cpsw";
80 ti,hwmods = "cpgmac0"; 66 ti,hwmods = "cpgmac0";
81 cpdma_channels = <8>; 67 cpdma_channels = <8>;
82 host_port_no = <0>;
83 cpdma_reg_ofs = <0x800>;
84 cpdma_sram_ofs = <0xa00>;
85 ale_reg_ofs = <0xd00>;
86 ale_entries = <1024>; 68 ale_entries = <1024>;
87 host_port_reg_ofs = <0x108>;
88 hw_stats_reg_ofs = <0x900>;
89 bd_ram_ofs = <0x2000>;
90 bd_ram_size = <0x2000>; 69 bd_ram_size = <0x2000>;
91 no_bd_ram = <0>; 70 no_bd_ram = <0>;
92 rx_descs = <64>; 71 rx_descs = <64>;
93 mac_control = <0x20>; 72 mac_control = <0x20>;
94 slaves = <2>; 73 slaves = <2>;
74 cpts_active_slave = <0>;
75 cpts_clock_mult = <0x80000000>;
76 cpts_clock_shift = <29>;
95 cpsw_emac0: slave@0 { 77 cpsw_emac0: slave@0 {
96 slave_reg_ofs = <0x208>; 78 phy_id = <&davinci_mdio>, <0>;
97 sliver_reg_ofs = <0xd80>;
98 phy_id = "davinci_mdio.16:00";
99 /* Filled in by U-Boot */ 79 /* Filled in by U-Boot */
100 mac-address = [ 00 00 00 00 00 00 ]; 80 mac-address = [ 00 00 00 00 00 00 ];
101 }; 81 };
102 cpsw_emac1: slave@1 { 82 cpsw_emac1: slave@1 {
103 slave_reg_ofs = <0x308>; 83 phy_id = <&davinci_mdio>, <1>;
104 sliver_reg_ofs = <0xdc0>;
105 phy_id = "davinci_mdio.16:01";
106 /* Filled in by U-Boot */ 84 /* Filled in by U-Boot */
107 mac-address = [ 00 00 00 00 00 00 ]; 85 mac-address = [ 00 00 00 00 00 00 ];
108 }; 86 };
diff --git a/Documentation/devicetree/bindings/net/marvell-armada-370-neta.txt b/Documentation/devicetree/bindings/net/marvell-armada-370-neta.txt
new file mode 100644
index 000000000000..859a6fa7569c
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/marvell-armada-370-neta.txt
@@ -0,0 +1,23 @@
1* Marvell Armada 370 / Armada XP Ethernet Controller (NETA)
2
3Required properties:
4- compatible: should be "marvell,armada-370-neta".
5- reg: address and length of the register set for the device.
6- interrupts: interrupt for the device
7- phy: A phandle to a phy node defining the PHY address (as the reg
8 property, a single integer).
9- phy-mode: The interface between the SoC and the PHY (a string that
10 of_get_phy_mode() can understand)
11- clocks: a pointer to the reference clock for this device.
12
13Example:
14
15ethernet@d0070000 {
16 compatible = "marvell,armada-370-neta";
17 reg = <0xd0070000 0x2500>;
18 interrupts = <8>;
19 clocks = <&gate_clk 4>;
20 status = "okay";
21 phy = <&phy0>;
22 phy-mode = "rgmii-id";
23};
diff --git a/Documentation/devicetree/bindings/net/marvell-orion-mdio.txt b/Documentation/devicetree/bindings/net/marvell-orion-mdio.txt
new file mode 100644
index 000000000000..34e7aafa321c
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/marvell-orion-mdio.txt
@@ -0,0 +1,35 @@
1* Marvell MDIO Ethernet Controller interface
2
3The Ethernet controllers of the Marvel Kirkwood, Dove, Orion5x,
4MV78xx0, Armada 370 and Armada XP have an identical unit that provides
5an interface with the MDIO bus. This driver handles this MDIO
6interface.
7
8Required properties:
9- compatible: "marvell,orion-mdio"
10- reg: address and length of the SMI register
11
12The child nodes of the MDIO driver are the individual PHY devices
13connected to this MDIO bus. They must have a "reg" property given the
14PHY address on the MDIO bus.
15
16Example at the SoC level:
17
18mdio {
19 #address-cells = <1>;
20 #size-cells = <0>;
21 compatible = "marvell,orion-mdio";
22 reg = <0xd0072004 0x4>;
23};
24
25And at the board level:
26
27mdio {
28 phy0: ethernet-phy@0 {
29 reg = <0>;
30 };
31
32 phy1: ethernet-phy@1 {
33 reg = <1>;
34 };
35}
diff --git a/Documentation/devicetree/bindings/net/mdio-gpio.txt b/Documentation/devicetree/bindings/net/mdio-gpio.txt
index bc9549529014..c79bab025369 100644
--- a/Documentation/devicetree/bindings/net/mdio-gpio.txt
+++ b/Documentation/devicetree/bindings/net/mdio-gpio.txt
@@ -8,9 +8,16 @@ gpios property as described in section VIII.1 in the following order:
8 8
9MDC, MDIO. 9MDC, MDIO.
10 10
11Note: Each gpio-mdio bus should have an alias correctly numbered in "aliases"
12node.
13
11Example: 14Example:
12 15
13mdio { 16aliases {
17 mdio-gpio0 = <&mdio0>;
18};
19
20mdio0: mdio {
14 compatible = "virtual,mdio-gpio"; 21 compatible = "virtual,mdio-gpio";
15 #address-cells = <1>; 22 #address-cells = <1>;
16 #size-cells = <0>; 23 #size-cells = <0>;
diff --git a/Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt
new file mode 100644
index 000000000000..3a268127b054
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt
@@ -0,0 +1,141 @@
1* Atmel AT91 Pinmux Controller
2
3The AT91 Pinmux Controler, enables the IC
4to share one PAD to several functional blocks. The sharing is done by
5multiplexing the PAD input/output signals. For each PAD there are up to
68 muxing options (called periph modes). Since different modules require
7different PAD settings (like pull up, keeper, etc) the contoller controls
8also the PAD settings parameters.
9
10Please refer to pinctrl-bindings.txt in this directory for details of the
11common pinctrl bindings used by client devices, including the meaning of the
12phrase "pin configuration node".
13
14Atmel AT91 pin configuration node is a node of a group of pins which can be
15used for a specific device or function. This node represents both mux and config
16of the pins in that group. The 'pins' selects the function mode(also named pin
17mode) this pin can work on and the 'config' configures various pad settings
18such as pull-up, multi drive, etc.
19
20Required properties for iomux controller:
21- compatible: "atmel,at91rm9200-pinctrl"
22- atmel,mux-mask: array of mask (periph per bank) to describe if a pin can be
23 configured in this periph mode. All the periph and bank need to be describe.
24
25How to create such array:
26
27Each column will represent the possible peripheral of the pinctrl
28Each line will represent a pio bank
29
30Take an example on the 9260
31Peripheral: 2 ( A and B)
32Bank: 3 (A, B and C)
33=>
34
35 /* A B */
36 0xffffffff 0xffc00c3b /* pioA */
37 0xffffffff 0x7fff3ccf /* pioB */
38 0xffffffff 0x007fffff /* pioC */
39
40For each peripheral/bank we will descibe in a u32 if a pin can can be
41configured in it by putting 1 to the pin bit (1 << pin)
42
43Let's take the pioA on peripheral B
44From the datasheet Table 10-2.
45Peripheral B
46PA0 MCDB0
47PA1 MCCDB
48PA2
49PA3 MCDB3
50PA4 MCDB2
51PA5 MCDB1
52PA6
53PA7
54PA8
55PA9
56PA10 ETX2
57PA11 ETX3
58PA12
59PA13
60PA14
61PA15
62PA16
63PA17
64PA18
65PA19
66PA20
67PA21
68PA22 ETXER
69PA23 ETX2
70PA24 ETX3
71PA25 ERX2
72PA26 ERX3
73PA27 ERXCK
74PA28 ECRS
75PA29 ECOL
76PA30 RXD4
77PA31 TXD4
78
79=> 0xffc00c3b
80
81Required properties for pin configuration node:
82- atmel,pins: 4 integers array, represents a group of pins mux and config
83 setting. The format is atmel,pins = <PIN_BANK PIN_BANK_NUM PERIPH CONFIG>.
84 The PERIPH 0 means gpio.
85
86Bits used for CONFIG:
87PULL_UP (1 << 0): indicate this pin need a pull up.
88MULTIDRIVE (1 << 1): indicate this pin need to be configured as multidrive.
89DEGLITCH (1 << 2): indicate this pin need deglitch.
90PULL_DOWN (1 << 3): indicate this pin need a pull down.
91DIS_SCHMIT (1 << 4): indicate this pin need to disable schmit trigger.
92DEBOUNCE (1 << 16): indicate this pin need debounce.
93DEBOUNCE_VAL (0x3fff << 17): debounce val.
94
95NOTE:
96Some requirements for using atmel,at91rm9200-pinctrl binding:
971. We have pin function node defined under at91 controller node to represent
98 what pinmux functions this SoC supports.
992. The driver can use the function node's name and pin configuration node's
100 name describe the pin function and group hierarchy.
101 For example, Linux at91 pinctrl driver takes the function node's name
102 as the function name and pin configuration node's name as group name to
103 create the map table.
1043. Each pin configuration node should have a phandle, devices can set pins
105 configurations by referring to the phandle of that pin configuration node.
1064. The gpio controller must be describe in the pinctrl simple-bus.
107
108Examples:
109
110pinctrl@fffff400 {
111 #address-cells = <1>;
112 #size-cells = <1>;
113 ranges;
114 compatible = "atmel,at91rm9200-pinctrl", "simple-bus";
115 reg = <0xfffff400 0x600>;
116
117 atmel,mux-mask = <
118 /* A B */
119 0xffffffff 0xffc00c3b /* pioA */
120 0xffffffff 0x7fff3ccf /* pioB */
121 0xffffffff 0x007fffff /* pioC */
122 >;
123
124 /* shared pinctrl settings */
125 dbgu {
126 pinctrl_dbgu: dbgu-0 {
127 atmel,pins =
128 <1 14 0x1 0x0 /* PB14 periph A */
129 1 15 0x1 0x1>; /* PB15 periph with pullup */
130 };
131 };
132};
133
134dbgu: serial@fffff200 {
135 compatible = "atmel,at91sam9260-usart";
136 reg = <0xfffff200 0x200>;
137 interrupts = <1 4 7>;
138 pinctrl-names = "default";
139 pinctrl-0 = <&pinctrl_dbgu>;
140 status = "disabled";
141};
diff --git a/Documentation/devicetree/bindings/pinctrl/marvell,kirkwood-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/marvell,kirkwood-pinctrl.txt
index 361bccb7ec89..95daf6335c37 100644
--- a/Documentation/devicetree/bindings/pinctrl/marvell,kirkwood-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/marvell,kirkwood-pinctrl.txt
@@ -7,8 +7,10 @@ Required properties:
7- compatible: "marvell,88f6180-pinctrl", 7- compatible: "marvell,88f6180-pinctrl",
8 "marvell,88f6190-pinctrl", "marvell,88f6192-pinctrl", 8 "marvell,88f6190-pinctrl", "marvell,88f6192-pinctrl",
9 "marvell,88f6281-pinctrl", "marvell,88f6282-pinctrl" 9 "marvell,88f6281-pinctrl", "marvell,88f6282-pinctrl"
10 "marvell,98dx4122-pinctrl"
10 11
11This driver supports all kirkwood variants, i.e. 88f6180, 88f619x, and 88f628x. 12This driver supports all kirkwood variants, i.e. 88f6180, 88f619x, and 88f628x.
13It also support the 88f6281-based variant in the 98dx412x Bobcat SoCs.
12 14
13Available mpp pins/groups and functions: 15Available mpp pins/groups and functions:
14Note: brackets (x) are not part of the mpp name for marvell,function and given 16Note: brackets (x) are not part of the mpp name for marvell,function and given
@@ -277,3 +279,40 @@ mpp46 46 gpio, ts(mp10), tdm(fs), lcd(hsync)
277mpp47 47 gpio, ts(mp11), tdm(drx), lcd(vsync) 279mpp47 47 gpio, ts(mp11), tdm(drx), lcd(vsync)
278mpp48 48 gpio, ts(mp12), tdm(dtx), lcd(d16) 280mpp48 48 gpio, ts(mp12), tdm(dtx), lcd(d16)
279mpp49 49 gpo, tdm(rx0ql), pex(clkreq), lcd(d17) 281mpp49 49 gpo, tdm(rx0ql), pex(clkreq), lcd(d17)
282
283* Marvell Bobcat 98dx4122
284
285name pins functions
286================================================================================
287mpp0 0 gpio, nand(io2), spi(cs)
288mpp1 1 gpo, nand(io3), spi(mosi)
289mpp2 2 gpo, nand(io4), spi(sck)
290mpp3 3 gpo, nand(io5), spi(miso)
291mpp4 4 gpio, nand(io6), uart0(rxd)
292mpp5 5 gpo, nand(io7), uart0(txd)
293mpp6 6 sysrst(out), spi(mosi)
294mpp7 7 gpo, pex(rsto), spi(cs)
295mpp8 8 gpio, twsi0(sda), uart0(rts), uart1(rts)
296mpp9 9 gpio, twsi(sck), uart0(cts), uart1(cts)
297mpp10 10 gpo, spi(sck), uart0(txd)
298mpp11 11 gpio, spi(miso), uart0(rxd)
299mpp13 13 gpio, uart1(txd)
300mpp14 14 gpio, uart1(rxd)
301mpp15 15 gpio, uart0(rts)
302mpp16 16 gpio, uart0(cts)
303mpp18 18 gpo, nand(io0)
304mpp19 19 gpo, nand(io1)
305mpp34 34 gpio
306mpp35 35 gpio
307mpp36 36 gpio
308mpp37 37 gpio
309mpp38 38 gpio
310mpp39 39 gpio
311mpp40 40 gpio
312mpp41 41 gpio
313mpp42 42 gpio
314mpp43 43 gpio
315mpp44 44 gpio
316mpp45 45 gpio
317mpp49 49 gpio
318
diff --git a/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt
index 03dee50532f5..e97a27856b21 100644
--- a/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt
@@ -8,13 +8,20 @@ on-chip controllers onto these pads.
8Required Properties: 8Required Properties:
9- compatible: should be one of the following. 9- compatible: should be one of the following.
10 - "samsung,pinctrl-exynos4210": for Exynos4210 compatible pin-controller. 10 - "samsung,pinctrl-exynos4210": for Exynos4210 compatible pin-controller.
11 - "samsung,pinctrl-exynos4x12": for Exynos4x12 compatible pin-controller.
11 - "samsung,pinctrl-exynos5250": for Exynos5250 compatible pin-controller. 12 - "samsung,pinctrl-exynos5250": for Exynos5250 compatible pin-controller.
12 13
13- reg: Base address of the pin controller hardware module and length of 14- reg: Base address of the pin controller hardware module and length of
14 the address space it occupies. 15 the address space it occupies.
15 16
16- interrupts: interrupt specifier for the controller. The format and value of 17- Pin banks as child nodes: Pin banks of the controller are represented by child
17 the interrupt specifier depends on the interrupt parent for the controller. 18 nodes of the controller node. Bank name is taken from name of the node. Each
19 bank node must contain following properties:
20
21 - gpio-controller: identifies the node as a gpio controller and pin bank.
22 - #gpio-cells: number of cells in GPIO specifier. Since the generic GPIO
23 binding is used, the amount of cells must be specified as 2. See generic
24 GPIO binding documentation for description of particular cells.
18 25
19- Pin mux/config groups as child nodes: The pin mux (selecting pin function 26- Pin mux/config groups as child nodes: The pin mux (selecting pin function
20 mode) and pin config (pull up/down, driver strength) settings are represented 27 mode) and pin config (pull up/down, driver strength) settings are represented
@@ -72,16 +79,24 @@ used as system wakeup events.
72A. External GPIO Interrupts: For supporting external gpio interrupts, the 79A. External GPIO Interrupts: For supporting external gpio interrupts, the
73 following properties should be specified in the pin-controller device node. 80 following properties should be specified in the pin-controller device node.
74 81
75- interrupt-controller: identifies the controller node as interrupt-parent. 82 - interrupt-parent: phandle of the interrupt parent to which the external
76- #interrupt-cells: the value of this property should be 2. 83 GPIO interrupts are forwarded to.
77 - First Cell: represents the external gpio interrupt number local to the 84 - interrupts: interrupt specifier for the controller. The format and value of
78 external gpio interrupt space of the controller. 85 the interrupt specifier depends on the interrupt parent for the controller.
79 - Second Cell: flags to identify the type of the interrupt 86
80 - 1 = rising edge triggered 87 In addition, following properties must be present in node of every bank
81 - 2 = falling edge triggered 88 of pins supporting GPIO interrupts:
82 - 3 = rising and falling edge triggered 89
83 - 4 = high level triggered 90 - interrupt-controller: identifies the controller node as interrupt-parent.
84 - 8 = low level triggered 91 - #interrupt-cells: the value of this property should be 2.
92 - First Cell: represents the external gpio interrupt number local to the
93 external gpio interrupt space of the controller.
94 - Second Cell: flags to identify the type of the interrupt
95 - 1 = rising edge triggered
96 - 2 = falling edge triggered
97 - 3 = rising and falling edge triggered
98 - 4 = high level triggered
99 - 8 = low level triggered
85 100
86B. External Wakeup Interrupts: For supporting external wakeup interrupts, a 101B. External Wakeup Interrupts: For supporting external wakeup interrupts, a
87 child node representing the external wakeup interrupt controller should be 102 child node representing the external wakeup interrupt controller should be
@@ -94,6 +109,11 @@ B. External Wakeup Interrupts: For supporting external wakeup interrupts, a
94 found on Samsung Exynos4210 SoC. 109 found on Samsung Exynos4210 SoC.
95 - interrupt-parent: phandle of the interrupt parent to which the external 110 - interrupt-parent: phandle of the interrupt parent to which the external
96 wakeup interrupts are forwarded to. 111 wakeup interrupts are forwarded to.
112 - interrupts: interrupt used by multiplexed wakeup interrupts.
113
114 In addition, following properties must be present in node of every bank
115 of pins supporting wake-up interrupts:
116
97 - interrupt-controller: identifies the node as interrupt-parent. 117 - interrupt-controller: identifies the node as interrupt-parent.
98 - #interrupt-cells: the value of this property should be 2 118 - #interrupt-cells: the value of this property should be 2
99 - First Cell: represents the external wakeup interrupt number local to 119 - First Cell: represents the external wakeup interrupt number local to
@@ -105,11 +125,63 @@ B. External Wakeup Interrupts: For supporting external wakeup interrupts, a
105 - 4 = high level triggered 125 - 4 = high level triggered
106 - 8 = low level triggered 126 - 8 = low level triggered
107 127
128 Node of every bank of pins supporting direct wake-up interrupts (without
129 multiplexing) must contain following properties:
130
131 - interrupt-parent: phandle of the interrupt parent to which the external
132 wakeup interrupts are forwarded to.
133 - interrupts: interrupts of the interrupt parent which are used for external
134 wakeup interrupts from pins of the bank, must contain interrupts for all
135 pins of the bank.
136
108Aliases: 137Aliases:
109 138
110All the pin controller nodes should be represented in the aliases node using 139All the pin controller nodes should be represented in the aliases node using
111the following format 'pinctrl{n}' where n is a unique number for the alias. 140the following format 'pinctrl{n}' where n is a unique number for the alias.
112 141
142Example: A pin-controller node with pin banks:
143
144 pinctrl_0: pinctrl@11400000 {
145 compatible = "samsung,pinctrl-exynos4210";
146 reg = <0x11400000 0x1000>;
147 interrupts = <0 47 0>;
148
149 /* ... */
150
151 /* Pin bank without external interrupts */
152 gpy0: gpy0 {
153 gpio-controller;
154 #gpio-cells = <2>;
155 };
156
157 /* ... */
158
159 /* Pin bank with external GPIO or muxed wake-up interrupts */
160 gpj0: gpj0 {
161 gpio-controller;
162 #gpio-cells = <2>;
163
164 interrupt-controller;
165 #interrupt-cells = <2>;
166 };
167
168 /* ... */
169
170 /* Pin bank with external direct wake-up interrupts */
171 gpx0: gpx0 {
172 gpio-controller;
173 #gpio-cells = <2>;
174
175 interrupt-controller;
176 interrupt-parent = <&gic>;
177 interrupts = <0 16 0>, <0 17 0>, <0 18 0>, <0 19 0>,
178 <0 20 0>, <0 21 0>, <0 22 0>, <0 23 0>;
179 #interrupt-cells = <2>;
180 };
181
182 /* ... */
183 };
184
113Example 1: A pin-controller node with pin groups. 185Example 1: A pin-controller node with pin groups.
114 186
115 pinctrl_0: pinctrl@11400000 { 187 pinctrl_0: pinctrl@11400000 {
@@ -117,6 +189,8 @@ Example 1: A pin-controller node with pin groups.
117 reg = <0x11400000 0x1000>; 189 reg = <0x11400000 0x1000>;
118 interrupts = <0 47 0>; 190 interrupts = <0 47 0>;
119 191
192 /* ... */
193
120 uart0_data: uart0-data { 194 uart0_data: uart0-data {
121 samsung,pins = "gpa0-0", "gpa0-1"; 195 samsung,pins = "gpa0-0", "gpa0-1";
122 samsung,pin-function = <2>; 196 samsung,pin-function = <2>;
@@ -158,20 +232,14 @@ Example 2: A pin-controller node with external wakeup interrupt controller node.
158 pinctrl_1: pinctrl@11000000 { 232 pinctrl_1: pinctrl@11000000 {
159 compatible = "samsung,pinctrl-exynos4210"; 233 compatible = "samsung,pinctrl-exynos4210";
160 reg = <0x11000000 0x1000>; 234 reg = <0x11000000 0x1000>;
161 interrupts = <0 46 0>; 235 interrupts = <0 46 0>
162 interrupt-controller;
163 #interrupt-cells = <2>;
164 236
165 wakup_eint: wakeup-interrupt-controller { 237 /* ... */
238
239 wakeup-interrupt-controller {
166 compatible = "samsung,exynos4210-wakeup-eint"; 240 compatible = "samsung,exynos4210-wakeup-eint";
167 interrupt-parent = <&gic>; 241 interrupt-parent = <&gic>;
168 interrupt-controller; 242 interrupts = <0 32 0>;
169 #interrupt-cells = <2>;
170 interrupts = <0 16 0>, <0 17 0>, <0 18 0>, <0 19 0>,
171 <0 20 0>, <0 21 0>, <0 22 0>, <0 23 0>,
172 <0 24 0>, <0 25 0>, <0 26 0>, <0 27 0>,
173 <0 28 0>, <0 29 0>, <0 30 0>, <0 31 0>,
174 <0 32 0>;
175 }; 243 };
176 }; 244 };
177 245
@@ -190,7 +258,8 @@ Example 4: Set up the default pin state for uart controller.
190 258
191 static int s3c24xx_serial_probe(struct platform_device *pdev) { 259 static int s3c24xx_serial_probe(struct platform_device *pdev) {
192 struct pinctrl *pinctrl; 260 struct pinctrl *pinctrl;
193 ... 261
194 ... 262 /* ... */
263
195 pinctrl = devm_pinctrl_get_select_default(&pdev->dev); 264 pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
196 } 265 }
diff --git a/Documentation/devicetree/bindings/power_supply/ab8500/btemp.txt b/Documentation/devicetree/bindings/power_supply/ab8500/btemp.txt
new file mode 100644
index 000000000000..0ba1bcc7f33a
--- /dev/null
+++ b/Documentation/devicetree/bindings/power_supply/ab8500/btemp.txt
@@ -0,0 +1,16 @@
1=== AB8500 Battery Temperature Monitor Driver ===
2
3The properties below describes the node for btemp driver.
4
5Required Properties:
6- compatible = Shall be: "stericsson,ab8500-btemp"
7- battery = Shall be battery specific information
8
9 Example:
10 ab8500_btemp {
11 compatible = "stericsson,ab8500-btemp";
12 battery = <&ab8500_battery>;
13 };
14
15For information on battery specific node, Ref:
16Documentation/devicetree/bindings/power_supply/ab8500/fg.txt
diff --git a/Documentation/devicetree/bindings/power_supply/ab8500/chargalg.txt b/Documentation/devicetree/bindings/power_supply/ab8500/chargalg.txt
new file mode 100644
index 000000000000..ef5328371122
--- /dev/null
+++ b/Documentation/devicetree/bindings/power_supply/ab8500/chargalg.txt
@@ -0,0 +1,16 @@
1=== AB8500 Charging Algorithm Driver ===
2
3The properties below describes the node for chargalg driver.
4
5Required Properties:
6- compatible = Shall be: "stericsson,ab8500-chargalg"
7- battery = Shall be battery specific information
8
9Example:
10ab8500_chargalg {
11 compatible = "stericsson,ab8500-chargalg";
12 battery = <&ab8500_battery>;
13};
14
15For information on battery specific node, Ref:
16Documentation/devicetree/bindings/power_supply/ab8500/fg.txt
diff --git a/Documentation/devicetree/bindings/power_supply/ab8500/charger.txt b/Documentation/devicetree/bindings/power_supply/ab8500/charger.txt
new file mode 100644
index 000000000000..6bdbb08ea9e0
--- /dev/null
+++ b/Documentation/devicetree/bindings/power_supply/ab8500/charger.txt
@@ -0,0 +1,25 @@
1=== AB8500 Charger Driver ===
2
3Required Properties:
4- compatible = Shall be "stericsson,ab8500-charger"
5- battery = Shall be battery specific information
6 Example:
7 ab8500_charger {
8 compatible = "stericsson,ab8500-charger";
9 battery = <&ab8500_battery>;
10 };
11
12- vddadc-supply: Supply for USB and Main charger
13 Example:
14 ab8500-charger {
15 vddadc-supply = <&ab8500_ldo_tvout_reg>;
16 }
17- autopower_cfg:
18 Boolean value depicting the presence of 'automatic poweron after powerloss'
19 Example:
20 ab8500-charger {
21 autopower_cfg;
22 };
23
24For information on battery specific node, Ref:
25Documentation/devicetree/bindings/power_supply/ab8500/fg.txt
diff --git a/Documentation/devicetree/bindings/power_supply/ab8500/fg.txt b/Documentation/devicetree/bindings/power_supply/ab8500/fg.txt
new file mode 100644
index 000000000000..ccafcb9112fb
--- /dev/null
+++ b/Documentation/devicetree/bindings/power_supply/ab8500/fg.txt
@@ -0,0 +1,58 @@
1=== AB8500 Fuel Gauge Driver ===
2
3AB8500 is a mixed signal multimedia and power management
4device comprising: power and energy-management-module,
5wall-charger, usb-charger, audio codec, general purpose adc,
6tvout, clock management and sim card interface.
7
8Fuelgauge support is part of energy-management-modules, other
9components of this module are:
10main-charger, usb-combo-charger and battery-temperature-monitoring.
11
12The properties below describes the node for fuelgauge driver.
13
14Required Properties:
15- compatible = This shall be: "stericsson,ab8500-fg"
16- battery = Shall be battery specific information
17 Example:
18 ab8500_fg {
19 compatible = "stericsson,ab8500-fg";
20 battery = <&ab8500_battery>;
21 };
22
23dependent node:
24 ab8500_battery: ab8500_battery {
25 };
26 This node will provide information on 'thermistor interface' and
27 'battery technology type' used.
28
29Properties of this node are:
30thermistor-on-batctrl:
31 A boolean value indicating thermistor interface to battery
32
33 Note:
34 'btemp' and 'batctrl' are the pins interfaced for battery temperature
35 measurement, 'btemp' signal is used when NTC(negative temperature
36 coefficient) resister is interfaced external to battery whereas
37 'batctrl' pin is used when NTC resister is internal to battery.
38
39 Example:
40 ab8500_battery: ab8500_battery {
41 thermistor-on-batctrl;
42 };
43 indicates: NTC resister is internal to battery, 'batctrl' is used
44 for thermal measurement.
45
46 The absence of property 'thermal-on-batctrl' indicates
47 NTC resister is external to battery and 'btemp' signal is used
48 for thermal measurement.
49
50battery-type:
51 This shall be the battery manufacturing technology type,
52 allowed types are:
53 "UNKNOWN" "NiMH" "LION" "LIPO" "LiFe" "NiCd" "LiMn"
54 Example:
55 ab8500_battery: ab8500_battery {
56 stericsson,battery-type = "LIPO";
57 }
58
diff --git a/Documentation/devicetree/bindings/powerpc/fsl/raideng.txt b/Documentation/devicetree/bindings/powerpc/fsl/raideng.txt
new file mode 100644
index 000000000000..4ad29b9ac2ac
--- /dev/null
+++ b/Documentation/devicetree/bindings/powerpc/fsl/raideng.txt
@@ -0,0 +1,81 @@
1* Freescale 85xx RAID Engine nodes
2
3RAID Engine nodes are defined to describe on-chip RAID accelerators. Each RAID
4Engine should have a separate node.
5
6Supported chips:
7P5020, P5040
8
9Required properties:
10
11- compatible: Should contain "fsl,raideng-v1.0" as the value
12 This identifies RAID Engine block. 1 in 1.0 represents
13 major number whereas 0 represents minor number. The
14 version matches the hardware IP version.
15- reg: offset and length of the register set for the device
16- ranges: standard ranges property specifying the translation
17 between child address space and parent address space
18
19Example:
20 /* P5020 */
21 raideng: raideng@320000 {
22 compatible = "fsl,raideng-v1.0";
23 #address-cells = <1>;
24 #size-cells = <1>;
25 reg = <0x320000 0x10000>;
26 ranges = <0 0x320000 0x10000>;
27 };
28
29
30There must be a sub-node for each job queue present in RAID Engine
31This node must be a sub-node of the main RAID Engine node
32
33- compatible: Should contain "fsl,raideng-v1.0-job-queue" as the value
34 This identifies the job queue interface
35- reg: offset and length of the register set for job queue
36- ranges: standard ranges property specifying the translation
37 between child address space and parent address space
38
39Example:
40 /* P5020 */
41 raideng_jq0@1000 {
42 compatible = "fsl,raideng-v1.0-job-queue";
43 reg = <0x1000 0x1000>;
44 ranges = <0x0 0x1000 0x1000>;
45 };
46
47
48There must be a sub-node for each job ring present in RAID Engine
49This node must be a sub-node of job queue node
50
51- compatible: Must contain "fsl,raideng-v1.0-job-ring" as the value
52 This identifies job ring. Should contain either
53 "fsl,raideng-v1.0-hp-ring" or "fsl,raideng-v1.0-lp-ring"
54 depending upon whether ring has high or low priority
55- reg: offset and length of the register set for job ring
56- interrupts: interrupt mapping for job ring IRQ
57
58Optional property:
59
60- fsl,liodn: Specifies the LIODN to be used for Job Ring. This
61 property is normally set by firmware. Value
62 is of 12-bits which is the LIODN number for this JR.
63 This property is used by the IOMMU (PAMU) to distinquish
64 transactions from this JR and than be able to do address
65 translation & protection accordingly.
66
67Example:
68 /* P5020 */
69 raideng_jq0@1000 {
70 compatible = "fsl,raideng-v1.0-job-queue";
71 reg = <0x1000 0x1000>;
72 ranges = <0x0 0x1000 0x1000>;
73
74 raideng_jr0: jr@0 {
75 compatible = "fsl,raideng-v1.0-job-ring", "fsl,raideng-v1.0-hp-ring";
76 reg = <0x0 0x400>;
77 interrupts = <139 2 0 0>;
78 interrupt-parent = <&mpic>;
79 fsl,liodn = <0x41>;
80 };
81 };
diff --git a/Documentation/devicetree/bindings/regulator/gpio-regulator.txt b/Documentation/devicetree/bindings/regulator/gpio-regulator.txt
new file mode 100644
index 000000000000..63c659800c03
--- /dev/null
+++ b/Documentation/devicetree/bindings/regulator/gpio-regulator.txt
@@ -0,0 +1,37 @@
1GPIO controlled regulators
2
3Required properties:
4- compatible : Must be "regulator-gpio".
5- states : Selection of available voltages and GPIO configs.
6 if there are no states, then use a fixed regulator
7
8Optional properties:
9- enable-gpio : GPIO to use to enable/disable the regulator.
10- gpios : GPIO group used to control voltage.
11- startup-delay-us : Startup time in microseconds.
12- enable-active-high : Polarity of GPIO is active high (default is low).
13
14Any property defined as part of the core regulator binding defined in
15regulator.txt can also be used.
16
17Example:
18
19 mmciv: gpio-regulator {
20 compatible = "regulator-gpio";
21
22 regulator-name = "mmci-gpio-supply";
23 regulator-min-microvolt = <1800000>;
24 regulator-max-microvolt = <2600000>;
25 regulator-boot-on;
26
27 enable-gpio = <&gpio0 23 0x4>;
28 gpios = <&gpio0 24 0x4
29 &gpio0 25 0x4>;
30 states = <1800000 0x3
31 2200000 0x2
32 2600000 0x1
33 2900000 0x0>;
34
35 startup-delay-us = <100000>;
36 enable-active-high;
37 };
diff --git a/Documentation/devicetree/bindings/regulator/max8925-regulator.txt b/Documentation/devicetree/bindings/regulator/max8925-regulator.txt
new file mode 100644
index 000000000000..0057695aae8f
--- /dev/null
+++ b/Documentation/devicetree/bindings/regulator/max8925-regulator.txt
@@ -0,0 +1,40 @@
1Max8925 Voltage regulators
2
3Required nodes:
4-nodes:
5 - SDV1 for SDV SDV1
6 - SDV2 for SDV SDV2
7 - SDV3 for SDV SDV3
8 - LDO1 for LDO LDO1
9 - LDO2 for LDO LDO2
10 - LDO3 for LDO LDO3
11 - LDO4 for LDO LDO4
12 - LDO5 for LDO LDO5
13 - LDO6 for LDO LDO6
14 - LDO7 for LDO LDO7
15 - LDO8 for LDO LDO8
16 - LDO9 for LDO LDO9
17 - LDO10 for LDO LDO10
18 - LDO11 for LDO LDO11
19 - LDO12 for LDO LDO12
20 - LDO13 for LDO LDO13
21 - LDO14 for LDO LDO14
22 - LDO15 for LDO LDO15
23 - LDO16 for LDO LDO16
24 - LDO17 for LDO LDO17
25 - LDO18 for LDO LDO18
26 - LDO19 for LDO LDO19
27 - LDO20 for LDO LDO20
28
29Optional properties:
30- Any optional property defined in bindings/regulator/regulator.txt
31
32Example:
33
34 SDV1 {
35 regulator-min-microvolt = <637500>;
36 regulator-max-microvolt = <1425000>;
37 regulator-boot-on;
38 regulator-always-on;
39 };
40
diff --git a/Documentation/devicetree/bindings/regulator/max8997-regulator.txt b/Documentation/devicetree/bindings/regulator/max8997-regulator.txt
new file mode 100644
index 000000000000..9fd69a18b0ba
--- /dev/null
+++ b/Documentation/devicetree/bindings/regulator/max8997-regulator.txt
@@ -0,0 +1,146 @@
1* Maxim MAX8997 Voltage and Current Regulator
2
3The Maxim MAX8997 is a multi-function device which includes volatage and
4current regulators, rtc, charger controller and other sub-blocks. It is
5interfaced to the host controller using a i2c interface. Each sub-block is
6addressed by the host system using different i2c slave address. This document
7describes the bindings for 'pmic' sub-block of max8997.
8
9Required properties:
10- compatible: Should be "maxim,max8997-pmic".
11- reg: Specifies the i2c slave address of the pmic block. It should be 0x66.
12
13- max8997,pmic-buck1-dvs-voltage: A set of 8 voltage values in micro-volt (uV)
14 units for buck1 when changing voltage using gpio dvs. Refer to [1] below
15 for additional information.
16
17- max8997,pmic-buck2-dvs-voltage: A set of 8 voltage values in micro-volt (uV)
18 units for buck2 when changing voltage using gpio dvs. Refer to [1] below
19 for additional information.
20
21- max8997,pmic-buck5-dvs-voltage: A set of 8 voltage values in micro-volt (uV)
22 units for buck5 when changing voltage using gpio dvs. Refer to [1] below
23 for additional information.
24
25[1] If none of the 'max8997,pmic-buck[1/2/5]-uses-gpio-dvs' optional
26 property is specified, the 'max8997,pmic-buck[1/2/5]-dvs-voltage'
27 property should specify atleast one voltage level (which would be a
28 safe operating voltage).
29
30 If either of the 'max8997,pmic-buck[1/2/5]-uses-gpio-dvs' optional
31 property is specified, then all the eigth voltage values for the
32 'max8997,pmic-buck[1/2/5]-dvs-voltage' should be specified.
33
34Optional properties:
35- interrupt-parent: Specifies the phandle of the interrupt controller to which
36 the interrupts from max8997 are delivered to.
37- interrupts: Interrupt specifiers for two interrupt sources.
38 - First interrupt specifier is for 'irq1' interrupt.
39 - Second interrupt specifier is for 'alert' interrupt.
40- max8997,pmic-buck1-uses-gpio-dvs: 'buck1' can be controlled by gpio dvs.
41- max8997,pmic-buck2-uses-gpio-dvs: 'buck2' can be controlled by gpio dvs.
42- max8997,pmic-buck5-uses-gpio-dvs: 'buck5' can be controlled by gpio dvs.
43
44Additional properties required if either of the optional properties are used:
45- max8997,pmic-ignore-gpiodvs-side-effect: When GPIO-DVS mode is used for
46 multiple bucks, changing the voltage value of one of the bucks may affect
47 that of another buck, which is the side effect of the change (set_voltage).
48 Use this property to ignore such side effects and change the voltage.
49
50- max8997,pmic-buck125-default-dvs-idx: Default voltage setting selected from
51 the possible 8 options selectable by the dvs gpios. The value of this
52 property should be between 0 and 7. If not specified or if out of range, the
53 default value of this property is set to 0.
54
55- max8997,pmic-buck125-dvs-gpios: GPIO specifiers for three host gpio's used
56 for dvs. The format of the gpio specifier depends in the gpio controller.
57
58Regulators: The regulators of max8997 that have to be instantiated should be
59included in a sub-node named 'regulators'. Regulator nodes included in this
60sub-node should be of the format as listed below.
61
62 regulator_name {
63 standard regulator bindings here
64 };
65
66The following are the names of the regulators that the max8997 pmic block
67supports. Note: The 'n' in LDOn and BUCKn represents the LDO or BUCK number
68as per the datasheet of max8997.
69
70 - LDOn
71 - valid values for n are 1 to 18 and 21
72 - Example: LDO0, LD01, LDO2, LDO21
73 - BUCKn
74 - valid values for n are 1 to 7.
75 - Example: BUCK1, BUCK2, BUCK3, BUCK7
76
77 - ENVICHG: Battery Charging Current Monitor Output. This is a fixed
78 voltage type regulator
79
80 - ESAFEOUT1: (ldo19)
81 - ESAFEOUT2: (ld020)
82
83 - CHARGER_CV: main battery charger voltage control
84 - CHARGER: main battery charger current control
85 - CHARGER_TOPOFF: end of charge current threshold level
86
87The bindings inside the regulator nodes use the standard regulator bindings
88which are documented elsewhere.
89
90Example:
91
92 max8997_pmic@66 {
93 compatible = "maxim,max8997-pmic";
94 interrupt-parent = <&wakeup_eint>;
95 reg = <0x66>;
96 interrupts = <4 0>, <3 0>;
97
98 max8997,pmic-buck1-uses-gpio-dvs;
99 max8997,pmic-buck2-uses-gpio-dvs;
100 max8997,pmic-buck5-uses-gpio-dvs;
101
102 max8997,pmic-ignore-gpiodvs-side-effect;
103 max8997,pmic-buck125-default-dvs-idx = <0>;
104
105 max8997,pmic-buck125-dvs-gpios = <&gpx0 0 1 0 0>, /* SET1 */
106 <&gpx0 1 1 0 0>, /* SET2 */
107 <&gpx0 2 1 0 0>; /* SET3 */
108
109 max8997,pmic-buck1-dvs-voltage = <1350000>, <1300000>,
110 <1250000>, <1200000>,
111 <1150000>, <1100000>,
112 <1000000>, <950000>;
113
114 max8997,pmic-buck2-dvs-voltage = <1100000>, <1100000>,
115 <1100000>, <1100000>,
116 <1000000>, <1000000>,
117 <1000000>, <1000000>;
118
119 max8997,pmic-buck5-dvs-voltage = <1200000>, <1200000>,
120 <1200000>, <1200000>,
121 <1200000>, <1200000>,
122 <1200000>, <1200000>;
123
124 regulators {
125 ldo1_reg: LDO1 {
126 regulator-name = "VDD_ABB_3.3V";
127 regulator-min-microvolt = <3300000>;
128 regulator-max-microvolt = <3300000>;
129 };
130
131 ldo2_reg: LDO2 {
132 regulator-name = "VDD_ALIVE_1.1V";
133 regulator-min-microvolt = <1100000>;
134 regulator-max-microvolt = <1100000>;
135 regulator-always-on;
136 };
137
138 buck1_reg: BUCK1 {
139 regulator-name = "VDD_ARM_1.2V";
140 regulator-min-microvolt = <950000>;
141 regulator-max-microvolt = <1350000>;
142 regulator-always-on;
143 regulator-boot-on;
144 };
145 };
146 };
diff --git a/Documentation/devicetree/bindings/regulator/tps65217.txt b/Documentation/devicetree/bindings/regulator/tps65217.txt
index d316fb895daf..4f05d208c95c 100644
--- a/Documentation/devicetree/bindings/regulator/tps65217.txt
+++ b/Documentation/devicetree/bindings/regulator/tps65217.txt
@@ -11,6 +11,9 @@ Required properties:
11 using the standard binding for regulators found at 11 using the standard binding for regulators found at
12 Documentation/devicetree/bindings/regulator/regulator.txt. 12 Documentation/devicetree/bindings/regulator/regulator.txt.
13 13
14Optional properties:
15- ti,pmic-shutdown-controller: Telling the PMIC to shutdown on PWR_EN toggle.
16
14 The valid names for regulators are: 17 The valid names for regulators are:
15 tps65217: dcdc1, dcdc2, dcdc3, ldo1, ldo2, ldo3 and ldo4 18 tps65217: dcdc1, dcdc2, dcdc3, ldo1, ldo2, ldo3 and ldo4
16 19
@@ -20,6 +23,7 @@ Example:
20 23
21 tps: tps@24 { 24 tps: tps@24 {
22 compatible = "ti,tps65217"; 25 compatible = "ti,tps65217";
26 ti,pmic-shutdown-controller;
23 27
24 regulators { 28 regulators {
25 dcdc1_reg: dcdc1 { 29 dcdc1_reg: dcdc1 {
diff --git a/Documentation/devicetree/bindings/regulator/vexpress.txt b/Documentation/devicetree/bindings/regulator/vexpress.txt
new file mode 100644
index 000000000000..d775f72487aa
--- /dev/null
+++ b/Documentation/devicetree/bindings/regulator/vexpress.txt
@@ -0,0 +1,32 @@
1Versatile Express voltage regulators
2------------------------------------
3
4Requires node properties:
5- "compatible" value: "arm,vexpress-volt"
6- "arm,vexpress-sysreg,func" when controlled via vexpress-sysreg
7 (see Documentation/devicetree/bindings/arm/vexpress-sysreg.txt
8 for more details)
9
10Required regulator properties:
11- "regulator-name"
12- "regulator-always-on"
13
14Optional regulator properties:
15- "regulator-min-microvolt"
16- "regulator-max-microvolt"
17
18See Documentation/devicetree/bindings/regulator/regulator.txt
19for more details about the regulator properties.
20
21When no "regulator-[min|max]-microvolt" properties are defined,
22the device is treated as fixed (or rather "read-only") regulator.
23
24Example:
25 volt@0 {
26 compatible = "arm,vexpress-volt";
27 arm,vexpress-sysreg,func = <2 0>;
28 regulator-name = "Cores";
29 regulator-min-microvolt = <800000>;
30 regulator-max-microvolt = <1050000>;
31 regulator-always-on;
32 };
diff --git a/Documentation/devicetree/bindings/rtc/imxdi-rtc.txt b/Documentation/devicetree/bindings/rtc/imxdi-rtc.txt
new file mode 100644
index 000000000000..c9d80d7da141
--- /dev/null
+++ b/Documentation/devicetree/bindings/rtc/imxdi-rtc.txt
@@ -0,0 +1,17 @@
1* i.MX25 Real Time Clock controller
2
3This binding supports the following chips: i.MX25, i.MX53
4
5Required properties:
6- compatible: should be: "fsl,imx25-rtc"
7- reg: physical base address of the controller and length of memory mapped
8 region.
9- interrupts: rtc alarm interrupt
10
11Example:
12
13rtc@80056000 {
14 compatible = "fsl,imx53-rtc", "fsl,imx25-rtc";
15 reg = <0x80056000 2000>;
16 interrupts = <29>;
17};
diff --git a/Documentation/devicetree/bindings/rtc/nvidia,tegra20-rtc.txt b/Documentation/devicetree/bindings/rtc/nvidia,tegra20-rtc.txt
new file mode 100644
index 000000000000..93f45e9dce7c
--- /dev/null
+++ b/Documentation/devicetree/bindings/rtc/nvidia,tegra20-rtc.txt
@@ -0,0 +1,19 @@
1NVIDIA Tegra20 real-time clock
2
3The Tegra RTC maintains seconds and milliseconds counters, and five alarm
4registers. The alarms and other interrupts may wake the system from low-power
5state.
6
7Required properties:
8
9- compatible : should be "nvidia,tegra20-rtc".
10- reg : Specifies base physical address and size of the registers.
11- interrupts : A single interrupt specifier.
12
13Example:
14
15timer {
16 compatible = "nvidia,tegra20-rtc";
17 reg = <0x7000e000 0x100>;
18 interrupts = <0 2 0x04>;
19};
diff --git a/Documentation/devicetree/bindings/rtc/orion-rtc.txt b/Documentation/devicetree/bindings/rtc/orion-rtc.txt
new file mode 100644
index 000000000000..3bf63ffa5160
--- /dev/null
+++ b/Documentation/devicetree/bindings/rtc/orion-rtc.txt
@@ -0,0 +1,18 @@
1* Mvebu Real Time Clock
2
3RTC controller for the Kirkwood, the Dove, the Armada 370 and the
4Armada XP SoCs
5
6Required properties:
7- compatible : Should be "marvell,orion-rtc"
8- reg: physical base address of the controller and length of memory mapped
9 region.
10- interrupts: IRQ line for the RTC.
11
12Example:
13
14rtc@10300 {
15 compatible = "marvell,orion-rtc";
16 reg = <0xd0010300 0x20>;
17 interrupts = <50>;
18};
diff --git a/Documentation/devicetree/bindings/rtc/rtc-omap.txt b/Documentation/devicetree/bindings/rtc/rtc-omap.txt
new file mode 100644
index 000000000000..b47aa415c820
--- /dev/null
+++ b/Documentation/devicetree/bindings/rtc/rtc-omap.txt
@@ -0,0 +1,17 @@
1TI Real Time Clock
2
3Required properties:
4- compatible: "ti,da830-rtc"
5- reg: Address range of rtc register set
6- interrupts: rtc timer, alarm interrupts in order
7- interrupt-parent: phandle for the interrupt controller
8
9Example:
10
11rtc@1c23000 {
12 compatible = "ti,da830-rtc";
13 reg = <0x23000 0x1000>;
14 interrupts = <19
15 19>;
16 interrupt-parent = <&intc>;
17};
diff --git a/Documentation/devicetree/bindings/sound/ak4104.txt b/Documentation/devicetree/bindings/sound/ak4104.txt
new file mode 100644
index 000000000000..b902ee39cf89
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/ak4104.txt
@@ -0,0 +1,22 @@
1AK4104 S/PDIF transmitter
2
3This device supports SPI mode only.
4
5Required properties:
6
7 - compatible : "asahi-kasei,ak4104"
8
9 - reg : The chip select number on the SPI bus
10
11Optional properties:
12
13 - reset-gpio : a GPIO spec for the reset pin. If specified, it will be
14 deasserted before communication to the device starts.
15
16Example:
17
18spdif: ak4104@0 {
19 compatible = "asahi-kasei,ak4104";
20 reg = <0>;
21 spi-max-frequency = <5000000>;
22};
diff --git a/Documentation/devicetree/bindings/sound/atmel-at91sam9g20ek-wm8731-audio.txt b/Documentation/devicetree/bindings/sound/atmel-at91sam9g20ek-wm8731-audio.txt
new file mode 100644
index 000000000000..9c5a9947b64d
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/atmel-at91sam9g20ek-wm8731-audio.txt
@@ -0,0 +1,26 @@
1* Atmel at91sam9g20ek wm8731 audio complex
2
3Required properties:
4 - compatible: "atmel,at91sam9g20ek-wm8731-audio"
5 - atmel,model: The user-visible name of this sound complex.
6 - atmel,audio-routing: A list of the connections between audio components.
7 - atmel,ssc-controller: The phandle of the SSC controller
8 - atmel,audio-codec: The phandle of the WM8731 audio codec
9Optional properties:
10 - pinctrl-names, pinctrl-0: Please refer to pinctrl-bindings.txt
11
12Example:
13sound {
14 compatible = "atmel,at91sam9g20ek-wm8731-audio";
15 pinctrl-names = "default";
16 pinctrl-0 = <&pinctrl_pck0_as_mck>;
17
18 atmel,model = "wm8731 @ AT91SAMG20EK";
19
20 atmel,audio-routing =
21 "Ext Spk", "LHPOUT",
22 "Int MIC", "MICIN";
23
24 atmel,ssc-controller = <&ssc0>;
25 atmel,audio-codec = <&wm8731>;
26};
diff --git a/Documentation/devicetree/bindings/sound/cs4271.txt b/Documentation/devicetree/bindings/sound/cs4271.txt
index c81b5fd5a5bc..a850fb9c88ea 100644
--- a/Documentation/devicetree/bindings/sound/cs4271.txt
+++ b/Documentation/devicetree/bindings/sound/cs4271.txt
@@ -18,6 +18,8 @@ Optional properties:
18 18
19 - reset-gpio: a GPIO spec to define which pin is connected to the chip's 19 - reset-gpio: a GPIO spec to define which pin is connected to the chip's
20 !RESET pin 20 !RESET pin
21 - cirrus,amuteb-eq-bmutec: When given, the Codec's AMUTEB=BMUTEC flag
22 is enabled.
21 23
22Examples: 24Examples:
23 25
diff --git a/Documentation/devicetree/bindings/sound/omap-abe-twl6040.txt b/Documentation/devicetree/bindings/sound/omap-abe-twl6040.txt
index 65dec876cb2d..fd40c852d7c7 100644
--- a/Documentation/devicetree/bindings/sound/omap-abe-twl6040.txt
+++ b/Documentation/devicetree/bindings/sound/omap-abe-twl6040.txt
@@ -12,7 +12,7 @@ Required properties:
12 12
13Optional properties: 13Optional properties:
14- ti,dmic: phandle for the OMAP dmic node if the machine have it connected 14- ti,dmic: phandle for the OMAP dmic node if the machine have it connected
15- ti,jack_detection: Need to be set to <1> if the board capable to detect jack 15- ti,jack_detection: Need to be present if the board capable to detect jack
16 insertion, removal. 16 insertion, removal.
17 17
18Available audio endpoints for the audio-routing table: 18Available audio endpoints for the audio-routing table:
@@ -59,7 +59,7 @@ sound {
59 compatible = "ti,abe-twl6040"; 59 compatible = "ti,abe-twl6040";
60 ti,model = "SDP4430"; 60 ti,model = "SDP4430";
61 61
62 ti,jack-detection = <1>; 62 ti,jack-detection;
63 ti,mclk-freq = <38400000>; 63 ti,mclk-freq = <38400000>;
64 64
65 ti,mcpdm = <&mcpdm>; 65 ti,mcpdm = <&mcpdm>;
diff --git a/Documentation/devicetree/bindings/spi/nvidia,tegra20-sflash.txt b/Documentation/devicetree/bindings/spi/nvidia,tegra20-sflash.txt
new file mode 100644
index 000000000000..8cf24f6f0a99
--- /dev/null
+++ b/Documentation/devicetree/bindings/spi/nvidia,tegra20-sflash.txt
@@ -0,0 +1,26 @@
1NVIDIA Tegra20 SFLASH controller.
2
3Required properties:
4- compatible : should be "nvidia,tegra20-sflash".
5- reg: Should contain SFLASH registers location and length.
6- interrupts: Should contain SFLASH interrupts.
7- nvidia,dma-request-selector : The Tegra DMA controller's phandle and
8 request selector for this SFLASH controller.
9
10Recommended properties:
11- spi-max-frequency: Definition as per
12 Documentation/devicetree/bindings/spi/spi-bus.txt
13
14Example:
15
16spi@7000d600 {
17 compatible = "nvidia,tegra20-sflash";
18 reg = <0x7000c380 0x80>;
19 interrupts = <0 39 0x04>;
20 nvidia,dma-request-selector = <&apbdma 16>;
21 spi-max-frequency = <25000000>;
22 #address-cells = <1>;
23 #size-cells = <0>;
24 status = "disabled";
25};
26
diff --git a/Documentation/devicetree/bindings/spi/nvidia,tegra20-slink.txt b/Documentation/devicetree/bindings/spi/nvidia,tegra20-slink.txt
new file mode 100644
index 000000000000..f5b1ad1a1ec3
--- /dev/null
+++ b/Documentation/devicetree/bindings/spi/nvidia,tegra20-slink.txt
@@ -0,0 +1,26 @@
1NVIDIA Tegra20/Tegra30 SLINK controller.
2
3Required properties:
4- compatible : should be "nvidia,tegra20-slink", "nvidia,tegra30-slink".
5- reg: Should contain SLINK registers location and length.
6- interrupts: Should contain SLINK interrupts.
7- nvidia,dma-request-selector : The Tegra DMA controller's phandle and
8 request selector for this SLINK controller.
9
10Recommended properties:
11- spi-max-frequency: Definition as per
12 Documentation/devicetree/bindings/spi/spi-bus.txt
13
14Example:
15
16slink@7000d600 {
17 compatible = "nvidia,tegra20-slink";
18 reg = <0x7000d600 0x200>;
19 interrupts = <0 82 0x04>;
20 nvidia,dma-request-selector = <&apbdma 16>;
21 spi-max-frequency = <25000000>;
22 #address-cells = <1>;
23 #size-cells = <0>;
24 status = "disabled";
25};
26
diff --git a/Documentation/devicetree/bindings/spi/omap-spi.txt b/Documentation/devicetree/bindings/spi/omap-spi.txt
index 81df374adbb9..938809c6829b 100644
--- a/Documentation/devicetree/bindings/spi/omap-spi.txt
+++ b/Documentation/devicetree/bindings/spi/omap-spi.txt
@@ -6,7 +6,9 @@ Required properties:
6 - "ti,omap4-spi" for OMAP4+. 6 - "ti,omap4-spi" for OMAP4+.
7- ti,spi-num-cs : Number of chipselect supported by the instance. 7- ti,spi-num-cs : Number of chipselect supported by the instance.
8- ti,hwmods: Name of the hwmod associated to the McSPI 8- ti,hwmods: Name of the hwmod associated to the McSPI
9 9- ti,pindir-d0-out-d1-in: Select the D0 pin as output and D1 as
10 input. The default is D0 as input and
11 D1 as output.
10 12
11Example: 13Example:
12 14
diff --git a/Documentation/devicetree/bindings/spi/spi-bus.txt b/Documentation/devicetree/bindings/spi/spi-bus.txt
index d2c33d0f533e..296015e3c632 100644
--- a/Documentation/devicetree/bindings/spi/spi-bus.txt
+++ b/Documentation/devicetree/bindings/spi/spi-bus.txt
@@ -12,6 +12,7 @@ The SPI master node requires the following properties:
12- #size-cells - should be zero. 12- #size-cells - should be zero.
13- compatible - name of SPI bus controller following generic names 13- compatible - name of SPI bus controller following generic names
14 recommended practice. 14 recommended practice.
15- cs-gpios - (optional) gpios chip select.
15No other properties are required in the SPI bus node. It is assumed 16No other properties are required in the SPI bus node. It is assumed
16that a driver for an SPI bus device will understand that it is an SPI bus. 17that a driver for an SPI bus device will understand that it is an SPI bus.
17However, the binding does not attempt to define the specific method for 18However, the binding does not attempt to define the specific method for
@@ -24,6 +25,22 @@ support describing the chip select layout.
24Optional property: 25Optional property:
25- num-cs : total number of chipselects 26- num-cs : total number of chipselects
26 27
28If cs-gpios is used the number of chip select will automatically increased
29with max(cs-gpios > hw cs)
30
31So if for example the controller has 2 CS lines, and the cs-gpios
32property looks like this:
33
34cs-gpios = <&gpio1 0 0> <0> <&gpio1 1 0> <&gpio1 2 0>;
35
36Then it should be configured so that num_chipselect = 4 with the
37following mapping:
38
39cs0 : &gpio1 0 0
40cs1 : native
41cs2 : &gpio1 1 0
42cs3 : &gpio1 2 0
43
27SPI slave nodes must be children of the SPI master node and can 44SPI slave nodes must be children of the SPI master node and can
28contain the following properties. 45contain the following properties.
29- reg - (required) chip select address of device. 46- reg - (required) chip select address of device.
@@ -36,6 +53,11 @@ contain the following properties.
36 shifted clock phase (CPHA) mode 53 shifted clock phase (CPHA) mode
37- spi-cs-high - (optional) Empty property indicating device requires 54- spi-cs-high - (optional) Empty property indicating device requires
38 chip select active high 55 chip select active high
56- spi-3wire - (optional) Empty property indicating device requires
57 3-wire mode.
58
59If a gpio chipselect is used for the SPI slave the gpio number will be passed
60via the cs_gpio
39 61
40SPI example for an MPC5200 SPI bus: 62SPI example for an MPC5200 SPI bus:
41 spi@f00 { 63 spi@f00 {
diff --git a/Documentation/devicetree/bindings/thermal/db8500-thermal.txt b/Documentation/devicetree/bindings/thermal/db8500-thermal.txt
new file mode 100644
index 000000000000..2e1c06fad81f
--- /dev/null
+++ b/Documentation/devicetree/bindings/thermal/db8500-thermal.txt
@@ -0,0 +1,44 @@
1* ST-Ericsson DB8500 Thermal
2
3** Thermal node properties:
4
5- compatible : "stericsson,db8500-thermal";
6- reg : address range of the thermal sensor registers;
7- interrupts : interrupts generated from PRCMU;
8- interrupt-names : "IRQ_HOTMON_LOW" and "IRQ_HOTMON_HIGH";
9- num-trips : number of total trip points, this is required, set it 0 if none,
10 if greater than 0, the following properties must be defined;
11- tripN-temp : temperature of trip point N, should be in ascending order;
12- tripN-type : type of trip point N, should be one of "active" "passive" "hot"
13 "critical";
14- tripN-cdev-num : number of the cooling devices which can be bound to trip
15 point N, this is required if trip point N is defined, set it 0 if none,
16 otherwise the following cooling device names must be defined;
17- tripN-cdev-nameM : name of the No. M cooling device of trip point N;
18
19Usually the num-trips and tripN-*** are separated in board related dts files.
20
21Example:
22thermal@801573c0 {
23 compatible = "stericsson,db8500-thermal";
24 reg = <0x801573c0 0x40>;
25 interrupts = <21 0x4>, <22 0x4>;
26 interrupt-names = "IRQ_HOTMON_LOW", "IRQ_HOTMON_HIGH";
27
28 num-trips = <3>;
29
30 trip0-temp = <75000>;
31 trip0-type = "active";
32 trip0-cdev-num = <1>;
33 trip0-cdev-name0 = "thermal-cpufreq-0";
34
35 trip1-temp = <80000>;
36 trip1-type = "active";
37 trip1-cdev-num = <2>;
38 trip1-cdev-name0 = "thermal-cpufreq-0";
39 trip1-cdev-name1 = "thermal-fan";
40
41 trip2-temp = <85000>;
42 trip2-type = "critical";
43 trip2-cdev-num = <0>;
44}
diff --git a/Documentation/devicetree/bindings/timer/allwinner,sunxi-timer.txt b/Documentation/devicetree/bindings/timer/allwinner,sunxi-timer.txt
new file mode 100644
index 000000000000..0c7b64e95a61
--- /dev/null
+++ b/Documentation/devicetree/bindings/timer/allwinner,sunxi-timer.txt
@@ -0,0 +1,17 @@
1Allwinner A1X SoCs Timer Controller
2
3Required properties:
4
5- compatible : should be "allwinner,sunxi-timer"
6- reg : Specifies base physical address and size of the registers.
7- interrupts : The interrupt of the first timer
8- clocks: phandle to the source clock (usually a 24 MHz fixed clock)
9
10Example:
11
12timer {
13 compatible = "allwinner,sunxi-timer";
14 reg = <0x01c20c00 0x400>;
15 interrupts = <22>;
16 clocks = <&osc>;
17};
diff --git a/Documentation/devicetree/bindings/timer/nvidia,tegra20-timer.txt b/Documentation/devicetree/bindings/timer/nvidia,tegra20-timer.txt
new file mode 100644
index 000000000000..e019fdc38773
--- /dev/null
+++ b/Documentation/devicetree/bindings/timer/nvidia,tegra20-timer.txt
@@ -0,0 +1,21 @@
1NVIDIA Tegra20 timer
2
3The Tegra20 timer provides four 29-bit timer channels and a single 32-bit free
4running counter. The first two channels may also trigger a watchdog reset.
5
6Required properties:
7
8- compatible : should be "nvidia,tegra20-timer".
9- reg : Specifies base physical address and size of the registers.
10- interrupts : A list of 4 interrupts; one per timer channel.
11
12Example:
13
14timer {
15 compatible = "nvidia,tegra20-timer";
16 reg = <0x60005000 0x60>;
17 interrupts = <0 0 0x04
18 0 1 0x04
19 0 41 0x04
20 0 42 0x04>;
21};
diff --git a/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt b/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt
new file mode 100644
index 000000000000..906109d4c593
--- /dev/null
+++ b/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt
@@ -0,0 +1,23 @@
1NVIDIA Tegra30 timer
2
3The Tegra30 timer provides ten 29-bit timer channels, a single 32-bit free
4running counter, and 5 watchdog modules. The first two channels may also
5trigger a legacy watchdog reset.
6
7Required properties:
8
9- compatible : should be "nvidia,tegra30-timer", "nvidia,tegra20-timer".
10- reg : Specifies base physical address and size of the registers.
11- interrupts : A list of 6 interrupts; one per each of timer channels 1
12 through 5, and one for the shared interrupt for the remaining channels.
13
14timer {
15 compatible = "nvidia,tegra30-timer", "nvidia,tegra20-timer";
16 reg = <0x60005000 0x400>;
17 interrupts = <0 0 0x04
18 0 1 0x04
19 0 41 0x04
20 0 42 0x04
21 0 121 0x04
22 0 122 0x04>;
23};
diff --git a/Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt b/Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt
index 2ee903fad25c..273a8d5b3300 100644
--- a/Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt
+++ b/Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt
@@ -6,11 +6,19 @@ Required properties:
6- reg : Address and length of the register set for the device 6- reg : Address and length of the register set for the device
7- interrupts : Should contain the auart interrupt numbers 7- interrupts : Should contain the auart interrupt numbers
8 8
9Optional properties:
10- fsl,auart-dma-channel : The DMA channels, the first is for RX, the other
11 is for TX. If you add this property, it also means that you
12 will enable the DMA support for the auart.
13 Note: due to the hardware bug in imx23(see errata : 2836),
14 only the imx28 can enable the DMA support for the auart.
15
9Example: 16Example:
10auart0: serial@8006a000 { 17auart0: serial@8006a000 {
11 compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 18 compatible = "fsl,imx28-auart", "fsl,imx23-auart";
12 reg = <0x8006a000 0x2000>; 19 reg = <0x8006a000 0x2000>;
13 interrupts = <112 70 71>; 20 interrupts = <112 70 71>;
21 fsl,auart-dma-channel = <8 9>;
14}; 22};
15 23
16Note: Each auart port should have an alias correctly numbered in "aliases" 24Note: Each auart port should have an alias correctly numbered in "aliases"
diff --git a/Documentation/devicetree/bindings/tty/serial/of-serial.txt b/Documentation/devicetree/bindings/tty/serial/of-serial.txt
index ba385f2e0ddc..1e1145ca4f3c 100644
--- a/Documentation/devicetree/bindings/tty/serial/of-serial.txt
+++ b/Documentation/devicetree/bindings/tty/serial/of-serial.txt
@@ -14,7 +14,10 @@ Required properties:
14 - "serial" if the port type is unknown. 14 - "serial" if the port type is unknown.
15- reg : offset and length of the register set for the device. 15- reg : offset and length of the register set for the device.
16- interrupts : should contain uart interrupt. 16- interrupts : should contain uart interrupt.
17- clock-frequency : the input clock frequency for the UART. 17- clock-frequency : the input clock frequency for the UART
18 or
19 clocks phandle to refer to the clk used as per Documentation/devicetree
20 /bindings/clock/clock-bindings.txt
18 21
19Optional properties: 22Optional properties:
20- current-speed : the current active speed of the UART. 23- current-speed : the current active speed of the UART.
diff --git a/Documentation/devicetree/bindings/usb/am33xx-usb.txt b/Documentation/devicetree/bindings/usb/am33xx-usb.txt
index ca8fa56e9f03..ea840f7f9258 100644
--- a/Documentation/devicetree/bindings/usb/am33xx-usb.txt
+++ b/Documentation/devicetree/bindings/usb/am33xx-usb.txt
@@ -1,14 +1,35 @@
1AM33XX MUSB GLUE 1AM33XX MUSB GLUE
2 - compatible : Should be "ti,musb-am33xx" 2 - compatible : Should be "ti,musb-am33xx"
3 - reg : offset and length of register sets, first usbss, then for musb instances
4 - interrupts : usbss, musb instance interrupts in order
3 - ti,hwmods : must be "usb_otg_hs" 5 - ti,hwmods : must be "usb_otg_hs"
4 - multipoint : Should be "1" indicating the musb controller supports 6 - multipoint : Should be "1" indicating the musb controller supports
5 multipoint. This is a MUSB configuration-specific setting. 7 multipoint. This is a MUSB configuration-specific setting.
6 - num_eps : Specifies the number of endpoints. This is also a 8 - num-eps : Specifies the number of endpoints. This is also a
7 MUSB configuration-specific setting. Should be set to "16" 9 MUSB configuration-specific setting. Should be set to "16"
8 - ram_bits : Specifies the ram address size. Should be set to "12" 10 - ram-bits : Specifies the ram address size. Should be set to "12"
9 - port0_mode : Should be "3" to represent OTG. "1" signifies HOST and "2" 11 - port0-mode : Should be "3" to represent OTG. "1" signifies HOST and "2"
10 represents PERIPHERAL. 12 represents PERIPHERAL.
11 - port1_mode : Should be "1" to represent HOST. "3" signifies OTG and "2" 13 - port1-mode : Should be "1" to represent HOST. "3" signifies OTG and "2"
12 represents PERIPHERAL. 14 represents PERIPHERAL.
13 - power : Should be "250". This signifies the controller can supply upto 15 - power : Should be "250". This signifies the controller can supply upto
14 500mA when operating in host mode. 16 500mA when operating in host mode.
17
18Example:
19
20usb@47400000 {
21 compatible = "ti,musb-am33xx";
22 reg = <0x47400000 0x1000 /* usbss */
23 0x47401000 0x800 /* musb instance 0 */
24 0x47401800 0x800>; /* musb instance 1 */
25 interrupts = <17 /* usbss */
26 18 /* musb instance 0 */
27 19>; /* musb instance 1 */
28 multipoint = <1>;
29 num-eps = <16>;
30 ram-bits = <12>;
31 port0-mode = <3>;
32 port1-mode = <3>;
33 power = <250>;
34 ti,hwmods = "usb_otg_hs";
35};
diff --git a/Documentation/devicetree/bindings/usb/ehci-orion.txt b/Documentation/devicetree/bindings/usb/ehci-orion.txt
new file mode 100644
index 000000000000..6bc09ec14c4d
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/ehci-orion.txt
@@ -0,0 +1,15 @@
1* EHCI controller, Orion Marvell variants
2
3Required properties:
4- compatible: must be "marvell,orion-ehci"
5- reg: physical base address of the controller and length of memory mapped
6 region.
7- interrupts: The EHCI interrupt
8
9Example:
10
11 ehci@50000 {
12 compatible = "marvell,orion-ehci";
13 reg = <0x50000 0x1000>;
14 interrupts = <19>;
15 };
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt
index 9de2b9ff9d6e..902b1b1f568e 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.txt
+++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
@@ -5,6 +5,7 @@ using them to avoid name-space collisions.
5 5
6ad Avionic Design GmbH 6ad Avionic Design GmbH
7adi Analog Devices, Inc. 7adi Analog Devices, Inc.
8ak Asahi Kasei Corp.
8amcc Applied Micro Circuits Corporation (APM, formally AMCC) 9amcc Applied Micro Circuits Corporation (APM, formally AMCC)
9apm Applied Micro Circuits Corporation (APM) 10apm Applied Micro Circuits Corporation (APM)
10arm ARM Ltd. 11arm ARM Ltd.
@@ -25,6 +26,7 @@ gef GE Fanuc Intelligent Platforms Embedded Systems, Inc.
25hp Hewlett Packard 26hp Hewlett Packard
26ibm International Business Machines (IBM) 27ibm International Business Machines (IBM)
27idt Integrated Device Technologies, Inc. 28idt Integrated Device Technologies, Inc.
29img Imagination Technologies Ltd.
28intercontrol Inter Control Group 30intercontrol Inter Control Group
29linux Linux-specific binding 31linux Linux-specific binding
30marvell Marvell Technology Group Ltd. 32marvell Marvell Technology Group Ltd.
@@ -34,8 +36,9 @@ national National Semiconductor
34nintendo Nintendo 36nintendo Nintendo
35nvidia NVIDIA 37nvidia NVIDIA
36nxp NXP Semiconductors 38nxp NXP Semiconductors
39onnn ON Semiconductor Corp.
37picochip Picochip Ltd 40picochip Picochip Ltd
38powervr Imagination Technologies 41powervr PowerVR (deprecated, use img)
39qcom Qualcomm, Inc. 42qcom Qualcomm, Inc.
40ramtron Ramtron International 43ramtron Ramtron International
41realtek Realtek Semiconductor Corp. 44realtek Realtek Semiconductor Corp.
@@ -45,10 +48,12 @@ schindler Schindler
45sil Silicon Image 48sil Silicon Image
46simtek 49simtek
47sirf SiRF Technology, Inc. 50sirf SiRF Technology, Inc.
51snps Synopsys, Inc.
48st STMicroelectronics 52st STMicroelectronics
49stericsson ST-Ericsson 53stericsson ST-Ericsson
50ti Texas Instruments 54ti Texas Instruments
51via VIA Technologies, Inc. 55via VIA Technologies, Inc.
52wlf Wolfson Microelectronics 56wlf Wolfson Microelectronics
53wm Wondermedia Technologies, Inc. 57wm Wondermedia Technologies, Inc.
58winbond Winbond Electronics corp.
54xlnx Xilinx 59xlnx Xilinx
diff --git a/Documentation/devicetree/bindings/video/exynos_dp.txt b/Documentation/devicetree/bindings/video/exynos_dp.txt
new file mode 100644
index 000000000000..c60da67a5d76
--- /dev/null
+++ b/Documentation/devicetree/bindings/video/exynos_dp.txt
@@ -0,0 +1,80 @@
1The Exynos display port interface should be configured based on
2the type of panel connected to it.
3
4We use two nodes:
5 -dp-controller node
6 -dptx-phy node(defined inside dp-controller node)
7
8For the DP-PHY initialization, we use the dptx-phy node.
9Required properties for dptx-phy:
10 -reg:
11 Base address of DP PHY register.
12 -samsung,enable-mask:
13 The bit-mask used to enable/disable DP PHY.
14
15For the Panel initialization, we read data from dp-controller node.
16Required properties for dp-controller:
17 -compatible:
18 should be "samsung,exynos5-dp".
19 -reg:
20 physical base address of the controller and length
21 of memory mapped region.
22 -interrupts:
23 interrupt combiner values.
24 -interrupt-parent:
25 phandle to Interrupt combiner node.
26 -samsung,color-space:
27 input video data format.
28 COLOR_RGB = 0, COLOR_YCBCR422 = 1, COLOR_YCBCR444 = 2
29 -samsung,dynamic-range:
30 dynamic range for input video data.
31 VESA = 0, CEA = 1
32 -samsung,ycbcr-coeff:
33 YCbCr co-efficients for input video.
34 COLOR_YCBCR601 = 0, COLOR_YCBCR709 = 1
35 -samsung,color-depth:
36 number of bits per colour component.
37 COLOR_6 = 0, COLOR_8 = 1, COLOR_10 = 2, COLOR_12 = 3
38 -samsung,link-rate:
39 link rate supported by the panel.
40 LINK_RATE_1_62GBPS = 0x6, LINK_RATE_2_70GBPS = 0x0A
41 -samsung,lane-count:
42 number of lanes supported by the panel.
43 LANE_COUNT1 = 1, LANE_COUNT2 = 2, LANE_COUNT4 = 4
44
45Optional properties for dp-controller:
46 -interlaced:
47 interlace scan mode.
48 Progressive if defined, Interlaced if not defined
49 -vsync-active-high:
50 VSYNC polarity configuration.
51 High if defined, Low if not defined
52 -hsync-active-high:
53 HSYNC polarity configuration.
54 High if defined, Low if not defined
55
56Example:
57
58SOC specific portion:
59 dp-controller {
60 compatible = "samsung,exynos5-dp";
61 reg = <0x145b0000 0x10000>;
62 interrupts = <10 3>;
63 interrupt-parent = <&combiner>;
64
65 dptx-phy {
66 reg = <0x10040720>;
67 samsung,enable-mask = <1>;
68 };
69
70 };
71
72Board Specific portion:
73 dp-controller {
74 samsung,color-space = <0>;
75 samsung,dynamic-range = <0>;
76 samsung,ycbcr-coeff = <0>;
77 samsung,color-depth = <1>;
78 samsung,link-rate = <0x0a>;
79 samsung,lane-count = <4>;
80 };
diff --git a/Documentation/devicetree/bindings/video/ssd1307fb.txt b/Documentation/devicetree/bindings/video/ssd1307fb.txt
new file mode 100644
index 000000000000..3d0060cff062
--- /dev/null
+++ b/Documentation/devicetree/bindings/video/ssd1307fb.txt
@@ -0,0 +1,24 @@
1* Solomon SSD1307 Framebuffer Driver
2
3Required properties:
4 - compatible: Should be "solomon,ssd1307fb-<bus>". The only supported bus for
5 now is i2c.
6 - reg: Should contain address of the controller on the I2C bus. Most likely
7 0x3c or 0x3d
8 - pwm: Should contain the pwm to use according to the OF device tree PWM
9 specification [0]
10 - reset-gpios: Should contain the GPIO used to reset the OLED display
11
12Optional properties:
13 - reset-active-low: Is the reset gpio is active on physical low?
14
15[0]: Documentation/devicetree/bindings/pwm/pwm.txt
16
17Examples:
18ssd1307: oled@3c {
19 compatible = "solomon,ssd1307fb-i2c";
20 reg = <0x3c>;
21 pwms = <&pwm 4 3000>;
22 reset-gpios = <&gpio2 7>;
23 reset-active-low;
24};
diff --git a/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt b/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt
new file mode 100644
index 000000000000..2957ebb5aa71
--- /dev/null
+++ b/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt
@@ -0,0 +1,15 @@
1* Atmel Watchdog Timers
2
3** at91sam9-wdt
4
5Required properties:
6- compatible: must be "atmel,at91sam9260-wdt".
7- reg: physical base address of the controller and length of memory mapped
8 region.
9
10Example:
11
12 watchdog@fffffd40 {
13 compatible = "atmel,at91sam9260-wdt";
14 reg = <0xfffffd40 0x10>;
15 };
diff --git a/Documentation/devicetree/bindings/watchdog/brcm,bcm2835-pm-wdog.txt b/Documentation/devicetree/bindings/watchdog/brcm,bcm2835-pm-wdog.txt
new file mode 100644
index 000000000000..d209366b4a69
--- /dev/null
+++ b/Documentation/devicetree/bindings/watchdog/brcm,bcm2835-pm-wdog.txt
@@ -0,0 +1,13 @@
1BCM2835 Watchdog timer
2
3Required properties:
4
5- compatible : should be "brcm,bcm2835-pm-wdt"
6- reg : Specifies base physical address and size of the registers.
7
8Example:
9
10watchdog {
11 compatible = "brcm,bcm2835-pm-wdt";
12 reg = <0x7e100000 0x28>;
13};
diff --git a/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt b/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt
new file mode 100644
index 000000000000..0b2717775600
--- /dev/null
+++ b/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt
@@ -0,0 +1,13 @@
1Allwinner sunXi Watchdog timer
2
3Required properties:
4
5- compatible : should be "allwinner,sunxi-wdt"
6- reg : Specifies base physical address and size of the registers.
7
8Example:
9
10wdt: watchdog@01c20c90 {
11 compatible = "allwinner,sunxi-wdt";
12 reg = <0x01c20c90 0x10>;
13};
diff --git a/Documentation/devicetree/usage-model.txt b/Documentation/devicetree/usage-model.txt
index dca90fe22a90..ef9d06c9f8fd 100644
--- a/Documentation/devicetree/usage-model.txt
+++ b/Documentation/devicetree/usage-model.txt
@@ -347,7 +347,7 @@ later), which will happily live at the base of the Linux /sys/devices
347tree. Therefore, if a DT node is at the root of the tree, then it 347tree. Therefore, if a DT node is at the root of the tree, then it
348really probably is best registered as a platform_device. 348really probably is best registered as a platform_device.
349 349
350Linux board support code calls of_platform_populate(NULL, NULL, NULL) 350Linux board support code calls of_platform_populate(NULL, NULL, NULL, NULL)
351to kick off discovery of devices at the root of the tree. The 351to kick off discovery of devices at the root of the tree. The
352parameters are all NULL because when starting from the root of the 352parameters are all NULL because when starting from the root of the
353tree, there is no need to provide a starting node (the first NULL), a 353tree, there is no need to provide a starting node (the first NULL), a
diff --git a/Documentation/dma-buf-sharing.txt b/Documentation/dma-buf-sharing.txt
index ad86fb86c9a0..0188903bc9e1 100644
--- a/Documentation/dma-buf-sharing.txt
+++ b/Documentation/dma-buf-sharing.txt
@@ -376,7 +376,7 @@ Being able to mmap an export dma-buf buffer object has 2 main use-cases:
376 leaving the cpu domain and flushing caches at fault time. Note that all the 376 leaving the cpu domain and flushing caches at fault time. Note that all the
377 dma_buf files share the same anon inode, hence the exporter needs to replace 377 dma_buf files share the same anon inode, hence the exporter needs to replace
378 the dma_buf file stored in vma->vm_file with it's own if pte shootdown is 378 the dma_buf file stored in vma->vm_file with it's own if pte shootdown is
379 requred. This is because the kernel uses the underlying inode's address_space 379 required. This is because the kernel uses the underlying inode's address_space
380 for vma tracking (and hence pte tracking at shootdown time with 380 for vma tracking (and hence pte tracking at shootdown time with
381 unmap_mapping_range). 381 unmap_mapping_range).
382 382
@@ -388,7 +388,7 @@ Being able to mmap an export dma-buf buffer object has 2 main use-cases:
388 Exporters that shoot down mappings (for any reasons) shall not do any 388 Exporters that shoot down mappings (for any reasons) shall not do any
389 synchronization at fault time with outstanding device operations. 389 synchronization at fault time with outstanding device operations.
390 Synchronization is an orthogonal issue to sharing the backing storage of a 390 Synchronization is an orthogonal issue to sharing the backing storage of a
391 buffer and hence should not be handled by dma-buf itself. This is explictly 391 buffer and hence should not be handled by dma-buf itself. This is explicitly
392 mentioned here because many people seem to want something like this, but if 392 mentioned here because many people seem to want something like this, but if
393 different exporters handle this differently, buffer sharing can fail in 393 different exporters handle this differently, buffer sharing can fail in
394 interesting ways depending upong the exporter (if userspace starts depending 394 interesting ways depending upong the exporter (if userspace starts depending
diff --git a/Documentation/dontdiff b/Documentation/dontdiff
index 74c25c8d8884..b89a739a3276 100644
--- a/Documentation/dontdiff
+++ b/Documentation/dontdiff
@@ -181,7 +181,6 @@ modversions.h*
181nconf 181nconf
182ncscope.* 182ncscope.*
183offset.h 183offset.h
184offsets.h
185oui.c* 184oui.c*
186page-types 185page-types
187parse.c 186parse.c
diff --git a/Documentation/fault-injection/notifier-error-inject.txt b/Documentation/fault-injection/notifier-error-inject.txt
index c83526c364e5..09adabef513f 100644
--- a/Documentation/fault-injection/notifier-error-inject.txt
+++ b/Documentation/fault-injection/notifier-error-inject.txt
@@ -1,7 +1,7 @@
1Notifier error injection 1Notifier error injection
2======================== 2========================
3 3
4Notifier error injection provides the ability to inject artifical errors to 4Notifier error injection provides the ability to inject artificial errors to
5specified notifier chain callbacks. It is useful to test the error handling of 5specified notifier chain callbacks. It is useful to test the error handling of
6notifier call chain failures which is rarely executed. There are kernel 6notifier call chain failures which is rarely executed. There are kernel
7modules that can be used to test the following notifiers. 7modules that can be used to test the following notifiers.
@@ -14,7 +14,7 @@ modules that can be used to test the following notifiers.
14CPU notifier error injection module 14CPU notifier error injection module
15----------------------------------- 15-----------------------------------
16This feature can be used to test the error handling of the CPU notifiers by 16This feature can be used to test the error handling of the CPU notifiers by
17injecting artifical errors to CPU notifier chain callbacks. 17injecting artificial errors to CPU notifier chain callbacks.
18 18
19If the notifier call chain should be failed with some events notified, write 19If the notifier call chain should be failed with some events notified, write
20the error code to debugfs interface 20the error code to debugfs interface
diff --git a/Documentation/filesystems/00-INDEX b/Documentation/filesystems/00-INDEX
index 8c624a18f67d..7b52ba7bf32a 100644
--- a/Documentation/filesystems/00-INDEX
+++ b/Documentation/filesystems/00-INDEX
@@ -38,6 +38,8 @@ dnotify_test.c
38 - example program for dnotify 38 - example program for dnotify
39ecryptfs.txt 39ecryptfs.txt
40 - docs on eCryptfs: stacked cryptographic filesystem for Linux. 40 - docs on eCryptfs: stacked cryptographic filesystem for Linux.
41efivarfs.txt
42 - info for the efivarfs filesystem.
41exofs.txt 43exofs.txt
42 - info, usage, mount options, design about EXOFS. 44 - info, usage, mount options, design about EXOFS.
43ext2.txt 45ext2.txt
diff --git a/Documentation/filesystems/efivarfs.txt b/Documentation/filesystems/efivarfs.txt
new file mode 100644
index 000000000000..c477af086e65
--- /dev/null
+++ b/Documentation/filesystems/efivarfs.txt
@@ -0,0 +1,16 @@
1
2efivarfs - a (U)EFI variable filesystem
3
4The efivarfs filesystem was created to address the shortcomings of
5using entries in sysfs to maintain EFI variables. The old sysfs EFI
6variables code only supported variables of up to 1024 bytes. This
7limitation existed in version 0.99 of the EFI specification, but was
8removed before any full releases. Since variables can now be larger
9than a single page, sysfs isn't the best interface for this.
10
11Variables can be created, deleted and modified with the efivarfs
12filesystem.
13
14efivarfs is typically mounted like this,
15
16 mount -t efivarfs none /sys/firmware/efi/efivars
diff --git a/Documentation/filesystems/ext4.txt b/Documentation/filesystems/ext4.txt
index 104322bf378c..34ea4f1fa6ea 100644
--- a/Documentation/filesystems/ext4.txt
+++ b/Documentation/filesystems/ext4.txt
@@ -200,12 +200,9 @@ inode_readahead_blks=n This tuning parameter controls the maximum
200 table readahead algorithm will pre-read into 200 table readahead algorithm will pre-read into
201 the buffer cache. The default value is 32 blocks. 201 the buffer cache. The default value is 32 blocks.
202 202
203nouser_xattr Disables Extended User Attributes. If you have extended 203nouser_xattr Disables Extended User Attributes. See the
204 attribute support enabled in the kernel configuration 204 attr(5) manual page and http://acl.bestbits.at/
205 (CONFIG_EXT4_FS_XATTR), extended attribute support 205 for more information about extended attributes.
206 is enabled by default on mount. See the attr(5) manual
207 page and http://acl.bestbits.at/ for more information
208 about extended attributes.
209 206
210noacl This option disables POSIX Access Control List 207noacl This option disables POSIX Access Control List
211 support. If ACL support is enabled in the kernel 208 support. If ACL support is enabled in the kernel
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt
index a1793d670cd0..fd8d0d594fc7 100644
--- a/Documentation/filesystems/proc.txt
+++ b/Documentation/filesystems/proc.txt
@@ -33,7 +33,7 @@ Table of Contents
33 2 Modifying System Parameters 33 2 Modifying System Parameters
34 34
35 3 Per-Process Parameters 35 3 Per-Process Parameters
36 3.1 /proc/<pid>/oom_score_adj - Adjust the oom-killer 36 3.1 /proc/<pid>/oom_adj & /proc/<pid>/oom_score_adj - Adjust the oom-killer
37 score 37 score
38 3.2 /proc/<pid>/oom_score - Display current oom-killer score 38 3.2 /proc/<pid>/oom_score - Display current oom-killer score
39 3.3 /proc/<pid>/io - Display the IO accounting fields 39 3.3 /proc/<pid>/io - Display the IO accounting fields
@@ -41,6 +41,7 @@ Table of Contents
41 3.5 /proc/<pid>/mountinfo - Information about mounts 41 3.5 /proc/<pid>/mountinfo - Information about mounts
42 3.6 /proc/<pid>/comm & /proc/<pid>/task/<tid>/comm 42 3.6 /proc/<pid>/comm & /proc/<pid>/task/<tid>/comm
43 3.7 /proc/<pid>/task/<tid>/children - Information about task children 43 3.7 /proc/<pid>/task/<tid>/children - Information about task children
44 3.8 /proc/<pid>/fdinfo/<fd> - Information about opened file
44 45
45 4 Configuring procfs 46 4 Configuring procfs
46 4.1 Mount options 47 4.1 Mount options
@@ -142,7 +143,7 @@ Table 1-1: Process specific entries in /proc
142 pagemap Page table 143 pagemap Page table
143 stack Report full stack trace, enable via CONFIG_STACKTRACE 144 stack Report full stack trace, enable via CONFIG_STACKTRACE
144 smaps a extension based on maps, showing the memory consumption of 145 smaps a extension based on maps, showing the memory consumption of
145 each mapping 146 each mapping and flags associated with it
146.............................................................................. 147..............................................................................
147 148
148For example, to get the status information of a process, all you have to do is 149For example, to get the status information of a process, all you have to do is
@@ -181,6 +182,7 @@ read the file /proc/PID/status:
181 CapPrm: 0000000000000000 182 CapPrm: 0000000000000000
182 CapEff: 0000000000000000 183 CapEff: 0000000000000000
183 CapBnd: ffffffffffffffff 184 CapBnd: ffffffffffffffff
185 Seccomp: 0
184 voluntary_ctxt_switches: 0 186 voluntary_ctxt_switches: 0
185 nonvoluntary_ctxt_switches: 1 187 nonvoluntary_ctxt_switches: 1
186 188
@@ -237,6 +239,7 @@ Table 1-2: Contents of the status files (as of 2.6.30-rc7)
237 CapPrm bitmap of permitted capabilities 239 CapPrm bitmap of permitted capabilities
238 CapEff bitmap of effective capabilities 240 CapEff bitmap of effective capabilities
239 CapBnd bitmap of capabilities bounding set 241 CapBnd bitmap of capabilities bounding set
242 Seccomp seccomp mode, like prctl(PR_GET_SECCOMP, ...)
240 Cpus_allowed mask of CPUs on which this process may run 243 Cpus_allowed mask of CPUs on which this process may run
241 Cpus_allowed_list Same as previous, but in "list format" 244 Cpus_allowed_list Same as previous, but in "list format"
242 Mems_allowed mask of memory nodes allowed to this process 245 Mems_allowed mask of memory nodes allowed to this process
@@ -415,8 +418,9 @@ Swap: 0 kB
415KernelPageSize: 4 kB 418KernelPageSize: 4 kB
416MMUPageSize: 4 kB 419MMUPageSize: 4 kB
417Locked: 374 kB 420Locked: 374 kB
421VmFlags: rd ex mr mw me de
418 422
419The first of these lines shows the same information as is displayed for the 423the first of these lines shows the same information as is displayed for the
420mapping in /proc/PID/maps. The remaining lines show the size of the mapping 424mapping in /proc/PID/maps. The remaining lines show the size of the mapping
421(size), the amount of the mapping that is currently resident in RAM (RSS), the 425(size), the amount of the mapping that is currently resident in RAM (RSS), the
422process' proportional share of this mapping (PSS), the number of clean and 426process' proportional share of this mapping (PSS), the number of clean and
@@ -430,6 +434,41 @@ and a page is modified, the file page is replaced by a private anonymous copy.
430"Swap" shows how much would-be-anonymous memory is also used, but out on 434"Swap" shows how much would-be-anonymous memory is also used, but out on
431swap. 435swap.
432 436
437"VmFlags" field deserves a separate description. This member represents the kernel
438flags associated with the particular virtual memory area in two letter encoded
439manner. The codes are the following:
440 rd - readable
441 wr - writeable
442 ex - executable
443 sh - shared
444 mr - may read
445 mw - may write
446 me - may execute
447 ms - may share
448 gd - stack segment growns down
449 pf - pure PFN range
450 dw - disabled write to the mapped file
451 lo - pages are locked in memory
452 io - memory mapped I/O area
453 sr - sequential read advise provided
454 rr - random read advise provided
455 dc - do not copy area on fork
456 de - do not expand area on remapping
457 ac - area is accountable
458 nr - swap space is not reserved for the area
459 ht - area uses huge tlb pages
460 nl - non-linear mapping
461 ar - architecture specific flag
462 dd - do not include area into core dump
463 mm - mixed map area
464 hg - huge page advise flag
465 nh - no-huge page advise flag
466 mg - mergable advise flag
467
468Note that there is no guarantee that every flag and associated mnemonic will
469be present in all further kernel releases. Things get changed, the flags may
470be vanished or the reverse -- new added.
471
433This file is only present if the CONFIG_MMU kernel configuration option is 472This file is only present if the CONFIG_MMU kernel configuration option is
434enabled. 473enabled.
435 474
@@ -1320,10 +1359,10 @@ of the kernel.
1320CHAPTER 3: PER-PROCESS PARAMETERS 1359CHAPTER 3: PER-PROCESS PARAMETERS
1321------------------------------------------------------------------------------ 1360------------------------------------------------------------------------------
1322 1361
13233.1 /proc/<pid>/oom_score_adj- Adjust the oom-killer score 13623.1 /proc/<pid>/oom_adj & /proc/<pid>/oom_score_adj- Adjust the oom-killer score
1324-------------------------------------------------------------------------------- 1363--------------------------------------------------------------------------------
1325 1364
1326This file can be used to adjust the badness heuristic used to select which 1365These file can be used to adjust the badness heuristic used to select which
1327process gets killed in out of memory conditions. 1366process gets killed in out of memory conditions.
1328 1367
1329The badness heuristic assigns a value to each candidate task ranging from 0 1368The badness heuristic assigns a value to each candidate task ranging from 0
@@ -1361,6 +1400,12 @@ same system, cpuset, mempolicy, or memory controller resources to use at least
1361equivalent to discounting 50% of the task's allowed memory from being considered 1400equivalent to discounting 50% of the task's allowed memory from being considered
1362as scoring against the task. 1401as scoring against the task.
1363 1402
1403For backwards compatibility with previous kernels, /proc/<pid>/oom_adj may also
1404be used to tune the badness score. Its acceptable values range from -16
1405(OOM_ADJUST_MIN) to +15 (OOM_ADJUST_MAX) and a special value of -17
1406(OOM_DISABLE) to disable oom killing entirely for that task. Its value is
1407scaled linearly with /proc/<pid>/oom_score_adj.
1408
1364The value of /proc/<pid>/oom_score_adj may be reduced no lower than the last 1409The value of /proc/<pid>/oom_score_adj may be reduced no lower than the last
1365value set by a CAP_SYS_RESOURCE process. To reduce the value any lower 1410value set by a CAP_SYS_RESOURCE process. To reduce the value any lower
1366requires CAP_SYS_RESOURCE. 1411requires CAP_SYS_RESOURCE.
@@ -1375,7 +1420,9 @@ minimal amount of work.
1375------------------------------------------------------------- 1420-------------------------------------------------------------
1376 1421
1377This file can be used to check the current score used by the oom-killer is for 1422This file can be used to check the current score used by the oom-killer is for
1378any given <pid>. 1423any given <pid>. Use it together with /proc/<pid>/oom_score_adj to tune which
1424process should be killed in an out-of-memory situation.
1425
1379 1426
13803.3 /proc/<pid>/io - Display the IO accounting fields 14273.3 /proc/<pid>/io - Display the IO accounting fields
1381------------------------------------------------------- 1428-------------------------------------------------------
@@ -1587,6 +1634,93 @@ pids, so one need to either stop or freeze processes being inspected
1587if precise results are needed. 1634if precise results are needed.
1588 1635
1589 1636
16373.7 /proc/<pid>/fdinfo/<fd> - Information about opened file
1638---------------------------------------------------------------
1639This file provides information associated with an opened file. The regular
1640files have at least two fields -- 'pos' and 'flags'. The 'pos' represents
1641the current offset of the opened file in decimal form [see lseek(2) for
1642details] and 'flags' denotes the octal O_xxx mask the file has been
1643created with [see open(2) for details].
1644
1645A typical output is
1646
1647 pos: 0
1648 flags: 0100002
1649
1650The files such as eventfd, fsnotify, signalfd, epoll among the regular pos/flags
1651pair provide additional information particular to the objects they represent.
1652
1653 Eventfd files
1654 ~~~~~~~~~~~~~
1655 pos: 0
1656 flags: 04002
1657 eventfd-count: 5a
1658
1659 where 'eventfd-count' is hex value of a counter.
1660
1661 Signalfd files
1662 ~~~~~~~~~~~~~~
1663 pos: 0
1664 flags: 04002
1665 sigmask: 0000000000000200
1666
1667 where 'sigmask' is hex value of the signal mask associated
1668 with a file.
1669
1670 Epoll files
1671 ~~~~~~~~~~~
1672 pos: 0
1673 flags: 02
1674 tfd: 5 events: 1d data: ffffffffffffffff
1675
1676 where 'tfd' is a target file descriptor number in decimal form,
1677 'events' is events mask being watched and the 'data' is data
1678 associated with a target [see epoll(7) for more details].
1679
1680 Fsnotify files
1681 ~~~~~~~~~~~~~~
1682 For inotify files the format is the following
1683
1684 pos: 0
1685 flags: 02000000
1686 inotify wd:3 ino:9e7e sdev:800013 mask:800afce ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:7e9e0000640d1b6d
1687
1688 where 'wd' is a watch descriptor in decimal form, ie a target file
1689 descriptor number, 'ino' and 'sdev' are inode and device where the
1690 target file resides and the 'mask' is the mask of events, all in hex
1691 form [see inotify(7) for more details].
1692
1693 If the kernel was built with exportfs support, the path to the target
1694 file is encoded as a file handle. The file handle is provided by three
1695 fields 'fhandle-bytes', 'fhandle-type' and 'f_handle', all in hex
1696 format.
1697
1698 If the kernel is built without exportfs support the file handle won't be
1699 printed out.
1700
1701 If there is no inotify mark attached yet the 'inotify' line will be omitted.
1702
1703 For fanotify files the format is
1704
1705 pos: 0
1706 flags: 02
1707 fanotify flags:10 event-flags:0
1708 fanotify mnt_id:12 mflags:40 mask:38 ignored_mask:40000003
1709 fanotify ino:4f969 sdev:800013 mflags:0 mask:3b ignored_mask:40000000 fhandle-bytes:8 fhandle-type:1 f_handle:69f90400c275b5b4
1710
1711 where fanotify 'flags' and 'event-flags' are values used in fanotify_init
1712 call, 'mnt_id' is the mount point identifier, 'mflags' is the value of
1713 flags associated with mark which are tracked separately from events
1714 mask. 'ino', 'sdev' are target inode and device, 'mask' is the events
1715 mask and 'ignored_mask' is the mask of events which are to be ignored.
1716 All in hex format. Incorporation of 'mflags', 'mask' and 'ignored_mask'
1717 does provide information about flags and mask used in fanotify_mark
1718 call [see fsnotify manpage for details].
1719
1720 While the first three lines are mandatory and always printed, the rest is
1721 optional and may be omitted if no marks created yet.
1722
1723
1590------------------------------------------------------------------------------ 1724------------------------------------------------------------------------------
1591Configuring procfs 1725Configuring procfs
1592------------------------------------------------------------------------------ 1726------------------------------------------------------------------------------
diff --git a/Documentation/filesystems/vfat.txt b/Documentation/filesystems/vfat.txt
index de1e6c4dccff..d230dd9c99b0 100644
--- a/Documentation/filesystems/vfat.txt
+++ b/Documentation/filesystems/vfat.txt
@@ -111,6 +111,15 @@ tz=UTC -- Interpret timestamps as UTC rather than local time.
111 useful when mounting devices (like digital cameras) 111 useful when mounting devices (like digital cameras)
112 that are set to UTC in order to avoid the pitfalls of 112 that are set to UTC in order to avoid the pitfalls of
113 local time. 113 local time.
114time_offset=minutes
115 -- Set offset for conversion of timestamps from local time
116 used by FAT to UTC. I.e. <minutes> minutes will be subtracted
117 from each timestamp to convert it to UTC used internally by
118 Linux. This is useful when time zone set in sys_tz is
119 not the time zone used by the filesystem. Note that this
120 option still does not provide correct time stamps in all
121 cases in presence of DST - time stamps in a different DST
122 setting will be off by one hour.
114 123
115showexec -- If set, the execute permission bits of the file will be 124showexec -- If set, the execute permission bits of the file will be
116 allowed only if the extension part of the name is .EXE, 125 allowed only if the extension part of the name is .EXE,
diff --git a/Documentation/filesystems/xfs.txt b/Documentation/filesystems/xfs.txt
index 3fc0c31a6f5d..3e4b3dd1e046 100644
--- a/Documentation/filesystems/xfs.txt
+++ b/Documentation/filesystems/xfs.txt
@@ -43,7 +43,7 @@ When mounting an XFS filesystem, the following options are accepted.
43 Issue command to let the block device reclaim space freed by the 43 Issue command to let the block device reclaim space freed by the
44 filesystem. This is useful for SSD devices, thinly provisioned 44 filesystem. This is useful for SSD devices, thinly provisioned
45 LUNs and virtual machine images, but may have a performance 45 LUNs and virtual machine images, but may have a performance
46 impact. This option is incompatible with the nodelaylog option. 46 impact.
47 47
48 dmapi 48 dmapi
49 Enable the DMAPI (Data Management API) event callouts. 49 Enable the DMAPI (Data Management API) event callouts.
@@ -72,8 +72,15 @@ When mounting an XFS filesystem, the following options are accepted.
72 Indicates that XFS is allowed to create inodes at any location 72 Indicates that XFS is allowed to create inodes at any location
73 in the filesystem, including those which will result in inode 73 in the filesystem, including those which will result in inode
74 numbers occupying more than 32 bits of significance. This is 74 numbers occupying more than 32 bits of significance. This is
75 provided for backwards compatibility, but causes problems for 75 the default allocation option. Applications which do not handle
76 backup applications that cannot handle large inode numbers. 76 inode numbers bigger than 32 bits, should use inode32 option.
77
78 inode32
79 Indicates that XFS is limited to create inodes at locations which
80 will not result in inode numbers with more than 32 bits of
81 significance. This is provided for backwards compatibility, since
82 64 bits inode numbers might cause problems for some applications
83 that cannot handle large inode numbers.
77 84
78 largeio/nolargeio 85 largeio/nolargeio
79 If "nolargeio" is specified, the optimal I/O reported in 86 If "nolargeio" is specified, the optimal I/O reported in
diff --git a/Documentation/firmware_class/README b/Documentation/firmware_class/README
index 815b711bcd85..43fada989e65 100644
--- a/Documentation/firmware_class/README
+++ b/Documentation/firmware_class/README
@@ -22,12 +22,17 @@
22 - calls request_firmware(&fw_entry, $FIRMWARE, device) 22 - calls request_firmware(&fw_entry, $FIRMWARE, device)
23 - kernel searchs the fimware image with name $FIRMWARE directly 23 - kernel searchs the fimware image with name $FIRMWARE directly
24 in the below search path of root filesystem: 24 in the below search path of root filesystem:
25 User customized search path by module parameter 'path'[1]
25 "/lib/firmware/updates/" UTS_RELEASE, 26 "/lib/firmware/updates/" UTS_RELEASE,
26 "/lib/firmware/updates", 27 "/lib/firmware/updates",
27 "/lib/firmware/" UTS_RELEASE, 28 "/lib/firmware/" UTS_RELEASE,
28 "/lib/firmware" 29 "/lib/firmware"
29 - If found, goto 7), else goto 2) 30 - If found, goto 7), else goto 2)
30 31
32 [1], the 'path' is a string parameter which length should be less
33 than 256, user should pass 'firmware_class.path=$CUSTOMIZED_PATH'
34 if firmware_class is built in kernel(the general situation)
35
31 2), userspace: 36 2), userspace:
32 - /sys/class/firmware/xxx/{loading,data} appear. 37 - /sys/class/firmware/xxx/{loading,data} appear.
33 - hotplug gets called with a firmware identifier in $FIRMWARE 38 - hotplug gets called with a firmware identifier in $FIRMWARE
@@ -114,3 +119,10 @@
114 on the setup, so I think that the choice on what firmware to make 119 on the setup, so I think that the choice on what firmware to make
115 persistent should be left to userspace. 120 persistent should be left to userspace.
116 121
122 about firmware cache:
123 --------------------
124 After firmware cache mechanism is introduced during system sleep,
125 request_firmware can be called safely inside device's suspend and
126 resume callback, and callers need't cache the firmware by
127 themselves any more for dealing with firmware loss during system
128 resume.
diff --git a/Documentation/gpio.txt b/Documentation/gpio.txt
index e08a883de36e..77a1d11af723 100644
--- a/Documentation/gpio.txt
+++ b/Documentation/gpio.txt
@@ -439,6 +439,48 @@ slower clock delays the rising edge of SCK, and the I2C master adjusts its
439signaling rate accordingly. 439signaling rate accordingly.
440 440
441 441
442GPIO controllers and the pinctrl subsystem
443------------------------------------------
444
445A GPIO controller on a SOC might be tightly coupled with the pinctrl
446subsystem, in the sense that the pins can be used by other functions
447together with an optional gpio feature. We have already covered the
448case where e.g. a GPIO controller need to reserve a pin or set the
449direction of a pin by calling any of:
450
451pinctrl_request_gpio()
452pinctrl_free_gpio()
453pinctrl_gpio_direction_input()
454pinctrl_gpio_direction_output()
455
456But how does the pin control subsystem cross-correlate the GPIO
457numbers (which are a global business) to a certain pin on a certain
458pin controller?
459
460This is done by registering "ranges" of pins, which are essentially
461cross-reference tables. These are described in
462Documentation/pinctrl.txt
463
464While the pin allocation is totally managed by the pinctrl subsystem,
465gpio (under gpiolib) is still maintained by gpio drivers. It may happen
466that different pin ranges in a SoC is managed by different gpio drivers.
467
468This makes it logical to let gpio drivers announce their pin ranges to
469the pin ctrl subsystem before it will call 'pinctrl_request_gpio' in order
470to request the corresponding pin to be prepared by the pinctrl subsystem
471before any gpio usage.
472
473For this, the gpio controller can register its pin range with pinctrl
474subsystem. There are two ways of doing it currently: with or without DT.
475
476For with DT support refer to Documentation/devicetree/bindings/gpio/gpio.txt.
477
478For non-DT support, user can call gpiochip_add_pin_range() with appropriate
479parameters to register a range of gpio pins with a pinctrl driver. For this
480exact name string of pinctrl device has to be passed as one of the
481argument to this routine.
482
483
442What do these conventions omit? 484What do these conventions omit?
443=============================== 485===============================
444One of the biggest things these conventions omit is pin multiplexing, since 486One of the biggest things these conventions omit is pin multiplexing, since
diff --git a/Documentation/hid/uhid.txt b/Documentation/hid/uhid.txt
index 4627c4241ece..3c741214dfbb 100644
--- a/Documentation/hid/uhid.txt
+++ b/Documentation/hid/uhid.txt
@@ -108,7 +108,7 @@ the request was handled successfully.
108 UHID_FEATURE_ANSWER: 108 UHID_FEATURE_ANSWER:
109 If you receive a UHID_FEATURE request you must answer with this request. You 109 If you receive a UHID_FEATURE request you must answer with this request. You
110 must copy the "id" field from the request into the answer. Set the "err" field 110 must copy the "id" field from the request into the answer. Set the "err" field
111 to 0 if no error occured or to EIO if an I/O error occurred. 111 to 0 if no error occurred or to EIO if an I/O error occurred.
112 If "err" is 0 then you should fill the buffer of the answer with the results 112 If "err" is 0 then you should fill the buffer of the answer with the results
113 of the feature request and set "size" correspondingly. 113 of the feature request and set "size" correspondingly.
114 114
diff --git a/Documentation/hwmon/ads7828 b/Documentation/hwmon/ads7828
index 2bbebe6f771f..f6e263e0f607 100644
--- a/Documentation/hwmon/ads7828
+++ b/Documentation/hwmon/ads7828
@@ -4,29 +4,47 @@ Kernel driver ads7828
4Supported chips: 4Supported chips:
5 * Texas Instruments/Burr-Brown ADS7828 5 * Texas Instruments/Burr-Brown ADS7828
6 Prefix: 'ads7828' 6 Prefix: 'ads7828'
7 Addresses scanned: I2C 0x48, 0x49, 0x4a, 0x4b 7 Datasheet: Publicly available at the Texas Instruments website:
8 Datasheet: Publicly available at the Texas Instruments website :
9 http://focus.ti.com/lit/ds/symlink/ads7828.pdf 8 http://focus.ti.com/lit/ds/symlink/ads7828.pdf
10 9
10 * Texas Instruments ADS7830
11 Prefix: 'ads7830'
12 Datasheet: Publicly available at the Texas Instruments website:
13 http://focus.ti.com/lit/ds/symlink/ads7830.pdf
14
11Authors: 15Authors:
12 Steve Hardy <shardy@redhat.com> 16 Steve Hardy <shardy@redhat.com>
17 Vivien Didelot <vivien.didelot@savoirfairelinux.com>
18 Guillaume Roguez <guillaume.roguez@savoirfairelinux.com>
19
20Platform data
21-------------
22
23The ads7828 driver accepts an optional ads7828_platform_data structure (defined
24in include/linux/platform_data/ads7828.h). The structure fields are:
13 25
14Module Parameters 26* diff_input: (bool) Differential operation
15----------------- 27 set to true for differential mode, false for default single ended mode.
16 28
17* se_input: bool (default Y) 29* ext_vref: (bool) External reference
18 Single ended operation - set to N for differential mode 30 set to true if it operates with an external reference, false for default
19* int_vref: bool (default Y) 31 internal reference.
20 Operate with the internal 2.5V reference - set to N for external reference 32
21* vref_mv: int (default 2500) 33* vref_mv: (unsigned int) Voltage reference
22 If using an external reference, set this to the reference voltage in mV 34 if using an external reference, set this to the reference voltage in mV,
35 otherwise it will default to the internal value (2500mV). This value will be
36 bounded with limits accepted by the chip, described in the datasheet.
37
38 If no structure is provided, the configuration defaults to single ended
39 operation and internal voltage reference (2.5V).
23 40
24Description 41Description
25----------- 42-----------
26 43
27This driver implements support for the Texas Instruments ADS7828. 44This driver implements support for the Texas Instruments ADS7828 and ADS7830.
28 45
29This device is a 12-bit 8-channel A-D converter. 46The ADS7828 device is a 12-bit 8-channel A/D converter, while the ADS7830 does
478-bit sampling.
30 48
31It can operate in single ended mode (8 +ve inputs) or in differential mode, 49It can operate in single ended mode (8 +ve inputs) or in differential mode,
32where 4 differential pairs can be measured. 50where 4 differential pairs can be measured.
@@ -34,3 +52,7 @@ where 4 differential pairs can be measured.
34The chip also has the facility to use an external voltage reference. This 52The chip also has the facility to use an external voltage reference. This
35may be required if your hardware supplies the ADS7828 from a 5V supply, see 53may be required if your hardware supplies the ADS7828 from a 5V supply, see
36the datasheet for more details. 54the datasheet for more details.
55
56There is no reliable way to identify this chip, so the driver will not scan
57some addresses to try to auto-detect it. That means that you will have to
58statically declare the device in the platform support code.
diff --git a/Documentation/hwmon/coretemp b/Documentation/hwmon/coretemp
index f17256f069ba..3374c085678d 100644
--- a/Documentation/hwmon/coretemp
+++ b/Documentation/hwmon/coretemp
@@ -98,8 +98,10 @@ Process Processor TjMax(C)
98 98
9945nm Atom Processors 9945nm Atom Processors
100 D525/510/425/410 100 100 D525/510/425/410 100
101 Z670/650 90
101 Z560/550/540/530P/530/520PT/520/515/510PT/510P 90 102 Z560/550/540/530P/530/520PT/520/515/510PT/510P 90
102 Z510/500 90 103 Z510/500 90
104 N570/550 100
103 N475/470/455/450 100 105 N475/470/455/450 100
104 N280/270 90 106 N280/270 90
105 330/230 125 107 330/230 125
diff --git a/Documentation/hwmon/da9055 b/Documentation/hwmon/da9055
new file mode 100644
index 000000000000..855c3f536e00
--- /dev/null
+++ b/Documentation/hwmon/da9055
@@ -0,0 +1,47 @@
1Supported chips:
2 * Dialog Semiconductors DA9055 PMIC
3 Prefix: 'da9055'
4 Datasheet: Datasheet is not publicly available.
5
6Authors: David Dajun Chen <dchen@diasemi.com>
7
8Description
9-----------
10
11The DA9055 provides an Analogue to Digital Converter (ADC) with 10 bits
12resolution and track and hold circuitry combined with an analogue input
13multiplexer. The analogue input multiplexer will allow conversion of up to 5
14different inputs. The track and hold circuit ensures stable input voltages at
15the input of the ADC during the conversion.
16
17The ADC is used to measure the following inputs:
18Channel 0: VDDOUT - measurement of the system voltage
19Channel 1: ADC_IN1 - high impedance input (0 - 2.5V)
20Channel 2: ADC_IN2 - high impedance input (0 - 2.5V)
21Channel 3: ADC_IN3 - high impedance input (0 - 2.5V)
22Channel 4: Internal Tjunc. - sense (internal temp. sensor)
23
24By using sysfs attributes we can measure the system voltage VDDOUT,
25chip junction temperature and auxiliary channels voltages.
26
27Voltage Monitoring
28------------------
29
30Voltages are sampled in a AUTO mode it can be manually sampled too and results
31are stored in a 10 bit ADC.
32
33The system voltage is calculated as:
34 Milli volt = ((ADC value * 1000) / 85) + 2500
35
36The voltages on ADC channels 1, 2 and 3 are calculated as:
37 Milli volt = (ADC value * 1000) / 102
38
39Temperature Monitoring
40----------------------
41
42Temperatures are sampled by a 10 bit ADC. Junction temperatures
43are monitored by the ADC channels.
44
45The junction temperature is calculated:
46 Degrees celsius = -0.4084 * (ADC_RES - T_OFFSET) + 307.6332
47The junction temperature attribute is supported by the driver.
diff --git a/Documentation/hwmon/pmbus b/Documentation/hwmon/pmbus
index f90f99920cc5..3d3a0f97f966 100644
--- a/Documentation/hwmon/pmbus
+++ b/Documentation/hwmon/pmbus
@@ -138,7 +138,7 @@ Sysfs entries
138 138
139When probing the chip, the driver identifies which PMBus registers are 139When probing the chip, the driver identifies which PMBus registers are
140supported, and determines available sensors from this information. 140supported, and determines available sensors from this information.
141Attribute files only exist if respective sensors are suported by the chip. 141Attribute files only exist if respective sensors are supported by the chip.
142Labels are provided to inform the user about the sensor associated with 142Labels are provided to inform the user about the sensor associated with
143a given sysfs entry. 143a given sysfs entry.
144 144
diff --git a/Documentation/hwmon/vexpress b/Documentation/hwmon/vexpress
new file mode 100644
index 000000000000..557d6d5ad90d
--- /dev/null
+++ b/Documentation/hwmon/vexpress
@@ -0,0 +1,34 @@
1Kernel driver vexpress
2======================
3
4Supported systems:
5 * ARM Ltd. Versatile Express platform
6 Prefix: 'vexpress'
7 Datasheets:
8 * "Hardware Description" sections of the Technical Reference Manuals
9 for the Versatile Express boards:
10 http://infocenter.arm.com/help/topic/com.arm.doc.subset.boards.express/index.html
11 * Section "4.4.14. System Configuration registers" of the V2M-P1 TRM:
12 http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0447-/index.html
13
14Author: Pawel Moll
15
16Description
17-----------
18
19Versatile Express platform (http://www.arm.com/versatileexpress/) is a
20reference & prototyping system for ARM Ltd. processors. It can be set up
21from a wide range of boards, each of them containing (apart of the main
22chip/FPGA) a number of microcontrollers responsible for platform
23configuration and control. Theses microcontrollers can also monitor the
24board and its environment by a number of internal and external sensors,
25providing information about power lines voltages and currents, board
26temperature and power usage. Some of them also calculate consumed energy
27and provide a cumulative use counter.
28
29The configuration devices are _not_ memory mapped and must be accessed
30via a custom interface, abstracted by the "vexpress_config" API.
31
32As these devices are non-discoverable, they must be described in a Device
33Tree passed to the kernel. Details of the DT binding for them can be found
34in Documentation/devicetree/bindings/hwmon/vexpress.txt.
diff --git a/Documentation/i2c/smbus-protocol b/Documentation/i2c/smbus-protocol
index 49f5b680809d..d1f22618e14b 100644
--- a/Documentation/i2c/smbus-protocol
+++ b/Documentation/i2c/smbus-protocol
@@ -23,6 +23,12 @@ don't match these function names. For some of the operations which pass a
23single data byte, the functions using SMBus protocol operation names execute 23single data byte, the functions using SMBus protocol operation names execute
24a different protocol operation entirely. 24a different protocol operation entirely.
25 25
26Each transaction type corresponds to a functionality flag. Before calling a
27transaction function, a device driver should always check (just once) for
28the corresponding functionality flag to ensure that the underlying I2C
29adapter supports the transaction in question. See
30<file:Documentation/i2c/functionality> for the details.
31
26 32
27Key to symbols 33Key to symbols
28============== 34==============
@@ -49,6 +55,8 @@ This sends a single bit to the device, at the place of the Rd/Wr bit.
49 55
50A Addr Rd/Wr [A] P 56A Addr Rd/Wr [A] P
51 57
58Functionality flag: I2C_FUNC_SMBUS_QUICK
59
52 60
53SMBus Receive Byte: i2c_smbus_read_byte() 61SMBus Receive Byte: i2c_smbus_read_byte()
54========================================== 62==========================================
@@ -60,6 +68,8 @@ the previous SMBus command.
60 68
61S Addr Rd [A] [Data] NA P 69S Addr Rd [A] [Data] NA P
62 70
71Functionality flag: I2C_FUNC_SMBUS_READ_BYTE
72
63 73
64SMBus Send Byte: i2c_smbus_write_byte() 74SMBus Send Byte: i2c_smbus_write_byte()
65======================================== 75========================================
@@ -69,6 +79,8 @@ to a device. See Receive Byte for more information.
69 79
70S Addr Wr [A] Data [A] P 80S Addr Wr [A] Data [A] P
71 81
82Functionality flag: I2C_FUNC_SMBUS_WRITE_BYTE
83
72 84
73SMBus Read Byte: i2c_smbus_read_byte_data() 85SMBus Read Byte: i2c_smbus_read_byte_data()
74============================================ 86============================================
@@ -78,6 +90,8 @@ The register is specified through the Comm byte.
78 90
79S Addr Wr [A] Comm [A] S Addr Rd [A] [Data] NA P 91S Addr Wr [A] Comm [A] S Addr Rd [A] [Data] NA P
80 92
93Functionality flag: I2C_FUNC_SMBUS_READ_BYTE_DATA
94
81 95
82SMBus Read Word: i2c_smbus_read_word_data() 96SMBus Read Word: i2c_smbus_read_word_data()
83============================================ 97============================================
@@ -88,6 +102,8 @@ byte. But this time, the data is a complete word (16 bits).
88 102
89S Addr Wr [A] Comm [A] S Addr Rd [A] [DataLow] A [DataHigh] NA P 103S Addr Wr [A] Comm [A] S Addr Rd [A] [DataLow] A [DataHigh] NA P
90 104
105Functionality flag: I2C_FUNC_SMBUS_READ_WORD_DATA
106
91Note the convenience function i2c_smbus_read_word_swapped is 107Note the convenience function i2c_smbus_read_word_swapped is
92available for reads where the two data bytes are the other way 108available for reads where the two data bytes are the other way
93around (not SMBus compliant, but very popular.) 109around (not SMBus compliant, but very popular.)
@@ -102,6 +118,8 @@ the Read Byte operation.
102 118
103S Addr Wr [A] Comm [A] Data [A] P 119S Addr Wr [A] Comm [A] Data [A] P
104 120
121Functionality flag: I2C_FUNC_SMBUS_WRITE_BYTE_DATA
122
105 123
106SMBus Write Word: i2c_smbus_write_word_data() 124SMBus Write Word: i2c_smbus_write_word_data()
107============================================== 125==============================================
@@ -112,6 +130,8 @@ specified through the Comm byte.
112 130
113S Addr Wr [A] Comm [A] DataLow [A] DataHigh [A] P 131S Addr Wr [A] Comm [A] DataLow [A] DataHigh [A] P
114 132
133Functionality flag: I2C_FUNC_SMBUS_WRITE_WORD_DATA
134
115Note the convenience function i2c_smbus_write_word_swapped is 135Note the convenience function i2c_smbus_write_word_swapped is
116available for writes where the two data bytes are the other way 136available for writes where the two data bytes are the other way
117around (not SMBus compliant, but very popular.) 137around (not SMBus compliant, but very popular.)
@@ -126,6 +146,8 @@ This command selects a device register (through the Comm byte), sends
126S Addr Wr [A] Comm [A] DataLow [A] DataHigh [A] 146S Addr Wr [A] Comm [A] DataLow [A] DataHigh [A]
127 S Addr Rd [A] [DataLow] A [DataHigh] NA P 147 S Addr Rd [A] [DataLow] A [DataHigh] NA P
128 148
149Functionality flag: I2C_FUNC_SMBUS_PROC_CALL
150
129 151
130SMBus Block Read: i2c_smbus_read_block_data() 152SMBus Block Read: i2c_smbus_read_block_data()
131============================================== 153==============================================
@@ -137,6 +159,8 @@ of data is specified by the device in the Count byte.
137S Addr Wr [A] Comm [A] 159S Addr Wr [A] Comm [A]
138 S Addr Rd [A] [Count] A [Data] A [Data] A ... A [Data] NA P 160 S Addr Rd [A] [Count] A [Data] A [Data] A ... A [Data] NA P
139 161
162Functionality flag: I2C_FUNC_SMBUS_READ_BLOCK_DATA
163
140 164
141SMBus Block Write: i2c_smbus_write_block_data() 165SMBus Block Write: i2c_smbus_write_block_data()
142================================================ 166================================================
@@ -147,6 +171,8 @@ Comm byte. The amount of data is specified in the Count byte.
147 171
148S Addr Wr [A] Comm [A] Count [A] Data [A] Data [A] ... [A] Data [A] P 172S Addr Wr [A] Comm [A] Count [A] Data [A] Data [A] ... [A] Data [A] P
149 173
174Functionality flag: I2C_FUNC_SMBUS_WRITE_BLOCK_DATA
175
150 176
151SMBus Block Write - Block Read Process Call 177SMBus Block Write - Block Read Process Call
152=========================================== 178===========================================
@@ -160,6 +186,8 @@ This command selects a device register (through the Comm byte), sends
160S Addr Wr [A] Comm [A] Count [A] Data [A] ... 186S Addr Wr [A] Comm [A] Count [A] Data [A] ...
161 S Addr Rd [A] [Count] A [Data] ... A P 187 S Addr Rd [A] [Count] A [Data] ... A P
162 188
189Functionality flag: I2C_FUNC_SMBUS_BLOCK_PROC_CALL
190
163 191
164SMBus Host Notify 192SMBus Host Notify
165================= 193=================
@@ -229,15 +257,7 @@ designated register that is specified through the Comm byte.
229S Addr Wr [A] Comm [A] 257S Addr Wr [A] Comm [A]
230 S Addr Rd [A] [Data] A [Data] A ... A [Data] NA P 258 S Addr Rd [A] [Data] A [Data] A ... A [Data] NA P
231 259
232 260Functionality flag: I2C_FUNC_SMBUS_READ_I2C_BLOCK
233I2C Block Read (2 Comm bytes)
234=============================
235
236This command reads a block of bytes from a device, from a
237designated register that is specified through the two Comm bytes.
238
239S Addr Wr [A] Comm1 [A] Comm2 [A]
240 S Addr Rd [A] [Data] A [Data] A ... A [Data] NA P
241 261
242 262
243I2C Block Write: i2c_smbus_write_i2c_block_data() 263I2C Block Write: i2c_smbus_write_i2c_block_data()
@@ -249,3 +269,5 @@ Comm byte. Note that command lengths of 0, 2, or more bytes are
249supported as they are indistinguishable from data. 269supported as they are indistinguishable from data.
250 270
251S Addr Wr [A] Comm [A] Data [A] Data [A] ... [A] Data [A] P 271S Addr Wr [A] Comm [A] Data [A] Data [A] ... [A] Data [A] P
272
273Functionality flag: I2C_FUNC_SMBUS_WRITE_I2C_BLOCK
diff --git a/Documentation/input/alps.txt b/Documentation/input/alps.txt
index ae8ba9a74ce1..3262b6e4d686 100644
--- a/Documentation/input/alps.txt
+++ b/Documentation/input/alps.txt
@@ -133,7 +133,7 @@ number of contacts (f1 and f0 in the table below).
133 133
134This packet only appears after a position packet with the mt bit set, and 134This packet only appears after a position packet with the mt bit set, and
135usually only appears when there are two or more contacts (although 135usually only appears when there are two or more contacts (although
136occassionally it's seen with only a single contact). 136occasionally it's seen with only a single contact).
137 137
138The final v3 packet type is the trackstick packet. 138The final v3 packet type is the trackstick packet.
139 139
diff --git a/Documentation/input/event-codes.txt b/Documentation/input/event-codes.txt
index 53305bd08182..f1ea2c69648d 100644
--- a/Documentation/input/event-codes.txt
+++ b/Documentation/input/event-codes.txt
@@ -196,6 +196,17 @@ EV_MSC:
196EV_MSC events are used for input and output events that do not fall under other 196EV_MSC events are used for input and output events that do not fall under other
197categories. 197categories.
198 198
199A few EV_MSC codes have special meaning:
200
201* MSC_TIMESTAMP:
202 - Used to report the number of microseconds since the last reset. This event
203 should be coded as an uint32 value, which is allowed to wrap around with
204 no special consequence. It is assumed that the time difference between two
205 consecutive events is reliable on a reasonable time scale (hours).
206 A reset to zero can happen, in which case the time since the last event is
207 unknown. If the device does not provide this information, the driver must
208 not provide it to user space.
209
199EV_LED: 210EV_LED:
200---------- 211----------
201EV_LED events are used for input and output to set and query the state of 212EV_LED events are used for input and output to set and query the state of
diff --git a/Documentation/kbuild/makefiles.txt b/Documentation/kbuild/makefiles.txt
index ec9ae6708691..14c3f4f1b617 100644
--- a/Documentation/kbuild/makefiles.txt
+++ b/Documentation/kbuild/makefiles.txt
@@ -1175,15 +1175,16 @@ When kbuild executes, the following steps are followed (roughly):
1175 in an init section in the image. Platform code *must* copy the 1175 in an init section in the image. Platform code *must* copy the
1176 blob to non-init memory prior to calling unflatten_device_tree(). 1176 blob to non-init memory prior to calling unflatten_device_tree().
1177 1177
1178 Example: 1178 To use this command, simply add *.dtb into obj-y or targets, or make
1179 #arch/x86/platform/ce4100/Makefile 1179 some other target depend on %.dtb
1180 clean-files := *dtb.S
1181 1180
1182 DTC_FLAGS := -p 1024 1181 A central rule exists to create $(obj)/%.dtb from $(src)/%.dts;
1183 obj-y += foo.dtb.o 1182 architecture Makefiles do no need to explicitly write out that rule.
1184 1183
1185 $(obj)/%.dtb: $(src)/%.dts 1184 Example:
1186 $(call cmd,dtc) 1185 targets += $(dtb-y)
1186 clean-files += *.dtb
1187 DTC_FLAGS ?= -p 1024
1187 1188
1188--- 6.8 Custom kbuild commands 1189--- 6.8 Custom kbuild commands
1189 1190
diff --git a/Documentation/kbuild/modules.txt b/Documentation/kbuild/modules.txt
index 3fb39e0116b4..69372fb98cf8 100644
--- a/Documentation/kbuild/modules.txt
+++ b/Documentation/kbuild/modules.txt
@@ -470,7 +470,7 @@ build.
470 470
471 Sometimes, an external module uses exported symbols from 471 Sometimes, an external module uses exported symbols from
472 another external module. kbuild needs to have full knowledge of 472 another external module. kbuild needs to have full knowledge of
473 all symbols to avoid spitting out warnings about undefined 473 all symbols to avoid spliitting out warnings about undefined
474 symbols. Three solutions exist for this situation. 474 symbols. Three solutions exist for this situation.
475 475
476 NOTE: The method with a top-level kbuild file is recommended 476 NOTE: The method with a top-level kbuild file is recommended
diff --git a/Documentation/kernel-doc-nano-HOWTO.txt b/Documentation/kernel-doc-nano-HOWTO.txt
index 3d8a97747f77..99b57abddf8a 100644
--- a/Documentation/kernel-doc-nano-HOWTO.txt
+++ b/Documentation/kernel-doc-nano-HOWTO.txt
@@ -64,6 +64,8 @@ Example kernel-doc function comment:
64 * comment lines. 64 * comment lines.
65 * 65 *
66 * The longer description can have multiple paragraphs. 66 * The longer description can have multiple paragraphs.
67 *
68 * Return: Describe the return value of foobar.
67 */ 69 */
68 70
69The short description following the subject can span multiple lines 71The short description following the subject can span multiple lines
@@ -78,6 +80,8 @@ If a function parameter is "..." (varargs), it should be listed in
78kernel-doc notation as: 80kernel-doc notation as:
79 * @...: description 81 * @...: description
80 82
83The return value, if any, should be described in a dedicated section
84named "Return".
81 85
82Example kernel-doc data structure comment. 86Example kernel-doc data structure comment.
83 87
@@ -222,6 +226,9 @@ only a "*").
222"section header:" names must be unique per function (or struct, 226"section header:" names must be unique per function (or struct,
223union, typedef, enum). 227union, typedef, enum).
224 228
229Use the section header "Return" for sections describing the return value
230of a function.
231
225Avoid putting a spurious blank line after the function name, or else the 232Avoid putting a spurious blank line after the function name, or else the
226description will be repeated! 233description will be repeated!
227 234
@@ -237,21 +244,21 @@ patterns, which are highlighted appropriately.
237NOTE 1: The multi-line descriptive text you provide does *not* recognize 244NOTE 1: The multi-line descriptive text you provide does *not* recognize
238line breaks, so if you try to format some text nicely, as in: 245line breaks, so if you try to format some text nicely, as in:
239 246
240 Return codes 247 Return:
241 0 - cool 248 0 - cool
242 1 - invalid arg 249 1 - invalid arg
243 2 - out of memory 250 2 - out of memory
244 251
245this will all run together and produce: 252this will all run together and produce:
246 253
247 Return codes 0 - cool 1 - invalid arg 2 - out of memory 254 Return: 0 - cool 1 - invalid arg 2 - out of memory
248 255
249NOTE 2: If the descriptive text you provide has lines that begin with 256NOTE 2: If the descriptive text you provide has lines that begin with
250some phrase followed by a colon, each of those phrases will be taken as 257some phrase followed by a colon, each of those phrases will be taken as
251a new section heading, which means you should similarly try to avoid text 258a new section heading, which means you should similarly try to avoid text
252like: 259like:
253 260
254 Return codes: 261 Return:
255 0: cool 262 0: cool
256 1: invalid arg 263 1: invalid arg
257 2: out of memory 264 2: out of memory
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 9776f068306b..ddd84d627185 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -905,6 +905,24 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
905 gpt [EFI] Forces disk with valid GPT signature but 905 gpt [EFI] Forces disk with valid GPT signature but
906 invalid Protective MBR to be treated as GPT. 906 invalid Protective MBR to be treated as GPT.
907 907
908 grcan.enable0= [HW] Configuration of physical interface 0. Determines
909 the "Enable 0" bit of the configuration register.
910 Format: 0 | 1
911 Default: 0
912 grcan.enable1= [HW] Configuration of physical interface 1. Determines
913 the "Enable 0" bit of the configuration register.
914 Format: 0 | 1
915 Default: 0
916 grcan.select= [HW] Select which physical interface to use.
917 Format: 0 | 1
918 Default: 0
919 grcan.txsize= [HW] Sets the size of the tx buffer.
920 Format: <unsigned int> such that (txsize & ~0x1fffc0) == 0.
921 Default: 1024
922 grcan.rxsize= [HW] Sets the size of the rx buffer.
923 Format: <unsigned int> such that (rxsize & ~0x1fffc0) == 0.
924 Default: 1024
925
908 hashdist= [KNL,NUMA] Large hashes allocated during boot 926 hashdist= [KNL,NUMA] Large hashes allocated during boot
909 are distributed across NUMA nodes. Defaults on 927 are distributed across NUMA nodes. Defaults on
910 for 64-bit NUMA, off otherwise. 928 for 64-bit NUMA, off otherwise.
@@ -1304,6 +1322,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
1304 lapic [X86-32,APIC] Enable the local APIC even if BIOS 1322 lapic [X86-32,APIC] Enable the local APIC even if BIOS
1305 disabled it. 1323 disabled it.
1306 1324
1325 lapic= [x86,APIC] "notscdeadline" Do not use TSC deadline
1326 value for LAPIC timer one-shot implementation. Default
1327 back to the programmable timer unit in the LAPIC.
1328
1307 lapic_timer_c2_ok [X86,APIC] trust the local apic timer 1329 lapic_timer_c2_ok [X86,APIC] trust the local apic timer
1308 in C2 power state. 1330 in C2 power state.
1309 1331
@@ -1481,9 +1503,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
1481 mem=nn[KMG] [KNL,BOOT] Force usage of a specific amount of memory 1503 mem=nn[KMG] [KNL,BOOT] Force usage of a specific amount of memory
1482 Amount of memory to be used when the kernel is not able 1504 Amount of memory to be used when the kernel is not able
1483 to see the whole system memory or for test. 1505 to see the whole system memory or for test.
1484 [X86-32] Use together with memmap= to avoid physical 1506 [X86] Work as limiting max address. Use together
1485 address space collisions. Without memmap= PCI devices 1507 with memmap= to avoid physical address space collisions.
1486 could be placed at addresses belonging to unused RAM. 1508 Without memmap= PCI devices could be placed at addresses
1509 belonging to unused RAM.
1487 1510
1488 mem=nopentium [BUGS=X86-32] Disable usage of 4MB pages for kernel 1511 mem=nopentium [BUGS=X86-32] Disable usage of 4MB pages for kernel
1489 memory. 1512 memory.
@@ -1984,6 +2007,20 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
1984 2007
1985 nox2apic [X86-64,APIC] Do not enable x2APIC mode. 2008 nox2apic [X86-64,APIC] Do not enable x2APIC mode.
1986 2009
2010 cpu0_hotplug [X86] Turn on CPU0 hotplug feature when
2011 CONFIG_BOOTPARAM_HOTPLUG_CPU0 is off.
2012 Some features depend on CPU0. Known dependencies are:
2013 1. Resume from suspend/hibernate depends on CPU0.
2014 Suspend/hibernate will fail if CPU0 is offline and you
2015 need to online CPU0 before suspend/hibernate.
2016 2. PIC interrupts also depend on CPU0. CPU0 can't be
2017 removed if a PIC interrupt is detected.
2018 It's said poweroff/reboot may depend on CPU0 on some
2019 machines although I haven't seen such issues so far
2020 after CPU0 is offline on a few tested machines.
2021 If the dependencies are under your control, you can
2022 turn on cpu0_hotplug.
2023
1987 nptcg= [IA-64] Override max number of concurrent global TLB 2024 nptcg= [IA-64] Override max number of concurrent global TLB
1988 purges which is reported from either PAL_VM_SUMMARY or 2025 purges which is reported from either PAL_VM_SUMMARY or
1989 SAL PALO. 2026 SAL PALO.
@@ -1996,6 +2033,9 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
1996 2033
1997 nr_uarts= [SERIAL] maximum number of UARTs to be registered. 2034 nr_uarts= [SERIAL] maximum number of UARTs to be registered.
1998 2035
2036 numa_balancing= [KNL,X86] Enable or disable automatic NUMA balancing.
2037 Allowed values are enable and disable
2038
1999 numa_zonelist_order= [KNL, BOOT] Select zonelist order for NUMA. 2039 numa_zonelist_order= [KNL, BOOT] Select zonelist order for NUMA.
2000 one of ['zone', 'node', 'default'] can be specified 2040 one of ['zone', 'node', 'default'] can be specified
2001 This can be set from sysctl after boot. 2041 This can be set from sysctl after boot.
@@ -2394,6 +2434,27 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
2394 ramdisk_size= [RAM] Sizes of RAM disks in kilobytes 2434 ramdisk_size= [RAM] Sizes of RAM disks in kilobytes
2395 See Documentation/blockdev/ramdisk.txt. 2435 See Documentation/blockdev/ramdisk.txt.
2396 2436
2437 rcu_nocbs= [KNL,BOOT]
2438 In kernels built with CONFIG_RCU_NOCB_CPU=y, set
2439 the specified list of CPUs to be no-callback CPUs.
2440 Invocation of these CPUs' RCU callbacks will
2441 be offloaded to "rcuoN" kthreads created for
2442 that purpose. This reduces OS jitter on the
2443 offloaded CPUs, which can be useful for HPC and
2444 real-time workloads. It can also improve energy
2445 efficiency for asymmetric multiprocessors.
2446
2447 rcu_nocbs_poll [KNL,BOOT]
2448 Rather than requiring that offloaded CPUs
2449 (specified by rcu_nocbs= above) explicitly
2450 awaken the corresponding "rcuoN" kthreads,
2451 make these kthreads poll for callbacks.
2452 This improves the real-time response for the
2453 offloaded CPUs by relieving them of the need to
2454 wake up the corresponding kthread, but degrades
2455 energy efficiency by requiring that the kthreads
2456 periodically wake up to do the polling.
2457
2397 rcutree.blimit= [KNL,BOOT] 2458 rcutree.blimit= [KNL,BOOT]
2398 Set maximum number of finished RCU callbacks to process 2459 Set maximum number of finished RCU callbacks to process
2399 in one batch. 2460 in one batch.
@@ -2859,6 +2920,22 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
2859 to facilitate early boot debugging. 2920 to facilitate early boot debugging.
2860 See also Documentation/trace/events.txt 2921 See also Documentation/trace/events.txt
2861 2922
2923 trace_options=[option-list]
2924 [FTRACE] Enable or disable tracer options at boot.
2925 The option-list is a comma delimited list of options
2926 that can be enabled or disabled just as if you were
2927 to echo the option name into
2928
2929 /sys/kernel/debug/tracing/trace_options
2930
2931 For example, to enable stacktrace option (to dump the
2932 stack trace of each event), add to the command line:
2933
2934 trace_options=stacktrace
2935
2936 See also Documentation/trace/ftrace.txt "trace options"
2937 section.
2938
2862 transparent_hugepage= 2939 transparent_hugepage=
2863 [KNL] 2940 [KNL]
2864 Format: [always|madvise|never] 2941 Format: [always|madvise|never]
diff --git a/Documentation/kref.txt b/Documentation/kref.txt
index 48ba715d5a63..ddf85a5dde0c 100644
--- a/Documentation/kref.txt
+++ b/Documentation/kref.txt
@@ -213,3 +213,91 @@ presentation on krefs, which can be found at:
213and: 213and:
214 http://www.kroah.com/linux/talks/ols_2004_kref_talk/ 214 http://www.kroah.com/linux/talks/ols_2004_kref_talk/
215 215
216
217The above example could also be optimized using kref_get_unless_zero() in
218the following way:
219
220static struct my_data *get_entry()
221{
222 struct my_data *entry = NULL;
223 mutex_lock(&mutex);
224 if (!list_empty(&q)) {
225 entry = container_of(q.next, struct my_data, link);
226 if (!kref_get_unless_zero(&entry->refcount))
227 entry = NULL;
228 }
229 mutex_unlock(&mutex);
230 return entry;
231}
232
233static void release_entry(struct kref *ref)
234{
235 struct my_data *entry = container_of(ref, struct my_data, refcount);
236
237 mutex_lock(&mutex);
238 list_del(&entry->link);
239 mutex_unlock(&mutex);
240 kfree(entry);
241}
242
243static void put_entry(struct my_data *entry)
244{
245 kref_put(&entry->refcount, release_entry);
246}
247
248Which is useful to remove the mutex lock around kref_put() in put_entry(), but
249it's important that kref_get_unless_zero is enclosed in the same critical
250section that finds the entry in the lookup table,
251otherwise kref_get_unless_zero may reference already freed memory.
252Note that it is illegal to use kref_get_unless_zero without checking its
253return value. If you are sure (by already having a valid pointer) that
254kref_get_unless_zero() will return true, then use kref_get() instead.
255
256The function kref_get_unless_zero also makes it possible to use rcu
257locking for lookups in the above example:
258
259struct my_data
260{
261 struct rcu_head rhead;
262 .
263 struct kref refcount;
264 .
265 .
266};
267
268static struct my_data *get_entry_rcu()
269{
270 struct my_data *entry = NULL;
271 rcu_read_lock();
272 if (!list_empty(&q)) {
273 entry = container_of(q.next, struct my_data, link);
274 if (!kref_get_unless_zero(&entry->refcount))
275 entry = NULL;
276 }
277 rcu_read_unlock();
278 return entry;
279}
280
281static void release_entry_rcu(struct kref *ref)
282{
283 struct my_data *entry = container_of(ref, struct my_data, refcount);
284
285 mutex_lock(&mutex);
286 list_del_rcu(&entry->link);
287 mutex_unlock(&mutex);
288 kfree_rcu(entry, rhead);
289}
290
291static void put_entry(struct my_data *entry)
292{
293 kref_put(&entry->refcount, release_entry_rcu);
294}
295
296But note that the struct kref member needs to remain in valid memory for a
297rcu grace period after release_entry_rcu was called. That can be accomplished
298by using kfree_rcu(entry, rhead) as done above, or by calling synchronize_rcu()
299before using kfree, but note that synchronize_rcu() may sleep for a
300substantial amount of time.
301
302
303Thomas Hellstrom <thellstrom@vmware.com>
diff --git a/Documentation/memory-barriers.txt b/Documentation/memory-barriers.txt
index 2759f7c188f0..3c4e1b3b80a1 100644
--- a/Documentation/memory-barriers.txt
+++ b/Documentation/memory-barriers.txt
@@ -251,12 +251,13 @@ And there are a number of things that _must_ or _must_not_ be assumed:
251 251
252 And for: 252 And for:
253 253
254 *A = X; Y = *A; 254 *A = X; *(A + 4) = Y;
255 255
256 we may get either of: 256 we may get any of:
257 257
258 STORE *A = X; Y = LOAD *A; 258 STORE *A = X; STORE *(A + 4) = Y;
259 STORE *A = Y = X; 259 STORE *(A + 4) = Y; STORE *A = X;
260 STORE {*A, *(A + 4) } = {X, Y};
260 261
261 262
262========================= 263=========================
diff --git a/Documentation/memory-hotplug.txt b/Documentation/memory-hotplug.txt
index 6d0c2519cf47..8e5eacbdcfa3 100644
--- a/Documentation/memory-hotplug.txt
+++ b/Documentation/memory-hotplug.txt
@@ -161,7 +161,8 @@ a recent addition and not present on older kernels.
161 in the memory block. 161 in the memory block.
162'state' : read-write 162'state' : read-write
163 at read: contains online/offline state of memory. 163 at read: contains online/offline state of memory.
164 at write: user can specify "online", "offline" command 164 at write: user can specify "online_kernel",
165 "online_movable", "online", "offline" command
165 which will be performed on al sections in the block. 166 which will be performed on al sections in the block.
166'phys_device' : read-only: designed to show the name of physical memory 167'phys_device' : read-only: designed to show the name of physical memory
167 device. This is not well implemented now. 168 device. This is not well implemented now.
@@ -255,6 +256,17 @@ For onlining, you have to write "online" to the section's state file as:
255 256
256% echo online > /sys/devices/system/memory/memoryXXX/state 257% echo online > /sys/devices/system/memory/memoryXXX/state
257 258
259This onlining will not change the ZONE type of the target memory section,
260If the memory section is in ZONE_NORMAL, you can change it to ZONE_MOVABLE:
261
262% echo online_movable > /sys/devices/system/memory/memoryXXX/state
263(NOTE: current limit: this memory section must be adjacent to ZONE_MOVABLE)
264
265And if the memory section is in ZONE_MOVABLE, you can change it to ZONE_NORMAL:
266
267% echo online_kernel > /sys/devices/system/memory/memoryXXX/state
268(NOTE: current limit: this memory section must be adjacent to ZONE_NORMAL)
269
258After this, section memoryXXX's state will be 'online' and the amount of 270After this, section memoryXXX's state will be 'online' and the amount of
259available memory will be increased. 271available memory will be increased.
260 272
@@ -377,15 +389,21 @@ The third argument is passed by pointer of struct memory_notify.
377struct memory_notify { 389struct memory_notify {
378 unsigned long start_pfn; 390 unsigned long start_pfn;
379 unsigned long nr_pages; 391 unsigned long nr_pages;
392 int status_change_nid_normal;
393 int status_change_nid_high;
380 int status_change_nid; 394 int status_change_nid;
381} 395}
382 396
383start_pfn is start_pfn of online/offline memory. 397start_pfn is start_pfn of online/offline memory.
384nr_pages is # of pages of online/offline memory. 398nr_pages is # of pages of online/offline memory.
385status_change_nid is set node id when N_HIGH_MEMORY of nodemask is (will be) 399status_change_nid_normal is set node id when N_NORMAL_MEMORY of nodemask
400is (will be) set/clear, if this is -1, then nodemask status is not changed.
401status_change_nid_high is set node id when N_HIGH_MEMORY of nodemask
402is (will be) set/clear, if this is -1, then nodemask status is not changed.
403status_change_nid is set node id when N_MEMORY of nodemask is (will be)
386set/clear. It means a new(memoryless) node gets new memory by online and a 404set/clear. It means a new(memoryless) node gets new memory by online and a
387node loses all memory. If this is -1, then nodemask status is not changed. 405node loses all memory. If this is -1, then nodemask status is not changed.
388If status_changed_nid >= 0, callback should create/discard structures for the 406If status_changed_nid* >= 0, callback should create/discard structures for the
389node if necessary. 407node if necessary.
390 408
391-------------- 409--------------
diff --git a/Documentation/misc-devices/mei/mei-amt-version.c b/Documentation/misc-devices/mei/mei-amt-version.c
index 01804f216312..49e4f770864a 100644
--- a/Documentation/misc-devices/mei/mei-amt-version.c
+++ b/Documentation/misc-devices/mei/mei-amt-version.c
@@ -214,7 +214,7 @@ out:
214} 214}
215 215
216/*************************************************************************** 216/***************************************************************************
217 * Intel Advanced Management Technolgy ME Client 217 * Intel Advanced Management Technology ME Client
218 ***************************************************************************/ 218 ***************************************************************************/
219 219
220#define AMT_MAJOR_VERSION 1 220#define AMT_MAJOR_VERSION 1
@@ -256,7 +256,7 @@ struct amt_code_versions {
256} __attribute__((packed)); 256} __attribute__((packed));
257 257
258/*************************************************************************** 258/***************************************************************************
259 * Intel Advanced Management Technolgy Host Interface 259 * Intel Advanced Management Technology Host Interface
260 ***************************************************************************/ 260 ***************************************************************************/
261 261
262struct amt_host_if_msg_header { 262struct amt_host_if_msg_header {
diff --git a/Documentation/mmc/mmc-dev-attrs.txt b/Documentation/mmc/mmc-dev-attrs.txt
index 22ae8441489f..0d98fac8893b 100644
--- a/Documentation/mmc/mmc-dev-attrs.txt
+++ b/Documentation/mmc/mmc-dev-attrs.txt
@@ -25,6 +25,8 @@ All attributes are read-only.
25 serial Product Serial Number (from CID Register) 25 serial Product Serial Number (from CID Register)
26 erase_size Erase group size 26 erase_size Erase group size
27 preferred_erase_size Preferred erase size 27 preferred_erase_size Preferred erase size
28 raw_rpmb_size_mult RPMB partition size
29 rel_sectors Reliable write sector count
28 30
29Note on Erase Size and Preferred Erase Size: 31Note on Erase Size and Preferred Erase Size:
30 32
@@ -65,6 +67,11 @@ Note on Erase Size and Preferred Erase Size:
65 67
66 "preferred_erase_size" is in bytes. 68 "preferred_erase_size" is in bytes.
67 69
70Note on raw_rpmb_size_mult:
71 "raw_rpmb_size_mult" is a mutliple of 128kB block.
72 RPMB size in byte is calculated by using the following equation:
73 RPMB partition size = 128kB x raw_rpmb_size_mult
74
68SD/MMC/SDIO Clock Gating Attribute 75SD/MMC/SDIO Clock Gating Attribute
69================================== 76==================================
70 77
diff --git a/Documentation/networking/batman-adv.txt b/Documentation/networking/batman-adv.txt
index a173d2a879f5..c1d82047a4b1 100644
--- a/Documentation/networking/batman-adv.txt
+++ b/Documentation/networking/batman-adv.txt
@@ -203,7 +203,8 @@ abled during run time. Following log_levels are defined:
2032 - Enable messages related to route added / changed / deleted 2032 - Enable messages related to route added / changed / deleted
2044 - Enable messages related to translation table operations 2044 - Enable messages related to translation table operations
2058 - Enable messages related to bridge loop avoidance 2058 - Enable messages related to bridge loop avoidance
20615 - enable all messages 20616 - Enable messaged related to DAT, ARP snooping and parsing
20731 - Enable all messages
207 208
208The debug output can be changed at runtime using the file 209The debug output can be changed at runtime using the file
209/sys/class/net/bat0/mesh/log_level. e.g. 210/sys/class/net/bat0/mesh/log_level. e.g.
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt
index c7fc10724948..dd52d516cb89 100644
--- a/Documentation/networking/ip-sysctl.txt
+++ b/Documentation/networking/ip-sysctl.txt
@@ -30,16 +30,24 @@ neigh/default/gc_thresh3 - INTEGER
30 Maximum number of neighbor entries allowed. Increase this 30 Maximum number of neighbor entries allowed. Increase this
31 when using large numbers of interfaces and when communicating 31 when using large numbers of interfaces and when communicating
32 with large numbers of directly-connected peers. 32 with large numbers of directly-connected peers.
33 Default: 1024
33 34
34neigh/default/unres_qlen_bytes - INTEGER 35neigh/default/unres_qlen_bytes - INTEGER
35 The maximum number of bytes which may be used by packets 36 The maximum number of bytes which may be used by packets
36 queued for each unresolved address by other network layers. 37 queued for each unresolved address by other network layers.
37 (added in linux 3.3) 38 (added in linux 3.3)
39 Seting negative value is meaningless and will retrun error.
40 Default: 65536 Bytes(64KB)
38 41
39neigh/default/unres_qlen - INTEGER 42neigh/default/unres_qlen - INTEGER
40 The maximum number of packets which may be queued for each 43 The maximum number of packets which may be queued for each
41 unresolved address by other network layers. 44 unresolved address by other network layers.
42 (deprecated in linux 3.3) : use unres_qlen_bytes instead. 45 (deprecated in linux 3.3) : use unres_qlen_bytes instead.
46 Prior to linux 3.3, the default value is 3 which may cause
47 unexpected packet loss. The current default value is calculated
48 according to default value of unres_qlen_bytes and true size of
49 packet.
50 Default: 31
43 51
44mtu_expires - INTEGER 52mtu_expires - INTEGER
45 Time, in seconds, that cached PMTU information is kept. 53 Time, in seconds, that cached PMTU information is kept.
@@ -199,15 +207,16 @@ tcp_early_retrans - INTEGER
199 Default: 2 207 Default: 2
200 208
201tcp_ecn - INTEGER 209tcp_ecn - INTEGER
202 Enable Explicit Congestion Notification (ECN) in TCP. ECN is only 210 Control use of Explicit Congestion Notification (ECN) by TCP.
203 used when both ends of the TCP flow support it. It is useful to 211 ECN is used only when both ends of the TCP connection indicate
204 avoid losses due to congestion (when the bottleneck router supports 212 support for it. This feature is useful in avoiding losses due
205 ECN). 213 to congestion by allowing supporting routers to signal
214 congestion before having to drop packets.
206 Possible values are: 215 Possible values are:
207 0 disable ECN 216 0 Disable ECN. Neither initiate nor accept ECN.
208 1 ECN enabled 217 1 Always request ECN on outgoing connection attempts.
209 2 Only server-side ECN enabled. If the other end does 218 2 Enable ECN when requested by incomming connections
210 not support ECN, behavior is like with ECN disabled. 219 but do not request ECN on outgoing connections.
211 Default: 2 220 Default: 2
212 221
213tcp_fack - BOOLEAN 222tcp_fack - BOOLEAN
@@ -215,15 +224,14 @@ tcp_fack - BOOLEAN
215 The value is not used, if tcp_sack is not enabled. 224 The value is not used, if tcp_sack is not enabled.
216 225
217tcp_fin_timeout - INTEGER 226tcp_fin_timeout - INTEGER
218 Time to hold socket in state FIN-WAIT-2, if it was closed 227 The length of time an orphaned (no longer referenced by any
219 by our side. Peer can be broken and never close its side, 228 application) connection will remain in the FIN_WAIT_2 state
220 or even died unexpectedly. Default value is 60sec. 229 before it is aborted at the local end. While a perfectly
221 Usual value used in 2.2 was 180 seconds, you may restore 230 valid "receive only" state for an un-orphaned connection, an
222 it, but remember that if your machine is even underloaded WEB server, 231 orphaned connection in FIN_WAIT_2 state could otherwise wait
223 you risk to overflow memory with kilotons of dead sockets, 232 forever for the remote to close its end of the connection.
224 FIN-WAIT-2 sockets are less dangerous than FIN-WAIT-1, 233 Cf. tcp_max_orphans
225 because they eat maximum 1.5K of memory, but they tend 234 Default: 60 seconds
226 to live longer. Cf. tcp_max_orphans.
227 235
228tcp_frto - INTEGER 236tcp_frto - INTEGER
229 Enables Forward RTO-Recovery (F-RTO) defined in RFC4138. 237 Enables Forward RTO-Recovery (F-RTO) defined in RFC4138.
@@ -1514,6 +1522,20 @@ cookie_preserve_enable - BOOLEAN
1514 1522
1515 Default: 1 1523 Default: 1
1516 1524
1525cookie_hmac_alg - STRING
1526 Select the hmac algorithm used when generating the cookie value sent by
1527 a listening sctp socket to a connecting client in the INIT-ACK chunk.
1528 Valid values are:
1529 * md5
1530 * sha1
1531 * none
1532 Ability to assign md5 or sha1 as the selected alg is predicated on the
1533 configuarion of those algorithms at build time (CONFIG_CRYPTO_MD5 and
1534 CONFIG_CRYPTO_SHA1).
1535
1536 Default: Dependent on configuration. MD5 if available, else SHA1 if
1537 available, else none.
1538
1517rcvbuf_policy - INTEGER 1539rcvbuf_policy - INTEGER
1518 Determines if the receive buffer is attributed to the socket or to 1540 Determines if the receive buffer is attributed to the socket or to
1519 association. SCTP supports the capability to create multiple 1541 association. SCTP supports the capability to create multiple
diff --git a/Documentation/networking/netdev-features.txt b/Documentation/networking/netdev-features.txt
index 4164f5c02e4b..f310edec8a77 100644
--- a/Documentation/networking/netdev-features.txt
+++ b/Documentation/networking/netdev-features.txt
@@ -164,4 +164,4 @@ read the CRC recorded by the NIC on receipt of the packet.
164This requests that the NIC receive all possible frames, including errored 164This requests that the NIC receive all possible frames, including errored
165frames (such as bad FCS, etc). This can be helpful when sniffing a link with 165frames (such as bad FCS, etc). This can be helpful when sniffing a link with
166bad packets on it. Some NICs may receive more packets if also put into normal 166bad packets on it. Some NICs may receive more packets if also put into normal
167PROMISC mdoe. 167PROMISC mode.
diff --git a/Documentation/networking/packet_mmap.txt b/Documentation/networking/packet_mmap.txt
index 1c08a4b0981f..94444b152fbc 100644
--- a/Documentation/networking/packet_mmap.txt
+++ b/Documentation/networking/packet_mmap.txt
@@ -3,9 +3,9 @@
3-------------------------------------------------------------------------------- 3--------------------------------------------------------------------------------
4 4
5This file documents the mmap() facility available with the PACKET 5This file documents the mmap() facility available with the PACKET
6socket interface on 2.4 and 2.6 kernels. This type of sockets is used for 6socket interface on 2.4/2.6/3.x kernels. This type of sockets is used for
7capture network traffic with utilities like tcpdump or any other that needs 7i) capture network traffic with utilities like tcpdump, ii) transmit network
8raw access to network interface. 8traffic, or any other that needs raw access to network interface.
9 9
10You can find the latest version of this document at: 10You can find the latest version of this document at:
11 http://wiki.ipxwarzone.com/index.php5?title=Linux_packet_mmap 11 http://wiki.ipxwarzone.com/index.php5?title=Linux_packet_mmap
@@ -21,19 +21,18 @@ Please send your comments to
21+ Why use PACKET_MMAP 21+ Why use PACKET_MMAP
22-------------------------------------------------------------------------------- 22--------------------------------------------------------------------------------
23 23
24In Linux 2.4/2.6 if PACKET_MMAP is not enabled, the capture process is very 24In Linux 2.4/2.6/3.x if PACKET_MMAP is not enabled, the capture process is very
25inefficient. It uses very limited buffers and requires one system call 25inefficient. It uses very limited buffers and requires one system call to
26to capture each packet, it requires two if you want to get packet's 26capture each packet, it requires two if you want to get packet's timestamp
27timestamp (like libpcap always does). 27(like libpcap always does).
28 28
29In the other hand PACKET_MMAP is very efficient. PACKET_MMAP provides a size 29In the other hand PACKET_MMAP is very efficient. PACKET_MMAP provides a size
30configurable circular buffer mapped in user space that can be used to either 30configurable circular buffer mapped in user space that can be used to either
31send or receive packets. This way reading packets just needs to wait for them, 31send or receive packets. This way reading packets just needs to wait for them,
32most of the time there is no need to issue a single system call. Concerning 32most of the time there is no need to issue a single system call. Concerning
33transmission, multiple packets can be sent through one system call to get the 33transmission, multiple packets can be sent through one system call to get the
34highest bandwidth. 34highest bandwidth. By using a shared buffer between the kernel and the user
35By using a shared buffer between the kernel and the user also has the benefit 35also has the benefit of minimizing packet copies.
36of minimizing packet copies.
37 36
38It's fine to use PACKET_MMAP to improve the performance of the capture and 37It's fine to use PACKET_MMAP to improve the performance of the capture and
39transmission process, but it isn't everything. At least, if you are capturing 38transmission process, but it isn't everything. At least, if you are capturing
@@ -41,7 +40,8 @@ at high speeds (this is relative to the cpu speed), you should check if the
41device driver of your network interface card supports some sort of interrupt 40device driver of your network interface card supports some sort of interrupt
42load mitigation or (even better) if it supports NAPI, also make sure it is 41load mitigation or (even better) if it supports NAPI, also make sure it is
43enabled. For transmission, check the MTU (Maximum Transmission Unit) used and 42enabled. For transmission, check the MTU (Maximum Transmission Unit) used and
44supported by devices of your network. 43supported by devices of your network. CPU IRQ pinning of your network interface
44card can also be an advantage.
45 45
46-------------------------------------------------------------------------------- 46--------------------------------------------------------------------------------
47+ How to use mmap() to improve capture process 47+ How to use mmap() to improve capture process
@@ -87,9 +87,7 @@ the following process:
87socket creation and destruction is straight forward, and is done 87socket creation and destruction is straight forward, and is done
88the same way with or without PACKET_MMAP: 88the same way with or without PACKET_MMAP:
89 89
90int fd; 90 int fd = socket(PF_PACKET, mode, htons(ETH_P_ALL));
91
92fd= socket(PF_PACKET, mode, htons(ETH_P_ALL))
93 91
94where mode is SOCK_RAW for the raw interface were link level 92where mode is SOCK_RAW for the raw interface were link level
95information can be captured or SOCK_DGRAM for the cooked 93information can be captured or SOCK_DGRAM for the cooked
@@ -163,11 +161,23 @@ As capture, each frame contains two parts:
163 161
164 A complete tutorial is available at: http://wiki.gnu-log.net/ 162 A complete tutorial is available at: http://wiki.gnu-log.net/
165 163
164By default, the user should put data at :
165 frame base + TPACKET_HDRLEN - sizeof(struct sockaddr_ll)
166
167So, whatever you choose for the socket mode (SOCK_DGRAM or SOCK_RAW),
168the beginning of the user data will be at :
169 frame base + TPACKET_ALIGN(sizeof(struct tpacket_hdr))
170
171If you wish to put user data at a custom offset from the beginning of
172the frame (for payload alignment with SOCK_RAW mode for instance) you
173can set tp_net (with SOCK_DGRAM) or tp_mac (with SOCK_RAW). In order
174to make this work it must be enabled previously with setsockopt()
175and the PACKET_TX_HAS_OFF option.
176
166-------------------------------------------------------------------------------- 177--------------------------------------------------------------------------------
167+ PACKET_MMAP settings 178+ PACKET_MMAP settings
168-------------------------------------------------------------------------------- 179--------------------------------------------------------------------------------
169 180
170
171To setup PACKET_MMAP from user level code is done with a call like 181To setup PACKET_MMAP from user level code is done with a call like
172 182
173 - Capture process 183 - Capture process
@@ -201,7 +211,6 @@ indeed, packet_set_ring checks that the following condition is true
201 211
202 frames_per_block * tp_block_nr == tp_frame_nr 212 frames_per_block * tp_block_nr == tp_frame_nr
203 213
204
205Lets see an example, with the following values: 214Lets see an example, with the following values:
206 215
207 tp_block_size= 4096 216 tp_block_size= 4096
@@ -227,7 +236,6 @@ be spawned across two blocks, so there are some details you have to take into
227account when choosing the frame_size. See "Mapping and use of the circular 236account when choosing the frame_size. See "Mapping and use of the circular
228buffer (ring)". 237buffer (ring)".
229 238
230
231-------------------------------------------------------------------------------- 239--------------------------------------------------------------------------------
232+ PACKET_MMAP setting constraints 240+ PACKET_MMAP setting constraints
233-------------------------------------------------------------------------------- 241--------------------------------------------------------------------------------
@@ -264,7 +272,6 @@ User space programs can include /usr/include/sys/user.h and
264The pagesize can also be determined dynamically with the getpagesize (2) 272The pagesize can also be determined dynamically with the getpagesize (2)
265system call. 273system call.
266 274
267
268 Block number limit 275 Block number limit
269-------------------- 276--------------------
270 277
@@ -284,7 +291,6 @@ called pg_vec, its size limits the number of blocks that can be allocated.
284 v block #2 291 v block #2
285 block #1 292 block #1
286 293
287
288kmalloc allocates any number of bytes of physically contiguous memory from 294kmalloc allocates any number of bytes of physically contiguous memory from
289a pool of pre-determined sizes. This pool of memory is maintained by the slab 295a pool of pre-determined sizes. This pool of memory is maintained by the slab
290allocator which is at the end the responsible for doing the allocation and 296allocator which is at the end the responsible for doing the allocation and
@@ -299,7 +305,6 @@ pointers to blocks is
299 305
300 131072/4 = 32768 blocks 306 131072/4 = 32768 blocks
301 307
302
303 PACKET_MMAP buffer size calculator 308 PACKET_MMAP buffer size calculator
304------------------------------------ 309------------------------------------
305 310
@@ -340,7 +345,6 @@ and a value for <frame size> of 2048 bytes. These parameters will yield
340and hence the buffer will have a 262144 MiB size. So it can hold 345and hence the buffer will have a 262144 MiB size. So it can hold
341262144 MiB / 2048 bytes = 134217728 frames 346262144 MiB / 2048 bytes = 134217728 frames
342 347
343
344Actually, this buffer size is not possible with an i386 architecture. 348Actually, this buffer size is not possible with an i386 architecture.
345Remember that the memory is allocated in kernel space, in the case of 349Remember that the memory is allocated in kernel space, in the case of
346an i386 kernel's memory size is limited to 1GiB. 350an i386 kernel's memory size is limited to 1GiB.
@@ -372,7 +376,6 @@ the following (from include/linux/if_packet.h):
372 - Start+tp_net: Packet data, aligned to TPACKET_ALIGNMENT=16. 376 - Start+tp_net: Packet data, aligned to TPACKET_ALIGNMENT=16.
373 - Pad to align to TPACKET_ALIGNMENT=16 377 - Pad to align to TPACKET_ALIGNMENT=16
374 */ 378 */
375
376 379
377 The following are conditions that are checked in packet_set_ring 380 The following are conditions that are checked in packet_set_ring
378 381
@@ -413,7 +416,6 @@ and the following flags apply:
413 #define TP_STATUS_LOSING 4 416 #define TP_STATUS_LOSING 4
414 #define TP_STATUS_CSUMNOTREADY 8 417 #define TP_STATUS_CSUMNOTREADY 8
415 418
416
417TP_STATUS_COPY : This flag indicates that the frame (and associated 419TP_STATUS_COPY : This flag indicates that the frame (and associated
418 meta information) has been truncated because it's 420 meta information) has been truncated because it's
419 larger than tp_frame_size. This packet can be 421 larger than tp_frame_size. This packet can be
@@ -462,7 +464,6 @@ packets are in the ring:
462It doesn't incur in a race condition to first check the status value and 464It doesn't incur in a race condition to first check the status value and
463then poll for frames. 465then poll for frames.
464 466
465
466++ Transmission process 467++ Transmission process
467Those defines are also used for transmission: 468Those defines are also used for transmission:
468 469
@@ -494,6 +495,196 @@ The user can also use poll() to check if a buffer is available:
494 retval = poll(&pfd, 1, timeout); 495 retval = poll(&pfd, 1, timeout);
495 496
496------------------------------------------------------------------------------- 497-------------------------------------------------------------------------------
498+ What TPACKET versions are available and when to use them?
499-------------------------------------------------------------------------------
500
501 int val = tpacket_version;
502 setsockopt(fd, SOL_PACKET, PACKET_VERSION, &val, sizeof(val));
503 getsockopt(fd, SOL_PACKET, PACKET_VERSION, &val, sizeof(val));
504
505where 'tpacket_version' can be TPACKET_V1 (default), TPACKET_V2, TPACKET_V3.
506
507TPACKET_V1:
508 - Default if not otherwise specified by setsockopt(2)
509 - RX_RING, TX_RING available
510 - VLAN metadata information available for packets
511 (TP_STATUS_VLAN_VALID)
512
513TPACKET_V1 --> TPACKET_V2:
514 - Made 64 bit clean due to unsigned long usage in TPACKET_V1
515 structures, thus this also works on 64 bit kernel with 32 bit
516 userspace and the like
517 - Timestamp resolution in nanoseconds instead of microseconds
518 - RX_RING, TX_RING available
519 - How to switch to TPACKET_V2:
520 1. Replace struct tpacket_hdr by struct tpacket2_hdr
521 2. Query header len and save
522 3. Set protocol version to 2, set up ring as usual
523 4. For getting the sockaddr_ll,
524 use (void *)hdr + TPACKET_ALIGN(hdrlen) instead of
525 (void *)hdr + TPACKET_ALIGN(sizeof(struct tpacket_hdr))
526
527TPACKET_V2 --> TPACKET_V3:
528 - Flexible buffer implementation:
529 1. Blocks can be configured with non-static frame-size
530 2. Read/poll is at a block-level (as opposed to packet-level)
531 3. Added poll timeout to avoid indefinite user-space wait
532 on idle links
533 4. Added user-configurable knobs:
534 4.1 block::timeout
535 4.2 tpkt_hdr::sk_rxhash
536 - RX Hash data available in user space
537 - Currently only RX_RING available
538
539-------------------------------------------------------------------------------
540+ AF_PACKET fanout mode
541-------------------------------------------------------------------------------
542
543In the AF_PACKET fanout mode, packet reception can be load balanced among
544processes. This also works in combination with mmap(2) on packet sockets.
545
546Minimal example code by David S. Miller (try things like "./test eth0 hash",
547"./test eth0 lb", etc.):
548
549#include <stddef.h>
550#include <stdlib.h>
551#include <stdio.h>
552#include <string.h>
553
554#include <sys/types.h>
555#include <sys/wait.h>
556#include <sys/socket.h>
557#include <sys/ioctl.h>
558
559#include <unistd.h>
560
561#include <linux/if_ether.h>
562#include <linux/if_packet.h>
563
564#include <net/if.h>
565
566static const char *device_name;
567static int fanout_type;
568static int fanout_id;
569
570#ifndef PACKET_FANOUT
571# define PACKET_FANOUT 18
572# define PACKET_FANOUT_HASH 0
573# define PACKET_FANOUT_LB 1
574#endif
575
576static int setup_socket(void)
577{
578 int err, fd = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_IP));
579 struct sockaddr_ll ll;
580 struct ifreq ifr;
581 int fanout_arg;
582
583 if (fd < 0) {
584 perror("socket");
585 return EXIT_FAILURE;
586 }
587
588 memset(&ifr, 0, sizeof(ifr));
589 strcpy(ifr.ifr_name, device_name);
590 err = ioctl(fd, SIOCGIFINDEX, &ifr);
591 if (err < 0) {
592 perror("SIOCGIFINDEX");
593 return EXIT_FAILURE;
594 }
595
596 memset(&ll, 0, sizeof(ll));
597 ll.sll_family = AF_PACKET;
598 ll.sll_ifindex = ifr.ifr_ifindex;
599 err = bind(fd, (struct sockaddr *) &ll, sizeof(ll));
600 if (err < 0) {
601 perror("bind");
602 return EXIT_FAILURE;
603 }
604
605 fanout_arg = (fanout_id | (fanout_type << 16));
606 err = setsockopt(fd, SOL_PACKET, PACKET_FANOUT,
607 &fanout_arg, sizeof(fanout_arg));
608 if (err) {
609 perror("setsockopt");
610 return EXIT_FAILURE;
611 }
612
613 return fd;
614}
615
616static void fanout_thread(void)
617{
618 int fd = setup_socket();
619 int limit = 10000;
620
621 if (fd < 0)
622 exit(fd);
623
624 while (limit-- > 0) {
625 char buf[1600];
626 int err;
627
628 err = read(fd, buf, sizeof(buf));
629 if (err < 0) {
630 perror("read");
631 exit(EXIT_FAILURE);
632 }
633 if ((limit % 10) == 0)
634 fprintf(stdout, "(%d) \n", getpid());
635 }
636
637 fprintf(stdout, "%d: Received 10000 packets\n", getpid());
638
639 close(fd);
640 exit(0);
641}
642
643int main(int argc, char **argp)
644{
645 int fd, err;
646 int i;
647
648 if (argc != 3) {
649 fprintf(stderr, "Usage: %s INTERFACE {hash|lb}\n", argp[0]);
650 return EXIT_FAILURE;
651 }
652
653 if (!strcmp(argp[2], "hash"))
654 fanout_type = PACKET_FANOUT_HASH;
655 else if (!strcmp(argp[2], "lb"))
656 fanout_type = PACKET_FANOUT_LB;
657 else {
658 fprintf(stderr, "Unknown fanout type [%s]\n", argp[2]);
659 exit(EXIT_FAILURE);
660 }
661
662 device_name = argp[1];
663 fanout_id = getpid() & 0xffff;
664
665 for (i = 0; i < 4; i++) {
666 pid_t pid = fork();
667
668 switch (pid) {
669 case 0:
670 fanout_thread();
671
672 case -1:
673 perror("fork");
674 exit(EXIT_FAILURE);
675 }
676 }
677
678 for (i = 0; i < 4; i++) {
679 int status;
680
681 wait(&status);
682 }
683
684 return 0;
685}
686
687-------------------------------------------------------------------------------
497+ PACKET_TIMESTAMP 688+ PACKET_TIMESTAMP
498------------------------------------------------------------------------------- 689-------------------------------------------------------------------------------
499 690
@@ -519,6 +710,13 @@ the networking stack is used (the behavior before this setting was added).
519See include/linux/net_tstamp.h and Documentation/networking/timestamping 710See include/linux/net_tstamp.h and Documentation/networking/timestamping
520for more information on hardware timestamps. 711for more information on hardware timestamps.
521 712
713-------------------------------------------------------------------------------
714+ Miscellaneous bits
715-------------------------------------------------------------------------------
716
717- Packet sockets work well together with Linux socket filters, thus you also
718 might want to have a look at Documentation/networking/filter.txt
719
522-------------------------------------------------------------------------------- 720--------------------------------------------------------------------------------
523+ THANKS 721+ THANKS
524-------------------------------------------------------------------------------- 722--------------------------------------------------------------------------------
diff --git a/Documentation/networking/stmmac.txt b/Documentation/networking/stmmac.txt
index ef9ee71b4d7f..f9fa6db40a52 100644
--- a/Documentation/networking/stmmac.txt
+++ b/Documentation/networking/stmmac.txt
@@ -29,11 +29,9 @@ The kernel configuration option is STMMAC_ETH:
29 dma_txsize: DMA tx ring size; 29 dma_txsize: DMA tx ring size;
30 buf_sz: DMA buffer size; 30 buf_sz: DMA buffer size;
31 tc: control the HW FIFO threshold; 31 tc: control the HW FIFO threshold;
32 tx_coe: Enable/Disable Tx Checksum Offload engine;
33 watchdog: transmit timeout (in milliseconds); 32 watchdog: transmit timeout (in milliseconds);
34 flow_ctrl: Flow control ability [on/off]; 33 flow_ctrl: Flow control ability [on/off];
35 pause: Flow Control Pause Time; 34 pause: Flow Control Pause Time;
36 tmrate: timer period (only if timer optimisation is configured).
37 35
383) Command line options 363) Command line options
39Driver parameters can be also passed in command line by using: 37Driver parameters can be also passed in command line by using:
@@ -60,17 +58,19 @@ Then the poll method will be scheduled at some future point.
60The incoming packets are stored, by the DMA, in a list of pre-allocated socket 58The incoming packets are stored, by the DMA, in a list of pre-allocated socket
61buffers in order to avoid the memcpy (Zero-copy). 59buffers in order to avoid the memcpy (Zero-copy).
62 60
634.3) Timer-Driver Interrupt 614.3) Interrupt Mitigation
64Instead of having the device that asynchronously notifies the frame receptions, 62The driver is able to mitigate the number of its DMA interrupts
65the driver configures a timer to generate an interrupt at regular intervals. 63using NAPI for the reception on chips older than the 3.50.
66Based on the granularity of the timer, the frames that are received by the 64New chips have an HW RX-Watchdog used for this mitigation.
67device will experience different levels of latency. Some NICs have dedicated 65
68timer device to perform this task. STMMAC can use either the RTC device or the 66On Tx-side, the mitigation schema is based on a SW timer that calls the
69TMU channel 2 on STLinux platforms. 67tx function (stmmac_tx) to reclaim the resource after transmitting the
70The timers frequency can be passed to the driver as parameter; when change it, 68frames.
71take care of both hardware capability and network stability/performance impact. 69Also there is another parameter (like a threshold) used to program
72Several performance tests on STM platforms showed this optimisation allows to 70the descriptors avoiding to set the interrupt on completion bit in
73spare the CPU while having the maximum throughput. 71when the frame is sent (xmit).
72
73Mitigation parameters can be tuned by ethtool.
74 74
754.4) WOL 754.4) WOL
76Wake up on Lan feature through Magic and Unicast frames are supported for the 76Wake up on Lan feature through Magic and Unicast frames are supported for the
@@ -121,6 +121,7 @@ struct plat_stmmacenet_data {
121 int bugged_jumbo; 121 int bugged_jumbo;
122 int pmt; 122 int pmt;
123 int force_sf_dma_mode; 123 int force_sf_dma_mode;
124 int riwt_off;
124 void (*fix_mac_speed)(void *priv, unsigned int speed); 125 void (*fix_mac_speed)(void *priv, unsigned int speed);
125 void (*bus_setup)(void __iomem *ioaddr); 126 void (*bus_setup)(void __iomem *ioaddr);
126 int (*init)(struct platform_device *pdev); 127 int (*init)(struct platform_device *pdev);
@@ -156,6 +157,7 @@ Where:
156 o pmt: core has the embedded power module (optional). 157 o pmt: core has the embedded power module (optional).
157 o force_sf_dma_mode: force DMA to use the Store and Forward mode 158 o force_sf_dma_mode: force DMA to use the Store and Forward mode
158 instead of the Threshold. 159 instead of the Threshold.
160 o riwt_off: force to disable the RX watchdog feature and switch to NAPI mode.
159 o fix_mac_speed: this callback is used for modifying some syscfg registers 161 o fix_mac_speed: this callback is used for modifying some syscfg registers
160 (on ST SoCs) according to the link speed negotiated by the 162 (on ST SoCs) according to the link speed negotiated by the
161 physical layer . 163 physical layer .
diff --git a/Documentation/networking/vxlan.txt b/Documentation/networking/vxlan.txt
index 5b34b762d7d5..6d993510f091 100644
--- a/Documentation/networking/vxlan.txt
+++ b/Documentation/networking/vxlan.txt
@@ -32,7 +32,7 @@ no entry is in the forwarding table.
32 # ip link delete vxlan0 32 # ip link delete vxlan0
33 33
343. Show vxlan info 343. Show vxlan info
35 # ip -d show vxlan0 35 # ip -d link show vxlan0
36 36
37It is possible to create, destroy and display the vxlan 37It is possible to create, destroy and display the vxlan
38forwarding table using the new bridge command. 38forwarding table using the new bridge command.
@@ -41,7 +41,7 @@ forwarding table using the new bridge command.
41 # bridge fdb add to 00:17:42:8a:b4:05 dst 192.19.0.2 dev vxlan0 41 # bridge fdb add to 00:17:42:8a:b4:05 dst 192.19.0.2 dev vxlan0
42 42
432. Delete forwarding table entry 432. Delete forwarding table entry
44 # bridge fdb delete 00:17:42:8a:b4:05 44 # bridge fdb delete 00:17:42:8a:b4:05 dev vxlan0
45 45
463. Show forwarding table 463. Show forwarding table
47 # bridge fdb show dev vxlan0 47 # bridge fdb show dev vxlan0
diff --git a/Documentation/pinctrl.txt b/Documentation/pinctrl.txt
index 3b4ee5328868..da40efbef6ec 100644
--- a/Documentation/pinctrl.txt
+++ b/Documentation/pinctrl.txt
@@ -364,6 +364,9 @@ will get an pin number into its handled number range. Further it is also passed
364the range ID value, so that the pin controller knows which range it should 364the range ID value, so that the pin controller knows which range it should
365deal with. 365deal with.
366 366
367Calling pinctrl_add_gpio_range from pinctrl driver is DEPRECATED. Please see
368section 2.1 of Documentation/devicetree/bindings/gpio/gpio.txt on how to bind
369pinctrl and gpio drivers.
367 370
368PINMUX interfaces 371PINMUX interfaces
369================= 372=================
@@ -1193,4 +1196,6 @@ foo_switch()
1193 ... 1196 ...
1194} 1197}
1195 1198
1196The above has to be done from process context. 1199The above has to be done from process context. The reservation of the pins
1200will be done when the state is activated, so in effect one specific pin
1201can be used by different functions at different times on a running system.
diff --git a/Documentation/power/pm_qos_interface.txt b/Documentation/power/pm_qos_interface.txt
index 17e130a80347..79a2a58425ee 100644
--- a/Documentation/power/pm_qos_interface.txt
+++ b/Documentation/power/pm_qos_interface.txt
@@ -99,7 +99,7 @@ reading the aggregated value does not require any locking mechanism.
99 99
100From kernel mode the use of this interface is the following: 100From kernel mode the use of this interface is the following:
101 101
102int dev_pm_qos_add_request(device, handle, value): 102int dev_pm_qos_add_request(device, handle, type, value):
103Will insert an element into the list for that identified device with the 103Will insert an element into the list for that identified device with the
104target value. Upon change to this list the new target is recomputed and any 104target value. Upon change to this list the new target is recomputed and any
105registered notifiers are called only if the target value is now different. 105registered notifiers are called only if the target value is now different.
diff --git a/Documentation/power/power_supply_class.txt b/Documentation/power/power_supply_class.txt
index 9c647bd7c5a9..3f10b39b0346 100644
--- a/Documentation/power/power_supply_class.txt
+++ b/Documentation/power/power_supply_class.txt
@@ -123,6 +123,9 @@ CONSTANT_CHARGE_VOLTAGE - constant charge voltage programmed by charger.
123CONSTANT_CHARGE_VOLTAGE_MAX - maximum charge voltage supported by the 123CONSTANT_CHARGE_VOLTAGE_MAX - maximum charge voltage supported by the
124power supply object. 124power supply object.
125 125
126CHARGE_CONTROL_LIMIT - current charge control limit setting
127CHARGE_CONTROL_LIMIT_MAX - maximum charge control limit setting
128
126ENERGY_FULL, ENERGY_EMPTY - same as above but for energy. 129ENERGY_FULL, ENERGY_EMPTY - same as above but for energy.
127 130
128CAPACITY - capacity in percents. 131CAPACITY - capacity in percents.
diff --git a/Documentation/powerpc/ptrace.txt b/Documentation/powerpc/ptrace.txt
index f4a5499b7bc6..f2a7a3919772 100644
--- a/Documentation/powerpc/ptrace.txt
+++ b/Documentation/powerpc/ptrace.txt
@@ -127,6 +127,22 @@ Some examples of using the structure to:
127 p.addr2 = (uint64_t) end_range; 127 p.addr2 = (uint64_t) end_range;
128 p.condition_value = 0; 128 p.condition_value = 0;
129 129
130- set a watchpoint in server processors (BookS)
131
132 p.version = 1;
133 p.trigger_type = PPC_BREAKPOINT_TRIGGER_RW;
134 p.addr_mode = PPC_BREAKPOINT_MODE_RANGE_INCLUSIVE;
135 or
136 p.addr_mode = PPC_BREAKPOINT_MODE_EXACT;
137
138 p.condition_mode = PPC_BREAKPOINT_CONDITION_NONE;
139 p.addr = (uint64_t) begin_range;
140 /* For PPC_BREAKPOINT_MODE_RANGE_INCLUSIVE addr2 needs to be specified, where
141 * addr2 - addr <= 8 Bytes.
142 */
143 p.addr2 = (uint64_t) end_range;
144 p.condition_value = 0;
145
1303. PTRACE_DELHWDEBUG 1463. PTRACE_DELHWDEBUG
131 147
132Takes an integer which identifies an existing breakpoint or watchpoint 148Takes an integer which identifies an existing breakpoint or watchpoint
diff --git a/Documentation/prctl/seccomp_filter.txt b/Documentation/prctl/seccomp_filter.txt
index 597c3c581375..1e469ef75778 100644
--- a/Documentation/prctl/seccomp_filter.txt
+++ b/Documentation/prctl/seccomp_filter.txt
@@ -95,12 +95,15 @@ SECCOMP_RET_KILL:
95 95
96SECCOMP_RET_TRAP: 96SECCOMP_RET_TRAP:
97 Results in the kernel sending a SIGSYS signal to the triggering 97 Results in the kernel sending a SIGSYS signal to the triggering
98 task without executing the system call. The kernel will 98 task without executing the system call. siginfo->si_call_addr
99 rollback the register state to just before the system call 99 will show the address of the system call instruction, and
100 entry such that a signal handler in the task will be able to 100 siginfo->si_syscall and siginfo->si_arch will indicate which
101 inspect the ucontext_t->uc_mcontext registers and emulate 101 syscall was attempted. The program counter will be as though
102 system call success or failure upon return from the signal 102 the syscall happened (i.e. it will not point to the syscall
103 handler. 103 instruction). The return value register will contain an arch-
104 dependent value -- if resuming execution, set it to something
105 sensible. (The architecture dependency is because replacing
106 it with -ENOSYS could overwrite some useful information.)
104 107
105 The SECCOMP_RET_DATA portion of the return value will be passed 108 The SECCOMP_RET_DATA portion of the return value will be passed
106 as si_errno. 109 as si_errno.
@@ -123,6 +126,18 @@ SECCOMP_RET_TRACE:
123 the BPF program return value will be available to the tracer 126 the BPF program return value will be available to the tracer
124 via PTRACE_GETEVENTMSG. 127 via PTRACE_GETEVENTMSG.
125 128
129 The tracer can skip the system call by changing the syscall number
130 to -1. Alternatively, the tracer can change the system call
131 requested by changing the system call to a valid syscall number. If
132 the tracer asks to skip the system call, then the system call will
133 appear to return the value that the tracer puts in the return value
134 register.
135
136 The seccomp check will not be run again after the tracer is
137 notified. (This means that seccomp-based sandboxes MUST NOT
138 allow use of ptrace, even of other sandboxed processes, without
139 extreme care; ptracers can use this mechanism to escape.)
140
126SECCOMP_RET_ALLOW: 141SECCOMP_RET_ALLOW:
127 Results in the system call being executed. 142 Results in the system call being executed.
128 143
@@ -161,3 +176,50 @@ architecture supports both ptrace_event and seccomp, it will be able to
161support seccomp filter with minor fixup: SIGSYS support and seccomp return 176support seccomp filter with minor fixup: SIGSYS support and seccomp return
162value checking. Then it must just add CONFIG_HAVE_ARCH_SECCOMP_FILTER 177value checking. Then it must just add CONFIG_HAVE_ARCH_SECCOMP_FILTER
163to its arch-specific Kconfig. 178to its arch-specific Kconfig.
179
180
181
182Caveats
183-------
184
185The vDSO can cause some system calls to run entirely in userspace,
186leading to surprises when you run programs on different machines that
187fall back to real syscalls. To minimize these surprises on x86, make
188sure you test with
189/sys/devices/system/clocksource/clocksource0/current_clocksource set to
190something like acpi_pm.
191
192On x86-64, vsyscall emulation is enabled by default. (vsyscalls are
193legacy variants on vDSO calls.) Currently, emulated vsyscalls will honor seccomp, with a few oddities:
194
195- A return value of SECCOMP_RET_TRAP will set a si_call_addr pointing to
196 the vsyscall entry for the given call and not the address after the
197 'syscall' instruction. Any code which wants to restart the call
198 should be aware that (a) a ret instruction has been emulated and (b)
199 trying to resume the syscall will again trigger the standard vsyscall
200 emulation security checks, making resuming the syscall mostly
201 pointless.
202
203- A return value of SECCOMP_RET_TRACE will signal the tracer as usual,
204 but the syscall may not be changed to another system call using the
205 orig_rax register. It may only be changed to -1 order to skip the
206 currently emulated call. Any other change MAY terminate the process.
207 The rip value seen by the tracer will be the syscall entry address;
208 this is different from normal behavior. The tracer MUST NOT modify
209 rip or rsp. (Do not rely on other changes terminating the process.
210 They might work. For example, on some kernels, choosing a syscall
211 that only exists in future kernels will be correctly emulated (by
212 returning -ENOSYS).
213
214To detect this quirky behavior, check for addr & ~0x0C00 ==
2150xFFFFFFFFFF600000. (For SECCOMP_RET_TRACE, use rip. For
216SECCOMP_RET_TRAP, use siginfo->si_call_addr.) Do not check any other
217condition: future kernels may improve vsyscall emulation and current
218kernels in vsyscall=native mode will behave differently, but the
219instructions at 0xF...F600{0,4,8,C}00 will not be system calls in these
220cases.
221
222Note that modern systems are unlikely to use vsyscalls at all -- they
223are a legacy feature and they are considerably slower than standard
224syscalls. New code will use the vDSO, and vDSO-issued system calls
225are indistinguishable from normal system calls.
diff --git a/Documentation/scsi/hptiop.txt b/Documentation/scsi/hptiop.txt
index 9605179711f4..4a4f47e759cd 100644
--- a/Documentation/scsi/hptiop.txt
+++ b/Documentation/scsi/hptiop.txt
@@ -37,7 +37,7 @@ For Intel IOP based adapters, the controller IOP is accessed via PCI BAR0:
37 0x40 Inbound Queue Port 37 0x40 Inbound Queue Port
38 0x44 Outbound Queue Port 38 0x44 Outbound Queue Port
39 39
40For Marvell IOP based adapters, the IOP is accessed via PCI BAR0 and BAR1: 40For Marvell not Frey IOP based adapters, the IOP is accessed via PCI BAR0 and BAR1:
41 41
42 BAR0 offset Register 42 BAR0 offset Register
43 0x20400 Inbound Doorbell Register 43 0x20400 Inbound Doorbell Register
@@ -55,9 +55,31 @@ For Marvell IOP based adapters, the IOP is accessed via PCI BAR0 and BAR1:
55 0x40-0x1040 Inbound Queue 55 0x40-0x1040 Inbound Queue
56 0x1040-0x2040 Outbound Queue 56 0x1040-0x2040 Outbound Queue
57 57
58For Marvell Frey IOP based adapters, the IOP is accessed via PCI BAR0 and BAR1:
58 59
59I/O Request Workflow 60 BAR0 offset Register
60---------------------- 61 0x0 IOP configuration information.
62
63 BAR1 offset Register
64 0x4000 Inbound List Base Address Low
65 0x4004 Inbound List Base Address High
66 0x4018 Inbound List Write Pointer
67 0x402C Inbound List Configuration and Control
68 0x4050 Outbound List Base Address Low
69 0x4054 Outbound List Base Address High
70 0x4058 Outbound List Copy Pointer Shadow Base Address Low
71 0x405C Outbound List Copy Pointer Shadow Base Address High
72 0x4088 Outbound List Interrupt Cause
73 0x408C Outbound List Interrupt Enable
74 0x1020C PCIe Function 0 Interrupt Enable
75 0x10400 PCIe Function 0 to CPU Message A
76 0x10420 CPU to PCIe Function 0 Message A
77 0x10480 CPU to PCIe Function 0 Doorbell
78 0x10484 CPU to PCIe Function 0 Doorbell Enable
79
80
81I/O Request Workflow of Not Marvell Frey
82------------------------------------------
61 83
62All queued requests are handled via inbound/outbound queue port. 84All queued requests are handled via inbound/outbound queue port.
63A request packet can be allocated in either IOP or host memory. 85A request packet can be allocated in either IOP or host memory.
@@ -101,6 +123,45 @@ register 0. An outbound message with the same value indicates the completion
101of an inbound message. 123of an inbound message.
102 124
103 125
126I/O Request Workflow of Marvell Frey
127--------------------------------------
128
129All queued requests are handled via inbound/outbound list.
130
131To send a request to the controller:
132
133 - Allocate a free request in host DMA coherent memory.
134
135 Requests allocated in host memory must be aligned on 32-bytes boundary.
136
137 - Fill the request with index of the request in the flag.
138
139 Fill a free inbound list unit with the physical address and the size of
140 the request.
141
142 Set up the inbound list write pointer with the index of previous unit,
143 round to 0 if the index reaches the supported count of requests.
144
145 - Post the inbound list writer pointer to IOP.
146
147 - The IOP process the request. When the request is completed, the flag of
148 the request with or-ed IOPMU_QUEUE_MASK_HOST_BITS will be put into a
149 free outbound list unit and the index of the outbound list unit will be
150 put into the copy pointer shadow register. An outbound interrupt will be
151 generated.
152
153 - The host read the outbound list copy pointer shadow register and compare
154 with previous saved read ponter N. If they are different, the host will
155 read the (N+1)th outbound list unit.
156
157 The host get the index of the request from the (N+1)th outbound list
158 unit and complete the request.
159
160Non-queued requests (reset communication/reset/flush etc) can be sent via PCIe
161Function 0 to CPU Message A register. The CPU to PCIe Function 0 Message register
162with the same value indicates the completion of message.
163
164
104User-level Interface 165User-level Interface
105--------------------- 166---------------------
106 167
@@ -112,7 +173,7 @@ The driver exposes following sysfs attributes:
112 173
113 174
114----------------------------------------------------------------------------- 175-----------------------------------------------------------------------------
115Copyright (C) 2006-2009 HighPoint Technologies, Inc. All Rights Reserved. 176Copyright (C) 2006-2012 HighPoint Technologies, Inc. All Rights Reserved.
116 177
117 This file is distributed in the hope that it will be useful, 178 This file is distributed in the hope that it will be useful,
118 but WITHOUT ANY WARRANTY; without even the implied warranty of 179 but WITHOUT ANY WARRANTY; without even the implied warranty of
diff --git a/Documentation/security/00-INDEX b/Documentation/security/00-INDEX
index eeed1de546d4..414235c1fcfc 100644
--- a/Documentation/security/00-INDEX
+++ b/Documentation/security/00-INDEX
@@ -12,6 +12,8 @@ apparmor.txt
12 - documentation on the AppArmor security extension. 12 - documentation on the AppArmor security extension.
13credentials.txt 13credentials.txt
14 - documentation about credentials in Linux. 14 - documentation about credentials in Linux.
15keys-ecryptfs.txt
16 - description of the encryption keys for the ecryptfs filesystem.
15keys-request-key.txt 17keys-request-key.txt
16 - description of the kernel key request service. 18 - description of the kernel key request service.
17keys-trusted-encrypted.txt 19keys-trusted-encrypted.txt
diff --git a/Documentation/security/keys.txt b/Documentation/security/keys.txt
index 7d9ca92022d8..7b4145d00452 100644
--- a/Documentation/security/keys.txt
+++ b/Documentation/security/keys.txt
@@ -994,6 +994,23 @@ payload contents" for more information.
994 reference pointer if successful. 994 reference pointer if successful.
995 995
996 996
997(*) A keyring can be created by:
998
999 struct key *keyring_alloc(const char *description, uid_t uid, gid_t gid,
1000 const struct cred *cred,
1001 key_perm_t perm,
1002 unsigned long flags,
1003 struct key *dest);
1004
1005 This creates a keyring with the given attributes and returns it. If dest
1006 is not NULL, the new keyring will be linked into the keyring to which it
1007 points. No permission checks are made upon the destination keyring.
1008
1009 Error EDQUOT can be returned if the keyring would overload the quota (pass
1010 KEY_ALLOC_NOT_IN_QUOTA in flags if the keyring shouldn't be accounted
1011 towards the user's quota). Error ENOMEM can also be returned.
1012
1013
997(*) To check the validity of a key, this function can be called: 1014(*) To check the validity of a key, this function can be called:
998 1015
999 int validate_key(struct key *key); 1016 int validate_key(struct key *key);
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt
index d90d8ec2853d..b9cfd339a6fa 100644
--- a/Documentation/sound/alsa/ALSA-Configuration.txt
+++ b/Documentation/sound/alsa/ALSA-Configuration.txt
@@ -1905,7 +1905,6 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
1905 vid - Vendor ID for the device (optional) 1905 vid - Vendor ID for the device (optional)
1906 pid - Product ID for the device (optional) 1906 pid - Product ID for the device (optional)
1907 nrpacks - Max. number of packets per URB (default: 8) 1907 nrpacks - Max. number of packets per URB (default: 8)
1908 async_unlink - Use async unlink mode (default: yes)
1909 device_setup - Device specific magic number (optional) 1908 device_setup - Device specific magic number (optional)
1910 - Influence depends on the device 1909 - Influence depends on the device
1911 - Default: 0x0000 1910 - Default: 0x0000
@@ -1917,8 +1916,6 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
1917 NB: nrpacks parameter can be modified dynamically via sysfs. 1916 NB: nrpacks parameter can be modified dynamically via sysfs.
1918 Don't put the value over 20. Changing via sysfs has no sanity 1917 Don't put the value over 20. Changing via sysfs has no sanity
1919 check. 1918 check.
1920 NB: async_unlink=0 would cause Oops. It remains just for
1921 debugging purpose (if any).
1922 NB: ignore_ctl_error=1 may help when you get an error at accessing 1919 NB: ignore_ctl_error=1 may help when you get an error at accessing
1923 the mixer element such as URB error -22. This happens on some 1920 the mixer element such as URB error -22. This happens on some
1924 buggy USB device or the controller. 1921 buggy USB device or the controller.
diff --git a/Documentation/sparse.txt b/Documentation/sparse.txt
index 4909d4116356..eceab1308a8c 100644
--- a/Documentation/sparse.txt
+++ b/Documentation/sparse.txt
@@ -49,6 +49,24 @@ be generated without __CHECK_ENDIAN__.
49__bitwise - noisy stuff; in particular, __le*/__be* are that. We really 49__bitwise - noisy stuff; in particular, __le*/__be* are that. We really
50don't want to drown in noise unless we'd explicitly asked for it. 50don't want to drown in noise unless we'd explicitly asked for it.
51 51
52Using sparse for lock checking
53~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
54
55The following macros are undefined for gcc and defined during a sparse
56run to use the "context" tracking feature of sparse, applied to
57locking. These annotations tell sparse when a lock is held, with
58regard to the annotated function's entry and exit.
59
60__must_hold - The specified lock is held on function entry and exit.
61
62__acquires - The specified lock is held on function exit, but not entry.
63
64__releases - The specified lock is held on function entry, but not exit.
65
66If the function enters and exits without the lock held, acquiring and
67releasing the lock inside the function in a balanced way, no
68annotation is needed. The tree annotations above are for cases where
69sparse would otherwise report a context imbalance.
52 70
53Getting sparse 71Getting sparse
54~~~~~~~~~~~~~~ 72~~~~~~~~~~~~~~
diff --git a/Documentation/telephony/00-INDEX b/Documentation/telephony/00-INDEX
deleted file mode 100644
index 4ffe0ed5b6fb..000000000000
--- a/Documentation/telephony/00-INDEX
+++ /dev/null
@@ -1,4 +0,0 @@
100-INDEX
2 - this file.
3ixj.txt
4 - document describing the Quicknet drivers.
diff --git a/Documentation/telephony/ixj.txt b/Documentation/telephony/ixj.txt
deleted file mode 100644
index db94fb6c5678..000000000000
--- a/Documentation/telephony/ixj.txt
+++ /dev/null
@@ -1,394 +0,0 @@
1Linux Quicknet-Drivers-Howto
2Quicknet Technologies, Inc. (www.quicknet.net)
3Version 0.3.4 December 18, 1999
4
51.0 Introduction
6
7This document describes the first GPL release version of the Linux
8driver for the Quicknet Internet PhoneJACK and Internet LineJACK
9cards. More information about these cards is available at
10www.quicknet.net. The driver version discussed in this document is
110.3.4.
12
13These cards offer nice telco style interfaces to use your standard
14telephone/key system/PBX as the user interface for VoIP applications.
15The Internet LineJACK also offers PSTN connectivity for a single line
16Internet to PSTN gateway. Of course, you can add more than one card
17to a system to obtain multi-line functionality. At this time, the
18driver supports the POTS port on both the Internet PhoneJACK and the
19Internet LineJACK, but the PSTN port on the latter card is not yet
20supported.
21
22This document, and the drivers for the cards, are intended for a
23limited audience that includes technically capable programmers who
24would like to experiment with Quicknet cards. The drivers are
25considered in ALPHA status and are not yet considered stable enough
26for general, widespread use in an unlimited audience.
27
28That's worth saying again:
29
30THE LINUX DRIVERS FOR QUICKNET CARDS ARE PRESENTLY IN A ALPHA STATE
31AND SHOULD NOT BE CONSIDERED AS READY FOR NORMAL WIDESPREAD USE.
32
33They are released early in the spirit of Internet development and to
34make this technology available to innovators who would benefit from
35early exposure.
36
37When we promote the device driver to "beta" level it will be
38considered ready for non-programmer, non-technical users. Until then,
39please be aware that these drivers may not be stable and may affect
40the performance of your system.
41
42
431.1 Latest Additions/Improvements
44
45The 0.3.4 version of the driver is the first GPL release. Several
46features had to be removed from the prior binary only module, mostly
47for reasons of Intellectual Property rights. We can't release
48information that is not ours - so certain aspects of the driver had to
49be removed to protect the rights of others.
50
51Specifically, very old Internet PhoneJACK cards have non-standard
52G.723.1 codecs (due to the early nature of the DSPs in those days).
53The auto-conversion code to bring those cards into compliance with
54today's standards is available as a binary only module to those people
55needing it. If you bought your card after 1997 or so, you are OK -
56it's only the very old cards that are affected.
57
58Also, the code to download G.728/G.729/G.729a codecs to the DSP is
59available as a binary only module as well. This IP is not ours to
60release.
61
62Hooks are built into the GPL driver to allow it to work with other
63companion modules that are completely separate from this module.
64
651.2 Copyright, Trademarks, Disclaimer, & Credits
66
67Copyright
68
69Copyright (c) 1999 Quicknet Technologies, Inc. Permission is granted
70to freely copy and distribute this document provided you preserve it
71in its original form. For corrections and minor changes contact the
72maintainer at linux@quicknet.net.
73
74Trademarks
75
76Internet PhoneJACK and Internet LineJACK are registered trademarks of
77Quicknet Technologies, Inc.
78
79Disclaimer
80
81Much of the info in this HOWTO is early information released by
82Quicknet Technologies, Inc. for the express purpose of allowing early
83testing and use of the Linux drivers developed for their products.
84While every attempt has been made to be thorough, complete and
85accurate, the information contained here may be unreliable and there
86are likely a number of errors in this document. Please let the
87maintainer know about them. Since this is free documentation, it
88should be obvious that neither I nor previous authors can be held
89legally responsible for any errors.
90
91Credits
92
93This HOWTO was written by:
94
95 Greg Herlein <gherlein@quicknet.net>
96 Ed Okerson <eokerson@quicknet.net>
97
981.3 Future Plans: You Can Help
99
100Please let the maintainer know of any errors in facts, opinions,
101logic, spelling, grammar, clarity, links, etc. But first, if the date
102is over a month old, check to see that you have the latest
103version. Please send any info that you think belongs in this document.
104
105You can also contribute code and/or bug-fixes for the sample
106applications.
107
108
1091.4 Where to get things
110
111Info on latest versions of the driver are here:
112
113http://web.archive.org/web/*/http://www.quicknet.net/develop.htm
114
1151.5 Mailing List
116
117Quicknet operates a mailing list to provide a public forum on using
118these drivers.
119
120To subscribe to the linux-sdk mailing list, send an email to:
121
122 majordomo@linux.quicknet.net
123
124In the body of the email, type:
125
126 subscribe linux-sdk <your-email-address>
127
128Please delete any signature block that you would normally add to the
129bottom of your email - it tends to confuse majordomo.
130
131To send mail to the list, address your mail to
132
133 linux-sdk@linux.quicknet.net
134
135Your message will go out to everyone on the list.
136
137To unsubscribe to the linux-sdk mailing list, send an email to:
138
139 majordomo@linux.quicknet.net
140
141In the body of the email, type:
142
143 unsubscribe linux-sdk <your-email-address>
144
145
146
1472.0 Requirements
148
1492.1 Quicknet Card(s)
150
151You will need at least one Internet PhoneJACK or Internet LineJACK
152cards. These are ISA or PCI bus devices that use Plug-n-Play for
153configuration, and use no IRQs. The driver will support up to 16
154cards in any one system, of any mix between the two types.
155
156Note that you will need two cards to do any useful testing alone, since
157you will need a card on both ends of the connection. Of course, if
158you are doing collaborative work, perhaps your friends or coworkers
159have cards too. If not, we'll gladly sell them some!
160
161
1622.2 ISAPNP
163
164Since the Quicknet cards are Plug-n-Play devices, you will need the
165isapnp tools package to configure the cards, or you can use the isapnp
166module to autoconfigure them. The former package probably came with
167your Linux distribution. Documentation on this package is available
168online at:
169
170http://mailer.wiwi.uni-marburg.de/linux/LDP/HOWTO/Plug-and-Play-HOWTO.html
171
172The isapnp autoconfiguration is available on the Quicknet website at:
173
174 http://www.quicknet.net/develop.htm
175
176though it may be in the kernel by the time you read this.
177
178
1793.0 Card Configuration
180
181If you did not get your drivers as part of the linux kernel, do the
182following to install them:
183
184 a. untar the distribution file. We use the following command:
185 tar -xvzf ixj-0.x.x.tgz
186
187This creates a subdirectory holding all the necessary files. Go to that
188subdirectory.
189
190 b. run the "ixj_dev_create" script to remove any stray device
191files left in the /dev directory, and to create the new officially
192designated device files. Note that the old devices were called
193/dev/ixj, and the new method uses /dev/phone.
194
195 c. type "make;make install" - this will compile and install the
196module.
197
198 d. type "depmod -av" to rebuild all your kernel version dependencies.
199
200 e. if you are using the isapnp module to configure the cards
201 automatically, then skip to step f. Otherwise, ensure that you
202 have run the isapnp configuration utility to properly configure
203 the cards.
204
205 e1. The Internet PhoneJACK has one configuration register that
206 requires 16 IO ports. The Internet LineJACK card has two
207 configuration registers and isapnp reports that IO 0
208 requires 16 IO ports and IO 1 requires 8. The Quicknet
209 driver assumes that these registers are configured to be
210 contiguous, i.e. if IO 0 is set to 0x340 then IO 1 should
211 be set to 0x350.
212
213 Make sure that none of the cards overlap if you have
214 multiple cards in the system.
215
216 If you are new to the isapnp tools, you can jumpstart
217 yourself by doing the following:
218
219 e2. go to the /etc directory and run pnpdump to get a blank
220 isapnp.conf file.
221
222 pnpdump > /etc/isapnp.conf
223
224 e3. edit the /etc/isapnp.conf file to set the IO warnings and
225 the register IO addresses. The IO warnings means that you
226 should find the line in the file that looks like this:
227
228 (CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # or WARNING
229
230 and you should edit the line to look like this:
231
232 (CONFLICT (IO WARNING)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) #
233 or WARNING
234
235 The next step is to set the IO port addresses. The issue
236 here is that isapnp does not identify all of the ports out
237 there. Specifically any device that does not have a driver
238 or module loaded by Linux will not be registered. This
239 includes older sound cards and network cards. We have
240 found that the IO port 0x300 is often used even though
241 isapnp claims that no-one is using those ports. We
242 recommend that for a single card installation that port
243 0x340 (and 0x350) be used. The IO port line should change
244 from this:
245
246 (IO 0 (SIZE 16) (BASE 0x0300) (CHECK))
247
248 to this:
249
250 (IO 0 (SIZE 16) (BASE 0x0340) )
251
252 e4. if you have multiple Quicknet cards, make sure that you do
253 not have any overlaps. Be especially careful if you are
254 mixing Internet PhoneJACK and Internet LineJACK cards in
255 the same system. In these cases we recommend moving the
256 IO port addresses to the 0x400 block. Please note that on
257 a few machines the 0x400 series are used. Feel free to
258 experiment with other addresses. Our cards have been
259 proven to work using IO addresses of up to 0xFF0.
260
261 e5. the last step is to uncomment the activation line so the
262 drivers will be associated with the port. This means the
263 line (immediately below) the IO line should go from this:
264
265 # (ACT Y)
266
267 to this:
268
269 (ACT Y)
270
271 Once you have finished editing the isapnp.conf file you
272 must submit it into the pnp driverconfigure the cards.
273 This is done using the following command:
274
275 isapnp isapnp.conf
276
277 If this works you should see a line that identifies the
278 Quicknet device, the IO port(s) chosen, and a message
279 "Enabled OK".
280
281 f. if you are loading the module by hand, use insmod. An example
282of this would look like this:
283
284 insmod phonedev
285 insmod ixj dspio=0x320,0x310 xio=0,0x330
286
287Then verify the module loaded by running lsmod. If you are not using a
288module that matches your kernel version, you may need to "force" the
289load using the -f option in the insmod command.
290
291 insmod phonedev
292 insmod -f ixj dspio=0x320,0x310 xio=0,0x330
293
294
295If you are using isapnp to autoconfigure your card, then you do NOT
296need any of the above, though you need to use depmod to load the
297driver, like this:
298
299 depmod ixj
300
301which will result in the needed drivers getting loaded automatically.
302
303 g. if you are planning on having the kernel automatically request
304the module for you, then you need to edit /etc/conf.modules and add the
305following lines:
306
307 options ixj dspio=0x340 xio=0x330 ixjdebug=0
308
309If you do this, then when you execute an application that uses the
310module the kernel will request that it is loaded.
311
312 h. if you want non-root users to be able to read and write to the
313ixj devices (this is a good idea!) you should do the following:
314
315 - decide upon a group name to use and create that group if
316 needed. Add the user names to that group that you wish to
317 have access to the device. For example, we typically will
318 create a group named "ixj" in /etc/group and add all users
319 to that group that we want to run software that can use the
320 ixjX devices.
321
322 - change the permissions on the device files, like this:
323
324 chgrp ixj /dev/ixj*
325 chmod 660 /dev/ixj*
326
327Once this is done, then non-root users should be able to use the
328devices. If you have enabled autoloading of modules, then the user
329should be able to open the device and have the module loaded
330automatically for them.
331
332
3334.0 Driver Installation problems.
334
335We have tested these drivers on the 2.2.9, 2.2.10, 2.2.12, and 2.2.13 kernels
336and in all cases have eventually been able to get the drivers to load and
337run. We have found four types of problems that prevent this from happening.
338The problems and solutions are:
339
340 a. A step was missed in the installation. Go back and use section 3
341as a checklist. Many people miss running the ixj_dev_create script and thus
342never load the device names into the filesystem.
343
344 b. The kernel is inconsistently linked. We have found this problem in
345the Out Of the Box installation of several distributions. The symptoms
346are that neither driver will load, and that the unknown symbols include "jiffy"
347and "kmalloc". The solution is to recompile both the kernel and the
348modules. The command string for the final compile looks like this:
349
350 In the kernel directory:
351 1. cp .config /tmp
352 2. make mrproper
353 3. cp /tmp/.config .
354 4. make clean;make bzImage;make modules;make modules_install
355
356This rebuilds both the kernel and all the modules and makes sure they all
357have the same linkages. This generally solves the problem once the new
358kernel is installed and the system rebooted.
359
360 c. The kernel has been patched, then unpatched. This happens when
361someone decides to use an earlier kernel after they load a later kernel.
362The symptoms are proceeding through all three above steps and still not
363being able to load the driver. What has happened is that the generated
364header files are out of sync with the kernel itself. The solution is
365to recompile (again) using "make mrproper". This will remove and then
366regenerate all the necessary header files. Once this is done, then you
367need to install and reboot the kernel. We have not seen any problem
368loading one of our drivers after this treatment.
369
3705.0 Known Limitations
371
372We cannot currently play "dial-tone" and listen for DTMF digits at the
373same time using the ISA PhoneJACK. This is a bug in the 8020 DSP chip
374used on that product. All other Quicknet products function normally
375in this regard. We have a work-around, but it's not done yet. Until
376then, if you want dial-tone, you can always play a recorded dial-tone
377sound into the audio until you have gathered the DTMF digits.
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
diff --git a/Documentation/thermal/sysfs-api.txt b/Documentation/thermal/sysfs-api.txt
index ca1a1a34970e..88c02334e356 100644
--- a/Documentation/thermal/sysfs-api.txt
+++ b/Documentation/thermal/sysfs-api.txt
@@ -112,6 +112,29 @@ temperature) and throttle appropriate devices.
112 trip: indicates which trip point the cooling devices is associated with 112 trip: indicates which trip point the cooling devices is associated with
113 in this thermal zone. 113 in this thermal zone.
114 114
1151.4 Thermal Zone Parameters
1161.4.1 struct thermal_bind_params
117 This structure defines the following parameters that are used to bind
118 a zone with a cooling device for a particular trip point.
119 .cdev: The cooling device pointer
120 .weight: The 'influence' of a particular cooling device on this zone.
121 This is on a percentage scale. The sum of all these weights
122 (for a particular zone) cannot exceed 100.
123 .trip_mask:This is a bit mask that gives the binding relation between
124 this thermal zone and cdev, for a particular trip point.
125 If nth bit is set, then the cdev and thermal zone are bound
126 for trip point n.
127 .match: This call back returns success(0) if the 'tz and cdev' need to
128 be bound, as per platform data.
1291.4.2 struct thermal_zone_params
130 This structure defines the platform level parameters for a thermal zone.
131 This data, for each thermal zone should come from the platform layer.
132 This is an optional feature where some platforms can choose not to
133 provide this data.
134 .governor_name: Name of the thermal governor used for this zone
135 .num_tbps: Number of thermal_bind_params entries for this zone
136 .tbp: thermal_bind_params entries
137
1152. sysfs attributes structure 1382. sysfs attributes structure
116 139
117RO read only value 140RO read only value
@@ -126,6 +149,7 @@ Thermal zone device sys I/F, created once it's registered:
126 |---type: Type of the thermal zone 149 |---type: Type of the thermal zone
127 |---temp: Current temperature 150 |---temp: Current temperature
128 |---mode: Working mode of the thermal zone 151 |---mode: Working mode of the thermal zone
152 |---policy: Thermal governor used for this zone
129 |---trip_point_[0-*]_temp: Trip point temperature 153 |---trip_point_[0-*]_temp: Trip point temperature
130 |---trip_point_[0-*]_type: Trip point type 154 |---trip_point_[0-*]_type: Trip point type
131 |---trip_point_[0-*]_hyst: Hysteresis value for this trip point 155 |---trip_point_[0-*]_hyst: Hysteresis value for this trip point
@@ -187,6 +211,10 @@ mode
187 charge of the thermal management. 211 charge of the thermal management.
188 RW, Optional 212 RW, Optional
189 213
214policy
215 One of the various thermal governors used for a particular zone.
216 RW, Required
217
190trip_point_[0-*]_temp 218trip_point_[0-*]_temp
191 The temperature above which trip point will be fired. 219 The temperature above which trip point will be fired.
192 Unit: millidegree Celsius 220 Unit: millidegree Celsius
@@ -264,6 +292,7 @@ method, the sys I/F structure will be built like this:
264 |---type: acpitz 292 |---type: acpitz
265 |---temp: 37000 293 |---temp: 37000
266 |---mode: enabled 294 |---mode: enabled
295 |---policy: step_wise
267 |---trip_point_0_temp: 100000 296 |---trip_point_0_temp: 100000
268 |---trip_point_0_type: critical 297 |---trip_point_0_type: critical
269 |---trip_point_1_temp: 80000 298 |---trip_point_1_temp: 80000
@@ -305,3 +334,38 @@ to a thermal_zone_device when it registers itself with the framework. The
305event will be one of:{THERMAL_AUX0, THERMAL_AUX1, THERMAL_CRITICAL, 334event will be one of:{THERMAL_AUX0, THERMAL_AUX1, THERMAL_CRITICAL,
306THERMAL_DEV_FAULT}. Notification can be sent when the current temperature 335THERMAL_DEV_FAULT}. Notification can be sent when the current temperature
307crosses any of the configured thresholds. 336crosses any of the configured thresholds.
337
3385. Export Symbol APIs:
339
3405.1: get_tz_trend:
341This function returns the trend of a thermal zone, i.e the rate of change
342of temperature of the thermal zone. Ideally, the thermal sensor drivers
343are supposed to implement the callback. If they don't, the thermal
344framework calculated the trend by comparing the previous and the current
345temperature values.
346
3475.2:get_thermal_instance:
348This function returns the thermal_instance corresponding to a given
349{thermal_zone, cooling_device, trip_point} combination. Returns NULL
350if such an instance does not exist.
351
3525.3:notify_thermal_framework:
353This function handles the trip events from sensor drivers. It starts
354throttling the cooling devices according to the policy configured.
355For CRITICAL and HOT trip points, this notifies the respective drivers,
356and does actual throttling for other trip points i.e ACTIVE and PASSIVE.
357The throttling policy is based on the configured platform data; if no
358platform data is provided, this uses the step_wise throttling policy.
359
3605.4:thermal_cdev_update:
361This function serves as an arbitrator to set the state of a cooling
362device. It sets the cooling device to the deepest cooling state if
363possible.
364
3655.5:thermal_register_governor:
366This function lets the various thermal governors to register themselves
367with the Thermal framework. At run time, depending on a zone's platform
368data, a particular governor is used for throttling.
369
3705.6:thermal_unregister_governor:
371This function unregisters a governor from the thermal framework.
diff --git a/Documentation/usb/error-codes.txt b/Documentation/usb/error-codes.txt
index b3f606b81a03..9c3eb845ebe5 100644
--- a/Documentation/usb/error-codes.txt
+++ b/Documentation/usb/error-codes.txt
@@ -21,6 +21,8 @@ Non-USB-specific:
21 21
22USB-specific: 22USB-specific:
23 23
24-EBUSY The URB is already active.
25
24-ENODEV specified USB-device or bus doesn't exist 26-ENODEV specified USB-device or bus doesn't exist
25 27
26-ENOENT specified interface or endpoint does not exist or 28-ENOENT specified interface or endpoint does not exist or
@@ -35,9 +37,8 @@ USB-specific:
35 d) ISO: number_of_packets is < 0 37 d) ISO: number_of_packets is < 0
36 e) various other cases 38 e) various other cases
37 39
38-EAGAIN a) specified ISO start frame too early 40-EXDEV ISO: URB_ISO_ASAP wasn't specified and all the frames
39 b) (using ISO-ASAP) too much scheduled for the future 41 the URB would be scheduled in have already expired.
40 wait some time and try again.
41 42
42-EFBIG Host controller driver can't schedule that many ISO frames. 43-EFBIG Host controller driver can't schedule that many ISO frames.
43 44
diff --git a/Documentation/usb/mass-storage.txt b/Documentation/usb/mass-storage.txt
index e9b9334627bf..59063ad7a60d 100644
--- a/Documentation/usb/mass-storage.txt
+++ b/Documentation/usb/mass-storage.txt
@@ -20,9 +20,9 @@
20 20
21 This document describes how to use the gadget from user space, its 21 This document describes how to use the gadget from user space, its
22 relation to mass storage function (or MSF) and different gadgets 22 relation to mass storage function (or MSF) and different gadgets
23 using it, and how it differs from File Storage Gadget (or FSG). It 23 using it, and how it differs from File Storage Gadget (or FSG)
24 will talk only briefly about how to use MSF within composite 24 (which is no longer included in Linux). It will talk only briefly
25 gadgets. 25 about how to use MSF within composite gadgets.
26 26
27* Module parameters 27* Module parameters
28 28
@@ -198,16 +198,15 @@
198 The Mass Storage Function and thus the Mass Storage Gadget has been 198 The Mass Storage Function and thus the Mass Storage Gadget has been
199 based on the File Storage Gadget. The difference between the two is 199 based on the File Storage Gadget. The difference between the two is
200 that MSG is a composite gadget (ie. uses the composite framework) 200 that MSG is a composite gadget (ie. uses the composite framework)
201 while file storage gadget is a traditional gadget. From userspace 201 while file storage gadget was a traditional gadget. From userspace
202 point of view this distinction does not really matter, but from 202 point of view this distinction does not really matter, but from
203 kernel hacker's point of view, this means that (i) MSG does not 203 kernel hacker's point of view, this means that (i) MSG does not
204 duplicate code needed for handling basic USB protocol commands and 204 duplicate code needed for handling basic USB protocol commands and
205 (ii) MSF can be used in any other composite gadget. 205 (ii) MSF can be used in any other composite gadget.
206 206
207 Because of that, File Storage Gadget has been deprecated and 207 Because of that, File Storage Gadget has been removed in Linux 3.8.
208 scheduled to be removed in Linux 3.8. All users need to transition 208 All users need to transition to the Mass Storage Gadget. The two
209 to the Mass Storage Gadget by that time. The two gadgets behave 209 gadgets behave mostly the same from the outside except:
210 mostly the same from the outside except:
211 210
212 1. In FSG the “removable” and “cdrom” module parameters set the flag 211 1. In FSG the “removable” and “cdrom” module parameters set the flag
213 for all logical units whereas in MSG they accept a list of y/n 212 for all logical units whereas in MSG they accept a list of y/n
diff --git a/Documentation/video4linux/bttv/Cards b/Documentation/video4linux/bttv/Cards
index db833ced2cb8..a8fb6e2d3c8b 100644
--- a/Documentation/video4linux/bttv/Cards
+++ b/Documentation/video4linux/bttv/Cards
@@ -43,7 +43,7 @@ Very nice card if you only have satellite TV but several tuners connected
43to the card via composite. 43to the card via composite.
44 44
45Many thanks to Matrix-Vision for giving us 2 cards for free which made 45Many thanks to Matrix-Vision for giving us 2 cards for free which made
46Bt848a/Bt849 single crytal operation support possible!!! 46Bt848a/Bt849 single crystal operation support possible!!!
47 47
48 48
49 49
diff --git a/Documentation/video4linux/bttv/Sound-FAQ b/Documentation/video4linux/bttv/Sound-FAQ
index 395f6c6fdd98..d3f1d7783d1c 100644
--- a/Documentation/video4linux/bttv/Sound-FAQ
+++ b/Documentation/video4linux/bttv/Sound-FAQ
@@ -82,7 +82,7 @@ card installed, you might to check out if you can read these registers
82values used by the windows driver. A tool to do this is available 82values used by the windows driver. A tool to do this is available
83from ftp://telepresence.dmem.strath.ac.uk/pub/bt848/winutil, but it 83from ftp://telepresence.dmem.strath.ac.uk/pub/bt848/winutil, but it
84does'nt work with bt878 boards according to some reports I received. 84does'nt work with bt878 boards according to some reports I received.
85Another one with bt878 suport is available from 85Another one with bt878 support is available from
86http://btwincap.sourceforge.net/Files/btspy2.00.zip 86http://btwincap.sourceforge.net/Files/btspy2.00.zip
87 87
88You might also dig around in the *.ini files of the Windows applications. 88You might also dig around in the *.ini files of the Windows applications.
diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt
index f6ec3a92e621..a4df5535996b 100644
--- a/Documentation/virtual/kvm/api.txt
+++ b/Documentation/virtual/kvm/api.txt
@@ -1194,12 +1194,15 @@ struct kvm_ppc_pvinfo {
1194This ioctl fetches PV specific information that need to be passed to the guest 1194This ioctl fetches PV specific information that need to be passed to the guest
1195using the device tree or other means from vm context. 1195using the device tree or other means from vm context.
1196 1196
1197For now the only implemented piece of information distributed here is an array 1197The hcall array defines 4 instructions that make up a hypercall.
1198of 4 instructions that make up a hypercall.
1199 1198
1200If any additional field gets added to this structure later on, a bit for that 1199If any additional field gets added to this structure later on, a bit for that
1201additional piece of information will be set in the flags bitmap. 1200additional piece of information will be set in the flags bitmap.
1202 1201
1202The flags bitmap is defined as:
1203
1204 /* the host supports the ePAPR idle hcall
1205 #define KVM_PPC_PVINFO_FLAGS_EV_IDLE (1<<0)
1203 1206
12044.48 KVM_ASSIGN_PCI_DEVICE 12074.48 KVM_ASSIGN_PCI_DEVICE
1205 1208
@@ -1731,7 +1734,46 @@ registers, find a list below:
1731 Arch | Register | Width (bits) 1734 Arch | Register | Width (bits)
1732 | | 1735 | |
1733 PPC | KVM_REG_PPC_HIOR | 64 1736 PPC | KVM_REG_PPC_HIOR | 64
1734 1737 PPC | KVM_REG_PPC_IAC1 | 64
1738 PPC | KVM_REG_PPC_IAC2 | 64
1739 PPC | KVM_REG_PPC_IAC3 | 64
1740 PPC | KVM_REG_PPC_IAC4 | 64
1741 PPC | KVM_REG_PPC_DAC1 | 64
1742 PPC | KVM_REG_PPC_DAC2 | 64
1743 PPC | KVM_REG_PPC_DABR | 64
1744 PPC | KVM_REG_PPC_DSCR | 64
1745 PPC | KVM_REG_PPC_PURR | 64
1746 PPC | KVM_REG_PPC_SPURR | 64
1747 PPC | KVM_REG_PPC_DAR | 64
1748 PPC | KVM_REG_PPC_DSISR | 32
1749 PPC | KVM_REG_PPC_AMR | 64
1750 PPC | KVM_REG_PPC_UAMOR | 64
1751 PPC | KVM_REG_PPC_MMCR0 | 64
1752 PPC | KVM_REG_PPC_MMCR1 | 64
1753 PPC | KVM_REG_PPC_MMCRA | 64
1754 PPC | KVM_REG_PPC_PMC1 | 32
1755 PPC | KVM_REG_PPC_PMC2 | 32
1756 PPC | KVM_REG_PPC_PMC3 | 32
1757 PPC | KVM_REG_PPC_PMC4 | 32
1758 PPC | KVM_REG_PPC_PMC5 | 32
1759 PPC | KVM_REG_PPC_PMC6 | 32
1760 PPC | KVM_REG_PPC_PMC7 | 32
1761 PPC | KVM_REG_PPC_PMC8 | 32
1762 PPC | KVM_REG_PPC_FPR0 | 64
1763 ...
1764 PPC | KVM_REG_PPC_FPR31 | 64
1765 PPC | KVM_REG_PPC_VR0 | 128
1766 ...
1767 PPC | KVM_REG_PPC_VR31 | 128
1768 PPC | KVM_REG_PPC_VSR0 | 128
1769 ...
1770 PPC | KVM_REG_PPC_VSR31 | 128
1771 PPC | KVM_REG_PPC_FPSCR | 64
1772 PPC | KVM_REG_PPC_VSCR | 32
1773 PPC | KVM_REG_PPC_VPA_ADDR | 64
1774 PPC | KVM_REG_PPC_VPA_SLB | 128
1775 PPC | KVM_REG_PPC_VPA_DTL | 128
1776 PPC | KVM_REG_PPC_EPCR | 32
1735 1777
17364.69 KVM_GET_ONE_REG 17784.69 KVM_GET_ONE_REG
1737 1779
@@ -1747,7 +1789,7 @@ kvm_one_reg struct passed in. On success, the register value can be found
1747at the memory location pointed to by "addr". 1789at the memory location pointed to by "addr".
1748 1790
1749The list of registers accessible using this interface is identical to the 1791The list of registers accessible using this interface is identical to the
1750list in 4.64. 1792list in 4.68.
1751 1793
1752 1794
17534.70 KVM_KVMCLOCK_CTRL 17954.70 KVM_KVMCLOCK_CTRL
@@ -1997,6 +2039,93 @@ return the hash table order in the parameter. (If the guest is using
1997the virtualized real-mode area (VRMA) facility, the kernel will 2039the virtualized real-mode area (VRMA) facility, the kernel will
1998re-create the VMRA HPTEs on the next KVM_RUN of any vcpu.) 2040re-create the VMRA HPTEs on the next KVM_RUN of any vcpu.)
1999 2041
20424.77 KVM_S390_INTERRUPT
2043
2044Capability: basic
2045Architectures: s390
2046Type: vm ioctl, vcpu ioctl
2047Parameters: struct kvm_s390_interrupt (in)
2048Returns: 0 on success, -1 on error
2049
2050Allows to inject an interrupt to the guest. Interrupts can be floating
2051(vm ioctl) or per cpu (vcpu ioctl), depending on the interrupt type.
2052
2053Interrupt parameters are passed via kvm_s390_interrupt:
2054
2055struct kvm_s390_interrupt {
2056 __u32 type;
2057 __u32 parm;
2058 __u64 parm64;
2059};
2060
2061type can be one of the following:
2062
2063KVM_S390_SIGP_STOP (vcpu) - sigp restart
2064KVM_S390_PROGRAM_INT (vcpu) - program check; code in parm
2065KVM_S390_SIGP_SET_PREFIX (vcpu) - sigp set prefix; prefix address in parm
2066KVM_S390_RESTART (vcpu) - restart
2067KVM_S390_INT_VIRTIO (vm) - virtio external interrupt; external interrupt
2068 parameters in parm and parm64
2069KVM_S390_INT_SERVICE (vm) - sclp external interrupt; sclp parameter in parm
2070KVM_S390_INT_EMERGENCY (vcpu) - sigp emergency; source cpu in parm
2071KVM_S390_INT_EXTERNAL_CALL (vcpu) - sigp external call; source cpu in parm
2072
2073Note that the vcpu ioctl is asynchronous to vcpu execution.
2074
20754.78 KVM_PPC_GET_HTAB_FD
2076
2077Capability: KVM_CAP_PPC_HTAB_FD
2078Architectures: powerpc
2079Type: vm ioctl
2080Parameters: Pointer to struct kvm_get_htab_fd (in)
2081Returns: file descriptor number (>= 0) on success, -1 on error
2082
2083This returns a file descriptor that can be used either to read out the
2084entries in the guest's hashed page table (HPT), or to write entries to
2085initialize the HPT. The returned fd can only be written to if the
2086KVM_GET_HTAB_WRITE bit is set in the flags field of the argument, and
2087can only be read if that bit is clear. The argument struct looks like
2088this:
2089
2090/* For KVM_PPC_GET_HTAB_FD */
2091struct kvm_get_htab_fd {
2092 __u64 flags;
2093 __u64 start_index;
2094 __u64 reserved[2];
2095};
2096
2097/* Values for kvm_get_htab_fd.flags */
2098#define KVM_GET_HTAB_BOLTED_ONLY ((__u64)0x1)
2099#define KVM_GET_HTAB_WRITE ((__u64)0x2)
2100
2101The `start_index' field gives the index in the HPT of the entry at
2102which to start reading. It is ignored when writing.
2103
2104Reads on the fd will initially supply information about all
2105"interesting" HPT entries. Interesting entries are those with the
2106bolted bit set, if the KVM_GET_HTAB_BOLTED_ONLY bit is set, otherwise
2107all entries. When the end of the HPT is reached, the read() will
2108return. If read() is called again on the fd, it will start again from
2109the beginning of the HPT, but will only return HPT entries that have
2110changed since they were last read.
2111
2112Data read or written is structured as a header (8 bytes) followed by a
2113series of valid HPT entries (16 bytes) each. The header indicates how
2114many valid HPT entries there are and how many invalid entries follow
2115the valid entries. The invalid entries are not represented explicitly
2116in the stream. The header format is:
2117
2118struct kvm_get_htab_header {
2119 __u32 index;
2120 __u16 n_valid;
2121 __u16 n_invalid;
2122};
2123
2124Writes to the fd create HPT entries starting at the index given in the
2125header; first `n_valid' valid entries with contents from the data
2126written, then `n_invalid' invalid entries, invalidating any previously
2127valid entries found.
2128
2000 2129
20015. The kvm_run structure 21305. The kvm_run structure
2002------------------------ 2131------------------------
@@ -2109,7 +2238,8 @@ executed a memory-mapped I/O instruction which could not be satisfied
2109by kvm. The 'data' member contains the written data if 'is_write' is 2238by kvm. The 'data' member contains the written data if 'is_write' is
2110true, and should be filled by application code otherwise. 2239true, and should be filled by application code otherwise.
2111 2240
2112NOTE: For KVM_EXIT_IO, KVM_EXIT_MMIO and KVM_EXIT_OSI, the corresponding 2241NOTE: For KVM_EXIT_IO, KVM_EXIT_MMIO, KVM_EXIT_OSI, KVM_EXIT_DCR
2242 and KVM_EXIT_PAPR the corresponding
2113operations are complete (and guest state is consistent) only after userspace 2243operations are complete (and guest state is consistent) only after userspace
2114has re-entered the kernel with KVM_RUN. The kernel side will first finish 2244has re-entered the kernel with KVM_RUN. The kernel side will first finish
2115incomplete operations and then check for pending signals. Userspace 2245incomplete operations and then check for pending signals. Userspace
diff --git a/Documentation/vm/frontswap.txt b/Documentation/vm/frontswap.txt
index 5ef2d1366425..c71a019be600 100644
--- a/Documentation/vm/frontswap.txt
+++ b/Documentation/vm/frontswap.txt
@@ -193,7 +193,7 @@ faster.
193 or maybe swap-over-nbd/NFS)? 193 or maybe swap-over-nbd/NFS)?
194 194
195No. First, the existing swap subsystem doesn't allow for any kind of 195No. First, the existing swap subsystem doesn't allow for any kind of
196swap hierarchy. Perhaps it could be rewritten to accomodate a hierarchy, 196swap hierarchy. Perhaps it could be rewritten to accommodate a hierarchy,
197but this would require fairly drastic changes. Even if it were 197but this would require fairly drastic changes. Even if it were
198rewritten, the existing swap subsystem uses the block I/O layer which 198rewritten, the existing swap subsystem uses the block I/O layer which
199assumes a swap device is fixed size and any page in it is linearly 199assumes a swap device is fixed size and any page in it is linearly
diff --git a/Documentation/vm/transhuge.txt b/Documentation/vm/transhuge.txt
index f734bb2a78dc..8785fb87d9c7 100644
--- a/Documentation/vm/transhuge.txt
+++ b/Documentation/vm/transhuge.txt
@@ -116,6 +116,13 @@ echo always >/sys/kernel/mm/transparent_hugepage/defrag
116echo madvise >/sys/kernel/mm/transparent_hugepage/defrag 116echo madvise >/sys/kernel/mm/transparent_hugepage/defrag
117echo never >/sys/kernel/mm/transparent_hugepage/defrag 117echo never >/sys/kernel/mm/transparent_hugepage/defrag
118 118
119By default kernel tries to use huge zero page on read page fault.
120It's possible to disable huge zero page by writing 0 or enable it
121back by writing 1:
122
123echo 0 >/sys/kernel/mm/transparent_hugepage/khugepaged/use_zero_page
124echo 1 >/sys/kernel/mm/transparent_hugepage/khugepaged/use_zero_page
125
119khugepaged will be automatically started when 126khugepaged will be automatically started when
120transparent_hugepage/enabled is set to "always" or "madvise, and it'll 127transparent_hugepage/enabled is set to "always" or "madvise, and it'll
121be automatically shutdown if it's set to "never". 128be automatically shutdown if it's set to "never".
@@ -197,6 +204,14 @@ thp_split is incremented every time a huge page is split into base
197 pages. This can happen for a variety of reasons but a common 204 pages. This can happen for a variety of reasons but a common
198 reason is that a huge page is old and is being reclaimed. 205 reason is that a huge page is old and is being reclaimed.
199 206
207thp_zero_page_alloc is incremented every time a huge zero page is
208 successfully allocated. It includes allocations which where
209 dropped due race with other allocation. Note, it doesn't count
210 every map of the huge zero page, only its allocation.
211
212thp_zero_page_alloc_failed is incremented if kernel fails to allocate
213 huge zero page and falls back to using small pages.
214
200As the system ages, allocating huge pages may be expensive as the 215As the system ages, allocating huge pages may be expensive as the
201system uses memory compaction to copy data around memory to free a 216system uses memory compaction to copy data around memory to free a
202huge page for use. There are some counters in /proc/vmstat to help 217huge page for use. There are some counters in /proc/vmstat to help
@@ -276,7 +291,7 @@ unaffected. libhugetlbfs will also work fine as usual.
276== Graceful fallback == 291== Graceful fallback ==
277 292
278Code walking pagetables but unware about huge pmds can simply call 293Code walking pagetables but unware about huge pmds can simply call
279split_huge_page_pmd(mm, pmd) where the pmd is the one returned by 294split_huge_page_pmd(vma, addr, pmd) where the pmd is the one returned by
280pmd_offset. It's trivial to make the code transparent hugepage aware 295pmd_offset. It's trivial to make the code transparent hugepage aware
281by just grepping for "pmd_offset" and adding split_huge_page_pmd where 296by just grepping for "pmd_offset" and adding split_huge_page_pmd where
282missing after pmd_offset returns the pmd. Thanks to the graceful 297missing after pmd_offset returns the pmd. Thanks to the graceful
@@ -299,7 +314,7 @@ diff --git a/mm/mremap.c b/mm/mremap.c
299 return NULL; 314 return NULL;
300 315
301 pmd = pmd_offset(pud, addr); 316 pmd = pmd_offset(pud, addr);
302+ split_huge_page_pmd(mm, pmd); 317+ split_huge_page_pmd(vma, addr, pmd);
303 if (pmd_none_or_clear_bad(pmd)) 318 if (pmd_none_or_clear_bad(pmd))
304 return NULL; 319 return NULL;
305 320
diff --git a/Documentation/x86/boot.txt b/Documentation/x86/boot.txt
index 9efceff51bfb..f15cb74c4f78 100644
--- a/Documentation/x86/boot.txt
+++ b/Documentation/x86/boot.txt
@@ -1013,7 +1013,7 @@ boot_params as that of 16-bit boot protocol, the boot loader should
1013also fill the additional fields of the struct boot_params as that 1013also fill the additional fields of the struct boot_params as that
1014described in zero-page.txt. 1014described in zero-page.txt.
1015 1015
1016After setupping the struct boot_params, the boot loader can load the 1016After setting up the struct boot_params, the boot loader can load the
101732/64-bit kernel in the same way as that of 16-bit boot protocol. 101732/64-bit kernel in the same way as that of 16-bit boot protocol.
1018 1018
1019In 32-bit boot protocol, the kernel is started by jumping to the 1019In 32-bit boot protocol, the kernel is started by jumping to the
@@ -1023,7 +1023,7 @@ In 32-bit boot protocol, the kernel is started by jumping to the
1023At entry, the CPU must be in 32-bit protected mode with paging 1023At entry, the CPU must be in 32-bit protected mode with paging
1024disabled; a GDT must be loaded with the descriptors for selectors 1024disabled; a GDT must be loaded with the descriptors for selectors
1025__BOOT_CS(0x10) and __BOOT_DS(0x18); both descriptors must be 4G flat 1025__BOOT_CS(0x10) and __BOOT_DS(0x18); both descriptors must be 4G flat
1026segment; __BOOS_CS must have execute/read permission, and __BOOT_DS 1026segment; __BOOT_CS must have execute/read permission, and __BOOT_DS
1027must have read/write permission; CS must be __BOOT_CS and DS, ES, SS 1027must have read/write permission; CS must be __BOOT_CS and DS, ES, SS
1028must be __BOOT_DS; interrupt must be disabled; %esi must hold the base 1028must be __BOOT_DS; interrupt must be disabled; %esi must hold the base
1029address of the struct boot_params; %ebp, %edi and %ebx must be zero. 1029address of the struct boot_params; %ebp, %edi and %ebx must be zero.
diff --git a/Documentation/zh_CN/arm/kernel_user_helpers.txt b/Documentation/zh_CN/arm/kernel_user_helpers.txt
new file mode 100644
index 000000000000..cd7fc8f34cf9
--- /dev/null
+++ b/Documentation/zh_CN/arm/kernel_user_helpers.txt
@@ -0,0 +1,284 @@
1Chinese translated version of Documentation/arm/kernel_user_helpers.txt
2
3If you have any comment or update to the content, please contact the
4original document maintainer directly. However, if you have a problem
5communicating in English you can also ask the Chinese maintainer for
6help. Contact the Chinese maintainer if this translation is outdated
7or if there is a problem with the translation.
8
9Maintainer: Nicolas Pitre <nicolas.pitre@linaro.org>
10 Dave Martin <dave.martin@linaro.org>
11Chinese maintainer: Fu Wei <tekkamanninja@gmail.com>
12---------------------------------------------------------------------
13Documentation/arm/kernel_user_helpers.txt 的中文翻译
14
15如果想评论或更新本文的内容,请直接联系原文档的维护者。如果你使用英文
16交流有困难的话,也可以向中文版维护者求助。如果本翻译更新不及时或者翻
17译存在问题,请联系中文版维护者。
18英文版维护者: Nicolas Pitre <nicolas.pitre@linaro.org>
19 Dave Martin <dave.martin@linaro.org>
20中文版维护者: 傅炜 Fu Wei <tekkamanninja@gmail.com>
21中文版翻译者: 傅炜 Fu Wei <tekkamanninja@gmail.com>
22中文版校译者: 宋冬生 Dongsheng Song <dongshneg.song@gmail.com>
23 傅炜 Fu Wei <tekkamanninja@gmail.com>
24
25
26以下为正文
27---------------------------------------------------------------------
28内核提供的用户空间辅助代码
29=========================
30
31在内核内存空间的固定地址处,有一个由内核提供并可从用户空间访问的代码
32段。它用于向用户空间提供因在许多 ARM CPU 中未实现的特性和/或指令而需
33内核提供帮助的某些操作。这些代码直接在用户模式下执行的想法是为了获得
34最佳效率,但那些与内核计数器联系过于紧密的部分,则被留给了用户库实现。
35事实上,此代码甚至可能因不同的 CPU 而异,这取决于其可用的指令集或它
36是否为 SMP 系统。换句话说,内核保留在不作出警告的情况下根据需要更改
37这些代码的权利。只有本文档描述的入口及其结果是保证稳定的。
38
39这与完全成熟的 VDSO 实现不同(但两者并不冲突),尽管如此,VDSO 可阻止
40某些通过常量高效跳转到那些代码段的汇编技巧。且由于那些代码段在返回用户
41代码前仅使用少量的代码周期,则一个 VDSO 间接远程调用将会在这些简单的
42操作上增加一个可测量的开销。
43
44在对那些拥有原生支持的新型处理器进行代码优化时,仅在已为其他操作使用
45了类似的新增指令,而导致二进制结果已与早期 ARM 处理器不兼容的情况下,
46用户空间才应绕过这些辅助代码,并在内联函数中实现这些操作(无论是通过
47编译器在代码中直接放置,还是作为库函数调用实现的一部分)。也就是说,
48如果你编译的代码不会为了其他目的使用新指令,则不要仅为了避免使用这些
49内核辅助代码,导致二进制程序无法在早期处理器上运行。
50
51新的辅助代码可能随着时间的推移而增加,所以新内核中的某些辅助代码在旧
52内核中可能不存在。因此,程序必须在对任何辅助代码调用假设是安全之前,
53检测 __kuser_helper_version 的值(见下文)。理想情况下,这种检测应该
54只在进程启动时执行一次;如果内核版本不支持所需辅助代码,则该进程可尽早
55中止执行。
56
57kuser_helper_version
58--------------------
59
60位置: 0xffff0ffc
61
62参考声明:
63
64 extern int32_t __kuser_helper_version;
65
66定义:
67
68 这个区域包含了当前运行内核实现的辅助代码版本号。用户空间可以通过读
69 取此版本号以确定特定的辅助代码是否存在。
70
71使用范例:
72
73#define __kuser_helper_version (*(int32_t *)0xffff0ffc)
74
75void check_kuser_version(void)
76{
77 if (__kuser_helper_version < 2) {
78 fprintf(stderr, "can't do atomic operations, kernel too old\n");
79 abort();
80 }
81}
82
83注意:
84
85 用户空间可以假设这个域的值不会在任何单个进程的生存期内改变。也就
86 是说,这个域可以仅在库的初始化阶段或进程启动阶段读取一次。
87
88kuser_get_tls
89-------------
90
91位置: 0xffff0fe0
92
93参考原型:
94
95 void * __kuser_get_tls(void);
96
97输入:
98
99 lr = 返回地址
100
101输出:
102
103 r0 = TLS 值
104
105被篡改的寄存器:
106
107
108
109定义:
110
111 获取之前通过 __ARM_NR_set_tls 系统调用设置的 TLS 值。
112
113使用范例:
114
115typedef void * (__kuser_get_tls_t)(void);
116#define __kuser_get_tls (*(__kuser_get_tls_t *)0xffff0fe0)
117
118void foo()
119{
120 void *tls = __kuser_get_tls();
121 printf("TLS = %p\n", tls);
122}
123
124注意:
125
126 - 仅在 __kuser_helper_version >= 1 时,此辅助代码存在
127 (从内核版本 2.6.12 开始)。
128
129kuser_cmpxchg
130-------------
131
132位置: 0xffff0fc0
133
134参考原型:
135
136 int __kuser_cmpxchg(int32_t oldval, int32_t newval, volatile int32_t *ptr);
137
138输入:
139
140 r0 = oldval
141 r1 = newval
142 r2 = ptr
143 lr = 返回地址
144
145输出:
146
147 r0 = 成功代码 (零或非零)
148 C flag = 如果 r0 == 0 则置 1,如果 r0 != 0 则清零。
149
150被篡改的寄存器:
151
152 r3, ip, flags
153
154定义:
155
156 仅在 *ptr 为 oldval 时原子保存 newval 于 *ptr 中。
157 如果 *ptr 被改变,则返回值为零,否则为非零值。
158 如果 *ptr 被改变,则 C flag 也会被置 1,以实现调用代码中的汇编
159 优化。
160
161使用范例:
162
163typedef int (__kuser_cmpxchg_t)(int oldval, int newval, volatile int *ptr);
164#define __kuser_cmpxchg (*(__kuser_cmpxchg_t *)0xffff0fc0)
165
166int atomic_add(volatile int *ptr, int val)
167{
168 int old, new;
169
170 do {
171 old = *ptr;
172 new = old + val;
173 } while(__kuser_cmpxchg(old, new, ptr));
174
175 return new;
176}
177
178注意:
179
180 - 这个例程已根据需要包含了内存屏障。
181
182 - 仅在 __kuser_helper_version >= 2 时,此辅助代码存在
183 (从内核版本 2.6.12 开始)。
184
185kuser_memory_barrier
186--------------------
187
188位置: 0xffff0fa0
189
190参考原型:
191
192 void __kuser_memory_barrier(void);
193
194输入:
195
196 lr = 返回地址
197
198输出:
199
200
201
202被篡改的寄存器:
203
204
205
206定义:
207
208 应用于任何需要内存屏障以防止手动数据修改带来的一致性问题,以及
209 __kuser_cmpxchg 中。
210
211使用范例:
212
213typedef void (__kuser_dmb_t)(void);
214#define __kuser_dmb (*(__kuser_dmb_t *)0xffff0fa0)
215
216注意:
217
218 - 仅在 __kuser_helper_version >= 3 时,此辅助代码存在
219 (从内核版本 2.6.15 开始)。
220
221kuser_cmpxchg64
222---------------
223
224位置: 0xffff0f60
225
226参考原型:
227
228 int __kuser_cmpxchg64(const int64_t *oldval,
229 const int64_t *newval,
230 volatile int64_t *ptr);
231
232输入:
233
234 r0 = 指向 oldval
235 r1 = 指向 newval
236 r2 = 指向目标值
237 lr = 返回地址
238
239输出:
240
241 r0 = 成功代码 (零或非零)
242 C flag = 如果 r0 == 0 则置 1,如果 r0 != 0 则清零。
243
244被篡改的寄存器:
245
246 r3, lr, flags
247
248定义:
249
250 仅在 *ptr 等于 *oldval 指向的 64 位值时,原子保存 *newval
251 指向的 64 位值于 *ptr 中。如果 *ptr 被改变,则返回值为零,
252 否则为非零值。
253
254 如果 *ptr 被改变,则 C flag 也会被置 1,以实现调用代码中的汇编
255 优化。
256
257使用范例:
258
259typedef int (__kuser_cmpxchg64_t)(const int64_t *oldval,
260 const int64_t *newval,
261 volatile int64_t *ptr);
262#define __kuser_cmpxchg64 (*(__kuser_cmpxchg64_t *)0xffff0f60)
263
264int64_t atomic_add64(volatile int64_t *ptr, int64_t val)
265{
266 int64_t old, new;
267
268 do {
269 old = *ptr;
270 new = old + val;
271 } while(__kuser_cmpxchg64(&old, &new, ptr));
272
273 return new;
274}
275
276注意:
277
278 - 这个例程已根据需要包含了内存屏障。
279
280 - 由于这个过程的代码长度(此辅助代码跨越 2 个常规的 kuser “槽”),
281 因此 0xffff0f80 不被作为有效的入口点。
282
283 - 仅在 __kuser_helper_version >= 5 时,此辅助代码存在
284 (从内核版本 3.1 开始)。
diff --git a/Documentation/zh_CN/arm64/memory.txt b/Documentation/zh_CN/arm64/memory.txt
index 83b519314706..a5f6283829f9 100644
--- a/Documentation/zh_CN/arm64/memory.txt
+++ b/Documentation/zh_CN/arm64/memory.txt
@@ -47,21 +47,21 @@ AArch64 Linux 内存布局:
47----------------------------------------------------------------------- 47-----------------------------------------------------------------------
480000000000000000 0000007fffffffff 512GB 用户空间 480000000000000000 0000007fffffffff 512GB 用户空间
49 49
50ffffff8000000000 ffffffbbfffcffff ~240GB vmalloc 50ffffff8000000000 ffffffbbfffeffff ~240GB vmalloc
51 51
52ffffffbbfffd0000 ffffffbcfffdffff 64KB [防护页] 52ffffffbbffff0000 ffffffbbffffffff 64KB [防护页]
53 53
54ffffffbbfffe0000 ffffffbcfffeffff 64KB PCI I/O 空间 54ffffffbc00000000 ffffffbdffffffff 8GB vmemmap
55 55
56ffffffbbffff0000 ffffffbcffffffff 64KB [防护页] 56ffffffbe00000000 ffffffbffbbfffff ~8GB [防护页,未来用于 vmmemap]
57 57
58ffffffbc00000000 ffffffbdffffffff 8GB vmemmap 58ffffffbffbe00000 ffffffbffbe0ffff 64KB PCI I/O 空间
59 59
60ffffffbe00000000 ffffffbffbffffff ~8GB [防护页,未来用于 vmmemap] 60ffffffbbffff0000 ffffffbcffffffff ~2MB [防护页]
61 61
62ffffffbffc000000 ffffffbfffffffff 64MB 模块 62ffffffbffc000000 ffffffbfffffffff 64MB 模块
63 63
64ffffffc000000000 ffffffffffffffff 256GB 内存空间 64ffffffc000000000 ffffffffffffffff 256GB 内核逻辑映射
65 65
66 66
674KB 页大小的转换表查找: 674KB 页大小的转换表查找: