aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/ABI/stable/sysfs-driver-w1_ds28e0415
-rw-r--r--Documentation/ABI/stable/vdso2
-rw-r--r--Documentation/ABI/testing/dev-kmsg29
-rw-r--r--Documentation/ABI/testing/sysfs-block-rssd21
-rw-r--r--Documentation/ABI/testing/sysfs-block-zram2
-rw-r--r--Documentation/ABI/testing/sysfs-bus-iio54
-rw-r--r--Documentation/ABI/testing/sysfs-bus-iio-frequency-ad952337
-rw-r--r--Documentation/ABI/testing/sysfs-bus-iio-frequency-adf435021
-rw-r--r--Documentation/ABI/testing/sysfs-bus-iio-light-lm3533-als61
-rw-r--r--Documentation/ABI/testing/sysfs-bus-usb12
-rw-r--r--Documentation/ABI/testing/sysfs-bus-usb-devices-usbsevseg2
-rw-r--r--Documentation/ABI/testing/sysfs-class-backlight-driver-adp88702
-rw-r--r--Documentation/ABI/testing/sysfs-class-mtd17
-rw-r--r--Documentation/ABI/testing/sysfs-devices-system-xen_cpu20
-rw-r--r--Documentation/ABI/testing/sysfs-driver-hid-lenovo-tpkbd38
-rw-r--r--Documentation/ABI/testing/sysfs-driver-hid-roccat-savu77
-rw-r--r--Documentation/ABI/testing/sysfs-kernel-iommu_groups14
-rw-r--r--Documentation/ABI/testing/sysfs-power13
-rw-r--r--Documentation/DocBook/80211.tmpl1
-rw-r--r--Documentation/DocBook/media/v4l/controls.xml2
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml7
-rw-r--r--Documentation/ManagementStyle2
-rw-r--r--Documentation/RCU/checklist.txt39
-rw-r--r--Documentation/RCU/rcubarrier.txt15
-rw-r--r--Documentation/RCU/torture.txt9
-rw-r--r--Documentation/RCU/whatisRCU.txt6
-rw-r--r--Documentation/arm/Samsung-S3C24XX/H1940.txt2
-rw-r--r--Documentation/arm/Samsung-S3C24XX/SMDK2440.txt2
-rw-r--r--Documentation/cgroups/cgroups.txt27
-rw-r--r--Documentation/connector/cn_test.c13
-rw-r--r--Documentation/device-mapper/verity.txt131
-rw-r--r--Documentation/devices.txt2
-rw-r--r--Documentation/devicetree/bindings/arm/armada-370-xp-mpic.txt23
-rw-r--r--Documentation/devicetree/bindings/arm/armada-370-xp-timer.txt11
-rw-r--r--Documentation/devicetree/bindings/arm/armada-370-xp.txt24
-rw-r--r--Documentation/devicetree/bindings/arm/atmel-aic.txt9
-rw-r--r--Documentation/devicetree/bindings/arm/davinci/cp-intc.txt27
-rw-r--r--Documentation/devicetree/bindings/arm/mvebu-system-controller.txt17
-rw-r--r--Documentation/devicetree/bindings/arm/olimex.txt6
-rw-r--r--Documentation/devicetree/bindings/arm/omap/omap.txt6
-rw-r--r--Documentation/devicetree/bindings/arm/primecell.txt6
-rw-r--r--Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-emc.txt (renamed from Documentation/devicetree/bindings/arm/tegra/emc.txt)2
-rw-r--r--Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-mc.txt2
-rw-r--r--Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-mc.txt2
-rw-r--r--Documentation/devicetree/bindings/clock/calxeda.txt17
-rw-r--r--Documentation/devicetree/bindings/clock/clock-bindings.txt117
-rw-r--r--Documentation/devicetree/bindings/clock/fixed-clock.txt21
-rw-r--r--Documentation/devicetree/bindings/fb/mxsfb.txt19
-rw-r--r--Documentation/devicetree/bindings/gpio/fsl-imx-gpio.txt14
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio-mxs.txt5
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio-nmk.txt2
-rw-r--r--Documentation/devicetree/bindings/gpio/led.txt2
-rw-r--r--Documentation/devicetree/bindings/gpio/nvidia,tegra20-gpio.txt (renamed from Documentation/devicetree/bindings/gpio/gpio_nvidia.txt)0
-rw-r--r--Documentation/devicetree/bindings/input/fsl-mma8450.txt1
-rw-r--r--Documentation/devicetree/bindings/input/lpc32xx-key.txt28
-rw-r--r--Documentation/devicetree/bindings/input/nvidia,tegra20-kbc.txt (renamed from Documentation/devicetree/bindings/input/tegra-kbc.txt)0
-rw-r--r--Documentation/devicetree/bindings/input/omap-keypad.txt31
-rw-r--r--Documentation/devicetree/bindings/input/twl6040-vibra.txt37
-rw-r--r--Documentation/devicetree/bindings/iommu/nvidia,tegra30-smmu.txt21
-rw-r--r--Documentation/devicetree/bindings/mfd/mc13xxx.txt4
-rw-r--r--Documentation/devicetree/bindings/mfd/tps65910.txt90
-rw-r--r--Documentation/devicetree/bindings/misc/at25.txt21
-rw-r--r--Documentation/devicetree/bindings/mmc/fsl-esdhc.txt25
-rw-r--r--Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt12
-rw-r--r--Documentation/devicetree/bindings/mmc/mmc-spi-slot.txt8
-rw-r--r--Documentation/devicetree/bindings/mmc/mmc.txt10
-rw-r--r--Documentation/devicetree/bindings/mmc/mmci.txt12
-rw-r--r--Documentation/devicetree/bindings/mmc/mxs-mmc.txt8
-rw-r--r--Documentation/devicetree/bindings/mmc/nvidia,tegra20-sdhci.txt (renamed from Documentation/devicetree/bindings/mmc/nvidia-sdhci.txt)8
-rw-r--r--Documentation/devicetree/bindings/mmc/sdhci-pxa.txt21
-rw-r--r--Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt7
-rw-r--r--Documentation/devicetree/bindings/mtd/partition.txt2
-rw-r--r--Documentation/devicetree/bindings/net/broadcom-bcm87xx.txt29
-rw-r--r--Documentation/devicetree/bindings/net/can/fsl-flexcan.txt3
-rw-r--r--Documentation/devicetree/bindings/net/davinci_emac.txt41
-rw-r--r--Documentation/devicetree/bindings/net/fsl-fec.txt8
-rw-r--r--Documentation/devicetree/bindings/net/phy.txt12
-rw-r--r--Documentation/devicetree/bindings/net/stmmac.txt3
-rw-r--r--Documentation/devicetree/bindings/nvec/nvidia,nvec.txt (renamed from Documentation/devicetree/bindings/nvec/nvec_nvidia.txt)0
-rw-r--r--Documentation/devicetree/bindings/pinctrl/fsl,imx6q-pinctrl.txt2
-rw-r--r--Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt93
-rw-r--r--Documentation/devicetree/bindings/regulator/fixed-regulator.txt2
-rw-r--r--Documentation/devicetree/bindings/regulator/regulator.txt5
-rw-r--r--Documentation/devicetree/bindings/regulator/tps65217.txt91
-rw-r--r--Documentation/devicetree/bindings/regulator/tps6586x.txt77
-rw-r--r--Documentation/devicetree/bindings/regulator/twl-regulator.txt1
-rw-r--r--Documentation/devicetree/bindings/rtc/dw-apb.txt25
-rw-r--r--Documentation/devicetree/bindings/rtc/stmp3xxx-rtc.txt16
-rw-r--r--Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt (renamed from Documentation/devicetree/bindings/sound/tegra-audio-alc5632.txt)0
-rw-r--r--Documentation/devicetree/bindings/sound/nvidia,tegra-audio-trimslice.txt (renamed from Documentation/devicetree/bindings/sound/tegra-audio-trimslice.txt)0
-rw-r--r--Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt (renamed from Documentation/devicetree/bindings/sound/tegra-audio-wm8753.txt)0
-rw-r--r--Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt (renamed from Documentation/devicetree/bindings/sound/tegra-audio-wm8903.txt)0
-rw-r--r--Documentation/devicetree/bindings/sound/nvidia,tegra20-das.txt (renamed from Documentation/devicetree/bindings/sound/tegra20-das.txt)0
-rw-r--r--Documentation/devicetree/bindings/sound/nvidia,tegra20-i2s.txt (renamed from Documentation/devicetree/bindings/sound/tegra20-i2s.txt)0
-rw-r--r--Documentation/devicetree/bindings/spi/fsl-imx-cspi.txt4
-rw-r--r--Documentation/devicetree/bindings/spi/nvidia,tegra20-spi.txt (renamed from Documentation/devicetree/bindings/spi/spi_nvidia.txt)0
-rw-r--r--Documentation/devicetree/bindings/spi/spi-orion.txt19
-rw-r--r--Documentation/devicetree/bindings/spi/spi-samsung.txt116
-rw-r--r--Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt27
-rw-r--r--Documentation/devicetree/bindings/usb/ci13xxx-imx.txt18
-rw-r--r--Documentation/devicetree/bindings/usb/mxs-phy.txt13
-rw-r--r--Documentation/devicetree/bindings/usb/nvidia,tegra20-ehci.txt (renamed from Documentation/devicetree/bindings/usb/tegra-usb.txt)0
-rw-r--r--Documentation/devicetree/bindings/vendor-prefixes.txt1
-rw-r--r--Documentation/devicetree/bindings/watchdog/omap-wdt.txt14
-rw-r--r--Documentation/devicetree/usage-model.txt2
-rw-r--r--Documentation/feature-removal-schedule.txt44
-rw-r--r--Documentation/filesystems/Locking11
-rw-r--r--Documentation/filesystems/porting21
-rw-r--r--Documentation/filesystems/vfs.txt23
-rw-r--r--Documentation/hid/uhid.txt169
-rw-r--r--Documentation/hwmon/da905261
-rw-r--r--Documentation/hwmon/hih613037
-rw-r--r--Documentation/hwmon/submitting-patches3
-rw-r--r--Documentation/i2c/busses/i2c-i80113
-rw-r--r--Documentation/i2c/busses/i2c-piix49
-rw-r--r--Documentation/i2c/writing-clients23
-rw-r--r--Documentation/input/multi-touch-protocol.txt118
-rw-r--r--Documentation/kdump/kdump.txt2
-rw-r--r--Documentation/kernel-parameters.txt8
-rw-r--r--Documentation/laptops/asus-laptop.txt3
-rw-r--r--Documentation/misc-devices/mei/mei.txt14
-rw-r--r--Documentation/networking/batman-adv.txt5
-rw-r--r--Documentation/networking/bonding.txt6
-rw-r--r--Documentation/networking/bridge.txt13
-rw-r--r--Documentation/networking/caif/Linux-CAIF.txt91
-rw-r--r--Documentation/networking/can.txt186
-rw-r--r--Documentation/networking/ip-sysctl.txt62
-rw-r--r--Documentation/networking/openvswitch.txt2
-rw-r--r--Documentation/networking/s2io.txt14
-rw-r--r--Documentation/networking/stmmac.txt36
-rw-r--r--Documentation/networking/vxge.txt7
-rw-r--r--Documentation/nfc/nfc-hci.txt33
-rw-r--r--Documentation/power/devices.txt9
-rw-r--r--Documentation/power/swsusp.txt5
-rw-r--r--Documentation/prctl/no_new_privs.txt57
-rw-r--r--Documentation/ramoops.txt39
-rw-r--r--Documentation/sound/alsa/ALSA-Configuration.txt3
-rw-r--r--Documentation/sound/alsa/HD-Audio-Models.txt13
-rw-r--r--Documentation/sound/alsa/hdspm.txt2
-rw-r--r--Documentation/stable_kernel_rules.txt19
-rw-r--r--Documentation/usb/mass-storage.txt226
-rw-r--r--Documentation/video4linux/cpia2_overview.txt2
-rw-r--r--Documentation/video4linux/stv680.txt2
-rw-r--r--Documentation/virtual/kvm/api.txt51
-rw-r--r--Documentation/virtual/kvm/locking.txt130
-rw-r--r--Documentation/virtual/kvm/msr.txt33
-rw-r--r--Documentation/virtual/kvm/ppc-pv.txt2
-rw-r--r--Documentation/vm/frontswap.txt4
-rw-r--r--Documentation/w1/slaves/w1_ds28e0436
-rw-r--r--Documentation/workqueue.txt103
-rw-r--r--Documentation/x86/boot.txt46
151 files changed, 3131 insertions, 660 deletions
diff --git a/Documentation/ABI/stable/sysfs-driver-w1_ds28e04 b/Documentation/ABI/stable/sysfs-driver-w1_ds28e04
new file mode 100644
index 000000000000..26579ee868c9
--- /dev/null
+++ b/Documentation/ABI/stable/sysfs-driver-w1_ds28e04
@@ -0,0 +1,15 @@
1What: /sys/bus/w1/devices/.../pio
2Date: May 2012
3Contact: Markus Franke <franm@hrz.tu-chemnitz.de>
4Description: read/write the contents of the two PIO's of the DS28E04-100
5 see Documentation/w1/slaves/w1_ds28e04 for detailed information
6Users: any user space application which wants to communicate with DS28E04-100
7
8
9
10What: /sys/bus/w1/devices/.../eeprom
11Date: May 2012
12Contact: Markus Franke <franm@hrz.tu-chemnitz.de>
13Description: read/write the contents of the EEPROM memory of the DS28E04-100
14 see Documentation/w1/slaves/w1_ds28e04 for detailed information
15Users: any user space application which wants to communicate with DS28E04-100
diff --git a/Documentation/ABI/stable/vdso b/Documentation/ABI/stable/vdso
index 8a1cbb594497..7cdfc28cc2c6 100644
--- a/Documentation/ABI/stable/vdso
+++ b/Documentation/ABI/stable/vdso
@@ -24,4 +24,4 @@ though.
24 24
25(As of this writing, this ABI documentation as been confirmed for x86_64. 25(As of this writing, this ABI documentation as been confirmed for x86_64.
26 The maintainers of the other vDSO-using architectures should confirm 26 The maintainers of the other vDSO-using architectures should confirm
27 that it is correct for their architecture.) \ No newline at end of file 27 that it is correct for their architecture.)
diff --git a/Documentation/ABI/testing/dev-kmsg b/Documentation/ABI/testing/dev-kmsg
index 281ecc5f9709..7e7e07a82e0e 100644
--- a/Documentation/ABI/testing/dev-kmsg
+++ b/Documentation/ABI/testing/dev-kmsg
@@ -58,16 +58,18 @@ Description: The /dev/kmsg character device node provides userspace access
58 58
59 The output format consists of a prefix carrying the syslog 59 The output format consists of a prefix carrying the syslog
60 prefix including priority and facility, the 64 bit message 60 prefix including priority and facility, the 64 bit message
61 sequence number and the monotonic timestamp in microseconds. 61 sequence number and the monotonic timestamp in microseconds,
62 The values are separated by a ','. Future extensions might 62 and a flag field. All fields are separated by a ','.
63 add more comma separated values before the terminating ';'. 63
64 Unknown values should be gracefully ignored. 64 Future extensions might add more comma separated values before
65 the terminating ';'. Unknown fields and values should be
66 gracefully ignored.
65 67
66 The human readable text string starts directly after the ';' 68 The human readable text string starts directly after the ';'
67 and is terminated by a '\n'. Untrusted values derived from 69 and is terminated by a '\n'. Untrusted values derived from
68 hardware or other facilities are printed, therefore 70 hardware or other facilities are printed, therefore
69 all non-printable characters in the log message are escaped 71 all non-printable characters and '\' itself in the log message
70 by "\x00" C-style hex encoding. 72 are escaped by "\x00" C-style hex encoding.
71 73
72 A line starting with ' ', is a continuation line, adding 74 A line starting with ' ', is a continuation line, adding
73 key/value pairs to the log message, which provide the machine 75 key/value pairs to the log message, which provide the machine
@@ -75,11 +77,11 @@ Description: The /dev/kmsg character device node provides userspace access
75 userspace. 77 userspace.
76 78
77 Example: 79 Example:
78 7,160,424069;pci_root PNP0A03:00: host bridge window [io 0x0000-0x0cf7] (ignored) 80 7,160,424069,-;pci_root PNP0A03:00: host bridge window [io 0x0000-0x0cf7] (ignored)
79 SUBSYSTEM=acpi 81 SUBSYSTEM=acpi
80 DEVICE=+acpi:PNP0A03:00 82 DEVICE=+acpi:PNP0A03:00
81 6,339,5140900;NET: Registered protocol family 10 83 6,339,5140900,-;NET: Registered protocol family 10
82 30,340,5690716;udevd[80]: starting version 181 84 30,340,5690716,-;udevd[80]: starting version 181
83 85
84 The DEVICE= key uniquely identifies devices the following way: 86 The DEVICE= key uniquely identifies devices the following way:
85 b12:8 - block dev_t 87 b12:8 - block dev_t
@@ -87,4 +89,13 @@ Description: The /dev/kmsg character device node provides userspace access
87 n8 - netdev ifindex 89 n8 - netdev ifindex
88 +sound:card0 - subsystem:devname 90 +sound:card0 - subsystem:devname
89 91
92 The flags field carries '-' by default. A 'c' indicates a
93 fragment of a line. All following fragments are flagged with
94 '+'. Note, that these hints about continuation lines are not
95 neccessarily correct, and the stream could be interleaved with
96 unrelated messages, but merging the lines in the output
97 usually produces better human readable results. A similar
98 logic is used internally when messages are printed to the
99 console, /proc/kmsg or the syslog() syscall.
100
90Users: dmesg(1), userspace kernel log consumers 101Users: dmesg(1), userspace kernel log consumers
diff --git a/Documentation/ABI/testing/sysfs-block-rssd b/Documentation/ABI/testing/sysfs-block-rssd
index 679ce3543122..beef30c046b0 100644
--- a/Documentation/ABI/testing/sysfs-block-rssd
+++ b/Documentation/ABI/testing/sysfs-block-rssd
@@ -1,26 +1,5 @@
1What: /sys/block/rssd*/registers
2Date: March 2012
3KernelVersion: 3.3
4Contact: Asai Thambi S P <asamymuthupa@micron.com>
5Description: This is a read-only file. Dumps below driver information and
6 hardware registers.
7 - S ACTive
8 - Command Issue
9 - Completed
10 - PORT IRQ STAT
11 - HOST IRQ STAT
12 - Allocated
13 - Commands in Q
14
15What: /sys/block/rssd*/status 1What: /sys/block/rssd*/status
16Date: April 2012 2Date: April 2012
17KernelVersion: 3.4 3KernelVersion: 3.4
18Contact: Asai Thambi S P <asamymuthupa@micron.com> 4Contact: Asai Thambi S P <asamymuthupa@micron.com>
19Description: This is a read-only file. Indicates the status of the device. 5Description: This is a read-only file. Indicates the status of the device.
20
21What: /sys/block/rssd*/flags
22Date: May 2012
23KernelVersion: 3.5
24Contact: Asai Thambi S P <asamymuthupa@micron.com>
25Description: This is a read-only file. Dumps the flags in port and driver
26 data structure
diff --git a/Documentation/ABI/testing/sysfs-block-zram b/Documentation/ABI/testing/sysfs-block-zram
index c8b3b48ec62c..ec93fe33baa6 100644
--- a/Documentation/ABI/testing/sysfs-block-zram
+++ b/Documentation/ABI/testing/sysfs-block-zram
@@ -96,4 +96,4 @@ Description:
96 overhead, allocated for this disk. So, allocator space 96 overhead, allocated for this disk. So, allocator space
97 efficiency can be calculated using compr_data_size and this 97 efficiency can be calculated using compr_data_size and this
98 statistic. 98 statistic.
99 Unit: bytes \ No newline at end of file 99 Unit: bytes
diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio
index cfedf63cce15..2f06d40fe07d 100644
--- a/Documentation/ABI/testing/sysfs-bus-iio
+++ b/Documentation/ABI/testing/sysfs-bus-iio
@@ -40,9 +40,9 @@ Contact: linux-iio@vger.kernel.org
40Description: 40Description:
41 Some devices have internal clocks. This parameter sets the 41 Some devices have internal clocks. This parameter sets the
42 resulting sampling frequency. In many devices this 42 resulting sampling frequency. In many devices this
43 parameter has an effect on input filters etc rather than 43 parameter has an effect on input filters etc. rather than
44 simply controlling when the input is sampled. As this 44 simply controlling when the input is sampled. As this
45 effects datardy triggers, hardware buffers and the sysfs 45 effects data ready triggers, hardware buffers and the sysfs
46 direct access interfaces, it may be found in any of the 46 direct access interfaces, it may be found in any of the
47 relevant directories. If it effects all of the above 47 relevant directories. If it effects all of the above
48 then it is to be found in the base device directory. 48 then it is to be found in the base device directory.
@@ -74,7 +74,7 @@ What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_raw
74KernelVersion: 2.6.35 74KernelVersion: 2.6.35
75Contact: linux-iio@vger.kernel.org 75Contact: linux-iio@vger.kernel.org
76Description: 76Description:
77 Raw (unscaled no bias removal etc) voltage measurement from 77 Raw (unscaled no bias removal etc.) voltage measurement from
78 channel Y. In special cases where the channel does not 78 channel Y. In special cases where the channel does not
79 correspond to externally available input one of the named 79 correspond to externally available input one of the named
80 versions may be used. The number must always be specified and 80 versions may be used. The number must always be specified and
@@ -118,11 +118,11 @@ What: /sys/bus/iio/devices/iio:deviceX/in_temp_z_raw
118KernelVersion: 2.6.35 118KernelVersion: 2.6.35
119Contact: linux-iio@vger.kernel.org 119Contact: linux-iio@vger.kernel.org
120Description: 120Description:
121 Raw (unscaled no bias removal etc) temperature measurement. 121 Raw (unscaled no bias removal etc.) temperature measurement.
122 If an axis is specified it generally means that the temperature 122 If an axis is specified it generally means that the temperature
123 sensor is associated with one part of a compound device (e.g. 123 sensor is associated with one part of a compound device (e.g.
124 a gyroscope axis). Units after application of scale and offset 124 a gyroscope axis). Units after application of scale and offset
125 are milli degrees Celsuis. 125 are milli degrees Celsius.
126 126
127What: /sys/bus/iio/devices/iio:deviceX/in_tempX_input 127What: /sys/bus/iio/devices/iio:deviceX/in_tempX_input
128KernelVersion: 2.6.38 128KernelVersion: 2.6.38
@@ -148,10 +148,9 @@ KernelVersion: 2.6.35
148Contact: linux-iio@vger.kernel.org 148Contact: linux-iio@vger.kernel.org
149Description: 149Description:
150 Angular velocity about axis x, y or z (may be arbitrarily 150 Angular velocity about axis x, y or z (may be arbitrarily
151 assigned) Data converted by application of offset then scale to 151 assigned). Has all the equivalent parameters as per voltageY.
152 radians per second. Has all the equivalent parameters as 152 Units after application of scale and offset are radians per
153 per voltageY. Units after application of scale and offset are 153 second.
154 radians per second.
155 154
156What: /sys/bus/iio/devices/iio:deviceX/in_incli_x_raw 155What: /sys/bus/iio/devices/iio:deviceX/in_incli_x_raw
157What: /sys/bus/iio/devices/iio:deviceX/in_incli_y_raw 156What: /sys/bus/iio/devices/iio:deviceX/in_incli_y_raw
@@ -161,7 +160,7 @@ Contact: linux-iio@vger.kernel.org
161Description: 160Description:
162 Inclination raw reading about axis x, y or z (may be 161 Inclination raw reading about axis x, y or z (may be
163 arbitrarily assigned). Data converted by application of offset 162 arbitrarily assigned). Data converted by application of offset
164 and scale to Degrees. 163 and scale to degrees.
165 164
166What: /sys/bus/iio/devices/iio:deviceX/in_magn_x_raw 165What: /sys/bus/iio/devices/iio:deviceX/in_magn_x_raw
167What: /sys/bus/iio/devices/iio:deviceX/in_magn_y_raw 166What: /sys/bus/iio/devices/iio:deviceX/in_magn_y_raw
@@ -203,7 +202,7 @@ Contact: linux-iio@vger.kernel.org
203Description: 202Description:
204 If known for a device, offset to be added to <type>[Y]_raw prior 203 If known for a device, offset to be added to <type>[Y]_raw prior
205 to scaling by <type>[Y]_scale in order to obtain value in the 204 to scaling by <type>[Y]_scale in order to obtain value in the
206 <type> units as specified in <type>[y]_raw documentation. 205 <type> units as specified in <type>[Y]_raw documentation.
207 Not present if the offset is always 0 or unknown. If Y or 206 Not present if the offset is always 0 or unknown. If Y or
208 axis <x|y|z> is not present, then the offset applies to all 207 axis <x|y|z> is not present, then the offset applies to all
209 in channels of <type>. 208 in channels of <type>.
@@ -249,7 +248,7 @@ What: /sys/bus/iio/devices/iio:deviceX/in_proximity0_calibbias
249KernelVersion: 2.6.35 248KernelVersion: 2.6.35
250Contact: linux-iio@vger.kernel.org 249Contact: linux-iio@vger.kernel.org
251Description: 250Description:
252 Hardware applied calibration offset. (assumed to fix production 251 Hardware applied calibration offset (assumed to fix production
253 inaccuracies). 252 inaccuracies).
254 253
255What /sys/bus/iio/devices/iio:deviceX/in_voltageY_calibscale 254What /sys/bus/iio/devices/iio:deviceX/in_voltageY_calibscale
@@ -266,7 +265,7 @@ what /sys/bus/iio/devices/iio:deviceX/in_proximity0_calibscale
266KernelVersion: 2.6.35 265KernelVersion: 2.6.35
267Contact: linux-iio@vger.kernel.org 266Contact: linux-iio@vger.kernel.org
268Description: 267Description:
269 Hardware applied calibration scale factor. (assumed to fix 268 Hardware applied calibration scale factor (assumed to fix
270 production inaccuracies). If shared across all channels, 269 production inaccuracies). If shared across all channels,
271 <type>_calibscale is used. 270 <type>_calibscale is used.
272 271
@@ -276,10 +275,10 @@ What: /sys/.../iio:deviceX/in_voltage-voltage_scale_available
276What: /sys/.../iio:deviceX/out_voltageX_scale_available 275What: /sys/.../iio:deviceX/out_voltageX_scale_available
277What: /sys/.../iio:deviceX/out_altvoltageX_scale_available 276What: /sys/.../iio:deviceX/out_altvoltageX_scale_available
278What: /sys/.../iio:deviceX/in_capacitance_scale_available 277What: /sys/.../iio:deviceX/in_capacitance_scale_available
279KernelVersion: 2.635 278KernelVersion: 2.6.35
280Contact: linux-iio@vger.kernel.org 279Contact: linux-iio@vger.kernel.org
281Description: 280Description:
282 If a discrete set of scale values are available, they 281 If a discrete set of scale values is available, they
283 are listed in this attribute. 282 are listed in this attribute.
284 283
285What /sys/bus/iio/devices/iio:deviceX/out_voltageY_hardwaregain 284What /sys/bus/iio/devices/iio:deviceX/out_voltageY_hardwaregain
@@ -330,9 +329,11 @@ Contact: linux-iio@vger.kernel.org
330Description: 329Description:
331 Specifies the output powerdown mode. 330 Specifies the output powerdown mode.
332 DAC output stage is disconnected from the amplifier and 331 DAC output stage is disconnected from the amplifier and
333 1kohm_to_gnd: connected to ground via an 1kOhm resistor 332 1kohm_to_gnd: connected to ground via an 1kOhm resistor,
334 100kohm_to_gnd: connected to ground via an 100kOhm resistor 333 6kohm_to_gnd: connected to ground via a 6kOhm resistor,
335 three_state: left floating 334 20kohm_to_gnd: connected to ground via a 20kOhm resistor,
335 100kohm_to_gnd: connected to ground via an 100kOhm resistor,
336 three_state: left floating.
336 For a list of available output power down options read 337 For a list of available output power down options read
337 outX_powerdown_mode_available. If Y is not present the 338 outX_powerdown_mode_available. If Y is not present the
338 mode is shared across all outputs. 339 mode is shared across all outputs.
@@ -355,9 +356,10 @@ KernelVersion: 2.6.38
355Contact: linux-iio@vger.kernel.org 356Contact: linux-iio@vger.kernel.org
356Description: 357Description:
357 Writing 1 causes output Y to enter the power down mode specified 358 Writing 1 causes output Y to enter the power down mode specified
358 by the corresponding outY_powerdown_mode. Clearing returns to 359 by the corresponding outY_powerdown_mode. DAC output stage is
359 normal operation. Y may be suppressed if all outputs are 360 disconnected from the amplifier. Clearing returns to normal
360 controlled together. 361 operation. Y may be suppressed if all outputs are controlled
362 together.
361 363
362What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_frequency 364What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_frequency
363KernelVersion: 3.4.0 365KernelVersion: 3.4.0
@@ -421,12 +423,12 @@ Description:
421 different values, but the device can only enable both thresholds 423 different values, but the device can only enable both thresholds
422 or neither. 424 or neither.
423 Note the driver will assume the last p events requested are 425 Note the driver will assume the last p events requested are
424 to be enabled where p is however many it supports (which may 426 to be enabled where p is how many it supports (which may vary
425 vary depending on the exact set requested. So if you want to be 427 depending on the exact set requested. So if you want to be
426 sure you have set what you think you have, check the contents of 428 sure you have set what you think you have, check the contents of
427 these attributes after everything is configured. Drivers may 429 these attributes after everything is configured. Drivers may
428 have to buffer any parameters so that they are consistent when 430 have to buffer any parameters so that they are consistent when
429 a given event type is enabled a future point (and not those for 431 a given event type is enabled at a future point (and not those for
430 whatever event was previously enabled). 432 whatever event was previously enabled).
431 433
432What: /sys/.../iio:deviceX/events/in_accel_x_roc_rising_en 434What: /sys/.../iio:deviceX/events/in_accel_x_roc_rising_en
@@ -702,7 +704,7 @@ What: /sys/.../buffer/scan_elements/in_anglvel_type
702What: /sys/.../buffer/scan_elements/in_magn_type 704What: /sys/.../buffer/scan_elements/in_magn_type
703What: /sys/.../buffer/scan_elements/in_incli_type 705What: /sys/.../buffer/scan_elements/in_incli_type
704What: /sys/.../buffer/scan_elements/in_voltageY_type 706What: /sys/.../buffer/scan_elements/in_voltageY_type
705What: /sys/.../buffer/scan_elements/in_voltage-in_type 707What: /sys/.../buffer/scan_elements/in_voltage_type
706What: /sys/.../buffer/scan_elements/in_voltageY_supply_type 708What: /sys/.../buffer/scan_elements/in_voltageY_supply_type
707What: /sys/.../buffer/scan_elements/in_timestamp_type 709What: /sys/.../buffer/scan_elements/in_timestamp_type
708KernelVersion: 2.6.37 710KernelVersion: 2.6.37
@@ -723,7 +725,7 @@ Description:
723 the buffer output value appropriately. The storagebits value 725 the buffer output value appropriately. The storagebits value
724 also specifies the data alignment. So s48/64>>2 will be a 726 also specifies the data alignment. So s48/64>>2 will be a
725 signed 48 bit integer stored in a 64 bit location aligned to 727 signed 48 bit integer stored in a 64 bit location aligned to
726 a a64 bit boundary. To obtain the clean value, shift right 2 728 a 64 bit boundary. To obtain the clean value, shift right 2
727 and apply a mask to zero the top 16 bits of the result. 729 and apply a mask to zero the top 16 bits of the result.
728 For other storage combinations this attribute will be extended 730 For other storage combinations this attribute will be extended
729 appropriately. 731 appropriately.
diff --git a/Documentation/ABI/testing/sysfs-bus-iio-frequency-ad9523 b/Documentation/ABI/testing/sysfs-bus-iio-frequency-ad9523
new file mode 100644
index 000000000000..2ce9c3f68eee
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-bus-iio-frequency-ad9523
@@ -0,0 +1,37 @@
1What: /sys/bus/iio/devices/iio:deviceX/pll2_feedback_clk_present
2What: /sys/bus/iio/devices/iio:deviceX/pll2_reference_clk_present
3What: /sys/bus/iio/devices/iio:deviceX/pll1_reference_clk_a_present
4What: /sys/bus/iio/devices/iio:deviceX/pll1_reference_clk_b_present
5What: /sys/bus/iio/devices/iio:deviceX/pll1_reference_clk_test_present
6What: /sys/bus/iio/devices/iio:deviceX/vcxo_clk_present
7KernelVersion: 3.4.0
8Contact: linux-iio@vger.kernel.org
9Description:
10 Reading returns either '1' or '0'.
11 '1' means that the clock in question is present.
12 '0' means that the clock is missing.
13
14What: /sys/bus/iio/devices/iio:deviceX/pllY_locked
15KernelVersion: 3.4.0
16Contact: linux-iio@vger.kernel.org
17Description:
18 Reading returns either '1' or '0'. '1' means that the
19 pllY is locked.
20
21What: /sys/bus/iio/devices/iio:deviceX/store_eeprom
22KernelVersion: 3.4.0
23Contact: linux-iio@vger.kernel.org
24Description:
25 Writing '1' stores the current device configuration into
26 on-chip EEPROM. After power-up or chip reset the device will
27 automatically load the saved configuration.
28
29What: /sys/bus/iio/devices/iio:deviceX/sync_dividers
30KernelVersion: 3.4.0
31Contact: linux-iio@vger.kernel.org
32Description:
33 Writing '1' triggers the clock distribution synchronization
34 functionality. All dividers are reset and the channels start
35 with their predefined phase offsets (out_altvoltageY_phase).
36 Writing this file has the effect as driving the external
37 /SYNC pin low.
diff --git a/Documentation/ABI/testing/sysfs-bus-iio-frequency-adf4350 b/Documentation/ABI/testing/sysfs-bus-iio-frequency-adf4350
new file mode 100644
index 000000000000..d89aded01c5a
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-bus-iio-frequency-adf4350
@@ -0,0 +1,21 @@
1What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_frequency_resolution
2KernelVersion: 3.4.0
3Contact: linux-iio@vger.kernel.org
4Description:
5 Stores channel Y frequency resolution/channel spacing in Hz.
6 The value given directly influences the MODULUS used by
7 the fractional-N PLL. It is assumed that the algorithm
8 that is used to compute the various dividers, is able to
9 generate proper values for multiples of channel spacing.
10
11What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_refin_frequency
12KernelVersion: 3.4.0
13Contact: linux-iio@vger.kernel.org
14Description:
15 Sets channel Y REFin frequency in Hz. In some clock chained
16 applications, the reference frequency used by the PLL may
17 change during runtime. This attribute allows the user to
18 adjust the reference frequency accordingly.
19 The value written has no effect until out_altvoltageY_frequency
20 is updated. Consider to use out_altvoltageY_powerdown to power
21 down the PLL and it's RFOut buffers during REFin changes.
diff --git a/Documentation/ABI/testing/sysfs-bus-iio-light-lm3533-als b/Documentation/ABI/testing/sysfs-bus-iio-light-lm3533-als
new file mode 100644
index 000000000000..22c5ea670971
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-bus-iio-light-lm3533-als
@@ -0,0 +1,61 @@
1What: /sys/.../events/in_illuminance0_thresh_either_en
2Date: April 2012
3KernelVersion: 3.5
4Contact: Johan Hovold <jhovold@gmail.com>
5Description:
6 Event generated when channel passes one of the four thresholds
7 in each direction (rising|falling) and a zone change occurs.
8 The corresponding light zone can be read from
9 in_illuminance0_zone.
10
11What: /sys/.../events/in_illuminance0_threshY_hysteresis
12Date: May 2012
13KernelVersion: 3.5
14Contact: Johan Hovold <jhovold@gmail.com>
15Description:
16 Get the hysteresis for thresholds Y, that is,
17 threshY_hysteresis = threshY_raising - threshY_falling
18
19What: /sys/.../events/illuminance_threshY_falling_value
20What: /sys/.../events/illuminance_threshY_raising_value
21Date: April 2012
22KernelVersion: 3.5
23Contact: Johan Hovold <jhovold@gmail.com>
24Description:
25 Specifies the value of threshold that the device is comparing
26 against for the events enabled by
27 in_illuminance0_thresh_either_en (0..255), where Y in 0..3.
28
29 Note that threshY_falling must be less than or equal to
30 threshY_raising.
31
32 These thresholds correspond to the eight zone-boundary
33 registers (boundaryY_{low,high}) and define the five light
34 zones.
35
36What: /sys/bus/iio/devices/iio:deviceX/in_illuminance0_zone
37Date: April 2012
38KernelVersion: 3.5
39Contact: Johan Hovold <jhovold@gmail.com>
40Description:
41 Get the current light zone (0..4) as defined by the
42 in_illuminance0_threshY_{falling,rising} thresholds.
43
44What: /sys/bus/iio/devices/iio:deviceX/out_currentY_raw
45Date: May 2012
46KernelVersion: 3.5
47Contact: Johan Hovold <jhovold@gmail.com>
48Description:
49 Get output current for channel Y (0..255), that is,
50 out_currentY_currentZ_raw, where Z is the current zone.
51
52What: /sys/bus/iio/devices/iio:deviceX/out_currentY_currentZ_raw
53Date: May 2012
54KernelVersion: 3.5
55Contact: Johan Hovold <jhovold@gmail.com>
56Description:
57 Set the output current for channel out_currentY when in zone
58 Z (0..255), where Y in 0..2 and Z in 0..4.
59
60 These values correspond to the ALS-mapper target registers for
61 ALS-mapper Y + 1.
diff --git a/Documentation/ABI/testing/sysfs-bus-usb b/Documentation/ABI/testing/sysfs-bus-usb
index 6df4e6f57560..5f75f8f7df34 100644
--- a/Documentation/ABI/testing/sysfs-bus-usb
+++ b/Documentation/ABI/testing/sysfs-bus-usb
@@ -208,3 +208,15 @@ Description:
208 such as ACPI. This file will read either "removable" or 208 such as ACPI. This file will read either "removable" or
209 "fixed" if the information is available, and "unknown" 209 "fixed" if the information is available, and "unknown"
210 otherwise. 210 otherwise.
211
212What: /sys/bus/usb/devices/.../ltm_capable
213Date: July 2012
214Contact: Sarah Sharp <sarah.a.sharp@linux.intel.com>
215Description:
216 USB 3.0 devices may optionally support Latency Tolerance
217 Messaging (LTM). They indicate their support by setting a bit
218 in the bmAttributes field of their SuperSpeed BOS descriptors.
219 If that bit is set for the device, ltm_capable will read "yes".
220 If the device doesn't support LTM, the file will read "no".
221 The file will be present for all speeds of USB devices, and will
222 always read "no" for USB 1.1 and USB 2.0 devices.
diff --git a/Documentation/ABI/testing/sysfs-bus-usb-devices-usbsevseg b/Documentation/ABI/testing/sysfs-bus-usb-devices-usbsevseg
index cb830df8777c..70d00dfa443d 100644
--- a/Documentation/ABI/testing/sysfs-bus-usb-devices-usbsevseg
+++ b/Documentation/ABI/testing/sysfs-bus-usb-devices-usbsevseg
@@ -40,4 +40,4 @@ Description: Controls the decimal places on the device.
40 the value of 10 ** n. Assume this field has 40 the value of 10 ** n. Assume this field has
41 the value k and has 1 or more decimal places set, 41 the value k and has 1 or more decimal places set,
42 to set the mth place (where m is not already set), 42 to set the mth place (where m is not already set),
43 change this fields value to k + 10 ** m. \ No newline at end of file 43 change this fields value to k + 10 ** m.
diff --git a/Documentation/ABI/testing/sysfs-class-backlight-driver-adp8870 b/Documentation/ABI/testing/sysfs-class-backlight-driver-adp8870
index 4a9c545bda4b..33e648808117 100644
--- a/Documentation/ABI/testing/sysfs-class-backlight-driver-adp8870
+++ b/Documentation/ABI/testing/sysfs-class-backlight-driver-adp8870
@@ -53,4 +53,4 @@ Description:
53 Documentation/ABI/stable/sysfs-class-backlight. 53 Documentation/ABI/stable/sysfs-class-backlight.
54 It can be enabled by writing the value stored in 54 It can be enabled by writing the value stored in
55 /sys/class/backlight/<backlight>/max_brightness to 55 /sys/class/backlight/<backlight>/max_brightness to
56 /sys/class/backlight/<backlight>/brightness. \ No newline at end of file 56 /sys/class/backlight/<backlight>/brightness.
diff --git a/Documentation/ABI/testing/sysfs-class-mtd b/Documentation/ABI/testing/sysfs-class-mtd
index db1ad7e34fc3..938ef71e2035 100644
--- a/Documentation/ABI/testing/sysfs-class-mtd
+++ b/Documentation/ABI/testing/sysfs-class-mtd
@@ -142,13 +142,14 @@ KernelVersion: 3.4
142Contact: linux-mtd@lists.infradead.org 142Contact: linux-mtd@lists.infradead.org
143Description: 143Description:
144 This allows the user to examine and adjust the criteria by which 144 This allows the user to examine and adjust the criteria by which
145 mtd returns -EUCLEAN from mtd_read(). If the maximum number of 145 mtd returns -EUCLEAN from mtd_read() and mtd_read_oob(). If the
146 bit errors that were corrected on any single region comprising 146 maximum number of bit errors that were corrected on any single
147 an ecc step (as reported by the driver) equals or exceeds this 147 region comprising an ecc step (as reported by the driver) equals
148 value, -EUCLEAN is returned. Otherwise, absent an error, 0 is 148 or exceeds this value, -EUCLEAN is returned. Otherwise, absent
149 returned. Higher layers (e.g., UBI) use this return code as an 149 an error, 0 is returned. Higher layers (e.g., UBI) use this
150 indication that an erase block may be degrading and should be 150 return code as an indication that an erase block may be
151 scrutinized as a candidate for being marked as bad. 151 degrading and should be scrutinized as a candidate for being
152 marked as bad.
152 153
153 The initial value may be specified by the flash device driver. 154 The initial value may be specified by the flash device driver.
154 If not, then the default value is ecc_strength. 155 If not, then the default value is ecc_strength.
@@ -167,7 +168,7 @@ Description:
167 block degradation, but high enough to avoid the consequences of 168 block degradation, but high enough to avoid the consequences of
168 a persistent return value of -EUCLEAN on devices where sticky 169 a persistent return value of -EUCLEAN on devices where sticky
169 bitflips occur. Note that if bitflip_threshold exceeds 170 bitflips occur. Note that if bitflip_threshold exceeds
170 ecc_strength, -EUCLEAN is never returned by mtd_read(). 171 ecc_strength, -EUCLEAN is never returned by the read operations.
171 Conversely, if bitflip_threshold is zero, -EUCLEAN is always 172 Conversely, if bitflip_threshold is zero, -EUCLEAN is always
172 returned, absent a hard error. 173 returned, absent a hard error.
173 174
diff --git a/Documentation/ABI/testing/sysfs-devices-system-xen_cpu b/Documentation/ABI/testing/sysfs-devices-system-xen_cpu
new file mode 100644
index 000000000000..9ca02fb2d498
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-devices-system-xen_cpu
@@ -0,0 +1,20 @@
1What: /sys/devices/system/xen_cpu/
2Date: May 2012
3Contact: Liu, Jinsong <jinsong.liu@intel.com>
4Description:
5 A collection of global/individual Xen physical cpu attributes
6
7 Individual physical cpu attributes are contained in
8 subdirectories named by the Xen's logical cpu number, e.g.:
9 /sys/devices/system/xen_cpu/xen_cpu#/
10
11
12What: /sys/devices/system/xen_cpu/xen_cpu#/online
13Date: May 2012
14Contact: Liu, Jinsong <jinsong.liu@intel.com>
15Description:
16 Interface to online/offline Xen physical cpus
17
18 When running under Xen platform, it provide user interface
19 to online/offline physical cpus, except cpu0 due to several
20 logic restrictions and assumptions.
diff --git a/Documentation/ABI/testing/sysfs-driver-hid-lenovo-tpkbd b/Documentation/ABI/testing/sysfs-driver-hid-lenovo-tpkbd
new file mode 100644
index 000000000000..57b92cbdceae
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-driver-hid-lenovo-tpkbd
@@ -0,0 +1,38 @@
1What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/press_to_select
2Date: July 2011
3Contact: linux-input@vger.kernel.org
4Description: This controls if mouse clicks should be generated if the trackpoint is quickly pressed. How fast this press has to be
5 is being controlled by press_speed.
6 Values are 0 or 1.
7
8What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/dragging
9Date: July 2011
10Contact: linux-input@vger.kernel.org
11Description: If this setting is enabled, it is possible to do dragging by pressing the trackpoint. This requires press_to_select to be enabled.
12 Values are 0 or 1.
13
14What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/release_to_select
15Date: July 2011
16Contact: linux-input@vger.kernel.org
17Description: For details regarding this setting please refer to http://www.pc.ibm.com/ww/healthycomputing/trkpntb.html
18 Values are 0 or 1.
19
20What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/select_right
21Date: July 2011
22Contact: linux-input@vger.kernel.org
23Description: This setting controls if the mouse click events generated by pressing the trackpoint (if press_to_select is enabled) generate
24 a left or right mouse button click.
25 Values are 0 or 1.
26
27What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/sensitivity
28Date: July 2011
29Contact: linux-input@vger.kernel.org
30Description: This file contains the trackpoint sensitivity.
31 Values are decimal integers from 1 (lowest sensitivity) to 255 (highest sensitivity).
32
33What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/press_speed
34Date: July 2011
35Contact: linux-input@vger.kernel.org
36Description: This setting controls how fast the trackpoint needs to be pressed to generate a mouse click if press_to_select is enabled.
37 Values are decimal integers from 1 (slowest) to 255 (fastest).
38
diff --git a/Documentation/ABI/testing/sysfs-driver-hid-roccat-savu b/Documentation/ABI/testing/sysfs-driver-hid-roccat-savu
new file mode 100644
index 000000000000..b42922cf6b1f
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-driver-hid-roccat-savu
@@ -0,0 +1,77 @@
1What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/savu/roccatsavu<minor>/buttons
2Date: Mai 2012
3Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
4Description: The mouse can store 5 profiles which can be switched by the
5 press of a button. A profile is split into general settings and
6 button settings. buttons holds informations about button layout.
7 When written, this file lets one write the respective profile
8 buttons to the mouse. The data has to be 47 bytes long.
9 The mouse will reject invalid data.
10 Which profile to write is determined by the profile number
11 contained in the data.
12 Before reading this file, control has to be written to select
13 which profile to read.
14Users: http://roccat.sourceforge.net
15
16What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/savu/roccatsavu<minor>/control
17Date: Mai 2012
18Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
19Description: When written, this file lets one select which data from which
20 profile will be read next. The data has to be 3 bytes long.
21 This file is writeonly.
22Users: http://roccat.sourceforge.net
23
24What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/savu/roccatsavu<minor>/general
25Date: Mai 2012
26Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
27Description: The mouse can store 5 profiles which can be switched by the
28 press of a button. A profile is split into general settings and
29 button settings. profile holds informations like resolution, sensitivity
30 and light effects.
31 When written, this file lets one write the respective profile
32 settings back to the mouse. The data has to be 43 bytes long.
33 The mouse will reject invalid data.
34 Which profile to write is determined by the profile number
35 contained in the data.
36 This file is writeonly.
37Users: http://roccat.sourceforge.net
38
39What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/savu/roccatsavu<minor>/info
40Date: Mai 2012
41Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
42Description: When read, this file returns general data like firmware version.
43 The data is 8 bytes long.
44 This file is readonly.
45Users: http://roccat.sourceforge.net
46
47What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/savu/roccatsavu<minor>/macro
48Date: Mai 2012
49Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
50Description: When written, this file lets one store macros with max 500
51 keystrokes for a specific button for a specific profile.
52 Button and profile numbers are included in written data.
53 The data has to be 2083 bytes long.
54 Before reading this file, control has to be written to select
55 which profile and key to read.
56Users: http://roccat.sourceforge.net
57
58What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/savu/roccatsavu<minor>/profile
59Date: Mai 2012
60Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
61Description: The mouse can store 5 profiles which can be switched by the
62 press of a button. profile holds number of actual profile.
63 This value is persistent, so its value determines the profile
64 that's active when the mouse is powered on next time.
65 When written, the mouse activates the set profile immediately.
66 The data has to be 3 bytes long.
67 The mouse will reject invalid data.
68Users: http://roccat.sourceforge.net
69
70What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/savu/roccatsavu<minor>/sensor
71Date: July 2012
72Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
73Description: The mouse has a Avago ADNS-3090 sensor.
74 This file allows reading and writing of the mouse sensors registers.
75 The data has to be 4 bytes long.
76Users: http://roccat.sourceforge.net
77
diff --git a/Documentation/ABI/testing/sysfs-kernel-iommu_groups b/Documentation/ABI/testing/sysfs-kernel-iommu_groups
new file mode 100644
index 000000000000..9b31556cfdda
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-kernel-iommu_groups
@@ -0,0 +1,14 @@
1What: /sys/kernel/iommu_groups/
2Date: May 2012
3KernelVersion: v3.5
4Contact: Alex Williamson <alex.williamson@redhat.com>
5Description: /sys/kernel/iommu_groups/ contains a number of sub-
6 directories, each representing an IOMMU group. The
7 name of the sub-directory matches the iommu_group_id()
8 for the group, which is an integer value. Within each
9 subdirectory is another directory named "devices" with
10 links to the sysfs devices contained in this group.
11 The group directory also optionally contains a "name"
12 file if the IOMMU driver has chosen to register a more
13 common name for the group.
14Users:
diff --git a/Documentation/ABI/testing/sysfs-power b/Documentation/ABI/testing/sysfs-power
index 31725ffeeb3a..217772615d02 100644
--- a/Documentation/ABI/testing/sysfs-power
+++ b/Documentation/ABI/testing/sysfs-power
@@ -231,3 +231,16 @@ Description:
231 Reads from this file return a string consisting of the names of 231 Reads from this file return a string consisting of the names of
232 wakeup sources created with the help of /sys/power/wake_lock 232 wakeup sources created with the help of /sys/power/wake_lock
233 that are inactive at the moment, separated with spaces. 233 that are inactive at the moment, separated with spaces.
234
235What: /sys/power/pm_print_times
236Date: May 2012
237Contact: Sameer Nanda <snanda@chromium.org>
238Description:
239 The /sys/power/pm_print_times file allows user space to
240 control whether the time taken by devices to suspend and
241 resume is printed. These prints are useful for hunting down
242 devices that take too long to suspend or resume.
243
244 Writing a "1" enables this printing while writing a "0"
245 disables it. The default value is "0". Reading from this file
246 will display the current value.
diff --git a/Documentation/DocBook/80211.tmpl b/Documentation/DocBook/80211.tmpl
index f3e214f9e256..42e7f030cb16 100644
--- a/Documentation/DocBook/80211.tmpl
+++ b/Documentation/DocBook/80211.tmpl
@@ -404,7 +404,6 @@
404!Finclude/net/mac80211.h ieee80211_get_tkip_p1k 404!Finclude/net/mac80211.h ieee80211_get_tkip_p1k
405!Finclude/net/mac80211.h ieee80211_get_tkip_p1k_iv 405!Finclude/net/mac80211.h ieee80211_get_tkip_p1k_iv
406!Finclude/net/mac80211.h ieee80211_get_tkip_p2k 406!Finclude/net/mac80211.h ieee80211_get_tkip_p2k
407!Finclude/net/mac80211.h ieee80211_key_removed
408 </chapter> 407 </chapter>
409 408
410 <chapter id="powersave"> 409 <chapter id="powersave">
diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml
index 676bc46f9c52..cda0dfb6769a 100644
--- a/Documentation/DocBook/media/v4l/controls.xml
+++ b/Documentation/DocBook/media/v4l/controls.xml
@@ -3988,7 +3988,7 @@ interface and may change in the future.</para>
3988 from RGB to Y'CbCr color space. 3988 from RGB to Y'CbCr color space.
3989 </entry> 3989 </entry>
3990 </row> 3990 </row>
3991 <row id = "v4l2-jpeg-chroma-subsampling"> 3991 <row>
3992 <entrytbl spanname="descr" cols="2"> 3992 <entrytbl spanname="descr" cols="2">
3993 <tbody valign="top"> 3993 <tbody valign="top">
3994 <row> 3994 <row>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml b/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml
index e3d5afcdafbb..0a4b90fcf2da 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml
@@ -284,13 +284,6 @@ These controls are described in <xref
284 processing controls. These controls are described in <xref 284 processing controls. These controls are described in <xref
285 linkend="image-process-controls" />.</entry> 285 linkend="image-process-controls" />.</entry>
286 </row> 286 </row>
287 <row>
288 <entry><constant>V4L2_CTRL_CLASS_JPEG</constant></entry>
289 <entry>0x9d0000</entry>
290 <entry>The class containing JPEG compression controls.
291These controls are described in <xref
292 linkend="jpeg-controls" />.</entry>
293 </row>
294 </tbody> 287 </tbody>
295 </tgroup> 288 </tgroup>
296 </table> 289 </table>
diff --git a/Documentation/ManagementStyle b/Documentation/ManagementStyle
index a5f0ea58c788..a211ee8d8b44 100644
--- a/Documentation/ManagementStyle
+++ b/Documentation/ManagementStyle
@@ -178,7 +178,7 @@ sadly that you are one too, and that while we can all bask in the secure
178knowledge that we're better than the average person (let's face it, 178knowledge that we're better than the average person (let's face it,
179nobody ever believes that they're average or below-average), we should 179nobody ever believes that they're average or below-average), we should
180also admit that we're not the sharpest knife around, and there will be 180also admit that we're not the sharpest knife around, and there will be
181other people that are less of an idiot that you are. 181other people that are less of an idiot than you are.
182 182
183Some people react badly to smart people. Others take advantage of them. 183Some people react badly to smart people. Others take advantage of them.
184 184
diff --git a/Documentation/RCU/checklist.txt b/Documentation/RCU/checklist.txt
index 5c8d74968090..fc103d7a0474 100644
--- a/Documentation/RCU/checklist.txt
+++ b/Documentation/RCU/checklist.txt
@@ -162,9 +162,9 @@ over a rather long period of time, but improvements are always welcome!
162 when publicizing a pointer to a structure that can 162 when publicizing a pointer to a structure that can
163 be traversed by an RCU read-side critical section. 163 be traversed by an RCU read-side critical section.
164 164
1655. If call_rcu(), or a related primitive such as call_rcu_bh() or 1655. If call_rcu(), or a related primitive such as call_rcu_bh(),
166 call_rcu_sched(), is used, the callback function must be 166 call_rcu_sched(), or call_srcu() is used, the callback function
167 written to be called from softirq context. In particular, 167 must be written to be called from softirq context. In particular,
168 it cannot block. 168 it cannot block.
169 169
1706. Since synchronize_rcu() can block, it cannot be called from 1706. Since synchronize_rcu() can block, it cannot be called from
@@ -202,11 +202,12 @@ over a rather long period of time, but improvements are always welcome!
202 updater uses call_rcu_sched() or synchronize_sched(), then 202 updater uses call_rcu_sched() or synchronize_sched(), then
203 the corresponding readers must disable preemption, possibly 203 the corresponding readers must disable preemption, possibly
204 by calling rcu_read_lock_sched() and rcu_read_unlock_sched(). 204 by calling rcu_read_lock_sched() and rcu_read_unlock_sched().
205 If the updater uses synchronize_srcu(), the the corresponding 205 If the updater uses synchronize_srcu() or call_srcu(),
206 readers must use srcu_read_lock() and srcu_read_unlock(), 206 the the corresponding readers must use srcu_read_lock() and
207 and with the same srcu_struct. The rules for the expedited 207 srcu_read_unlock(), and with the same srcu_struct. The rules for
208 primitives are the same as for their non-expedited counterparts. 208 the expedited primitives are the same as for their non-expedited
209 Mixing things up will result in confusion and broken kernels. 209 counterparts. Mixing things up will result in confusion and
210 broken kernels.
210 211
211 One exception to this rule: rcu_read_lock() and rcu_read_unlock() 212 One exception to this rule: rcu_read_lock() and rcu_read_unlock()
212 may be substituted for rcu_read_lock_bh() and rcu_read_unlock_bh() 213 may be substituted for rcu_read_lock_bh() and rcu_read_unlock_bh()
@@ -333,14 +334,14 @@ over a rather long period of time, but improvements are always welcome!
333 victim CPU from ever going offline.) 334 victim CPU from ever going offline.)
334 335
33514. SRCU (srcu_read_lock(), srcu_read_unlock(), srcu_dereference(), 33614. SRCU (srcu_read_lock(), srcu_read_unlock(), srcu_dereference(),
336 synchronize_srcu(), and synchronize_srcu_expedited()) may only 337 synchronize_srcu(), synchronize_srcu_expedited(), and call_srcu())
337 be invoked from process context. Unlike other forms of RCU, it 338 may only be invoked from process context. Unlike other forms of
338 -is- permissible to block in an SRCU read-side critical section 339 RCU, it -is- permissible to block in an SRCU read-side critical
339 (demarked by srcu_read_lock() and srcu_read_unlock()), hence the 340 section (demarked by srcu_read_lock() and srcu_read_unlock()),
340 "SRCU": "sleepable RCU". Please note that if you don't need 341 hence the "SRCU": "sleepable RCU". Please note that if you
341 to sleep in read-side critical sections, you should be using 342 don't need to sleep in read-side critical sections, you should be
342 RCU rather than SRCU, because RCU is almost always faster and 343 using RCU rather than SRCU, because RCU is almost always faster
343 easier to use than is SRCU. 344 and easier to use than is SRCU.
344 345
345 If you need to enter your read-side critical section in a 346 If you need to enter your read-side critical section in a
346 hardirq or exception handler, and then exit that same read-side 347 hardirq or exception handler, and then exit that same read-side
@@ -353,8 +354,8 @@ over a rather long period of time, but improvements are always welcome!
353 cleanup_srcu_struct(). These are passed a "struct srcu_struct" 354 cleanup_srcu_struct(). These are passed a "struct srcu_struct"
354 that defines the scope of a given SRCU domain. Once initialized, 355 that defines the scope of a given SRCU domain. Once initialized,
355 the srcu_struct is passed to srcu_read_lock(), srcu_read_unlock() 356 the srcu_struct is passed to srcu_read_lock(), srcu_read_unlock()
356 synchronize_srcu(), and synchronize_srcu_expedited(). A given 357 synchronize_srcu(), synchronize_srcu_expedited(), and call_srcu().
357 synchronize_srcu() waits only for SRCU read-side critical 358 A given synchronize_srcu() waits only for SRCU read-side critical
358 sections governed by srcu_read_lock() and srcu_read_unlock() 359 sections governed by srcu_read_lock() and srcu_read_unlock()
359 calls that have been passed the same srcu_struct. This property 360 calls that have been passed the same srcu_struct. This property
360 is what makes sleeping read-side critical sections tolerable -- 361 is what makes sleeping read-side critical sections tolerable --
@@ -374,7 +375,7 @@ over a rather long period of time, but improvements are always welcome!
374 requiring SRCU's read-side deadlock immunity or low read-side 375 requiring SRCU's read-side deadlock immunity or low read-side
375 realtime latency. 376 realtime latency.
376 377
377 Note that, rcu_assign_pointer() relates to SRCU just as they do 378 Note that, rcu_assign_pointer() relates to SRCU just as it does
378 to other forms of RCU. 379 to other forms of RCU.
379 380
38015. The whole point of call_rcu(), synchronize_rcu(), and friends 38115. The whole point of call_rcu(), synchronize_rcu(), and friends
diff --git a/Documentation/RCU/rcubarrier.txt b/Documentation/RCU/rcubarrier.txt
index e439a0edee22..38428c125135 100644
--- a/Documentation/RCU/rcubarrier.txt
+++ b/Documentation/RCU/rcubarrier.txt
@@ -79,8 +79,6 @@ complete. Pseudo-code using rcu_barrier() is as follows:
79 2. Execute rcu_barrier(). 79 2. Execute rcu_barrier().
80 3. Allow the module to be unloaded. 80 3. Allow the module to be unloaded.
81 81
82Quick Quiz #1: Why is there no srcu_barrier()?
83
84The rcutorture module makes use of rcu_barrier in its exit function 82The rcutorture module makes use of rcu_barrier in its exit function
85as follows: 83as follows:
86 84
@@ -162,7 +160,7 @@ for any pre-existing callbacks to complete.
162Then lines 55-62 print status and do operation-specific cleanup, and 160Then lines 55-62 print status and do operation-specific cleanup, and
163then return, permitting the module-unload operation to be completed. 161then return, permitting the module-unload operation to be completed.
164 162
165Quick Quiz #2: Is there any other situation where rcu_barrier() might 163Quick Quiz #1: Is there any other situation where rcu_barrier() might
166 be required? 164 be required?
167 165
168Your module might have additional complications. For example, if your 166Your module might have additional complications. For example, if your
@@ -242,7 +240,7 @@ reaches zero, as follows:
242 4 complete(&rcu_barrier_completion); 240 4 complete(&rcu_barrier_completion);
243 5 } 241 5 }
244 242
245Quick Quiz #3: What happens if CPU 0's rcu_barrier_func() executes 243Quick Quiz #2: What happens if CPU 0's rcu_barrier_func() executes
246 immediately (thus incrementing rcu_barrier_cpu_count to the 244 immediately (thus incrementing rcu_barrier_cpu_count to the
247 value one), but the other CPU's rcu_barrier_func() invocations 245 value one), but the other CPU's rcu_barrier_func() invocations
248 are delayed for a full grace period? Couldn't this result in 246 are delayed for a full grace period? Couldn't this result in
@@ -259,12 +257,7 @@ so that your module may be safely unloaded.
259 257
260Answers to Quick Quizzes 258Answers to Quick Quizzes
261 259
262Quick Quiz #1: Why is there no srcu_barrier()? 260Quick Quiz #1: Is there any other situation where rcu_barrier() might
263
264Answer: Since there is no call_srcu(), there can be no outstanding SRCU
265 callbacks. Therefore, there is no need to wait for them.
266
267Quick Quiz #2: Is there any other situation where rcu_barrier() might
268 be required? 261 be required?
269 262
270Answer: Interestingly enough, rcu_barrier() was not originally 263Answer: Interestingly enough, rcu_barrier() was not originally
@@ -278,7 +271,7 @@ Answer: Interestingly enough, rcu_barrier() was not originally
278 implementing rcutorture, and found that rcu_barrier() solves 271 implementing rcutorture, and found that rcu_barrier() solves
279 this problem as well. 272 this problem as well.
280 273
281Quick Quiz #3: What happens if CPU 0's rcu_barrier_func() executes 274Quick Quiz #2: What happens if CPU 0's rcu_barrier_func() executes
282 immediately (thus incrementing rcu_barrier_cpu_count to the 275 immediately (thus incrementing rcu_barrier_cpu_count to the
283 value one), but the other CPU's rcu_barrier_func() invocations 276 value one), but the other CPU's rcu_barrier_func() invocations
284 are delayed for a full grace period? Couldn't this result in 277 are delayed for a full grace period? Couldn't this result in
diff --git a/Documentation/RCU/torture.txt b/Documentation/RCU/torture.txt
index 4ddf3913fd8c..7dce8a17eac2 100644
--- a/Documentation/RCU/torture.txt
+++ b/Documentation/RCU/torture.txt
@@ -174,11 +174,20 @@ torture_type The type of RCU to test, with string values as follows:
174 and synchronize_rcu_bh_expedited(). 174 and synchronize_rcu_bh_expedited().
175 175
176 "srcu": srcu_read_lock(), srcu_read_unlock() and 176 "srcu": srcu_read_lock(), srcu_read_unlock() and
177 call_srcu().
178
179 "srcu_sync": srcu_read_lock(), srcu_read_unlock() and
177 synchronize_srcu(). 180 synchronize_srcu().
178 181
179 "srcu_expedited": srcu_read_lock(), srcu_read_unlock() and 182 "srcu_expedited": srcu_read_lock(), srcu_read_unlock() and
180 synchronize_srcu_expedited(). 183 synchronize_srcu_expedited().
181 184
185 "srcu_raw": srcu_read_lock_raw(), srcu_read_unlock_raw(),
186 and call_srcu().
187
188 "srcu_raw_sync": srcu_read_lock_raw(), srcu_read_unlock_raw(),
189 and synchronize_srcu().
190
182 "sched": preempt_disable(), preempt_enable(), and 191 "sched": preempt_disable(), preempt_enable(), and
183 call_rcu_sched(). 192 call_rcu_sched().
184 193
diff --git a/Documentation/RCU/whatisRCU.txt b/Documentation/RCU/whatisRCU.txt
index 6bbe8dcdc3da..69ee188515e7 100644
--- a/Documentation/RCU/whatisRCU.txt
+++ b/Documentation/RCU/whatisRCU.txt
@@ -833,9 +833,9 @@ sched: Critical sections Grace period Barrier
833 833
834SRCU: Critical sections Grace period Barrier 834SRCU: Critical sections Grace period Barrier
835 835
836 srcu_read_lock synchronize_srcu N/A 836 srcu_read_lock synchronize_srcu srcu_barrier
837 srcu_read_unlock synchronize_srcu_expedited 837 srcu_read_unlock call_srcu
838 srcu_read_lock_raw 838 srcu_read_lock_raw synchronize_srcu_expedited
839 srcu_read_unlock_raw 839 srcu_read_unlock_raw
840 srcu_dereference 840 srcu_dereference
841 841
diff --git a/Documentation/arm/Samsung-S3C24XX/H1940.txt b/Documentation/arm/Samsung-S3C24XX/H1940.txt
index f4a7b22c8664..b738859b1fc0 100644
--- a/Documentation/arm/Samsung-S3C24XX/H1940.txt
+++ b/Documentation/arm/Samsung-S3C24XX/H1940.txt
@@ -37,4 +37,4 @@ Maintainers
37 Thanks to the many others who have also provided support. 37 Thanks to the many others who have also provided support.
38 38
39 39
40(c) 2005 Ben Dooks \ No newline at end of file 40(c) 2005 Ben Dooks
diff --git a/Documentation/arm/Samsung-S3C24XX/SMDK2440.txt b/Documentation/arm/Samsung-S3C24XX/SMDK2440.txt
index 32e1eae6a25f..429390bd4684 100644
--- a/Documentation/arm/Samsung-S3C24XX/SMDK2440.txt
+++ b/Documentation/arm/Samsung-S3C24XX/SMDK2440.txt
@@ -53,4 +53,4 @@ Maintainers
53 and to Simtec Electronics for allowing me time to work on this. 53 and to Simtec Electronics for allowing me time to work on this.
54 54
55 55
56(c) 2004 Ben Dooks \ No newline at end of file 56(c) 2004 Ben Dooks
diff --git a/Documentation/cgroups/cgroups.txt b/Documentation/cgroups/cgroups.txt
index 8e74980ab385..4a0b64c605fc 100644
--- a/Documentation/cgroups/cgroups.txt
+++ b/Documentation/cgroups/cgroups.txt
@@ -370,15 +370,12 @@ To mount a cgroup hierarchy with just the cpuset and memory
370subsystems, type: 370subsystems, type:
371# mount -t cgroup -o cpuset,memory hier1 /sys/fs/cgroup/rg1 371# mount -t cgroup -o cpuset,memory hier1 /sys/fs/cgroup/rg1
372 372
373To change the set of subsystems bound to a mounted hierarchy, just 373While remounting cgroups is currently supported, it is not recommend
374remount with different options: 374to use it. Remounting allows changing bound subsystems and
375# mount -o remount,cpuset,blkio hier1 /sys/fs/cgroup/rg1 375release_agent. Rebinding is hardly useful as it only works when the
376 376hierarchy is empty and release_agent itself should be replaced with
377Now memory is removed from the hierarchy and blkio is added. 377conventional fsnotify. The support for remounting will be removed in
378 378the future.
379Note this will add blkio to the hierarchy but won't remove memory or
380cpuset, because the new options are appended to the old ones:
381# mount -o remount,blkio /sys/fs/cgroup/rg1
382 379
383To Specify a hierarchy's release_agent: 380To Specify a hierarchy's release_agent:
384# mount -t cgroup -o cpuset,release_agent="/sbin/cpuset_release_agent" \ 381# mount -t cgroup -o cpuset,release_agent="/sbin/cpuset_release_agent" \
@@ -637,16 +634,6 @@ void exit(struct task_struct *task)
637 634
638Called during task exit. 635Called during task exit.
639 636
640int populate(struct cgroup *cgrp)
641(cgroup_mutex held by caller)
642
643Called after creation of a cgroup to allow a subsystem to populate
644the cgroup directory with file entries. The subsystem should make
645calls to cgroup_add_file() with objects of type cftype (see
646include/linux/cgroup.h for details). Note that although this
647method can return an error code, the error code is currently not
648always handled well.
649
650void post_clone(struct cgroup *cgrp) 637void post_clone(struct cgroup *cgrp)
651(cgroup_mutex held by caller) 638(cgroup_mutex held by caller)
652 639
@@ -656,7 +643,7 @@ example in cpusets, no task may attach before 'cpus' and 'mems' are set
656up. 643up.
657 644
658void bind(struct cgroup *root) 645void bind(struct cgroup *root)
659(cgroup_mutex and ss->hierarchy_mutex held by caller) 646(cgroup_mutex held by caller)
660 647
661Called when a cgroup subsystem is rebound to a different hierarchy 648Called when a cgroup subsystem is rebound to a different hierarchy
662and root cgroup. Currently this will only involve movement between 649and root cgroup. Currently this will only involve movement between
diff --git a/Documentation/connector/cn_test.c b/Documentation/connector/cn_test.c
index 7764594778d4..adcca0368d60 100644
--- a/Documentation/connector/cn_test.c
+++ b/Documentation/connector/cn_test.c
@@ -69,9 +69,13 @@ static int cn_test_want_notify(void)
69 return -ENOMEM; 69 return -ENOMEM;
70 } 70 }
71 71
72 nlh = NLMSG_PUT(skb, 0, 0x123, NLMSG_DONE, size - sizeof(*nlh)); 72 nlh = nlmsg_put(skb, 0, 0x123, NLMSG_DONE, size - sizeof(*nlh), 0);
73 if (!nlh) {
74 kfree_skb(skb);
75 return -EMSGSIZE;
76 }
73 77
74 msg = (struct cn_msg *)NLMSG_DATA(nlh); 78 msg = nlmsg_data(nlh);
75 79
76 memset(msg, 0, size0); 80 memset(msg, 0, size0);
77 81
@@ -117,11 +121,6 @@ static int cn_test_want_notify(void)
117 pr_info("request was sent: group=0x%x\n", ctl->group); 121 pr_info("request was sent: group=0x%x\n", ctl->group);
118 122
119 return 0; 123 return 0;
120
121nlmsg_failure:
122 pr_err("failed to send %u.%u\n", msg->seq, msg->ack);
123 kfree_skb(skb);
124 return -EINVAL;
125} 124}
126#endif 125#endif
127 126
diff --git a/Documentation/device-mapper/verity.txt b/Documentation/device-mapper/verity.txt
index 32e48797a14f..9884681535ee 100644
--- a/Documentation/device-mapper/verity.txt
+++ b/Documentation/device-mapper/verity.txt
@@ -7,39 +7,39 @@ This target is read-only.
7 7
8Construction Parameters 8Construction Parameters
9======================= 9=======================
10 <version> <dev> <hash_dev> <hash_start> 10 <version> <dev> <hash_dev>
11 <data_block_size> <hash_block_size> 11 <data_block_size> <hash_block_size>
12 <num_data_blocks> <hash_start_block> 12 <num_data_blocks> <hash_start_block>
13 <algorithm> <digest> <salt> 13 <algorithm> <digest> <salt>
14 14
15<version> 15<version>
16 This is the version number of the on-disk format. 16 This is the type of the on-disk hash format.
17 17
18 0 is the original format used in the Chromium OS. 18 0 is the original format used in the Chromium OS.
19 The salt is appended when hashing, digests are stored continuously and 19 The salt is appended when hashing, digests are stored continuously and
20 the rest of the block is padded with zeros. 20 the rest of the block is padded with zeros.
21 21
22 1 is the current format that should be used for new devices. 22 1 is the current format that should be used for new devices.
23 The salt is prepended when hashing and each digest is 23 The salt is prepended when hashing and each digest is
24 padded with zeros to the power of two. 24 padded with zeros to the power of two.
25 25
26<dev> 26<dev>
27 This is the device containing the data the integrity of which needs to be 27 This is the device containing data, the integrity of which needs to be
28 checked. It may be specified as a path, like /dev/sdaX, or a device number, 28 checked. It may be specified as a path, like /dev/sdaX, or a device number,
29 <major>:<minor>. 29 <major>:<minor>.
30 30
31<hash_dev> 31<hash_dev>
32 This is the device that that supplies the hash tree data. It may be 32 This is the device that supplies the hash tree data. It may be
33 specified similarly to the device path and may be the same device. If the 33 specified similarly to the device path and may be the same device. If the
34 same device is used, the hash_start should be outside of the dm-verity 34 same device is used, the hash_start should be outside the configured
35 configured device size. 35 dm-verity device.
36 36
37<data_block_size> 37<data_block_size>
38 The block size on a data device. Each block corresponds to one digest on 38 The block size on a data device in bytes.
39 the hash device. 39 Each block corresponds to one digest on the hash device.
40 40
41<hash_block_size> 41<hash_block_size>
42 The size of a hash block. 42 The size of a hash block in bytes.
43 43
44<num_data_blocks> 44<num_data_blocks>
45 The number of data blocks on the data device. Additional blocks are 45 The number of data blocks on the data device. Additional blocks are
@@ -65,7 +65,7 @@ Construction Parameters
65Theory of operation 65Theory of operation
66=================== 66===================
67 67
68dm-verity is meant to be setup as part of a verified boot path. This 68dm-verity is meant to be set up as part of a verified boot path. This
69may be anything ranging from a boot using tboot or trustedgrub to just 69may be anything ranging from a boot using tboot or trustedgrub to just
70booting from a known-good device (like a USB drive or CD). 70booting from a known-good device (like a USB drive or CD).
71 71
@@ -73,20 +73,20 @@ When a dm-verity device is configured, it is expected that the caller
73has been authenticated in some way (cryptographic signatures, etc). 73has been authenticated in some way (cryptographic signatures, etc).
74After instantiation, all hashes will be verified on-demand during 74After instantiation, all hashes will be verified on-demand during
75disk access. If they cannot be verified up to the root node of the 75disk access. If they cannot be verified up to the root node of the
76tree, the root hash, then the I/O will fail. This should identify 76tree, the root hash, then the I/O will fail. This should detect
77tampering with any data on the device and the hash data. 77tampering with any data on the device and the hash data.
78 78
79Cryptographic hashes are used to assert the integrity of the device on a 79Cryptographic hashes are used to assert the integrity of the device on a
80per-block basis. This allows for a lightweight hash computation on first read 80per-block basis. This allows for a lightweight hash computation on first read
81into the page cache. Block hashes are stored linearly-aligned to the nearest 81into the page cache. Block hashes are stored linearly, aligned to the nearest
82block the size of a page. 82block size.
83 83
84Hash Tree 84Hash Tree
85--------- 85---------
86 86
87Each node in the tree is a cryptographic hash. If it is a leaf node, the hash 87Each node in the tree is a cryptographic hash. If it is a leaf node, the hash
88is of some block data on disk. If it is an intermediary node, then the hash is 88of some data block on disk is calculated. If it is an intermediary node,
89of a number of child nodes. 89the hash of a number of child nodes is calculated.
90 90
91Each entry in the tree is a collection of neighboring nodes that fit in one 91Each entry in the tree is a collection of neighboring nodes that fit in one
92block. The number is determined based on block_size and the size of the 92block. The number is determined based on block_size and the size of the
@@ -110,63 +110,23 @@ alg = sha256, num_blocks = 32768, block_size = 4096
110On-disk format 110On-disk format
111============== 111==============
112 112
113Below is the recommended on-disk format. The verity kernel code does not 113The verity kernel code does not read the verity metadata on-disk header.
114read the on-disk header. It only reads the hash blocks which directly 114It only reads the hash blocks which directly follow the header.
115follow the header. It is expected that a user-space tool will verify the 115It is expected that a user-space tool will verify the integrity of the
116integrity of the verity_header and then call dmsetup with the correct 116verity header.
117parameters. Alternatively, the header can be omitted and the dmsetup
118parameters can be passed via the kernel command-line in a rooted chain
119of trust where the command-line is verified.
120 117
121The on-disk format is especially useful in cases where the hash blocks 118Alternatively, the header can be omitted and the dmsetup parameters can
122are on a separate partition. The magic number allows easy identification 119be passed via the kernel command-line in a rooted chain of trust where
123of the partition contents. Alternatively, the hash blocks can be stored 120the command-line is verified.
124in the same partition as the data to be verified. In such a configuration
125the filesystem on the partition would be sized a little smaller than
126the full-partition, leaving room for the hash blocks.
127
128struct superblock {
129 uint8_t signature[8]
130 "verity\0\0";
131
132 uint8_t version;
133 1 - current format
134
135 uint8_t data_block_bits;
136 log2(data block size)
137
138 uint8_t hash_block_bits;
139 log2(hash block size)
140
141 uint8_t pad1[1];
142 zero padding
143
144 uint16_t salt_size;
145 big-endian salt size
146
147 uint8_t pad2[2];
148 zero padding
149
150 uint32_t data_blocks_hi;
151 big-endian high 32 bits of the 64-bit number of data blocks
152
153 uint32_t data_blocks_lo;
154 big-endian low 32 bits of the 64-bit number of data blocks
155
156 uint8_t algorithm[16];
157 cryptographic algorithm
158
159 uint8_t salt[384];
160 salt (the salt size is specified above)
161
162 uint8_t pad3[88];
163 zero padding to 512-byte boundary
164}
165 121
166Directly following the header (and with sector number padded to the next hash 122Directly following the header (and with sector number padded to the next hash
167block boundary) are the hash blocks which are stored a depth at a time 123block boundary) are the hash blocks which are stored a depth at a time
168(starting from the root), sorted in order of increasing index. 124(starting from the root), sorted in order of increasing index.
169 125
126The full specification of kernel parameters and on-disk metadata format
127is available at the cryptsetup project's wiki page
128 http://code.google.com/p/cryptsetup/wiki/DMVerity
129
170Status 130Status
171====== 131======
172V (for Valid) is returned if every check performed so far was valid. 132V (for Valid) is returned if every check performed so far was valid.
@@ -174,21 +134,22 @@ If any check failed, C (for Corruption) is returned.
174 134
175Example 135Example
176======= 136=======
177 137Set up a device:
178Setup a device: 138 # dmsetup create vroot --readonly --table \
179 dmsetup create vroot --table \ 139 "0 2097152 verity 1 /dev/sda1 /dev/sda2 4096 4096 262144 1 sha256 "\
180 "0 2097152 "\
181 "verity 1 /dev/sda1 /dev/sda2 4096 4096 2097152 1 "\
182 "4392712ba01368efdf14b05c76f9e4df0d53664630b5d48632ed17a137f39076 "\ 140 "4392712ba01368efdf14b05c76f9e4df0d53664630b5d48632ed17a137f39076 "\
183 "1234000000000000000000000000000000000000000000000000000000000000" 141 "1234000000000000000000000000000000000000000000000000000000000000"
184 142
185A command line tool veritysetup is available to compute or verify 143A command line tool veritysetup is available to compute or verify
186the hash tree or activate the kernel driver. This is available from 144the hash tree or activate the kernel device. This is available from
187the LVM2 upstream repository and may be supplied as a package called 145the cryptsetup upstream repository http://code.google.com/p/cryptsetup/
188device-mapper-verity-tools: 146(as a libcryptsetup extension).
189 git://sources.redhat.com/git/lvm2 147
190 http://sourceware.org/git/?p=lvm2.git 148Create hash on the device:
191 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/verity?cvsroot=lvm2 149 # veritysetup format /dev/sda1 /dev/sda2
192 150 ...
193veritysetup -a vroot /dev/sda1 /dev/sda2 \ 151 Root hash: 4392712ba01368efdf14b05c76f9e4df0d53664630b5d48632ed17a137f39076
194 4392712ba01368efdf14b05c76f9e4df0d53664630b5d48632ed17a137f39076 152
153Activate the device:
154 # veritysetup create vroot /dev/sda1 /dev/sda2 \
155 4392712ba01368efdf14b05c76f9e4df0d53664630b5d48632ed17a137f39076
diff --git a/Documentation/devices.txt b/Documentation/devices.txt
index 47a154f30290..b6251cca9263 100644
--- a/Documentation/devices.txt
+++ b/Documentation/devices.txt
@@ -2416,6 +2416,8 @@ Your cooperation is appreciated.
2416 1 = /dev/raw/raw1 First raw I/O device 2416 1 = /dev/raw/raw1 First raw I/O device
2417 2 = /dev/raw/raw2 Second raw I/O device 2417 2 = /dev/raw/raw2 Second raw I/O device
2418 ... 2418 ...
2419 max minor number of raw device is set by kernel config
2420 MAX_RAW_DEVS or raw module parameter 'max_raw_devs'
2419 2421
2420163 char 2422163 char
2421 2423
diff --git a/Documentation/devicetree/bindings/arm/armada-370-xp-mpic.txt b/Documentation/devicetree/bindings/arm/armada-370-xp-mpic.txt
new file mode 100644
index 000000000000..70c0dc5f00ed
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/armada-370-xp-mpic.txt
@@ -0,0 +1,23 @@
1Marvell Armada 370 and Armada XP Interrupt Controller
2-----------------------------------------------------
3
4Required properties:
5- compatible: Should be "marvell,mpic"
6- interrupt-controller: Identifies the node as an interrupt controller.
7- #interrupt-cells: The number of cells to define the interrupts. Should be 1.
8 The cell is the IRQ number
9- reg: Should contain PMIC registers location and length. First pair
10 for the main interrupt registers, second pair for the per-CPU
11 interrupt registers
12
13Example:
14
15 mpic: interrupt-controller@d0020000 {
16 compatible = "marvell,mpic";
17 #interrupt-cells = <1>;
18 #address-cells = <1>;
19 #size-cells = <1>;
20 interrupt-controller;
21 reg = <0xd0020000 0x1000>,
22 <0xd0021000 0x1000>;
23 };
diff --git a/Documentation/devicetree/bindings/arm/armada-370-xp-timer.txt b/Documentation/devicetree/bindings/arm/armada-370-xp-timer.txt
new file mode 100644
index 000000000000..8b6ea2267c94
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/armada-370-xp-timer.txt
@@ -0,0 +1,11 @@
1Marvell Armada 370 and Armada XP Global Timers
2----------------------------------------------
3
4Required properties:
5- compatible: Should be "marvell,armada-370-xp-timer"
6- interrupts: Should contain the list of Global Timer interrupts
7- reg: Should contain the base address of the Global Timer registers
8
9Optional properties:
10- marvell,timer-25Mhz: Tells whether the Global timer supports the 25
11 Mhz fixed mode (available on Armada XP and not on Armada 370)
diff --git a/Documentation/devicetree/bindings/arm/armada-370-xp.txt b/Documentation/devicetree/bindings/arm/armada-370-xp.txt
new file mode 100644
index 000000000000..c6ed90ea6e17
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/armada-370-xp.txt
@@ -0,0 +1,24 @@
1Marvell Armada 370 and Armada XP Platforms Device Tree Bindings
2---------------------------------------------------------------
3
4Boards with a SoC of the Marvell Armada 370 and Armada XP families
5shall have the following property:
6
7Required root node property:
8
9compatible: must contain "marvell,armada-370-xp"
10
11In addition, boards using the Marvell Armada 370 SoC shall have the
12following property:
13
14Required root node property:
15
16compatible: must contain "marvell,armada370"
17
18In addition, boards using the Marvell Armada XP SoC shall have the
19following property:
20
21Required root node property:
22
23compatible: must contain "marvell,armadaxp"
24
diff --git a/Documentation/devicetree/bindings/arm/atmel-aic.txt b/Documentation/devicetree/bindings/arm/atmel-aic.txt
index aabca4f83402..19078bf5cca8 100644
--- a/Documentation/devicetree/bindings/arm/atmel-aic.txt
+++ b/Documentation/devicetree/bindings/arm/atmel-aic.txt
@@ -4,7 +4,7 @@ Required properties:
4- compatible: Should be "atmel,<chip>-aic" 4- compatible: Should be "atmel,<chip>-aic"
5- interrupt-controller: Identifies the node as an interrupt controller. 5- interrupt-controller: Identifies the node as an interrupt controller.
6- interrupt-parent: For single AIC system, it is an empty property. 6- interrupt-parent: For single AIC system, it is an empty property.
7- #interrupt-cells: The number of cells to define the interrupts. It sould be 2. 7- #interrupt-cells: The number of cells to define the interrupts. It sould be 3.
8 The first cell is the IRQ number (aka "Peripheral IDentifier" on datasheet). 8 The first cell is the IRQ number (aka "Peripheral IDentifier" on datasheet).
9 The second cell is used to specify flags: 9 The second cell is used to specify flags:
10 bits[3:0] trigger type and level flags: 10 bits[3:0] trigger type and level flags:
@@ -14,7 +14,10 @@ Required properties:
14 8 = active low level-sensitive. 14 8 = active low level-sensitive.
15 Valid combinations are 1, 2, 3, 4, 8. 15 Valid combinations are 1, 2, 3, 4, 8.
16 Default flag for internal sources should be set to 4 (active high). 16 Default flag for internal sources should be set to 4 (active high).
17 The third cell is used to specify the irq priority from 0 (lowest) to 7
18 (highest).
17- reg: Should contain AIC registers location and length 19- reg: Should contain AIC registers location and length
20- atmel,external-irqs: u32 array of external irqs.
18 21
19Examples: 22Examples:
20 /* 23 /*
@@ -24,7 +27,7 @@ Examples:
24 compatible = "atmel,at91rm9200-aic"; 27 compatible = "atmel,at91rm9200-aic";
25 interrupt-controller; 28 interrupt-controller;
26 interrupt-parent; 29 interrupt-parent;
27 #interrupt-cells = <2>; 30 #interrupt-cells = <3>;
28 reg = <0xfffff000 0x200>; 31 reg = <0xfffff000 0x200>;
29 }; 32 };
30 33
@@ -34,5 +37,5 @@ Examples:
34 dma: dma-controller@ffffec00 { 37 dma: dma-controller@ffffec00 {
35 compatible = "atmel,at91sam9g45-dma"; 38 compatible = "atmel,at91sam9g45-dma";
36 reg = <0xffffec00 0x200>; 39 reg = <0xffffec00 0x200>;
37 interrupts = <21 4>; 40 interrupts = <21 4 5>;
38 }; 41 };
diff --git a/Documentation/devicetree/bindings/arm/davinci/cp-intc.txt b/Documentation/devicetree/bindings/arm/davinci/cp-intc.txt
new file mode 100644
index 000000000000..597e8a089fe4
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/davinci/cp-intc.txt
@@ -0,0 +1,27 @@
1* TI Common Platform Interrupt Controller
2
3Common Platform Interrupt Controller (cp_intc) is used on
4OMAP-L1x SoCs and can support several configurable number
5of interrupts.
6
7Main node required properties:
8
9- compatible : should be:
10 "ti,cp-intc"
11- interrupt-controller : Identifies the node as an interrupt controller
12- #interrupt-cells : Specifies the number of cells needed to encode an
13 interrupt source. The type shall be a <u32> and the value shall be 1.
14
15 The cell contains the interrupt number in the range [0-128].
16- ti,intc-size: Number of interrupts handled by the interrupt controller.
17- reg: physical base address and size of the intc registers map.
18
19Example:
20
21 intc: interrupt-controller@1 {
22 compatible = "ti,cp-intc";
23 interrupt-controller;
24 #interrupt-cells = <1>;
25 ti,intc-size = <101>;
26 reg = <0xfffee000 0x2000>;
27 };
diff --git a/Documentation/devicetree/bindings/arm/mvebu-system-controller.txt b/Documentation/devicetree/bindings/arm/mvebu-system-controller.txt
new file mode 100644
index 000000000000..081c6a786c8a
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/mvebu-system-controller.txt
@@ -0,0 +1,17 @@
1MVEBU System Controller
2-----------------------
3MVEBU (Marvell SOCs: Armada 370/XP, Dove, mv78xx0, Kirkwood, Orion5x)
4
5Required properties:
6
7- compatible: one of:
8 - "marvell,orion-system-controller"
9 - "marvell,armada-370-xp-system-controller"
10- reg: Should contain system controller registers location and length.
11
12Example:
13
14 system-controller@d0018200 {
15 compatible = "marvell,armada-370-xp-system-controller";
16 reg = <0xd0018200 0x500>;
17 };
diff --git a/Documentation/devicetree/bindings/arm/olimex.txt b/Documentation/devicetree/bindings/arm/olimex.txt
new file mode 100644
index 000000000000..007fb5c685a1
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/olimex.txt
@@ -0,0 +1,6 @@
1Olimex i.MX Platforms Device Tree Bindings
2------------------------------------------
3
4i.MX23 Olinuxino Low Cost Board
5Required root node properties:
6 - compatible = "olimex,imx23-olinuxino", "fsl,imx23";
diff --git a/Documentation/devicetree/bindings/arm/omap/omap.txt b/Documentation/devicetree/bindings/arm/omap/omap.txt
index e78e8bccac30..ccdd0e53451f 100644
--- a/Documentation/devicetree/bindings/arm/omap/omap.txt
+++ b/Documentation/devicetree/bindings/arm/omap/omap.txt
@@ -47,3 +47,9 @@ Boards:
47 47
48- AM335X EVM : Software Developement Board for AM335x 48- AM335X EVM : Software Developement Board for AM335x
49 compatible = "ti,am335x-evm", "ti,am33xx", "ti,omap3" 49 compatible = "ti,am335x-evm", "ti,am33xx", "ti,omap3"
50
51- AM335X Bone : Low cost community board
52 compatible = "ti,am335x-bone", "ti,am33xx", "ti,omap3"
53
54- OMAP5 EVM : Evaluation Module
55 compatible = "ti,omap5-evm", "ti,omap5"
diff --git a/Documentation/devicetree/bindings/arm/primecell.txt b/Documentation/devicetree/bindings/arm/primecell.txt
index 951ca46789d4..64fc82bc8928 100644
--- a/Documentation/devicetree/bindings/arm/primecell.txt
+++ b/Documentation/devicetree/bindings/arm/primecell.txt
@@ -13,11 +13,17 @@ Required properties:
13Optional properties: 13Optional properties:
14 14
15- arm,primecell-periphid : Value to override the h/w value with 15- arm,primecell-periphid : Value to override the h/w value with
16- clocks : From common clock binding. First clock is phandle to clock for apb
17 pclk. Additional clocks are optional and specific to those peripherals.
18- clock-names : From common clock binding. Shall be "apb_pclk" for first clock.
16 19
17Example: 20Example:
18 21
19serial@fff36000 { 22serial@fff36000 {
20 compatible = "arm,pl011", "arm,primecell"; 23 compatible = "arm,pl011", "arm,primecell";
21 arm,primecell-periphid = <0x00341011>; 24 arm,primecell-periphid = <0x00341011>;
25 clocks = <&pclk>;
26 clock-names = "apb_pclk";
27
22}; 28};
23 29
diff --git a/Documentation/devicetree/bindings/arm/tegra/emc.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-emc.txt
index 09335f8eee00..4c33b29dc660 100644
--- a/Documentation/devicetree/bindings/arm/tegra/emc.txt
+++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-emc.txt
@@ -15,7 +15,7 @@ Child device nodes describe the memory settings for different configurations and
15 15
16Example: 16Example:
17 17
18 emc@7000f400 { 18 memory-controller@7000f400 {
19 #address-cells = < 1 >; 19 #address-cells = < 1 >;
20 #size-cells = < 0 >; 20 #size-cells = < 0 >;
21 compatible = "nvidia,tegra20-emc"; 21 compatible = "nvidia,tegra20-emc";
diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-mc.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-mc.txt
index c25a0a55151d..866d93421eba 100644
--- a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-mc.txt
+++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-mc.txt
@@ -8,7 +8,7 @@ Required properties:
8- interrupts : Should contain MC General interrupt. 8- interrupts : Should contain MC General interrupt.
9 9
10Example: 10Example:
11 mc { 11 memory-controller@0x7000f000 {
12 compatible = "nvidia,tegra20-mc"; 12 compatible = "nvidia,tegra20-mc";
13 reg = <0x7000f000 0x024 13 reg = <0x7000f000 0x024
14 0x7000f03c 0x3c4>; 14 0x7000f03c 0x3c4>;
diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-mc.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-mc.txt
index e47e73f612f4..bdf1a612422b 100644
--- a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-mc.txt
+++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-mc.txt
@@ -8,7 +8,7 @@ Required properties:
8- interrupts : Should contain MC General interrupt. 8- interrupts : Should contain MC General interrupt.
9 9
10Example: 10Example:
11 mc { 11 memory-controller {
12 compatible = "nvidia,tegra30-mc"; 12 compatible = "nvidia,tegra30-mc";
13 reg = <0x7000f000 0x010 13 reg = <0x7000f000 0x010
14 0x7000f03c 0x1b4 14 0x7000f03c 0x1b4
diff --git a/Documentation/devicetree/bindings/clock/calxeda.txt b/Documentation/devicetree/bindings/clock/calxeda.txt
new file mode 100644
index 000000000000..0a6ac1bdcda1
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/calxeda.txt
@@ -0,0 +1,17 @@
1Device Tree Clock bindings for Calxeda highbank platform
2
3This binding uses the common clock binding[1].
4
5[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
6
7Required properties:
8- compatible : shall be one of the following:
9 "calxeda,hb-pll-clock" - for a PLL clock
10 "calxeda,hb-a9periph-clock" - The A9 peripheral clock divided from the
11 A9 clock.
12 "calxeda,hb-a9bus-clock" - The A9 bus clock divided from the A9 clock.
13 "calxeda,hb-emmc-clock" - Divided clock for MMC/SD controller.
14- reg : shall be the control register offset from SYSREGs base for the clock.
15- clocks : shall be the input parent clock phandle for the clock. This is
16 either an oscillator or a pll output.
17- #clock-cells : from common clock binding; shall be set to 0.
diff --git a/Documentation/devicetree/bindings/clock/clock-bindings.txt b/Documentation/devicetree/bindings/clock/clock-bindings.txt
new file mode 100644
index 000000000000..eb65d417f8c4
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/clock-bindings.txt
@@ -0,0 +1,117 @@
1This binding is a work-in-progress, and are based on some experimental
2work by benh[1].
3
4Sources of clock signal can be represented by any node in the device
5tree. Those nodes are designated as clock providers. Clock consumer
6nodes use a phandle and clock specifier pair to connect clock provider
7outputs to clock inputs. Similar to the gpio specifiers, a clock
8specifier is an array of one more more cells identifying the clock
9output on a device. The length of a clock specifier is defined by the
10value of a #clock-cells property in the clock provider node.
11
12[1] http://patchwork.ozlabs.org/patch/31551/
13
14==Clock providers==
15
16Required properties:
17#clock-cells: Number of cells in a clock specifier; Typically 0 for nodes
18 with a single clock output and 1 for nodes with multiple
19 clock outputs.
20
21Optional properties:
22clock-output-names: Recommended to be a list of strings of clock output signal
23 names indexed by the first cell in the clock specifier.
24 However, the meaning of clock-output-names is domain
25 specific to the clock provider, and is only provided to
26 encourage using the same meaning for the majority of clock
27 providers. This format may not work for clock providers
28 using a complex clock specifier format. In those cases it
29 is recommended to omit this property and create a binding
30 specific names property.
31
32 Clock consumer nodes must never directly reference
33 the provider's clock-output-names property.
34
35For example:
36
37 oscillator {
38 #clock-cells = <1>;
39 clock-output-names = "ckil", "ckih";
40 };
41
42- this node defines a device with two clock outputs, the first named
43 "ckil" and the second named "ckih". Consumer nodes always reference
44 clocks by index. The names should reflect the clock output signal
45 names for the device.
46
47==Clock consumers==
48
49Required properties:
50clocks: List of phandle and clock specifier pairs, one pair
51 for each clock input to the device. Note: if the
52 clock provider specifies '0' for #clock-cells, then
53 only the phandle portion of the pair will appear.
54
55Optional properties:
56clock-names: List of clock input name strings sorted in the same
57 order as the clocks property. Consumers drivers
58 will use clock-names to match clock input names
59 with clocks specifiers.
60clock-ranges: Empty property indicating that child nodes can inherit named
61 clocks from this node. Useful for bus nodes to provide a
62 clock to their children.
63
64For example:
65
66 device {
67 clocks = <&osc 1>, <&ref 0>;
68 clock-names = "baud", "register";
69 };
70
71
72This represents a device with two clock inputs, named "baud" and "register".
73The baud clock is connected to output 1 of the &osc device, and the register
74clock is connected to output 0 of the &ref.
75
76==Example==
77
78 /* external oscillator */
79 osc: oscillator {
80 compatible = "fixed-clock";
81 #clock-cells = <1>;
82 clock-frequency = <32678>;
83 clock-output-names = "osc";
84 };
85
86 /* phase-locked-loop device, generates a higher frequency clock
87 * from the external oscillator reference */
88 pll: pll@4c000 {
89 compatible = "vendor,some-pll-interface"
90 #clock-cells = <1>;
91 clocks = <&osc 0>;
92 clock-names = "ref";
93 reg = <0x4c000 0x1000>;
94 clock-output-names = "pll", "pll-switched";
95 };
96
97 /* UART, using the low frequency oscillator for the baud clock,
98 * and the high frequency switched PLL output for register
99 * clocking */
100 uart@a000 {
101 compatible = "fsl,imx-uart";
102 reg = <0xa000 0x1000>;
103 interrupts = <33>;
104 clocks = <&osc 0>, <&pll 1>;
105 clock-names = "baud", "register";
106 };
107
108This DT fragment defines three devices: an external oscillator to provide a
109low-frequency reference clock, a PLL device to generate a higher frequency
110clock signal, and a UART.
111
112* The oscillator is fixed-frequency, and provides one clock output, named "osc".
113* The PLL is both a clock provider and a clock consumer. It uses the clock
114 signal generated by the external oscillator, and provides two output signals
115 ("pll" and "pll-switched").
116* The UART has its baud clock connected the external oscillator and its
117 register clock connected to the PLL clock (the "pll-switched" signal)
diff --git a/Documentation/devicetree/bindings/clock/fixed-clock.txt b/Documentation/devicetree/bindings/clock/fixed-clock.txt
new file mode 100644
index 000000000000..0b1fe7824093
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/fixed-clock.txt
@@ -0,0 +1,21 @@
1Binding for simple fixed-rate clock sources.
2
3This binding uses the common clock binding[1].
4
5[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
6
7Required properties:
8- compatible : shall be "fixed-clock".
9- #clock-cells : from common clock binding; shall be set to 0.
10- clock-frequency : frequency of clock in Hz. Should be a single cell.
11
12Optional properties:
13- gpios : From common gpio binding; gpio connection to clock enable pin.
14- clock-output-names : From common clock binding.
15
16Example:
17 clock {
18 compatible = "fixed-clock";
19 #clock-cells = <0>;
20 clock-frequency = <1000000000>;
21 };
diff --git a/Documentation/devicetree/bindings/fb/mxsfb.txt b/Documentation/devicetree/bindings/fb/mxsfb.txt
new file mode 100644
index 000000000000..b41e5e52a676
--- /dev/null
+++ b/Documentation/devicetree/bindings/fb/mxsfb.txt
@@ -0,0 +1,19 @@
1* Freescale MXS LCD Interface (LCDIF)
2
3Required properties:
4- compatible: Should be "fsl,<chip>-lcdif". Supported chips include
5 imx23 and imx28.
6- reg: Address and length of the register set for lcdif
7- interrupts: Should contain lcdif interrupts
8
9Optional properties:
10- panel-enable-gpios : Should specify the gpio for panel enable
11
12Examples:
13
14lcdif@80030000 {
15 compatible = "fsl,imx28-lcdif";
16 reg = <0x80030000 2000>;
17 interrupts = <38 86>;
18 panel-enable-gpios = <&gpio3 30 0>;
19};
diff --git a/Documentation/devicetree/bindings/gpio/fsl-imx-gpio.txt b/Documentation/devicetree/bindings/gpio/fsl-imx-gpio.txt
index 33a0345eef32..dbd22e0df21e 100644
--- a/Documentation/devicetree/bindings/gpio/fsl-imx-gpio.txt
+++ b/Documentation/devicetree/bindings/gpio/fsl-imx-gpio.txt
@@ -8,8 +8,16 @@ Required properties:
8 by low 16 pins and the second one is for high 16 pins. 8 by low 16 pins and the second one is for high 16 pins.
9- gpio-controller : Marks the device node as a gpio controller. 9- gpio-controller : Marks the device node as a gpio controller.
10- #gpio-cells : Should be two. The first cell is the pin number and 10- #gpio-cells : Should be two. The first cell is the pin number and
11 the second cell is used to specify optional parameters (currently 11 the second cell is used to specify the gpio polarity:
12 unused). 12 0 = active high
13 1 = active low
14- interrupt-controller: Marks the device node as an interrupt controller.
15- #interrupt-cells : Should be 2. The first cell is the GPIO number.
16 The second cell bits[3:0] is used to specify trigger type and level flags:
17 1 = low-to-high edge triggered.
18 2 = high-to-low edge triggered.
19 4 = active high level-sensitive.
20 8 = active low level-sensitive.
13 21
14Example: 22Example:
15 23
@@ -19,4 +27,6 @@ gpio0: gpio@73f84000 {
19 interrupts = <50 51>; 27 interrupts = <50 51>;
20 gpio-controller; 28 gpio-controller;
21 #gpio-cells = <2>; 29 #gpio-cells = <2>;
30 interrupt-controller;
31 #interrupt-cells = <2>;
22}; 32};
diff --git a/Documentation/devicetree/bindings/gpio/gpio-mxs.txt b/Documentation/devicetree/bindings/gpio/gpio-mxs.txt
index 0c35673f7a3e..1e677a47b836 100644
--- a/Documentation/devicetree/bindings/gpio/gpio-mxs.txt
+++ b/Documentation/devicetree/bindings/gpio/gpio-mxs.txt
@@ -13,8 +13,9 @@ Required properties for GPIO node:
13- interrupts : Should be the port interrupt shared by all 32 pins. 13- interrupts : Should be the port interrupt shared by all 32 pins.
14- gpio-controller : Marks the device node as a gpio controller. 14- gpio-controller : Marks the device node as a gpio controller.
15- #gpio-cells : Should be two. The first cell is the pin number and 15- #gpio-cells : Should be two. The first cell is the pin number and
16 the second cell is used to specify optional parameters (currently 16 the second cell is used to specify the gpio polarity:
17 unused). 17 0 = active high
18 1 = active low
18- interrupt-controller: Marks the device node as an interrupt controller. 19- interrupt-controller: Marks the device node as an interrupt controller.
19- #interrupt-cells : Should be 2. The first cell is the GPIO number. 20- #interrupt-cells : Should be 2. The first cell is the GPIO number.
20 The second cell bits[3:0] is used to specify trigger type and level flags: 21 The second cell bits[3:0] is used to specify trigger type and level flags:
diff --git a/Documentation/devicetree/bindings/gpio/gpio-nmk.txt b/Documentation/devicetree/bindings/gpio/gpio-nmk.txt
index ee87467ad8d6..8315ac7780ef 100644
--- a/Documentation/devicetree/bindings/gpio/gpio-nmk.txt
+++ b/Documentation/devicetree/bindings/gpio/gpio-nmk.txt
@@ -26,6 +26,6 @@ Example:
26 #gpio-cells = <2>; 26 #gpio-cells = <2>;
27 gpio-controller; 27 gpio-controller;
28 interrupt-controller; 28 interrupt-controller;
29 supports-sleepmode; 29 st,supports-sleepmode;
30 gpio-bank = <1>; 30 gpio-bank = <1>;
31 }; 31 };
diff --git a/Documentation/devicetree/bindings/gpio/led.txt b/Documentation/devicetree/bindings/gpio/led.txt
index fd2bd56e7195..9bb308abd221 100644
--- a/Documentation/devicetree/bindings/gpio/led.txt
+++ b/Documentation/devicetree/bindings/gpio/led.txt
@@ -55,4 +55,4 @@ run-control {
55 gpios = <&mpc8572 7 0>; 55 gpios = <&mpc8572 7 0>;
56 default-state = "on"; 56 default-state = "on";
57 }; 57 };
58} 58};
diff --git a/Documentation/devicetree/bindings/gpio/gpio_nvidia.txt b/Documentation/devicetree/bindings/gpio/nvidia,tegra20-gpio.txt
index 023c9526e5f8..023c9526e5f8 100644
--- a/Documentation/devicetree/bindings/gpio/gpio_nvidia.txt
+++ b/Documentation/devicetree/bindings/gpio/nvidia,tegra20-gpio.txt
diff --git a/Documentation/devicetree/bindings/input/fsl-mma8450.txt b/Documentation/devicetree/bindings/input/fsl-mma8450.txt
index a00c94ccbdee..0b96e5737d3a 100644
--- a/Documentation/devicetree/bindings/input/fsl-mma8450.txt
+++ b/Documentation/devicetree/bindings/input/fsl-mma8450.txt
@@ -2,6 +2,7 @@
2 2
3Required properties: 3Required properties:
4- compatible : "fsl,mma8450". 4- compatible : "fsl,mma8450".
5- reg: the I2C address of MMA8450
5 6
6Example: 7Example:
7 8
diff --git a/Documentation/devicetree/bindings/input/lpc32xx-key.txt b/Documentation/devicetree/bindings/input/lpc32xx-key.txt
new file mode 100644
index 000000000000..31afd5014c48
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/lpc32xx-key.txt
@@ -0,0 +1,28 @@
1NXP LPC32xx Key Scan Interface
2
3Required Properties:
4- compatible: Should be "nxp,lpc3220-key"
5- reg: Physical base address of the controller and length of memory mapped
6 region.
7- interrupts: The interrupt number to the cpu.
8- keypad,num-rows: Number of rows and columns, e.g. 1: 1x1, 6: 6x6
9- keypad,num-columns: Must be equal to keypad,num-rows since LPC32xx only
10 supports square matrices
11- nxp,debounce-delay-ms: Debounce delay in ms
12- nxp,scan-delay-ms: Repeated scan period in ms
13- linux,keymap: the key-code to be reported when the key is pressed
14 and released, see also
15 Documentation/devicetree/bindings/input/matrix-keymap.txt
16
17Example:
18
19 key@40050000 {
20 compatible = "nxp,lpc3220-key";
21 reg = <0x40050000 0x1000>;
22 interrupts = <54 0>;
23 keypad,num-rows = <1>;
24 keypad,num-columns = <1>;
25 nxp,debounce-delay-ms = <3>;
26 nxp,scan-delay-ms = <34>;
27 linux,keymap = <0x00000002>;
28 };
diff --git a/Documentation/devicetree/bindings/input/tegra-kbc.txt b/Documentation/devicetree/bindings/input/nvidia,tegra20-kbc.txt
index 72683be6de35..72683be6de35 100644
--- a/Documentation/devicetree/bindings/input/tegra-kbc.txt
+++ b/Documentation/devicetree/bindings/input/nvidia,tegra20-kbc.txt
diff --git a/Documentation/devicetree/bindings/input/omap-keypad.txt b/Documentation/devicetree/bindings/input/omap-keypad.txt
new file mode 100644
index 000000000000..f2fa5e10493d
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/omap-keypad.txt
@@ -0,0 +1,31 @@
1* TI's Keypad Controller device tree bindings
2
3TI's Keypad controller is used to interface a SoC with a matrix-type
4keypad device. The keypad controller supports multiple row and column lines.
5A key can be placed at each intersection of a unique row and a unique column.
6The keypad controller can sense a key-press and key-release and report the
7event using a interrupt to the cpu.
8
9Required SoC Specific Properties:
10- compatible: should be one of the following
11 - "ti,omap4-keypad": For controllers compatible with omap4 keypad
12 controller.
13
14Required Board Specific Properties, in addition to those specified by
15the shared matrix-keyboard bindings:
16- keypad,num-rows: Number of row lines connected to the keypad
17 controller.
18
19- keypad,num-columns: Number of column lines connected to the
20 keypad controller.
21
22Optional Properties specific to linux:
23- linux,keypad-no-autorepeat: do no enable autorepeat feature.
24
25Example:
26 keypad@4ae1c000{
27 compatible = "ti,omap4-keypad";
28 keypad,num-rows = <2>;
29 keypad,num-columns = <8>;
30 linux,keypad-no-autorepeat;
31 };
diff --git a/Documentation/devicetree/bindings/input/twl6040-vibra.txt b/Documentation/devicetree/bindings/input/twl6040-vibra.txt
deleted file mode 100644
index 5b1918b818fb..000000000000
--- a/Documentation/devicetree/bindings/input/twl6040-vibra.txt
+++ /dev/null
@@ -1,37 +0,0 @@
1Vibra driver for the twl6040 family
2
3The vibra driver is a child of the twl6040 MFD dirver.
4Documentation/devicetree/bindings/mfd/twl6040.txt
5
6Required properties:
7- compatible : Must be "ti,twl6040-vibra";
8- interrupts: 4, Vibra overcurrent interrupt
9- vddvibl-supply: Regulator supplying the left vibra motor
10- vddvibr-supply: Regulator supplying the right vibra motor
11- vibldrv_res: Board specific left driver resistance
12- vibrdrv_res: Board specific right driver resistance
13- viblmotor_res: Board specific left motor resistance
14- vibrmotor_res: Board specific right motor resistance
15
16Optional properties:
17- vddvibl_uV: If the vddvibl default voltage need to be changed
18- vddvibr_uV: If the vddvibr default voltage need to be changed
19
20Example:
21/*
22 * 8-channel high quality low-power audio codec
23 * http://www.ti.com/lit/ds/symlink/twl6040.pdf
24 */
25twl6040: twl6040@4b {
26 ...
27 twl6040_vibra: twl6040@1 {
28 compatible = "ti,twl6040-vibra";
29 interrupts = <4>;
30 vddvibl-supply = <&vbat>;
31 vddvibr-supply = <&vbat>;
32 vibldrv_res = <8>;
33 vibrdrv_res = <3>;
34 viblmotor_res = <10>;
35 vibrmotor_res = <10>;
36 };
37};
diff --git a/Documentation/devicetree/bindings/iommu/nvidia,tegra30-smmu.txt b/Documentation/devicetree/bindings/iommu/nvidia,tegra30-smmu.txt
new file mode 100644
index 000000000000..89fb5434b730
--- /dev/null
+++ b/Documentation/devicetree/bindings/iommu/nvidia,tegra30-smmu.txt
@@ -0,0 +1,21 @@
1NVIDIA Tegra 30 IOMMU H/W, SMMU (System Memory Management Unit)
2
3Required properties:
4- compatible : "nvidia,tegra30-smmu"
5- reg : Should contain 3 register banks(address and length) for each
6 of the SMMU register blocks.
7- interrupts : Should contain MC General interrupt.
8- nvidia,#asids : # of ASIDs
9- dma-window : IOVA start address and length.
10- nvidia,ahb : phandle to the ahb bus connected to SMMU.
11
12Example:
13 smmu {
14 compatible = "nvidia,tegra30-smmu";
15 reg = <0x7000f010 0x02c
16 0x7000f1f0 0x010
17 0x7000f228 0x05c>;
18 nvidia,#asids = <4>; /* # of ASIDs */
19 dma-window = <0 0x40000000>; /* IOVA start & length */
20 nvidia,ahb = <&ahb>;
21 };
diff --git a/Documentation/devicetree/bindings/mfd/mc13xxx.txt b/Documentation/devicetree/bindings/mfd/mc13xxx.txt
index 19f6af47a792..baf07987ae68 100644
--- a/Documentation/devicetree/bindings/mfd/mc13xxx.txt
+++ b/Documentation/devicetree/bindings/mfd/mc13xxx.txt
@@ -46,8 +46,8 @@ Examples:
46 46
47ecspi@70010000 { /* ECSPI1 */ 47ecspi@70010000 { /* ECSPI1 */
48 fsl,spi-num-chipselects = <2>; 48 fsl,spi-num-chipselects = <2>;
49 cs-gpios = <&gpio3 24 0>, /* GPIO4_24 */ 49 cs-gpios = <&gpio4 24 0>, /* GPIO4_24 */
50 <&gpio3 25 0>; /* GPIO4_25 */ 50 <&gpio4 25 0>; /* GPIO4_25 */
51 status = "okay"; 51 status = "okay";
52 52
53 pmic: mc13892@0 { 53 pmic: mc13892@0 {
diff --git a/Documentation/devicetree/bindings/mfd/tps65910.txt b/Documentation/devicetree/bindings/mfd/tps65910.txt
index 645f5eaadb3f..d2802d4717bc 100644
--- a/Documentation/devicetree/bindings/mfd/tps65910.txt
+++ b/Documentation/devicetree/bindings/mfd/tps65910.txt
@@ -17,18 +17,46 @@ Required properties:
17 device need to be present. The definition for each of these nodes is defined 17 device need to be present. The definition for each of these nodes is defined
18 using the standard binding for regulators found at 18 using the standard binding for regulators found at
19 Documentation/devicetree/bindings/regulator/regulator.txt. 19 Documentation/devicetree/bindings/regulator/regulator.txt.
20 The regulator is matched with the regulator-compatible.
20 21
21 The valid names for regulators are: 22 The valid regulator-compatible values are:
22 tps65910: vrtc, vio, vdd1, vdd2, vdd3, vdig1, vdig2, vpll, vdac, vaux1, 23 tps65910: vrtc, vio, vdd1, vdd2, vdd3, vdig1, vdig2, vpll, vdac, vaux1,
23 vaux2, vaux33, vmmc 24 vaux2, vaux33, vmmc
24 tps65911: vrtc, vio, vdd1, vdd3, vddctrl, ldo1, ldo2, ldo3, ldo4, ldo5, 25 tps65911: vrtc, vio, vdd1, vdd3, vddctrl, ldo1, ldo2, ldo3, ldo4, ldo5,
25 ldo6, ldo7, ldo8 26 ldo6, ldo7, ldo8
26 27
28- xxx-supply: Input voltage supply regulator.
29 These entries are require if regulators are enabled for a device. Missing of these
30 properties can cause the regulator registration fails.
31 If some of input supply is powered through battery or always-on supply then
32 also it is require to have these parameters with proper node handle of always
33 on power supply.
34 tps65910:
35 vcc1-supply: VDD1 input.
36 vcc2-supply: VDD2 input.
37 vcc3-supply: VAUX33 and VMMC input.
38 vcc4-supply: VAUX1 and VAUX2 input.
39 vcc5-supply: VPLL and VDAC input.
40 vcc6-supply: VDIG1 and VDIG2 input.
41 vcc7-supply: VRTC input.
42 vccio-supply: VIO input.
43 tps65911:
44 vcc1-supply: VDD1 input.
45 vcc2-supply: VDD2 input.
46 vcc3-supply: LDO6, LDO7 and LDO8 input.
47 vcc4-supply: LDO5 input.
48 vcc5-supply: LDO3 and LDO4 input.
49 vcc6-supply: LDO1 and LDO2 input.
50 vcc7-supply: VRTC input.
51 vccio-supply: VIO input.
52
27Optional properties: 53Optional properties:
28- ti,vmbch-threshold: (tps65911) main battery charged threshold 54- ti,vmbch-threshold: (tps65911) main battery charged threshold
29 comparator. (see VMBCH_VSEL in TPS65910 datasheet) 55 comparator. (see VMBCH_VSEL in TPS65910 datasheet)
30- ti,vmbch2-threshold: (tps65911) main battery discharged threshold 56- ti,vmbch2-threshold: (tps65911) main battery discharged threshold
31 comparator. (see VMBCH_VSEL in TPS65910 datasheet) 57 comparator. (see VMBCH_VSEL in TPS65910 datasheet)
58- ti,en-ck32k-xtal: enable external 32-kHz crystal oscillator (see CK32K_CTRL
59 in TPS6591X datasheet)
32- ti,en-gpio-sleep: enable sleep control for gpios 60- ti,en-gpio-sleep: enable sleep control for gpios
33 There should be 9 entries here, one for each gpio. 61 There should be 9 entries here, one for each gpio.
34 62
@@ -56,74 +84,110 @@ Example:
56 84
57 ti,en-gpio-sleep = <0 0 1 0 0 0 0 0 0>; 85 ti,en-gpio-sleep = <0 0 1 0 0 0 0 0 0>;
58 86
87 vcc1-supply = <&reg_parent>;
88 vcc2-supply = <&some_reg>;
89 vcc3-supply = <...>;
90 vcc4-supply = <...>;
91 vcc5-supply = <...>;
92 vcc6-supply = <...>;
93 vcc7-supply = <...>;
94 vccio-supply = <...>;
95
59 regulators { 96 regulators {
60 vdd1_reg: vdd1 { 97 #address-cells = <1>;
98 #size-cells = <0>;
99
100 vdd1_reg: regulator@0 {
101 regulator-compatible = "vdd1";
102 reg = <0>;
61 regulator-min-microvolt = < 600000>; 103 regulator-min-microvolt = < 600000>;
62 regulator-max-microvolt = <1500000>; 104 regulator-max-microvolt = <1500000>;
63 regulator-always-on; 105 regulator-always-on;
64 regulator-boot-on; 106 regulator-boot-on;
65 ti,regulator-ext-sleep-control = <0>; 107 ti,regulator-ext-sleep-control = <0>;
66 }; 108 };
67 vdd2_reg: vdd2 { 109 vdd2_reg: regulator@1 {
110 regulator-compatible = "vdd2";
111 reg = <1>;
68 regulator-min-microvolt = < 600000>; 112 regulator-min-microvolt = < 600000>;
69 regulator-max-microvolt = <1500000>; 113 regulator-max-microvolt = <1500000>;
70 regulator-always-on; 114 regulator-always-on;
71 regulator-boot-on; 115 regulator-boot-on;
72 ti,regulator-ext-sleep-control = <4>; 116 ti,regulator-ext-sleep-control = <4>;
73 }; 117 };
74 vddctrl_reg: vddctrl { 118 vddctrl_reg: regulator@2 {
119 regulator-compatible = "vddctrl";
120 reg = <2>;
75 regulator-min-microvolt = < 600000>; 121 regulator-min-microvolt = < 600000>;
76 regulator-max-microvolt = <1400000>; 122 regulator-max-microvolt = <1400000>;
77 regulator-always-on; 123 regulator-always-on;
78 regulator-boot-on; 124 regulator-boot-on;
79 ti,regulator-ext-sleep-control = <0>; 125 ti,regulator-ext-sleep-control = <0>;
80 }; 126 };
81 vio_reg: vio { 127 vio_reg: regulator@3 {
128 regulator-compatible = "vio";
129 reg = <3>;
82 regulator-min-microvolt = <1500000>; 130 regulator-min-microvolt = <1500000>;
83 regulator-max-microvolt = <1800000>; 131 regulator-max-microvolt = <1800000>;
84 regulator-always-on; 132 regulator-always-on;
85 regulator-boot-on; 133 regulator-boot-on;
86 ti,regulator-ext-sleep-control = <1>; 134 ti,regulator-ext-sleep-control = <1>;
87 }; 135 };
88 ldo1_reg: ldo1 { 136 ldo1_reg: regulator@4 {
137 regulator-compatible = "ldo1";
138 reg = <4>;
89 regulator-min-microvolt = <1000000>; 139 regulator-min-microvolt = <1000000>;
90 regulator-max-microvolt = <3300000>; 140 regulator-max-microvolt = <3300000>;
91 ti,regulator-ext-sleep-control = <0>; 141 ti,regulator-ext-sleep-control = <0>;
92 }; 142 };
93 ldo2_reg: ldo2 { 143 ldo2_reg: regulator@5 {
144 regulator-compatible = "ldo2";
145 reg = <5>;
94 regulator-min-microvolt = <1050000>; 146 regulator-min-microvolt = <1050000>;
95 regulator-max-microvolt = <1050000>; 147 regulator-max-microvolt = <1050000>;
96 ti,regulator-ext-sleep-control = <0>; 148 ti,regulator-ext-sleep-control = <0>;
97 }; 149 };
98 ldo3_reg: ldo3 { 150 ldo3_reg: regulator@6 {
151 regulator-compatible = "ldo3";
152 reg = <6>;
99 regulator-min-microvolt = <1000000>; 153 regulator-min-microvolt = <1000000>;
100 regulator-max-microvolt = <3300000>; 154 regulator-max-microvolt = <3300000>;
101 ti,regulator-ext-sleep-control = <0>; 155 ti,regulator-ext-sleep-control = <0>;
102 }; 156 };
103 ldo4_reg: ldo4 { 157 ldo4_reg: regulator@7 {
158 regulator-compatible = "ldo4";
159 reg = <7>;
104 regulator-min-microvolt = <1000000>; 160 regulator-min-microvolt = <1000000>;
105 regulator-max-microvolt = <3300000>; 161 regulator-max-microvolt = <3300000>;
106 regulator-always-on; 162 regulator-always-on;
107 ti,regulator-ext-sleep-control = <0>; 163 ti,regulator-ext-sleep-control = <0>;
108 }; 164 };
109 ldo5_reg: ldo5 { 165 ldo5_reg: regulator@8 {
166 regulator-compatible = "ldo5";
167 reg = <8>;
110 regulator-min-microvolt = <1000000>; 168 regulator-min-microvolt = <1000000>;
111 regulator-max-microvolt = <3300000>; 169 regulator-max-microvolt = <3300000>;
112 ti,regulator-ext-sleep-control = <0>; 170 ti,regulator-ext-sleep-control = <0>;
113 }; 171 };
114 ldo6_reg: ldo6 { 172 ldo6_reg: regulator@9 {
173 regulator-compatible = "ldo6";
174 reg = <9>;
115 regulator-min-microvolt = <1200000>; 175 regulator-min-microvolt = <1200000>;
116 regulator-max-microvolt = <1200000>; 176 regulator-max-microvolt = <1200000>;
117 ti,regulator-ext-sleep-control = <0>; 177 ti,regulator-ext-sleep-control = <0>;
118 }; 178 };
119 ldo7_reg: ldo7 { 179 ldo7_reg: regulator@10 {
180 regulator-compatible = "ldo7";
181 reg = <10>;
120 regulator-min-microvolt = <1200000>; 182 regulator-min-microvolt = <1200000>;
121 regulator-max-microvolt = <1200000>; 183 regulator-max-microvolt = <1200000>;
122 regulator-always-on; 184 regulator-always-on;
123 regulator-boot-on; 185 regulator-boot-on;
124 ti,regulator-ext-sleep-control = <1>; 186 ti,regulator-ext-sleep-control = <1>;
125 }; 187 };
126 ldo8_reg: ldo8 { 188 ldo8_reg: regulator@11 {
189 regulator-compatible = "ldo8";
190 reg = <11>;
127 regulator-min-microvolt = <1000000>; 191 regulator-min-microvolt = <1000000>;
128 regulator-max-microvolt = <3300000>; 192 regulator-max-microvolt = <3300000>;
129 regulator-always-on; 193 regulator-always-on;
diff --git a/Documentation/devicetree/bindings/misc/at25.txt b/Documentation/devicetree/bindings/misc/at25.txt
new file mode 100644
index 000000000000..ab3c327929dd
--- /dev/null
+++ b/Documentation/devicetree/bindings/misc/at25.txt
@@ -0,0 +1,21 @@
1Atmel AT25 eeprom
2
3Required properties:
4- compatible : "atmel,at25".
5- reg : chip select number
6- spi-max-frequency : max spi frequency to use
7
8- at25,byte-len : total eeprom size in bytes
9- at25,addr-mode : addr-mode flags, as defined in include/linux/spi/eeprom.h
10- at25,page-size : size of the eeprom page
11
12Examples:
13at25@0 {
14 compatible = "atmel,at25";
15 reg = <0>
16 spi-max-frequency = <5000000>;
17
18 at25,byte-len = <0x8000>;
19 at25,addr-mode = <2>;
20 at25,page-size = <64>;
21};
diff --git a/Documentation/devicetree/bindings/mmc/fsl-esdhc.txt b/Documentation/devicetree/bindings/mmc/fsl-esdhc.txt
index 0d93b4b0e0e3..bd9be0b5bc20 100644
--- a/Documentation/devicetree/bindings/mmc/fsl-esdhc.txt
+++ b/Documentation/devicetree/bindings/mmc/fsl-esdhc.txt
@@ -3,21 +3,22 @@
3The Enhanced Secure Digital Host Controller provides an interface 3The Enhanced Secure Digital Host Controller provides an interface
4for MMC, SD, and SDIO types of memory cards. 4for MMC, SD, and SDIO types of memory cards.
5 5
6This file documents differences between the core properties described
7by mmc.txt and the properties used by the sdhci-esdhc driver.
8
6Required properties: 9Required properties:
7 - compatible : should be
8 "fsl,<chip>-esdhc", "fsl,esdhc"
9 - reg : should contain eSDHC registers location and length.
10 - interrupts : should contain eSDHC interrupt.
11 - interrupt-parent : interrupt source phandle. 10 - interrupt-parent : interrupt source phandle.
12 - clock-frequency : specifies eSDHC base clock frequency. 11 - clock-frequency : specifies eSDHC base clock frequency.
13 - sdhci,wp-inverted : (optional) specifies that eSDHC controller 12
14 reports inverted write-protect state; New devices should use 13Optional properties:
15 the generic "wp-inverted" property. 14 - sdhci,wp-inverted : specifies that eSDHC controller reports
16 - sdhci,1-bit-only : (optional) specifies that a controller can 15 inverted write-protect state; New devices should use the generic
17 only handle 1-bit data transfers. New devices should use the 16 "wp-inverted" property.
18 generic "bus-width = <1>" property. 17 - sdhci,1-bit-only : specifies that a controller can only handle
19 - sdhci,auto-cmd12: (optional) specifies that a controller can 18 1-bit data transfers. New devices should use the generic
20 only handle auto CMD12. 19 "bus-width = <1>" property.
20 - sdhci,auto-cmd12: specifies that a controller can only handle auto
21 CMD12.
21 22
22Example: 23Example:
23 24
diff --git a/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt b/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt
index c7e404b3ef05..70cd49b1caa8 100644
--- a/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt
+++ b/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt
@@ -3,17 +3,15 @@
3The Enhanced Secure Digital Host Controller on Freescale i.MX family 3The Enhanced Secure Digital Host Controller on Freescale i.MX family
4provides an interface for MMC, SD, and SDIO types of memory cards. 4provides an interface for MMC, SD, and SDIO types of memory cards.
5 5
6This file documents differences between the core properties described
7by mmc.txt and the properties used by the sdhci-esdhc-imx driver.
8
6Required properties: 9Required properties:
7- compatible : Should be "fsl,<chip>-esdhc" 10- compatible : Should be "fsl,<chip>-esdhc"
8- reg : Should contain eSDHC registers location and length
9- interrupts : Should contain eSDHC interrupt
10 11
11Optional properties: 12Optional properties:
12- non-removable : Indicate the card is wired to host permanently
13- fsl,cd-internal : Indicate to use controller internal card detection 13- fsl,cd-internal : Indicate to use controller internal card detection
14- fsl,wp-internal : Indicate to use controller internal write protection 14- fsl,wp-internal : Indicate to use controller internal write protection
15- cd-gpios : Specify GPIOs for card detection
16- wp-gpios : Specify GPIOs for write protection
17 15
18Examples: 16Examples:
19 17
@@ -29,6 +27,6 @@ esdhc@70008000 {
29 compatible = "fsl,imx51-esdhc"; 27 compatible = "fsl,imx51-esdhc";
30 reg = <0x70008000 0x4000>; 28 reg = <0x70008000 0x4000>;
31 interrupts = <2>; 29 interrupts = <2>;
32 cd-gpios = <&gpio0 6 0>; /* GPIO1_6 */ 30 cd-gpios = <&gpio1 6 0>; /* GPIO1_6 */
33 wp-gpios = <&gpio0 5 0>; /* GPIO1_5 */ 31 wp-gpios = <&gpio1 5 0>; /* GPIO1_5 */
34}; 32};
diff --git a/Documentation/devicetree/bindings/mmc/mmc-spi-slot.txt b/Documentation/devicetree/bindings/mmc/mmc-spi-slot.txt
index d64aea5a4203..0e5e2ec4001d 100644
--- a/Documentation/devicetree/bindings/mmc/mmc-spi-slot.txt
+++ b/Documentation/devicetree/bindings/mmc/mmc-spi-slot.txt
@@ -1,8 +1,9 @@
1MMC/SD/SDIO slot directly connected to a SPI bus 1MMC/SD/SDIO slot directly connected to a SPI bus
2 2
3This file documents differences between the core properties described
4by mmc.txt and the properties used by the mmc_spi driver.
5
3Required properties: 6Required properties:
4- compatible : should be "mmc-spi-slot".
5- reg : should specify SPI address (chip-select number).
6- spi-max-frequency : maximum frequency for this device (Hz). 7- spi-max-frequency : maximum frequency for this device (Hz).
7- voltage-ranges : two cells are required, first cell specifies minimum 8- voltage-ranges : two cells are required, first cell specifies minimum
8 slot voltage (mV), second cell specifies maximum slot voltage (mV). 9 slot voltage (mV), second cell specifies maximum slot voltage (mV).
@@ -11,8 +12,7 @@ Required properties:
11Optional properties: 12Optional properties:
12- gpios : may specify GPIOs in this order: Card-Detect GPIO, 13- gpios : may specify GPIOs in this order: Card-Detect GPIO,
13 Write-Protect GPIO. Note that this does not follow the 14 Write-Protect GPIO. Note that this does not follow the
14 binding from mmc.txt, for historic reasons. 15 binding from mmc.txt, for historical reasons.
15- interrupts : the interrupt of a card detect interrupt.
16- interrupt-parent : the phandle for the interrupt controller that 16- interrupt-parent : the phandle for the interrupt controller that
17 services interrupts for this device. 17 services interrupts for this device.
18 18
diff --git a/Documentation/devicetree/bindings/mmc/mmc.txt b/Documentation/devicetree/bindings/mmc/mmc.txt
index 6e70dcde0a71..8a6811f4a02f 100644
--- a/Documentation/devicetree/bindings/mmc/mmc.txt
+++ b/Documentation/devicetree/bindings/mmc/mmc.txt
@@ -2,13 +2,17 @@ These properties are common to multiple MMC host controllers. Any host
2that requires the respective functionality should implement them using 2that requires the respective functionality should implement them using
3these definitions. 3these definitions.
4 4
5Interpreted by the OF core:
6- reg: Registers location and length.
7- interrupts: Interrupts used by the MMC controller.
8
5Required properties: 9Required properties:
6- bus-width: Number of data lines, can be <1>, <4>, or <8> 10- bus-width: Number of data lines, can be <1>, <4>, or <8>
7 11
8Optional properties: 12Optional properties:
9- cd-gpios : Specify GPIOs for card detection, see gpio binding 13- cd-gpios: Specify GPIOs for card detection, see gpio binding
10- wp-gpios : Specify GPIOs for write protection, see gpio binding 14- wp-gpios: Specify GPIOs for write protection, see gpio binding
11- cd-inverted: when present, polarity on the wp gpio line is inverted 15- cd-inverted: when present, polarity on the cd gpio line is inverted
12- wp-inverted: when present, polarity on the wp gpio line is inverted 16- wp-inverted: when present, polarity on the wp gpio line is inverted
13- non-removable: non-removable slot (like eMMC) 17- non-removable: non-removable slot (like eMMC)
14- max-frequency: maximum operating clock frequency 18- max-frequency: maximum operating clock frequency
diff --git a/Documentation/devicetree/bindings/mmc/mmci.txt b/Documentation/devicetree/bindings/mmc/mmci.txt
index 14a81d526118..2b584cae352a 100644
--- a/Documentation/devicetree/bindings/mmc/mmci.txt
+++ b/Documentation/devicetree/bindings/mmc/mmci.txt
@@ -1,19 +1,15 @@
1* ARM PrimeCell MultiMedia Card Interface (MMCI) PL180/1 1* ARM PrimeCell MultiMedia Card Interface (MMCI) PL180/1
2 2
3The ARM PrimeCell MMCI PL180 and PL181 provides and interface for 3The ARM PrimeCell MMCI PL180 and PL181 provides an interface for
4reading and writing to MultiMedia and SD cards alike. 4reading and writing to MultiMedia and SD cards alike.
5 5
6This file documents differences between the core properties described
7by mmc.txt and the properties used by the mmci driver.
8
6Required properties: 9Required properties:
7- compatible : contains "arm,pl18x", "arm,primecell". 10- compatible : contains "arm,pl18x", "arm,primecell".
8- reg : contains pl18x registers and length.
9- interrupts : contains the device IRQ(s).
10- arm,primecell-periphid : contains the PrimeCell Peripheral ID. 11- arm,primecell-periphid : contains the PrimeCell Peripheral ID.
11 12
12Optional properties: 13Optional properties:
13- wp-gpios : contains any write protect (ro) gpios
14- cd-gpios : contains any card detection gpios
15- cd-inverted : indicates whether the cd gpio is inverted
16- max-frequency : contains the maximum operating frequency
17- bus-width : number of data lines, can be <1>, <4>, or <8>
18- mmc-cap-mmc-highspeed : indicates whether MMC is high speed capable 14- mmc-cap-mmc-highspeed : indicates whether MMC is high speed capable
19- mmc-cap-sd-highspeed : indicates whether SD is high speed capable 15- mmc-cap-sd-highspeed : indicates whether SD is high speed capable
diff --git a/Documentation/devicetree/bindings/mmc/mxs-mmc.txt b/Documentation/devicetree/bindings/mmc/mxs-mmc.txt
index 14d870a9e3db..54949f6faede 100644
--- a/Documentation/devicetree/bindings/mmc/mxs-mmc.txt
+++ b/Documentation/devicetree/bindings/mmc/mxs-mmc.txt
@@ -3,16 +3,14 @@
3The Freescale MXS Synchronous Serial Ports (SSP) can act as a MMC controller 3The Freescale MXS Synchronous Serial Ports (SSP) can act as a MMC controller
4to support MMC, SD, and SDIO types of memory cards. 4to support MMC, SD, and SDIO types of memory cards.
5 5
6This file documents differences between the core properties in mmc.txt
7and the properties used by the mxsmmc driver.
8
6Required properties: 9Required properties:
7- compatible: Should be "fsl,<chip>-mmc". The supported chips include 10- compatible: Should be "fsl,<chip>-mmc". The supported chips include
8 imx23 and imx28. 11 imx23 and imx28.
9- reg: Should contain registers location and length
10- interrupts: Should contain ERROR and DMA interrupts 12- interrupts: Should contain ERROR and DMA interrupts
11- fsl,ssp-dma-channel: APBH DMA channel for the SSP 13- fsl,ssp-dma-channel: APBH DMA channel for the SSP
12- bus-width: Number of data lines, can be <1>, <4>, or <8>
13
14Optional properties:
15- wp-gpios: Specify GPIOs for write protection
16 14
17Examples: 15Examples:
18 16
diff --git a/Documentation/devicetree/bindings/mmc/nvidia-sdhci.txt b/Documentation/devicetree/bindings/mmc/nvidia,tegra20-sdhci.txt
index f77c3031607f..c6d7b11db9eb 100644
--- a/Documentation/devicetree/bindings/mmc/nvidia-sdhci.txt
+++ b/Documentation/devicetree/bindings/mmc/nvidia,tegra20-sdhci.txt
@@ -3,15 +3,13 @@
3This controller on Tegra family SoCs provides an interface for MMC, SD, 3This controller on Tegra family SoCs provides an interface for MMC, SD,
4and SDIO types of memory cards. 4and SDIO types of memory cards.
5 5
6This file documents differences between the core properties described
7by mmc.txt and the properties used by the sdhci-tegra driver.
8
6Required properties: 9Required properties:
7- compatible : Should be "nvidia,<chip>-sdhci" 10- compatible : Should be "nvidia,<chip>-sdhci"
8- reg : Should contain SD/MMC registers location and length
9- interrupts : Should contain SD/MMC interrupt
10- bus-width : Number of data lines, can be <1>, <4>, or <8>
11 11
12Optional properties: 12Optional properties:
13- cd-gpios : Specify GPIOs for card detection
14- wp-gpios : Specify GPIOs for write protection
15- power-gpios : Specify GPIOs for power control 13- power-gpios : Specify GPIOs for power control
16 14
17Example: 15Example:
diff --git a/Documentation/devicetree/bindings/mmc/sdhci-pxa.txt b/Documentation/devicetree/bindings/mmc/sdhci-pxa.txt
new file mode 100644
index 000000000000..dbe98a3c183a
--- /dev/null
+++ b/Documentation/devicetree/bindings/mmc/sdhci-pxa.txt
@@ -0,0 +1,21 @@
1* Marvell sdhci-pxa v2/v3 controller
2
3This file documents differences between the core properties in mmc.txt
4and the properties used by the sdhci-pxav2 and sdhci-pxav3 drivers.
5
6Required properties:
7- compatible: Should be "mrvl,pxav2-mmc" or "mrvl,pxav3-mmc".
8
9Optional properties:
10- mrvl,clk-delay-cycles: Specify a number of cycles to delay for tuning.
11
12Example:
13
14sdhci@d4280800 {
15 compatible = "mrvl,pxav3-mmc";
16 reg = <0xd4280800 0x800>;
17 bus-width = <8>;
18 interrupts = <27>;
19 non-removable;
20 mrvl,clk-delay-cycles = <31>;
21};
diff --git a/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt b/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt
index 8a53958c9a9f..be76a23b34c4 100644
--- a/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt
+++ b/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt
@@ -3,21 +3,20 @@
3The Highspeed MMC Host Controller on TI OMAP family 3The Highspeed MMC Host Controller on TI OMAP family
4provides an interface for MMC, SD, and SDIO types of memory cards. 4provides an interface for MMC, SD, and SDIO types of memory cards.
5 5
6This file documents differences between the core properties described
7by mmc.txt and the properties used by the omap_hsmmc driver.
8
6Required properties: 9Required properties:
7- compatible: 10- compatible:
8 Should be "ti,omap2-hsmmc", for OMAP2 controllers 11 Should be "ti,omap2-hsmmc", for OMAP2 controllers
9 Should be "ti,omap3-hsmmc", for OMAP3 controllers 12 Should be "ti,omap3-hsmmc", for OMAP3 controllers
10 Should be "ti,omap4-hsmmc", for OMAP4 controllers 13 Should be "ti,omap4-hsmmc", for OMAP4 controllers
11- ti,hwmods: Must be "mmc<n>", n is controller instance starting 1 14- ti,hwmods: Must be "mmc<n>", n is controller instance starting 1
12- reg : should contain hsmmc registers location and length
13 15
14Optional properties: 16Optional properties:
15ti,dual-volt: boolean, supports dual voltage cards 17ti,dual-volt: boolean, supports dual voltage cards
16<supply-name>-supply: phandle to the regulator device tree node 18<supply-name>-supply: phandle to the regulator device tree node
17"supply-name" examples are "vmmc", "vmmc_aux" etc 19"supply-name" examples are "vmmc", "vmmc_aux" etc
18bus-width: Number of data lines, default assumed is 1 if the property is missing.
19cd-gpios: GPIOs for card detection
20wp-gpios: GPIOs for write protection
21ti,non-removable: non-removable slot (like eMMC) 20ti,non-removable: non-removable slot (like eMMC)
22ti,needs-special-reset: Requires a special softreset sequence 21ti,needs-special-reset: Requires a special softreset sequence
23 22
diff --git a/Documentation/devicetree/bindings/mtd/partition.txt b/Documentation/devicetree/bindings/mtd/partition.txt
index f114ce1657c2..6e1f61f1e789 100644
--- a/Documentation/devicetree/bindings/mtd/partition.txt
+++ b/Documentation/devicetree/bindings/mtd/partition.txt
@@ -35,4 +35,4 @@ flash@0 {
35 uimage@100000 { 35 uimage@100000 {
36 reg = <0x0100000 0x200000>; 36 reg = <0x0100000 0x200000>;
37 }; 37 };
38]; 38};
diff --git a/Documentation/devicetree/bindings/net/broadcom-bcm87xx.txt b/Documentation/devicetree/bindings/net/broadcom-bcm87xx.txt
new file mode 100644
index 000000000000..7c86d5e28a0e
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/broadcom-bcm87xx.txt
@@ -0,0 +1,29 @@
1The Broadcom BCM87XX devices are a family of 10G Ethernet PHYs. They
2have these bindings in addition to the standard PHY bindings.
3
4Compatible: Should contain "broadcom,bcm8706" or "broadcom,bcm8727" and
5 "ethernet-phy-ieee802.3-c45"
6
7Optional Properties:
8
9- broadcom,c45-reg-init : one of more sets of 4 cells. The first cell
10 is the MDIO Manageable Device (MMD) address, the second a register
11 address within the MMD, the third cell contains a mask to be ANDed
12 with the existing register value, and the fourth cell is ORed with
13 he result to yield the new register value. If the third cell has a
14 value of zero, no read of the existing value is performed.
15
16Example:
17
18 ethernet-phy@5 {
19 reg = <5>;
20 compatible = "broadcom,bcm8706", "ethernet-phy-ieee802.3-c45";
21 interrupt-parent = <&gpio>;
22 interrupts = <12 8>; /* Pin 12, active low */
23 /*
24 * Set PMD Digital Control Register for
25 * GPIO[1] Tx/Rx
26 * GPIO[0] R64 Sync Acquired
27 */
28 broadcom,c45-reg-init = <1 0xc808 0xff8f 0x70>;
29 };
diff --git a/Documentation/devicetree/bindings/net/can/fsl-flexcan.txt b/Documentation/devicetree/bindings/net/can/fsl-flexcan.txt
index f31b686d4556..8ff324eaa889 100644
--- a/Documentation/devicetree/bindings/net/can/fsl-flexcan.txt
+++ b/Documentation/devicetree/bindings/net/can/fsl-flexcan.txt
@@ -11,6 +11,9 @@ Required properties:
11 11
12- reg : Offset and length of the register set for this device 12- reg : Offset and length of the register set for this device
13- interrupts : Interrupt tuple for this device 13- interrupts : Interrupt tuple for this device
14
15Optional properties:
16
14- clock-frequency : The oscillator frequency driving the flexcan device 17- clock-frequency : The oscillator frequency driving the flexcan device
15 18
16Example: 19Example:
diff --git a/Documentation/devicetree/bindings/net/davinci_emac.txt b/Documentation/devicetree/bindings/net/davinci_emac.txt
new file mode 100644
index 000000000000..48b259e29e87
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/davinci_emac.txt
@@ -0,0 +1,41 @@
1* Texas Instruments Davinci EMAC
2
3This file provides information, what the device node
4for the davinci_emac interface contains.
5
6Required properties:
7- compatible: "ti,davinci-dm6467-emac";
8- reg: Offset and length of the register set for the device
9- ti,davinci-ctrl-reg-offset: offset to control register
10- ti,davinci-ctrl-mod-reg-offset: offset to control module register
11- ti,davinci-ctrl-ram-offset: offset to control module ram
12- ti,davinci-ctrl-ram-size: size of control module ram
13- ti,davinci-rmii-en: use RMII
14- ti,davinci-no-bd-ram: has the emac controller BD RAM
15- phy-handle: Contains a phandle to an Ethernet PHY.
16 if not, davinci_emac driver defaults to 100/FULL
17- interrupts: interrupt mapping for the davinci emac interrupts sources:
18 4 sources: <Receive Threshold Interrupt
19 Receive Interrupt
20 Transmit Interrupt
21 Miscellaneous Interrupt>
22
23Optional properties:
24- local-mac-address : 6 bytes, mac address
25
26Example (enbw_cmc board):
27 eth0: emac@1e20000 {
28 compatible = "ti,davinci-dm6467-emac";
29 reg = <0x220000 0x4000>;
30 ti,davinci-ctrl-reg-offset = <0x3000>;
31 ti,davinci-ctrl-mod-reg-offset = <0x2000>;
32 ti,davinci-ctrl-ram-offset = <0>;
33 ti,davinci-ctrl-ram-size = <0x2000>;
34 local-mac-address = [ 00 00 00 00 00 00 ];
35 interrupts = <33
36 34
37 35
38 36
39 >;
40 interrupt-parent = <&intc>;
41 };
diff --git a/Documentation/devicetree/bindings/net/fsl-fec.txt b/Documentation/devicetree/bindings/net/fsl-fec.txt
index 7ab9e1a2d8be..d53639221403 100644
--- a/Documentation/devicetree/bindings/net/fsl-fec.txt
+++ b/Documentation/devicetree/bindings/net/fsl-fec.txt
@@ -7,10 +7,14 @@ Required properties:
7- phy-mode : String, operation mode of the PHY interface. 7- phy-mode : String, operation mode of the PHY interface.
8 Supported values are: "mii", "gmii", "sgmii", "tbi", "rmii", 8 Supported values are: "mii", "gmii", "sgmii", "tbi", "rmii",
9 "rgmii", "rgmii-id", "rgmii-rxid", "rgmii-txid", "rtbi", "smii". 9 "rgmii", "rgmii-id", "rgmii-rxid", "rgmii-txid", "rtbi", "smii".
10- phy-reset-gpios : Should specify the gpio for phy reset
11 10
12Optional properties: 11Optional properties:
13- local-mac-address : 6 bytes, mac address 12- local-mac-address : 6 bytes, mac address
13- phy-reset-gpios : Should specify the gpio for phy reset
14- phy-reset-duration : Reset duration in milliseconds. Should present
15 only if property "phy-reset-gpios" is available. Missing the property
16 will have the duration be 1 millisecond. Numbers greater than 1000 are
17 invalid and 1 millisecond will be used instead.
14 18
15Example: 19Example:
16 20
@@ -19,6 +23,6 @@ ethernet@83fec000 {
19 reg = <0x83fec000 0x4000>; 23 reg = <0x83fec000 0x4000>;
20 interrupts = <87>; 24 interrupts = <87>;
21 phy-mode = "mii"; 25 phy-mode = "mii";
22 phy-reset-gpios = <&gpio1 14 0>; /* GPIO2_14 */ 26 phy-reset-gpios = <&gpio2 14 0>; /* GPIO2_14 */
23 local-mac-address = [00 04 9F 01 1B B9]; 27 local-mac-address = [00 04 9F 01 1B B9];
24}; 28};
diff --git a/Documentation/devicetree/bindings/net/phy.txt b/Documentation/devicetree/bindings/net/phy.txt
index bb8c742eb8c5..7cd18fbfcf71 100644
--- a/Documentation/devicetree/bindings/net/phy.txt
+++ b/Documentation/devicetree/bindings/net/phy.txt
@@ -14,10 +14,20 @@ Required properties:
14 - linux,phandle : phandle for this node; likely referenced by an 14 - linux,phandle : phandle for this node; likely referenced by an
15 ethernet controller node. 15 ethernet controller node.
16 16
17Optional Properties:
18
19- compatible: Compatible list, may contain
20 "ethernet-phy-ieee802.3-c22" or "ethernet-phy-ieee802.3-c45" for
21 PHYs that implement IEEE802.3 clause 22 or IEEE802.3 clause 45
22 specifications. If neither of these are specified, the default is to
23 assume clause 22. The compatible list may also contain other
24 elements.
25
17Example: 26Example:
18 27
19ethernet-phy@0 { 28ethernet-phy@0 {
20 linux,phandle = <2452000> 29 compatible = "ethernet-phy-ieee802.3-c22";
30 linux,phandle = <2452000>;
21 interrupt-parent = <40000>; 31 interrupt-parent = <40000>;
22 interrupts = <35 1>; 32 interrupts = <35 1>;
23 reg = <0>; 33 reg = <0>;
diff --git a/Documentation/devicetree/bindings/net/stmmac.txt b/Documentation/devicetree/bindings/net/stmmac.txt
index 1f62623f8c3f..060bbf098ef3 100644
--- a/Documentation/devicetree/bindings/net/stmmac.txt
+++ b/Documentation/devicetree/bindings/net/stmmac.txt
@@ -1,7 +1,8 @@
1* STMicroelectronics 10/100/1000 Ethernet driver (GMAC) 1* STMicroelectronics 10/100/1000 Ethernet driver (GMAC)
2 2
3Required properties: 3Required properties:
4- compatible: Should be "st,spear600-gmac" 4- compatible: Should be "snps,dwmac-<ip_version>" "snps,dwmac"
5 For backwards compatibility: "st,spear600-gmac" is also supported.
5- reg: Address and length of the register set for the device 6- reg: Address and length of the register set for the device
6- interrupt-parent: Should be the phandle for the interrupt controller 7- interrupt-parent: Should be the phandle for the interrupt controller
7 that services interrupts for this device 8 that services interrupts for this device
diff --git a/Documentation/devicetree/bindings/nvec/nvec_nvidia.txt b/Documentation/devicetree/bindings/nvec/nvidia,nvec.txt
index 5aeee53ff9f4..5aeee53ff9f4 100644
--- a/Documentation/devicetree/bindings/nvec/nvec_nvidia.txt
+++ b/Documentation/devicetree/bindings/nvec/nvidia,nvec.txt
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx6q-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx6q-pinctrl.txt
index 82b43f915857..a4119f6422d9 100644
--- a/Documentation/devicetree/bindings/pinctrl/fsl,imx6q-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx6q-pinctrl.txt
@@ -1626,3 +1626,5 @@ MX6Q_PAD_SD2_DAT3__PCIE_CTRL_MUX_11 1587
1626MX6Q_PAD_SD2_DAT3__GPIO_1_12 1588 1626MX6Q_PAD_SD2_DAT3__GPIO_1_12 1588
1627MX6Q_PAD_SD2_DAT3__SJC_DONE 1589 1627MX6Q_PAD_SD2_DAT3__SJC_DONE 1589
1628MX6Q_PAD_SD2_DAT3__ANATOP_TESTO_3 1590 1628MX6Q_PAD_SD2_DAT3__ANATOP_TESTO_3 1590
1629MX6Q_PAD_ENET_RX_ER__ANATOP_USBOTG_ID 1591
1630MX6Q_PAD_GPIO_1__ANATOP_USBOTG_ID 1592
diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt
new file mode 100644
index 000000000000..5187f0dd8b28
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt
@@ -0,0 +1,93 @@
1One-register-per-pin type device tree based pinctrl driver
2
3Required properties:
4- compatible : "pinctrl-single"
5
6- reg : offset and length of the register set for the mux registers
7
8- pinctrl-single,register-width : pinmux register access width in bits
9
10- pinctrl-single,function-mask : mask of allowed pinmux function bits
11 in the pinmux register
12
13Optional properties:
14- pinctrl-single,function-off : function off mode for disabled state if
15 available and same for all registers; if not specified, disabling of
16 pin functions is ignored
17
18This driver assumes that there is only one register for each pin,
19and uses the common pinctrl bindings as specified in the pinctrl-bindings.txt
20document in this directory.
21
22The pin configuration nodes for pinctrl-single are specified as pinctrl
23register offset and value pairs using pinctrl-single,pins. Only the bits
24specified in pinctrl-single,function-mask are updated. For example, setting
25a pin for a device could be done with:
26
27 pinctrl-single,pins = <0xdc 0x118>;
28
29Where 0xdc is the offset from the pinctrl register base address for the
30device pinctrl register, and 0x118 contains the desired value of the
31pinctrl register. See the device example and static board pins example
32below for more information.
33
34Example:
35
36/* SoC common file */
37
38/* first controller instance for pins in core domain */
39pmx_core: pinmux@4a100040 {
40 compatible = "pinctrl-single";
41 reg = <0x4a100040 0x0196>;
42 #address-cells = <1>;
43 #size-cells = <0>;
44 pinctrl-single,register-width = <16>;
45 pinctrl-single,function-mask = <0xffff>;
46};
47
48/* second controller instance for pins in wkup domain */
49pmx_wkup: pinmux@4a31e040 {
50 compatible = "pinctrl-single;
51 reg = <0x4a31e040 0x0038>;
52 #address-cells = <1>;
53 #size-cells = <0>;
54 pinctrl-single,register-width = <16>;
55 pinctrl-single,function-mask = <0xffff>;
56};
57
58
59/* board specific .dts file */
60
61&pmx_core {
62
63 /*
64 * map all board specific static pins enabled by the pinctrl driver
65 * itself during the boot (or just set them up in the bootloader)
66 */
67 pinctrl-names = "default";
68 pinctrl-0 = <&board_pins>;
69
70 board_pins: pinmux_board_pins {
71 pinctrl-single,pins = <
72 0x6c 0xf
73 0x6e 0xf
74 0x70 0xf
75 0x72 0xf
76 >;
77 };
78
79 /* map uart2 pins */
80 uart2_pins: pinmux_uart2_pins {
81 pinctrl-single,pins = <
82 0xd8 0x118
83 0xda 0
84 0xdc 0x118
85 0xde 0
86 >;
87 };
88};
89
90&uart2 {
91 pinctrl-names = "default";
92 pinctrl-0 = <&uart2_pins>;
93};
diff --git a/Documentation/devicetree/bindings/regulator/fixed-regulator.txt b/Documentation/devicetree/bindings/regulator/fixed-regulator.txt
index 2f5b6b1ba15f..4fae41d54798 100644
--- a/Documentation/devicetree/bindings/regulator/fixed-regulator.txt
+++ b/Documentation/devicetree/bindings/regulator/fixed-regulator.txt
@@ -10,6 +10,7 @@ Optional properties:
10If this property is missing, the default assumed is Active low. 10If this property is missing, the default assumed is Active low.
11- gpio-open-drain: GPIO is open drain type. 11- gpio-open-drain: GPIO is open drain type.
12 If this property is missing then default assumption is false. 12 If this property is missing then default assumption is false.
13-vin-supply: Input supply name.
13 14
14Any property defined as part of the core regulator 15Any property defined as part of the core regulator
15binding, defined in regulator.txt, can also be used. 16binding, defined in regulator.txt, can also be used.
@@ -29,4 +30,5 @@ Example:
29 enable-active-high; 30 enable-active-high;
30 regulator-boot-on; 31 regulator-boot-on;
31 gpio-open-drain; 32 gpio-open-drain;
33 vin-supply = <&parent_reg>;
32 }; 34 };
diff --git a/Documentation/devicetree/bindings/regulator/regulator.txt b/Documentation/devicetree/bindings/regulator/regulator.txt
index 5b7a408acdaa..66ece3f87bbc 100644
--- a/Documentation/devicetree/bindings/regulator/regulator.txt
+++ b/Documentation/devicetree/bindings/regulator/regulator.txt
@@ -10,6 +10,11 @@ Optional properties:
10- regulator-always-on: boolean, regulator should never be disabled 10- regulator-always-on: boolean, regulator should never be disabled
11- regulator-boot-on: bootloader/firmware enabled regulator 11- regulator-boot-on: bootloader/firmware enabled regulator
12- <name>-supply: phandle to the parent supply/regulator node 12- <name>-supply: phandle to the parent supply/regulator node
13- regulator-ramp-delay: ramp delay for regulator(in uV/uS)
14- regulator-compatible: If a regulator chip contains multiple
15 regulators, and if the chip's binding contains a child node that
16 describes each regulator, then this property indicates which regulator
17 this child node is intended to configure.
13 18
14Example: 19Example:
15 20
diff --git a/Documentation/devicetree/bindings/regulator/tps65217.txt b/Documentation/devicetree/bindings/regulator/tps65217.txt
new file mode 100644
index 000000000000..0487e9675ba0
--- /dev/null
+++ b/Documentation/devicetree/bindings/regulator/tps65217.txt
@@ -0,0 +1,91 @@
1TPS65217 family of regulators
2
3Required properties:
4- compatible: "ti,tps65217"
5- reg: I2C slave address
6- regulators: list of regulators provided by this controller, must be named
7 after their hardware counterparts: dcdc[1-3] and ldo[1-4]
8- regulators: This is the list of child nodes that specify the regulator
9 initialization data for defined regulators. Not all regulators for the given
10 device need to be present. The definition for each of these nodes is defined
11 using the standard binding for regulators found at
12 Documentation/devicetree/bindings/regulator/regulator.txt.
13
14 The valid names for regulators are:
15 tps65217: dcdc1, dcdc2, dcdc3, ldo1, ldo2, ldo3 and ldo4
16
17Each regulator is defined using the standard binding for regulators.
18
19Example:
20
21 tps: tps@24 {
22 compatible = "ti,tps65217";
23
24 regulators {
25 #address-cells = <1>;
26 #size-cells = <0>;
27
28 dcdc1_reg: regulator@0 {
29 reg = <0>;
30 regulator-compatible = "dcdc1";
31 regulator-min-microvolt = <900000>;
32 regulator-max-microvolt = <1800000>;
33 regulator-boot-on;
34 regulator-always-on;
35 };
36
37 dcdc2_reg: regulator@1 {
38 reg = <1>;
39 regulator-compatible = "dcdc2";
40 regulator-min-microvolt = <900000>;
41 regulator-max-microvolt = <3300000>;
42 regulator-boot-on;
43 regulator-always-on;
44 };
45
46 dcdc3_reg: regulator@2 {
47 reg = <2>;
48 regulator-compatible = "dcdc3";
49 regulator-min-microvolt = <900000>;
50 regulator-max-microvolt = <1500000>;
51 regulator-boot-on;
52 regulator-always-on;
53 };
54
55 ldo1_reg: regulator@3 {
56 reg = <3>;
57 regulator-compatible = "ldo1";
58 regulator-min-microvolt = <1000000>;
59 regulator-max-microvolt = <3300000>;
60 regulator-boot-on;
61 regulator-always-on;
62 };
63
64 ldo2_reg: regulator@4 {
65 reg = <4>;
66 regulator-compatible = "ldo2";
67 regulator-min-microvolt = <900000>;
68 regulator-max-microvolt = <3300000>;
69 regulator-boot-on;
70 regulator-always-on;
71 };
72
73 ldo3_reg: regulator@5 {
74 reg = <5>;
75 regulator-compatible = "ldo3";
76 regulator-min-microvolt = <1800000>;
77 regulator-max-microvolt = <3300000>;
78 regulator-boot-on;
79 regulator-always-on;
80 };
81
82 ldo4_reg: regulator@6 {
83 reg = <6>;
84 regulator-compatible = "ldo4";
85 regulator-min-microvolt = <1800000>;
86 regulator-max-microvolt = <3300000>;
87 regulator-boot-on;
88 regulator-always-on;
89 };
90 };
91 };
diff --git a/Documentation/devicetree/bindings/regulator/tps6586x.txt b/Documentation/devicetree/bindings/regulator/tps6586x.txt
index 0fcabaa3baa3..d156e1b5db12 100644
--- a/Documentation/devicetree/bindings/regulator/tps6586x.txt
+++ b/Documentation/devicetree/bindings/regulator/tps6586x.txt
@@ -6,8 +6,17 @@ Required properties:
6- interrupts: the interrupt outputs of the controller 6- interrupts: the interrupt outputs of the controller
7- #gpio-cells: number of cells to describe a GPIO 7- #gpio-cells: number of cells to describe a GPIO
8- gpio-controller: mark the device as a GPIO controller 8- gpio-controller: mark the device as a GPIO controller
9- regulators: list of regulators provided by this controller, must be named 9- regulators: list of regulators provided by this controller, must have
10 after their hardware counterparts: sm[0-2], ldo[0-9] and ldo_rtc 10 property "regulator-compatible" to match their hardware counterparts:
11 sm[0-2], ldo[0-9] and ldo_rtc
12- sm0-supply: The input supply for the SM0.
13- sm1-supply: The input supply for the SM1.
14- sm2-supply: The input supply for the SM2.
15- vinldo01-supply: The input supply for the LDO1 and LDO2
16- vinldo23-supply: The input supply for the LDO2 and LDO3
17- vinldo4-supply: The input supply for the LDO4
18- vinldo678-supply: The input supply for the LDO6, LDO7 and LDO8
19- vinldo9-supply: The input supply for the LDO9
11 20
12Each regulator is defined using the standard binding for regulators. 21Each regulator is defined using the standard binding for regulators.
13 22
@@ -21,75 +30,113 @@ Example:
21 #gpio-cells = <2>; 30 #gpio-cells = <2>;
22 gpio-controller; 31 gpio-controller;
23 32
33 sm0-supply = <&some_reg>;
34 sm1-supply = <&some_reg>;
35 sm2-supply = <&some_reg>;
36 vinldo01-supply = <...>;
37 vinldo23-supply = <...>;
38 vinldo4-supply = <...>;
39 vinldo678-supply = <...>;
40 vinldo9-supply = <...>;
41
24 regulators { 42 regulators {
25 sm0_reg: sm0 { 43 #address-cells = <1>;
44 #size-cells = <0>;
45
46 sm0_reg: regulator@0 {
47 reg = <0>;
48 regulator-compatible = "sm0";
26 regulator-min-microvolt = < 725000>; 49 regulator-min-microvolt = < 725000>;
27 regulator-max-microvolt = <1500000>; 50 regulator-max-microvolt = <1500000>;
28 regulator-boot-on; 51 regulator-boot-on;
29 regulator-always-on; 52 regulator-always-on;
30 }; 53 };
31 54
32 sm1_reg: sm1 { 55 sm1_reg: regulator@1 {
56 reg = <1>;
57 regulator-compatible = "sm1";
33 regulator-min-microvolt = < 725000>; 58 regulator-min-microvolt = < 725000>;
34 regulator-max-microvolt = <1500000>; 59 regulator-max-microvolt = <1500000>;
35 regulator-boot-on; 60 regulator-boot-on;
36 regulator-always-on; 61 regulator-always-on;
37 }; 62 };
38 63
39 sm2_reg: sm2 { 64 sm2_reg: regulator@2 {
65 reg = <2>;
66 regulator-compatible = "sm2";
40 regulator-min-microvolt = <3000000>; 67 regulator-min-microvolt = <3000000>;
41 regulator-max-microvolt = <4550000>; 68 regulator-max-microvolt = <4550000>;
42 regulator-boot-on; 69 regulator-boot-on;
43 regulator-always-on; 70 regulator-always-on;
44 }; 71 };
45 72
46 ldo0_reg: ldo0 { 73 ldo0_reg: regulator@3 {
74 reg = <3>;
75 regulator-compatible = "ldo0";
47 regulator-name = "PCIE CLK"; 76 regulator-name = "PCIE CLK";
48 regulator-min-microvolt = <3300000>; 77 regulator-min-microvolt = <3300000>;
49 regulator-max-microvolt = <3300000>; 78 regulator-max-microvolt = <3300000>;
50 }; 79 };
51 80
52 ldo1_reg: ldo1 { 81 ldo1_reg: regulator@4 {
82 reg = <4>;
83 regulator-compatible = "ldo1";
53 regulator-min-microvolt = < 725000>; 84 regulator-min-microvolt = < 725000>;
54 regulator-max-microvolt = <1500000>; 85 regulator-max-microvolt = <1500000>;
55 }; 86 };
56 87
57 ldo2_reg: ldo2 { 88 ldo2_reg: regulator@5 {
89 reg = <5>;
90 regulator-compatible = "ldo2";
58 regulator-min-microvolt = < 725000>; 91 regulator-min-microvolt = < 725000>;
59 regulator-max-microvolt = <1500000>; 92 regulator-max-microvolt = <1500000>;
60 }; 93 };
61 94
62 ldo3_reg: ldo3 { 95 ldo3_reg: regulator@6 {
96 reg = <6>;
97 regulator-compatible = "ldo3";
63 regulator-min-microvolt = <1250000>; 98 regulator-min-microvolt = <1250000>;
64 regulator-max-microvolt = <3300000>; 99 regulator-max-microvolt = <3300000>;
65 }; 100 };
66 101
67 ldo4_reg: ldo4 { 102 ldo4_reg: regulator@7 {
103 reg = <7>;
104 regulator-compatible = "ldo4";
68 regulator-min-microvolt = <1700000>; 105 regulator-min-microvolt = <1700000>;
69 regulator-max-microvolt = <2475000>; 106 regulator-max-microvolt = <2475000>;
70 }; 107 };
71 108
72 ldo5_reg: ldo5 { 109 ldo5_reg: regulator@8 {
110 reg = <8>;
111 regulator-compatible = "ldo5";
73 regulator-min-microvolt = <1250000>; 112 regulator-min-microvolt = <1250000>;
74 regulator-max-microvolt = <3300000>; 113 regulator-max-microvolt = <3300000>;
75 }; 114 };
76 115
77 ldo6_reg: ldo6 { 116 ldo6_reg: regulator@9 {
117 reg = <9>;
118 regulator-compatible = "ldo6";
78 regulator-min-microvolt = <1250000>; 119 regulator-min-microvolt = <1250000>;
79 regulator-max-microvolt = <3300000>; 120 regulator-max-microvolt = <3300000>;
80 }; 121 };
81 122
82 ldo7_reg: ldo7 { 123 ldo7_reg: regulator@10 {
124 reg = <10>;
125 regulator-compatible = "ldo7";
83 regulator-min-microvolt = <1250000>; 126 regulator-min-microvolt = <1250000>;
84 regulator-max-microvolt = <3300000>; 127 regulator-max-microvolt = <3300000>;
85 }; 128 };
86 129
87 ldo8_reg: ldo8 { 130 ldo8_reg: regulator@11 {
131 reg = <11>;
132 regulator-compatible = "ldo8";
88 regulator-min-microvolt = <1250000>; 133 regulator-min-microvolt = <1250000>;
89 regulator-max-microvolt = <3300000>; 134 regulator-max-microvolt = <3300000>;
90 }; 135 };
91 136
92 ldo9_reg: ldo9 { 137 ldo9_reg: regulator@12 {
138 reg = <12>;
139 regulator-compatible = "ldo9";
93 regulator-min-microvolt = <1250000>; 140 regulator-min-microvolt = <1250000>;
94 regulator-max-microvolt = <3300000>; 141 regulator-max-microvolt = <3300000>;
95 }; 142 };
diff --git a/Documentation/devicetree/bindings/regulator/twl-regulator.txt b/Documentation/devicetree/bindings/regulator/twl-regulator.txt
index 0c3395d55ac1..658749b90b97 100644
--- a/Documentation/devicetree/bindings/regulator/twl-regulator.txt
+++ b/Documentation/devicetree/bindings/regulator/twl-regulator.txt
@@ -15,7 +15,6 @@ For twl6030 regulators/LDOs
15 - "ti,twl6030-vusb" for VUSB LDO 15 - "ti,twl6030-vusb" for VUSB LDO
16 - "ti,twl6030-v1v8" for V1V8 LDO 16 - "ti,twl6030-v1v8" for V1V8 LDO
17 - "ti,twl6030-v2v1" for V2V1 LDO 17 - "ti,twl6030-v2v1" for V2V1 LDO
18 - "ti,twl6030-clk32kg" for CLK32KG RESOURCE
19 - "ti,twl6030-vdd1" for VDD1 SMPS 18 - "ti,twl6030-vdd1" for VDD1 SMPS
20 - "ti,twl6030-vdd2" for VDD2 SMPS 19 - "ti,twl6030-vdd2" for VDD2 SMPS
21 - "ti,twl6030-vdd3" for VDD3 SMPS 20 - "ti,twl6030-vdd3" for VDD3 SMPS
diff --git a/Documentation/devicetree/bindings/rtc/dw-apb.txt b/Documentation/devicetree/bindings/rtc/dw-apb.txt
new file mode 100644
index 000000000000..93e2b0f048e6
--- /dev/null
+++ b/Documentation/devicetree/bindings/rtc/dw-apb.txt
@@ -0,0 +1,25 @@
1* Designware APB timer
2
3Required properties:
4- compatible: "snps,dw-apb-timer-sp" or "snps,dw-apb-timer-osc"
5- reg: physical base address of the controller and length of memory mapped
6 region.
7- interrupts: IRQ line for the timer.
8- clock-frequency: The frequency in HZ of the timer.
9- clock-freq: For backwards compatibility with picoxcell
10
11Example:
12
13 timer1: timer@ffc09000 {
14 compatible = "snps,dw-apb-timer-sp";
15 interrupts = <0 168 4>;
16 clock-frequency = <200000000>;
17 reg = <0xffc09000 0x1000>;
18 };
19
20 timer2: timer@ffd00000 {
21 compatible = "snps,dw-apb-timer-osc";
22 interrupts = <0 169 4>;
23 clock-frequency = <200000000>;
24 reg = <0xffd00000 0x1000>;
25 };
diff --git a/Documentation/devicetree/bindings/rtc/stmp3xxx-rtc.txt b/Documentation/devicetree/bindings/rtc/stmp3xxx-rtc.txt
new file mode 100644
index 000000000000..b800070fe6e9
--- /dev/null
+++ b/Documentation/devicetree/bindings/rtc/stmp3xxx-rtc.txt
@@ -0,0 +1,16 @@
1* STMP3xxx/i.MX28 Time Clock controller
2
3Required properties:
4- compatible: should be one of the following.
5 * "fsl,stmp3xxx-rtc"
6- reg: physical base address of the controller and length of memory mapped
7 region.
8- interrupts: rtc alarm interrupt
9
10Example:
11
12rtc@80056000 {
13 compatible = "fsl,imx28-rtc", "fsl,stmp3xxx-rtc";
14 reg = <0x80056000 2000>;
15 interrupts = <29>;
16};
diff --git a/Documentation/devicetree/bindings/sound/tegra-audio-alc5632.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt
index b77a97c9101e..b77a97c9101e 100644
--- a/Documentation/devicetree/bindings/sound/tegra-audio-alc5632.txt
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt
diff --git a/Documentation/devicetree/bindings/sound/tegra-audio-trimslice.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-trimslice.txt
index 04b14cfb1f16..04b14cfb1f16 100644
--- a/Documentation/devicetree/bindings/sound/tegra-audio-trimslice.txt
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-trimslice.txt
diff --git a/Documentation/devicetree/bindings/sound/tegra-audio-wm8753.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt
index c4dd39ce6165..c4dd39ce6165 100644
--- a/Documentation/devicetree/bindings/sound/tegra-audio-wm8753.txt
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt
diff --git a/Documentation/devicetree/bindings/sound/tegra-audio-wm8903.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt
index d5b0da8bf1d8..d5b0da8bf1d8 100644
--- a/Documentation/devicetree/bindings/sound/tegra-audio-wm8903.txt
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt
diff --git a/Documentation/devicetree/bindings/sound/tegra20-das.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra20-das.txt
index 6de3a7ee4efb..6de3a7ee4efb 100644
--- a/Documentation/devicetree/bindings/sound/tegra20-das.txt
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra20-das.txt
diff --git a/Documentation/devicetree/bindings/sound/tegra20-i2s.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra20-i2s.txt
index 0df2b5c816e3..0df2b5c816e3 100644
--- a/Documentation/devicetree/bindings/sound/tegra20-i2s.txt
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra20-i2s.txt
diff --git a/Documentation/devicetree/bindings/spi/fsl-imx-cspi.txt b/Documentation/devicetree/bindings/spi/fsl-imx-cspi.txt
index 9841057d112b..4256a6df9b79 100644
--- a/Documentation/devicetree/bindings/spi/fsl-imx-cspi.txt
+++ b/Documentation/devicetree/bindings/spi/fsl-imx-cspi.txt
@@ -17,6 +17,6 @@ ecspi@70010000 {
17 reg = <0x70010000 0x4000>; 17 reg = <0x70010000 0x4000>;
18 interrupts = <36>; 18 interrupts = <36>;
19 fsl,spi-num-chipselects = <2>; 19 fsl,spi-num-chipselects = <2>;
20 cs-gpios = <&gpio3 24 0>, /* GPIO4_24 */ 20 cs-gpios = <&gpio3 24 0>, /* GPIO3_24 */
21 <&gpio3 25 0>; /* GPIO4_25 */ 21 <&gpio3 25 0>; /* GPIO3_25 */
22}; 22};
diff --git a/Documentation/devicetree/bindings/spi/spi_nvidia.txt b/Documentation/devicetree/bindings/spi/nvidia,tegra20-spi.txt
index 6b9e51896693..6b9e51896693 100644
--- a/Documentation/devicetree/bindings/spi/spi_nvidia.txt
+++ b/Documentation/devicetree/bindings/spi/nvidia,tegra20-spi.txt
diff --git a/Documentation/devicetree/bindings/spi/spi-orion.txt b/Documentation/devicetree/bindings/spi/spi-orion.txt
new file mode 100644
index 000000000000..a3ff50fc76fb
--- /dev/null
+++ b/Documentation/devicetree/bindings/spi/spi-orion.txt
@@ -0,0 +1,19 @@
1Marvell Orion SPI device
2
3Required properties:
4- compatible : should be "marvell,orion-spi".
5- reg : offset and length of the register set for the device
6- cell-index : Which of multiple SPI controllers is this.
7Optional properties:
8- interrupts : Is currently not used.
9
10Example:
11 spi@10600 {
12 compatible = "marvell,orion-spi";
13 #address-cells = <1>;
14 #size-cells = <0>;
15 cell-index = <0>;
16 reg = <0x10600 0x28>;
17 interrupts = <23>;
18 status = "disabled";
19 };
diff --git a/Documentation/devicetree/bindings/spi/spi-samsung.txt b/Documentation/devicetree/bindings/spi/spi-samsung.txt
new file mode 100644
index 000000000000..a15ffeddfba4
--- /dev/null
+++ b/Documentation/devicetree/bindings/spi/spi-samsung.txt
@@ -0,0 +1,116 @@
1* Samsung SPI Controller
2
3The Samsung SPI controller is used to interface with various devices such as flash
4and display controllers using the SPI communication interface.
5
6Required SoC Specific Properties:
7
8- compatible: should be one of the following.
9 - samsung,s3c2443-spi: for s3c2443, s3c2416 and s3c2450 platforms
10 - samsung,s3c6410-spi: for s3c6410 platforms
11 - samsung,s5p6440-spi: for s5p6440 and s5p6450 platforms
12 - samsung,s5pv210-spi: for s5pv210 and s5pc110 platforms
13 - samsung,exynos4210-spi: for exynos4 and exynos5 platforms
14
15- reg: physical base address of the controller and length of memory mapped
16 region.
17
18- interrupts: The interrupt number to the cpu. The interrupt specifier format
19 depends on the interrupt controller.
20
21[PRELIMINARY: the dma channel allocation will change once there are
22official DMA bindings]
23
24- tx-dma-channel: The dma channel specifier for tx operations. The format of
25 the dma specifier depends on the dma controller.
26
27- rx-dma-channel: The dma channel specifier for rx operations. The format of
28 the dma specifier depends on the dma controller.
29
30Required Board Specific Properties:
31
32- #address-cells: should be 1.
33- #size-cells: should be 0.
34- gpios: The gpio specifier for clock, mosi and miso interface lines (in the
35 order specified). The format of the gpio specifier depends on the gpio
36 controller.
37
38Optional Board Specific Properties:
39
40- samsung,spi-src-clk: If the spi controller includes a internal clock mux to
41 select the clock source for the spi bus clock, this property can be used to
42 indicate the clock to be used for driving the spi bus clock. If not specified,
43 the clock number 0 is used as default.
44
45- num-cs: Specifies the number of chip select lines supported. If
46 not specified, the default number of chip select lines is set to 1.
47
48SPI Controller specific data in SPI slave nodes:
49
50- The spi slave nodes should provide the following information which is required
51 by the spi controller.
52
53 - cs-gpio: A gpio specifier that specifies the gpio line used as
54 the slave select line by the spi controller. The format of the gpio
55 specifier depends on the gpio controller.
56
57 - samsung,spi-feedback-delay: The sampling phase shift to be applied on the
58 miso line (to account for any lag in the miso line). The following are the
59 valid values.
60
61 - 0: No phase shift.
62 - 1: 90 degree phase shift sampling.
63 - 2: 180 degree phase shift sampling.
64 - 3: 270 degree phase shift sampling.
65
66Aliases:
67
68- All the SPI controller nodes should be represented in the aliases node using
69 the following format 'spi{n}' where n is a unique number for the alias.
70
71
72Example:
73
74- SoC Specific Portion:
75
76 spi_0: spi@12d20000 {
77 compatible = "samsung,exynos4210-spi";
78 reg = <0x12d20000 0x100>;
79 interrupts = <0 66 0>;
80 tx-dma-channel = <&pdma0 5>;
81 rx-dma-channel = <&pdma0 4>;
82 };
83
84- Board Specific Portion:
85
86 spi_0: spi@12d20000 {
87 #address-cells = <1>;
88 #size-cells = <0>;
89 gpios = <&gpa2 4 2 3 0>,
90 <&gpa2 6 2 3 0>,
91 <&gpa2 7 2 3 0>;
92
93 w25q80bw@0 {
94 #address-cells = <1>;
95 #size-cells = <1>;
96 compatible = "w25x80";
97 reg = <0>;
98 spi-max-frequency = <10000>;
99
100 controller-data {
101 cs-gpio = <&gpa2 5 1 0 3>;
102 samsung,spi-feedback-delay = <0>;
103 };
104
105 partition@0 {
106 label = "U-Boot";
107 reg = <0x0 0x40000>;
108 read-only;
109 };
110
111 partition@40000 {
112 label = "Kernel";
113 reg = <0x40000 0xc0000>;
114 };
115 };
116 };
diff --git a/Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt b/Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt
new file mode 100644
index 000000000000..2ee903fad25c
--- /dev/null
+++ b/Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt
@@ -0,0 +1,27 @@
1* Freescale MXS Application UART (AUART)
2
3Required properties:
4- compatible : Should be "fsl,<soc>-auart". The supported SoCs include
5 imx23 and imx28.
6- reg : Address and length of the register set for the device
7- interrupts : Should contain the auart interrupt numbers
8
9Example:
10auart0: serial@8006a000 {
11 compatible = "fsl,imx28-auart", "fsl,imx23-auart";
12 reg = <0x8006a000 0x2000>;
13 interrupts = <112 70 71>;
14};
15
16Note: Each auart port should have an alias correctly numbered in "aliases"
17node.
18
19Example:
20
21aliases {
22 serial0 = &auart0;
23 serial1 = &auart1;
24 serial2 = &auart2;
25 serial3 = &auart3;
26 serial4 = &auart4;
27};
diff --git a/Documentation/devicetree/bindings/usb/ci13xxx-imx.txt b/Documentation/devicetree/bindings/usb/ci13xxx-imx.txt
new file mode 100644
index 000000000000..2c290418bb2d
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/ci13xxx-imx.txt
@@ -0,0 +1,18 @@
1* Freescale i.MX ci13xxx usb controllers
2
3Required properties:
4- compatible: Should be "fsl,imx27-usb"
5- reg: Should contain registers location and length
6- interrupts: Should contain controller interrupt
7
8Optional properties:
9- fsl,usbphy: phandler of usb phy that connects to the only one port
10- vbus-supply: regulator for vbus
11
12Examples:
13usb@02184000 { /* USB OTG */
14 compatible = "fsl,imx6q-usb", "fsl,imx27-usb";
15 reg = <0x02184000 0x200>;
16 interrupts = <0 43 0x04>;
17 fsl,usbphy = <&usbphy1>;
18};
diff --git a/Documentation/devicetree/bindings/usb/mxs-phy.txt b/Documentation/devicetree/bindings/usb/mxs-phy.txt
new file mode 100644
index 000000000000..5835b27146ea
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/mxs-phy.txt
@@ -0,0 +1,13 @@
1* Freescale MXS USB Phy Device
2
3Required properties:
4- compatible: Should be "fsl,imx23-usbphy"
5- reg: Should contain registers location and length
6- interrupts: Should contain phy interrupt
7
8Example:
9usbphy1: usbphy@020c9000 {
10 compatible = "fsl,imx6q-usbphy", "fsl,imx23-usbphy";
11 reg = <0x020c9000 0x1000>;
12 interrupts = <0 44 0x04>;
13};
diff --git a/Documentation/devicetree/bindings/usb/tegra-usb.txt b/Documentation/devicetree/bindings/usb/nvidia,tegra20-ehci.txt
index e9b005dc7625..e9b005dc7625 100644
--- a/Documentation/devicetree/bindings/usb/tegra-usb.txt
+++ b/Documentation/devicetree/bindings/usb/nvidia,tegra20-ehci.txt
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt
index 6eab91747a86..db4d3af3643c 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.txt
+++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
@@ -3,6 +3,7 @@ Device tree binding vendor prefix registry. Keep list in alphabetical order.
3This isn't an exhaustive list, but you should add new prefixes to it before 3This isn't an exhaustive list, but you should add new prefixes to it before
4using them to avoid name-space collisions. 4using them to avoid name-space collisions.
5 5
6ad Avionic Design GmbH
6adi Analog Devices, Inc. 7adi Analog Devices, Inc.
7amcc Applied Micro Circuits Corporation (APM, formally AMCC) 8amcc Applied Micro Circuits Corporation (APM, formally AMCC)
8apm Applied Micro Circuits Corporation (APM) 9apm Applied Micro Circuits Corporation (APM)
diff --git a/Documentation/devicetree/bindings/watchdog/omap-wdt.txt b/Documentation/devicetree/bindings/watchdog/omap-wdt.txt
new file mode 100644
index 000000000000..c227970671ea
--- /dev/null
+++ b/Documentation/devicetree/bindings/watchdog/omap-wdt.txt
@@ -0,0 +1,14 @@
1TI Watchdog Timer (WDT) Controller for OMAP
2
3Required properties:
4compatible:
5- "ti,omap3-wdt" for OMAP3
6- "ti,omap4-wdt" for OMAP4
7- ti,hwmods: Name of the hwmod associated to the WDT
8
9Examples:
10
11wdt2: wdt@4a314000 {
12 compatible = "ti,omap4-wdt", "ti,omap3-wdt";
13 ti,hwmods = "wd_timer2";
14};
diff --git a/Documentation/devicetree/usage-model.txt b/Documentation/devicetree/usage-model.txt
index c5a80099b71c..dca90fe22a90 100644
--- a/Documentation/devicetree/usage-model.txt
+++ b/Documentation/devicetree/usage-model.txt
@@ -312,7 +312,7 @@ device tree for the NVIDIA Tegra board.
312 }; 312 };
313}; 313};
314 314
315At .machine_init() time, Tegra board support code will need to look at 315At .init_machine() time, Tegra board support code will need to look at
316this DT and decide which nodes to create platform_devices for. 316this DT and decide which nodes to create platform_devices for.
317However, looking at the tree, it is not immediately obvious what kind 317However, looking at the tree, it is not immediately obvious what kind
318of device each node represents, or even if a node represents a device 318of device each node represents, or even if a node represents a device
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index 56000b33340b..61d1a89baeaf 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -249,15 +249,6 @@ Who: Ravikiran Thirumalai <kiran@scalex86.org>
249 249
250--------------------------- 250---------------------------
251 251
252What: Code that is now under CONFIG_WIRELESS_EXT_SYSFS
253 (in net/core/net-sysfs.c)
254When: 3.5
255Why: Over 1K .text/.data size reduction, data is available in other
256 ways (ioctls)
257Who: Johannes Berg <johannes@sipsolutions.net>
258
259---------------------------
260
261What: sysfs ui for changing p4-clockmod parameters 252What: sysfs ui for changing p4-clockmod parameters
262When: September 2009 253When: September 2009
263Why: See commits 129f8ae9b1b5be94517da76009ea956e89104ce8 and 254Why: See commits 129f8ae9b1b5be94517da76009ea956e89104ce8 and
@@ -414,21 +405,6 @@ Who: Jean Delvare <khali@linux-fr.org>
414 405
415---------------------------- 406----------------------------
416 407
417What: xt_connlimit rev 0
418When: 2012
419Who: Jan Engelhardt <jengelh@medozas.de>
420Files: net/netfilter/xt_connlimit.c
421
422----------------------------
423
424What: ipt_addrtype match include file
425When: 2012
426Why: superseded by xt_addrtype
427Who: Florian Westphal <fw@strlen.de>
428Files: include/linux/netfilter_ipv4/ipt_addrtype.h
429
430----------------------------
431
432What: i2c_driver.attach_adapter 408What: i2c_driver.attach_adapter
433 i2c_driver.detach_adapter 409 i2c_driver.detach_adapter
434When: September 2011 410When: September 2011
@@ -449,6 +425,19 @@ Who: Hans Verkuil <hans.verkuil@cisco.com>
449 425
450---------------------------- 426----------------------------
451 427
428What: CONFIG_CFG80211_WEXT
429When: as soon as distributions ship new wireless tools, ie. wpa_supplicant 1.0
430 and NetworkManager/connman/etc. that are able to use nl80211
431Why: Wireless extensions are deprecated, and userland tools are moving to
432 using nl80211. New drivers are no longer using wireless extensions,
433 and while there might still be old drivers, both new drivers and new
434 userland no longer needs them and they can't be used for an feature
435 developed in the past couple of years. As such, compatibility with
436 wireless extensions in new drivers will be removed.
437Who: Johannes Berg <johannes@sipsolutions.net>
438
439----------------------------
440
452What: g_file_storage driver 441What: g_file_storage driver
453When: 3.8 442When: 3.8
454Why: This driver has been superseded by g_mass_storage. 443Why: This driver has been superseded by g_mass_storage.
@@ -589,6 +578,13 @@ Why: Remount currently allows changing bound subsystems and
589 578
590---------------------------- 579----------------------------
591 580
581What: xt_recent rev 0
582When: 2013
583Who: Pablo Neira Ayuso <pablo@netfilter.org>
584Files: net/netfilter/xt_recent.c
585
586----------------------------
587
592What: KVM debugfs statistics 588What: KVM debugfs statistics
593When: 2013 589When: 2013
594Why: KVM tracepoints provide mostly equivalent information in a much more 590Why: KVM tracepoints provide mostly equivalent information in a much more
diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking
index 8e2da1e06e3b..e0cce2a5f820 100644
--- a/Documentation/filesystems/Locking
+++ b/Documentation/filesystems/Locking
@@ -9,7 +9,7 @@ be able to use diff(1).
9 9
10--------------------------- dentry_operations -------------------------- 10--------------------------- dentry_operations --------------------------
11prototypes: 11prototypes:
12 int (*d_revalidate)(struct dentry *, struct nameidata *); 12 int (*d_revalidate)(struct dentry *, unsigned int);
13 int (*d_hash)(const struct dentry *, const struct inode *, 13 int (*d_hash)(const struct dentry *, const struct inode *,
14 struct qstr *); 14 struct qstr *);
15 int (*d_compare)(const struct dentry *, const struct inode *, 15 int (*d_compare)(const struct dentry *, const struct inode *,
@@ -37,9 +37,8 @@ d_manage: no no yes (ref-walk) maybe
37 37
38--------------------------- inode_operations --------------------------- 38--------------------------- inode_operations ---------------------------
39prototypes: 39prototypes:
40 int (*create) (struct inode *,struct dentry *,umode_t, struct nameidata *); 40 int (*create) (struct inode *,struct dentry *,umode_t, bool);
41 struct dentry * (*lookup) (struct inode *,struct dentry *, struct nameid 41 struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int);
42ata *);
43 int (*link) (struct dentry *,struct inode *,struct dentry *); 42 int (*link) (struct dentry *,struct inode *,struct dentry *);
44 int (*unlink) (struct inode *,struct dentry *); 43 int (*unlink) (struct inode *,struct dentry *);
45 int (*symlink) (struct inode *,struct dentry *,const char *); 44 int (*symlink) (struct inode *,struct dentry *,const char *);
@@ -62,6 +61,9 @@ ata *);
62 int (*removexattr) (struct dentry *, const char *); 61 int (*removexattr) (struct dentry *, const char *);
63 int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start, u64 len); 62 int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start, u64 len);
64 void (*update_time)(struct inode *, struct timespec *, int); 63 void (*update_time)(struct inode *, struct timespec *, int);
64 int (*atomic_open)(struct inode *, struct dentry *,
65 struct file *, unsigned open_flag,
66 umode_t create_mode, int *opened);
65 67
66locking rules: 68locking rules:
67 all may block 69 all may block
@@ -89,6 +91,7 @@ listxattr: no
89removexattr: yes 91removexattr: yes
90fiemap: no 92fiemap: no
91update_time: no 93update_time: no
94atomic_open: yes
92 95
93 Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on 96 Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on
94victim. 97victim.
diff --git a/Documentation/filesystems/porting b/Documentation/filesystems/porting
index 8c91d1057d9a..2bef2b3843d1 100644
--- a/Documentation/filesystems/porting
+++ b/Documentation/filesystems/porting
@@ -355,12 +355,10 @@ protects *all* the dcache state of a given dentry.
355via rcu-walk path walk (basically, if the file can have had a path name in the 355via rcu-walk path walk (basically, if the file can have had a path name in the
356vfs namespace). 356vfs namespace).
357 357
358 i_dentry and i_rcu share storage in a union, and the vfs expects 358 Even though i_dentry and i_rcu share storage in a union, we will
359i_dentry to be reinitialized before it is freed, so an: 359initialize the former in inode_init_always(), so just leave it alone in
360 360the callback. It used to be necessary to clean it there, but not anymore
361 INIT_LIST_HEAD(&inode->i_dentry); 361(starting at 3.2).
362
363must be done in the RCU callback.
364 362
365-- 363--
366[recommended] 364[recommended]
@@ -433,3 +431,14 @@ release it yourself.
433 d_alloc_root() is gone, along with a lot of bugs caused by code 431 d_alloc_root() is gone, along with a lot of bugs caused by code
434misusing it. Replacement: d_make_root(inode). The difference is, 432misusing it. Replacement: d_make_root(inode). The difference is,
435d_make_root() drops the reference to inode if dentry allocation fails. 433d_make_root() drops the reference to inode if dentry allocation fails.
434
435--
436[mandatory]
437 The witch is dead! Well, 2/3 of it, anyway. ->d_revalidate() and
438->lookup() do *not* take struct nameidata anymore; just the flags.
439--
440[mandatory]
441 ->create() doesn't take struct nameidata *; unlike the previous
442two, it gets "is it an O_EXCL or equivalent?" boolean argument. Note that
443local filesystems can ignore tha argument - they are guaranteed that the
444object doesn't exist. It's remote/distributed ones that might care...
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt
index efd23f481704..aa754e01464e 100644
--- a/Documentation/filesystems/vfs.txt
+++ b/Documentation/filesystems/vfs.txt
@@ -341,8 +341,8 @@ This describes how the VFS can manipulate an inode in your
341filesystem. As of kernel 2.6.22, the following members are defined: 341filesystem. As of kernel 2.6.22, the following members are defined:
342 342
343struct inode_operations { 343struct inode_operations {
344 int (*create) (struct inode *,struct dentry *, umode_t, struct nameidata *); 344 int (*create) (struct inode *,struct dentry *, umode_t, bool);
345 struct dentry * (*lookup) (struct inode *,struct dentry *, struct nameidata *); 345 struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int);
346 int (*link) (struct dentry *,struct inode *,struct dentry *); 346 int (*link) (struct dentry *,struct inode *,struct dentry *);
347 int (*unlink) (struct inode *,struct dentry *); 347 int (*unlink) (struct inode *,struct dentry *);
348 int (*symlink) (struct inode *,struct dentry *,const char *); 348 int (*symlink) (struct inode *,struct dentry *,const char *);
@@ -364,6 +364,9 @@ struct inode_operations {
364 ssize_t (*listxattr) (struct dentry *, char *, size_t); 364 ssize_t (*listxattr) (struct dentry *, char *, size_t);
365 int (*removexattr) (struct dentry *, const char *); 365 int (*removexattr) (struct dentry *, const char *);
366 void (*update_time)(struct inode *, struct timespec *, int); 366 void (*update_time)(struct inode *, struct timespec *, int);
367 int (*atomic_open)(struct inode *, struct dentry *,
368 struct file *, unsigned open_flag,
369 umode_t create_mode, int *opened);
367}; 370};
368 371
369Again, all methods are called without any locks being held, unless 372Again, all methods are called without any locks being held, unless
@@ -476,6 +479,14 @@ otherwise noted.
476 an inode. If this is not defined the VFS will update the inode itself 479 an inode. If this is not defined the VFS will update the inode itself
477 and call mark_inode_dirty_sync. 480 and call mark_inode_dirty_sync.
478 481
482 atomic_open: called on the last component of an open. Using this optional
483 method the filesystem can look up, possibly create and open the file in
484 one atomic operation. If it cannot perform this (e.g. the file type
485 turned out to be wrong) it may signal this by returning 1 instead of
486 usual 0 or -ve . This method is only called if the last
487 component is negative or needs lookup. Cached positive dentries are
488 still handled by f_op->open().
489
479The Address Space Object 490The Address Space Object
480======================== 491========================
481 492
@@ -891,7 +902,7 @@ the VFS uses a default. As of kernel 2.6.22, the following members are
891defined: 902defined:
892 903
893struct dentry_operations { 904struct dentry_operations {
894 int (*d_revalidate)(struct dentry *, struct nameidata *); 905 int (*d_revalidate)(struct dentry *, unsigned int);
895 int (*d_hash)(const struct dentry *, const struct inode *, 906 int (*d_hash)(const struct dentry *, const struct inode *,
896 struct qstr *); 907 struct qstr *);
897 int (*d_compare)(const struct dentry *, const struct inode *, 908 int (*d_compare)(const struct dentry *, const struct inode *,
@@ -910,11 +921,11 @@ struct dentry_operations {
910 dcache. Most filesystems leave this as NULL, because all their 921 dcache. Most filesystems leave this as NULL, because all their
911 dentries in the dcache are valid 922 dentries in the dcache are valid
912 923
913 d_revalidate may be called in rcu-walk mode (nd->flags & LOOKUP_RCU). 924 d_revalidate may be called in rcu-walk mode (flags & LOOKUP_RCU).
914 If in rcu-walk mode, the filesystem must revalidate the dentry without 925 If in rcu-walk mode, the filesystem must revalidate the dentry without
915 blocking or storing to the dentry, d_parent and d_inode should not be 926 blocking or storing to the dentry, d_parent and d_inode should not be
916 used without care (because they can go NULL), instead nd->inode should 927 used without care (because they can change and, in d_inode case, even
917 be used. 928 become NULL under us).
918 929
919 If a situation is encountered that rcu-walk cannot handle, return 930 If a situation is encountered that rcu-walk cannot handle, return
920 -ECHILD and it will be called again in ref-walk mode. 931 -ECHILD and it will be called again in ref-walk mode.
diff --git a/Documentation/hid/uhid.txt b/Documentation/hid/uhid.txt
new file mode 100644
index 000000000000..4627c4241ece
--- /dev/null
+++ b/Documentation/hid/uhid.txt
@@ -0,0 +1,169 @@
1 UHID - User-space I/O driver support for HID subsystem
2 ========================================================
3
4The HID subsystem needs two kinds of drivers. In this document we call them:
5
6 1. The "HID I/O Driver" is the driver that performs raw data I/O to the
7 low-level device. Internally, they register an hid_ll_driver structure with
8 the HID core. They perform device setup, read raw data from the device and
9 push it into the HID subsystem and they provide a callback so the HID
10 subsystem can send data to the device.
11
12 2. The "HID Device Driver" is the driver that parses HID reports and reacts on
13 them. There are generic drivers like "generic-usb" and "generic-bluetooth"
14 which adhere to the HID specification and provide the standardizes features.
15 But there may be special drivers and quirks for each non-standard device out
16 there. Internally, they use the hid_driver structure.
17
18Historically, the USB stack was the first subsystem to provide an HID I/O
19Driver. However, other standards like Bluetooth have adopted the HID specs and
20may provide HID I/O Drivers, too. The UHID driver allows to implement HID I/O
21Drivers in user-space and feed the data into the kernel HID-subsystem.
22
23This allows user-space to operate on the same level as USB-HID, Bluetooth-HID
24and similar. It does not provide a way to write HID Device Drivers, though. Use
25hidraw for this purpose.
26
27There is an example user-space application in ./samples/uhid/uhid-example.c
28
29The UHID API
30------------
31
32UHID is accessed through a character misc-device. The minor-number is allocated
33dynamically so you need to rely on udev (or similar) to create the device node.
34This is /dev/uhid by default.
35
36If a new device is detected by your HID I/O Driver and you want to register this
37device with the HID subsystem, then you need to open /dev/uhid once for each
38device you want to register. All further communication is done by read()'ing or
39write()'ing "struct uhid_event" objects. Non-blocking operations are supported
40by setting O_NONBLOCK.
41
42struct uhid_event {
43 __u32 type;
44 union {
45 struct uhid_create_req create;
46 struct uhid_data_req data;
47 ...
48 } u;
49};
50
51The "type" field contains the ID of the event. Depending on the ID different
52payloads are sent. You must not split a single event across multiple read()'s or
53multiple write()'s. A single event must always be sent as a whole. Furthermore,
54only a single event can be sent per read() or write(). Pending data is ignored.
55If you want to handle multiple events in a single syscall, then use vectored
56I/O with readv()/writev().
57
58The first thing you should do is sending an UHID_CREATE event. This will
59register the device. UHID will respond with an UHID_START event. You can now
60start sending data to and reading data from UHID. However, unless UHID sends the
61UHID_OPEN event, the internally attached HID Device Driver has no user attached.
62That is, you might put your device asleep unless you receive the UHID_OPEN
63event. If you receive the UHID_OPEN event, you should start I/O. If the last
64user closes the HID device, you will receive an UHID_CLOSE event. This may be
65followed by an UHID_OPEN event again and so on. There is no need to perform
66reference-counting in user-space. That is, you will never receive multiple
67UHID_OPEN events without an UHID_CLOSE event. The HID subsystem performs
68ref-counting for you.
69You may decide to ignore UHID_OPEN/UHID_CLOSE, though. I/O is allowed even
70though the device may have no users.
71
72If you want to send data to the HID subsystem, you send an HID_INPUT event with
73your raw data payload. If the kernel wants to send data to the device, you will
74read an UHID_OUTPUT or UHID_OUTPUT_EV event.
75
76If your device disconnects, you should send an UHID_DESTROY event. This will
77unregister the device. You can now send UHID_CREATE again to register a new
78device.
79If you close() the fd, the device is automatically unregistered and destroyed
80internally.
81
82write()
83-------
84write() allows you to modify the state of the device and feed input data into
85the kernel. The following types are supported: UHID_CREATE, UHID_DESTROY and
86UHID_INPUT. The kernel will parse the event immediately and if the event ID is
87not supported, it will return -EOPNOTSUPP. If the payload is invalid, then
88-EINVAL is returned, otherwise, the amount of data that was read is returned and
89the request was handled successfully.
90
91 UHID_CREATE:
92 This creates the internal HID device. No I/O is possible until you send this
93 event to the kernel. The payload is of type struct uhid_create_req and
94 contains information about your device. You can start I/O now.
95
96 UHID_DESTROY:
97 This destroys the internal HID device. No further I/O will be accepted. There
98 may still be pending messages that you can receive with read() but no further
99 UHID_INPUT events can be sent to the kernel.
100 You can create a new device by sending UHID_CREATE again. There is no need to
101 reopen the character device.
102
103 UHID_INPUT:
104 You must send UHID_CREATE before sending input to the kernel! This event
105 contains a data-payload. This is the raw data that you read from your device.
106 The kernel will parse the HID reports and react on it.
107
108 UHID_FEATURE_ANSWER:
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
111 to 0 if no error occured 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
113 of the feature request and set "size" correspondingly.
114
115read()
116------
117read() will return a queued ouput report. These output reports can be of type
118UHID_START, UHID_STOP, UHID_OPEN, UHID_CLOSE, UHID_OUTPUT or UHID_OUTPUT_EV. No
119reaction is required to any of them but you should handle them according to your
120needs. Only UHID_OUTPUT and UHID_OUTPUT_EV have payloads.
121
122 UHID_START:
123 This is sent when the HID device is started. Consider this as an answer to
124 UHID_CREATE. This is always the first event that is sent.
125
126 UHID_STOP:
127 This is sent when the HID device is stopped. Consider this as an answer to
128 UHID_DESTROY.
129 If the kernel HID device driver closes the device manually (that is, you
130 didn't send UHID_DESTROY) then you should consider this device closed and send
131 an UHID_DESTROY event. You may want to reregister your device, though. This is
132 always the last message that is sent to you unless you reopen the device with
133 UHID_CREATE.
134
135 UHID_OPEN:
136 This is sent when the HID device is opened. That is, the data that the HID
137 device provides is read by some other process. You may ignore this event but
138 it is useful for power-management. As long as you haven't received this event
139 there is actually no other process that reads your data so there is no need to
140 send UHID_INPUT events to the kernel.
141
142 UHID_CLOSE:
143 This is sent when there are no more processes which read the HID data. It is
144 the counterpart of UHID_OPEN and you may as well ignore this event.
145
146 UHID_OUTPUT:
147 This is sent if the HID device driver wants to send raw data to the I/O
148 device. You should read the payload and forward it to the device. The payload
149 is of type "struct uhid_data_req".
150 This may be received even though you haven't received UHID_OPEN, yet.
151
152 UHID_OUTPUT_EV:
153 Same as UHID_OUTPUT but this contains a "struct input_event" as payload. This
154 is called for force-feedback, LED or similar events which are received through
155 an input device by the HID subsystem. You should convert this into raw reports
156 and send them to your device similar to events of type UHID_OUTPUT.
157
158 UHID_FEATURE:
159 This event is sent if the kernel driver wants to perform a feature request as
160 described in the HID specs. The report-type and report-number are available in
161 the payload.
162 The kernel serializes feature requests so there will never be two in parallel.
163 However, if you fail to respond with a UHID_FEATURE_ANSWER in a time-span of 5
164 seconds, then the requests will be dropped and a new one might be sent.
165 Therefore, the payload also contains an "id" field that identifies every
166 request.
167
168Document by:
169 David Herrmann <dh.herrmann@googlemail.com>
diff --git a/Documentation/hwmon/da9052 b/Documentation/hwmon/da9052
new file mode 100644
index 000000000000..ef898553638e
--- /dev/null
+++ b/Documentation/hwmon/da9052
@@ -0,0 +1,61 @@
1Supported chips:
2 * Dialog Semiconductors DA9052-BC and DA9053-AA/Bx PMICs
3 Prefix: 'da9052'
4 Datasheet: Datasheet is not publicly available.
5
6Authors: David Dajun Chen <dchen@diasemi.com>
7
8Description
9-----------
10
11The DA9052/53 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 10
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: ICH - internal battery charger current measurement
20Channel 2: TBAT - output from the battery NTC
21Channel 3: VBAT - measurement of the battery voltage
22Channel 4: ADC_IN4 - high impedance input (0 - 2.5V)
23Channel 5: ADC_IN5 - high impedance input (0 - 2.5V)
24Channel 6: ADC_IN6 - high impedance input (0 - 2.5V)
25Channel 7: XY - TSI interface to measure the X and Y voltage of the touch
26 screen resistive potentiometers
27Channel 8: Internal Tjunc. - sense (internal temp. sensor)
28Channel 9: VBBAT - measurement of the backup battery voltage
29
30By using sysfs attributes we can measure the system voltage VDDOUT, the battery
31charging current ICH, battery temperature TBAT, battery junction temperature
32TJUNC, battery voltage VBAT and the back up battery voltage VBBAT.
33
34Voltage Monitoring
35------------------
36
37Voltages are sampled by a 10 bit ADC.
38
39The battery voltage is calculated as:
40 Milli volt = ((ADC value * 1000) / 512) + 2500
41
42The backup battery voltage is calculated as:
43 Milli volt = (ADC value * 2500) / 512;
44
45The voltages on ADC channels 4, 5 and 6 are calculated as:
46 Milli volt = (ADC value * 2500) / 1023
47
48Temperature Monitoring
49----------------------
50
51Temperatures are sampled by a 10 bit ADC. Junction and battery temperatures
52are monitored by the ADC channels.
53
54The junction temperature is calculated:
55 Degrees celsius = 1.708 * (TJUNC_RES - T_OFFSET) - 108.8
56The junction temperature attribute is supported by the driver.
57
58The battery temperature is calculated:
59 Degree Celcius = 1 / (t1 + 1/298)- 273
60where t1 = (1/B)* ln(( ADCval * 2.5)/(R25*ITBAT*255))
61Default values of R25, B, ITBAT are 10e3, 3380 and 50e-6 respectively.
diff --git a/Documentation/hwmon/hih6130 b/Documentation/hwmon/hih6130
new file mode 100644
index 000000000000..73dae918ea7b
--- /dev/null
+++ b/Documentation/hwmon/hih6130
@@ -0,0 +1,37 @@
1Kernel driver hih6130
2=====================
3
4Supported chips:
5 * Honeywell HIH-6130 / HIH-6131
6 Prefix: 'hih6130'
7 Addresses scanned: none
8 Datasheet: Publicly available at the Honeywell website
9 http://sensing.honeywell.com/index.php?ci_id=3106&la_id=1&defId=44872
10
11Author:
12 Iain Paton <ipaton0@gmail.com>
13
14Description
15-----------
16
17The HIH-6130 & HIH-6131 are humidity and temperature sensors in a SO8 package.
18The difference between the two devices is that the HIH-6131 has a condensation
19filter.
20
21The devices communicate with the I2C protocol. All sensors are set to the same
22I2C address 0x27 by default, so an entry with I2C_BOARD_INFO("hih6130", 0x27)
23can be used in the board setup code.
24
25Please see Documentation/i2c/instantiating-devices for details on how to
26instantiate I2C devices.
27
28sysfs-Interface
29---------------
30
31temp1_input - temperature input
32humidity1_input - humidity input
33
34Notes
35-----
36
37Command mode and alarms are not currently supported.
diff --git a/Documentation/hwmon/submitting-patches b/Documentation/hwmon/submitting-patches
index 86f42e8e9e49..790f774a3032 100644
--- a/Documentation/hwmon/submitting-patches
+++ b/Documentation/hwmon/submitting-patches
@@ -70,6 +70,9 @@ increase the chances of your change being accepted.
70 review more difficult. It may also result in code which is more complicated 70 review more difficult. It may also result in code which is more complicated
71 than necessary. Use inline functions or just regular functions instead. 71 than necessary. Use inline functions or just regular functions instead.
72 72
73* Use devres functions whenever possible to allocate resources. For rationale
74 and supported functions, please see Documentation/driver-model/devres.txt.
75
73* If the driver has a detect function, make sure it is silent. Debug messages 76* If the driver has a detect function, make sure it is silent. Debug messages
74 and messages printed after a successful detection are acceptable, but it 77 and messages printed after a successful detection are acceptable, but it
75 must not print messages such as "Chip XXX not found/supported". 78 must not print messages such as "Chip XXX not found/supported".
diff --git a/Documentation/i2c/busses/i2c-i801 b/Documentation/i2c/busses/i2c-i801
index 71f55bbcefc8..615142da4ef6 100644
--- a/Documentation/i2c/busses/i2c-i801
+++ b/Documentation/i2c/busses/i2c-i801
@@ -38,9 +38,10 @@ Module Parameters
38Disable selected features normally supported by the device. This makes it 38Disable selected features normally supported by the device. This makes it
39possible to work around possible driver or hardware bugs if the feature in 39possible to work around possible driver or hardware bugs if the feature in
40question doesn't work as intended for whatever reason. Bit values: 40question doesn't work as intended for whatever reason. Bit values:
41 1 disable SMBus PEC 41 0x01 disable SMBus PEC
42 2 disable the block buffer 42 0x02 disable the block buffer
43 8 disable the I2C block read functionality 43 0x08 disable the I2C block read functionality
44 0x10 don't use interrupts
44 45
45 46
46Description 47Description
@@ -86,6 +87,12 @@ SMBus 2.0 Support
86The 82801DB (ICH4) and later chips support several SMBus 2.0 features. 87The 82801DB (ICH4) and later chips support several SMBus 2.0 features.
87 88
88 89
90Interrupt Support
91-----------------
92
93PCI interrupt support is supported on the 82801EB (ICH5) and later chips.
94
95
89Hidden ICH SMBus 96Hidden ICH SMBus
90---------------- 97----------------
91 98
diff --git a/Documentation/i2c/busses/i2c-piix4 b/Documentation/i2c/busses/i2c-piix4
index 475bb4ae0720..1e6634f54c50 100644
--- a/Documentation/i2c/busses/i2c-piix4
+++ b/Documentation/i2c/busses/i2c-piix4
@@ -8,6 +8,11 @@ Supported adapters:
8 Datasheet: Only available via NDA from ServerWorks 8 Datasheet: Only available via NDA from ServerWorks
9 * ATI IXP200, IXP300, IXP400, SB600, SB700 and SB800 southbridges 9 * ATI IXP200, IXP300, IXP400, SB600, SB700 and SB800 southbridges
10 Datasheet: Not publicly available 10 Datasheet: Not publicly available
11 SB700 register reference available at:
12 http://support.amd.com/us/Embedded_TechDocs/43009_sb7xx_rrg_pub_1.00.pdf
13 * AMD SP5100 (SB700 derivative found on some server mainboards)
14 Datasheet: Publicly available at the AMD website
15 http://support.amd.com/us/Embedded_TechDocs/44413.pdf
11 * AMD Hudson-2 16 * AMD Hudson-2
12 Datasheet: Not publicly available 17 Datasheet: Not publicly available
13 * Standard Microsystems (SMSC) SLC90E66 (Victory66) southbridge 18 * Standard Microsystems (SMSC) SLC90E66 (Victory66) southbridge
@@ -68,6 +73,10 @@ this driver on those mainboards.
68The ServerWorks Southbridges, the Intel 440MX, and the Victory66 are 73The ServerWorks Southbridges, the Intel 440MX, and the Victory66 are
69identical to the PIIX4 in I2C/SMBus support. 74identical to the PIIX4 in I2C/SMBus support.
70 75
76The AMD SB700 and SP5100 chipsets implement two PIIX4-compatible SMBus
77controllers. If your BIOS initializes the secondary controller, it will
78be detected by this driver as an "Auxiliary SMBus Host Controller".
79
71If you own Force CPCI735 motherboard or other OSB4 based systems you may need 80If you own Force CPCI735 motherboard or other OSB4 based systems you may need
72to change the SMBus Interrupt Select register so the SMBus controller uses 81to change the SMBus Interrupt Select register so the SMBus controller uses
73the SMI mode. 82the SMI mode.
diff --git a/Documentation/i2c/writing-clients b/Documentation/i2c/writing-clients
index 5aa53374ea2a..3a94b0e6f601 100644
--- a/Documentation/i2c/writing-clients
+++ b/Documentation/i2c/writing-clients
@@ -245,21 +245,17 @@ static int __init foo_init(void)
245{ 245{
246 return i2c_add_driver(&foo_driver); 246 return i2c_add_driver(&foo_driver);
247} 247}
248module_init(foo_init);
248 249
249static void __exit foo_cleanup(void) 250static void __exit foo_cleanup(void)
250{ 251{
251 i2c_del_driver(&foo_driver); 252 i2c_del_driver(&foo_driver);
252} 253}
254module_exit(foo_cleanup);
253 255
254/* Substitute your own name and email address */ 256The module_i2c_driver() macro can be used to reduce above code.
255MODULE_AUTHOR("Frodo Looijaard <frodol@dds.nl>"
256MODULE_DESCRIPTION("Driver for Barf Inc. Foo I2C devices");
257
258/* a few non-GPL license types are also allowed */
259MODULE_LICENSE("GPL");
260 257
261module_init(foo_init); 258module_i2c_driver(foo_driver);
262module_exit(foo_cleanup);
263 259
264Note that some functions are marked by `__init'. These functions can 260Note that some functions are marked by `__init'. These functions can
265be removed after kernel booting (or module loading) is completed. 261be removed after kernel booting (or module loading) is completed.
@@ -267,6 +263,17 @@ Likewise, functions marked by `__exit' are dropped by the compiler when
267the code is built into the kernel, as they would never be called. 263the code is built into the kernel, as they would never be called.
268 264
269 265
266Driver Information
267==================
268
269/* Substitute your own name and email address */
270MODULE_AUTHOR("Frodo Looijaard <frodol@dds.nl>"
271MODULE_DESCRIPTION("Driver for Barf Inc. Foo I2C devices");
272
273/* a few non-GPL license types are also allowed */
274MODULE_LICENSE("GPL");
275
276
270Power Management 277Power Management
271================ 278================
272 279
diff --git a/Documentation/input/multi-touch-protocol.txt b/Documentation/input/multi-touch-protocol.txt
index 543101c5bf26..2c179613f81b 100644
--- a/Documentation/input/multi-touch-protocol.txt
+++ b/Documentation/input/multi-touch-protocol.txt
@@ -162,26 +162,48 @@ are divided into categories, to allow for partial implementation. The
162minimum set consists of ABS_MT_POSITION_X and ABS_MT_POSITION_Y, which 162minimum set consists of ABS_MT_POSITION_X and ABS_MT_POSITION_Y, which
163allows for multiple contacts to be tracked. If the device supports it, the 163allows for multiple contacts to be tracked. If the device supports it, the
164ABS_MT_TOUCH_MAJOR and ABS_MT_WIDTH_MAJOR may be used to provide the size 164ABS_MT_TOUCH_MAJOR and ABS_MT_WIDTH_MAJOR may be used to provide the size
165of the contact area and approaching contact, respectively. 165of the contact area and approaching tool, respectively.
166 166
167The TOUCH and WIDTH parameters have a geometrical interpretation; imagine 167The TOUCH and WIDTH parameters have a geometrical interpretation; imagine
168looking through a window at someone gently holding a finger against the 168looking through a window at someone gently holding a finger against the
169glass. You will see two regions, one inner region consisting of the part 169glass. You will see two regions, one inner region consisting of the part
170of the finger actually touching the glass, and one outer region formed by 170of the finger actually touching the glass, and one outer region formed by
171the perimeter of the finger. The diameter of the inner region is the 171the perimeter of the finger. The center of the touching region (a) is
172ABS_MT_TOUCH_MAJOR, the diameter of the outer region is 172ABS_MT_POSITION_X/Y and the center of the approaching finger (b) is
173ABS_MT_WIDTH_MAJOR. Now imagine the person pressing the finger harder 173ABS_MT_TOOL_X/Y. The touch diameter is ABS_MT_TOUCH_MAJOR and the finger
174against the glass. The inner region will increase, and in general, the 174diameter is ABS_MT_WIDTH_MAJOR. Now imagine the person pressing the finger
175ratio ABS_MT_TOUCH_MAJOR / ABS_MT_WIDTH_MAJOR, which is always smaller than 175harder against the glass. The touch region will increase, and in general,
176unity, is related to the contact pressure. For pressure-based devices, 176the ratio ABS_MT_TOUCH_MAJOR / ABS_MT_WIDTH_MAJOR, which is always smaller
177than unity, is related to the contact pressure. For pressure-based devices,
177ABS_MT_PRESSURE may be used to provide the pressure on the contact area 178ABS_MT_PRESSURE may be used to provide the pressure on the contact area
178instead. Devices capable of contact hovering can use ABS_MT_DISTANCE to 179instead. Devices capable of contact hovering can use ABS_MT_DISTANCE to
179indicate the distance between the contact and the surface. 180indicate the distance between the contact and the surface.
180 181
181In addition to the MAJOR parameters, the oval shape of the contact can be 182
182described by adding the MINOR parameters, such that MAJOR and MINOR are the 183 Linux MT Win8
183major and minor axis of an ellipse. Finally, the orientation of the oval 184 __________ _______________________
184shape can be describe with the ORIENTATION parameter. 185 / \ | |
186 / \ | |
187 / ____ \ | |
188 / / \ \ | |
189 \ \ a \ \ | a |
190 \ \____/ \ | |
191 \ \ | |
192 \ b \ | b |
193 \ \ | |
194 \ \ | |
195 \ \ | |
196 \ / | |
197 \ / | |
198 \ / | |
199 \__________/ |_______________________|
200
201
202In addition to the MAJOR parameters, the oval shape of the touch and finger
203regions can be described by adding the MINOR parameters, such that MAJOR
204and MINOR are the major and minor axis of an ellipse. The orientation of
205the touch ellipse can be described with the ORIENTATION parameter, and the
206direction of the finger ellipse is given by the vector (a - b).
185 207
186For type A devices, further specification of the touch shape is possible 208For type A devices, further specification of the touch shape is possible
187via ABS_MT_BLOB_ID. 209via ABS_MT_BLOB_ID.
@@ -224,7 +246,7 @@ tool. Omit if circular [4].
224The above four values can be used to derive additional information about 246The above four values can be used to derive additional information about
225the contact. The ratio ABS_MT_TOUCH_MAJOR / ABS_MT_WIDTH_MAJOR approximates 247the contact. The ratio ABS_MT_TOUCH_MAJOR / ABS_MT_WIDTH_MAJOR approximates
226the notion of pressure. The fingers of the hand and the palm all have 248the notion of pressure. The fingers of the hand and the palm all have
227different characteristic widths [1]. 249different characteristic widths.
228 250
229ABS_MT_PRESSURE 251ABS_MT_PRESSURE
230 252
@@ -240,17 +262,24 @@ the contact is hovering above the surface.
240 262
241ABS_MT_ORIENTATION 263ABS_MT_ORIENTATION
242 264
243The orientation of the ellipse. The value should describe a signed quarter 265The orientation of the touching ellipse. The value should describe a signed
244of a revolution clockwise around the touch center. The signed value range 266quarter of a revolution clockwise around the touch center. The signed value
245is arbitrary, but zero should be returned for a finger aligned along the Y 267range is arbitrary, but zero should be returned for an ellipse aligned with
246axis of the surface, a negative value when finger is turned to the left, and 268the Y axis of the surface, a negative value when the ellipse is turned to
247a positive value when finger turned to the right. When completely aligned with 269the left, and a positive value when the ellipse is turned to the
248the X axis, the range max should be returned. Orientation can be omitted 270right. When completely aligned with the X axis, the range max should be
249if the touching object is circular, or if the information is not available 271returned.
250in the kernel driver. Partial orientation support is possible if the device 272
251can distinguish between the two axis, but not (uniquely) any values in 273Touch ellipsis are symmetrical by default. For devices capable of true 360
252between. In such cases, the range of ABS_MT_ORIENTATION should be [0, 1] 274degree orientation, the reported orientation must exceed the range max to
253[4]. 275indicate more than a quarter of a revolution. For an upside-down finger,
276range max * 2 should be returned.
277
278Orientation can be omitted if the touch area is circular, or if the
279information is not available in the kernel driver. Partial orientation
280support is possible if the device can distinguish between the two axis, but
281not (uniquely) any values in between. In such cases, the range of
282ABS_MT_ORIENTATION should be [0, 1] [4].
254 283
255ABS_MT_POSITION_X 284ABS_MT_POSITION_X
256 285
@@ -260,6 +289,23 @@ ABS_MT_POSITION_Y
260 289
261The surface Y coordinate of the center of the touching ellipse. 290The surface Y coordinate of the center of the touching ellipse.
262 291
292ABS_MT_TOOL_X
293
294The surface X coordinate of the center of the approaching tool. Omit if
295the device cannot distinguish between the intended touch point and the
296tool itself.
297
298ABS_MT_TOOL_Y
299
300The surface Y coordinate of the center of the approaching tool. Omit if the
301device cannot distinguish between the intended touch point and the tool
302itself.
303
304The four position values can be used to separate the position of the touch
305from the position of the tool. If both positions are present, the major
306tool axis points towards the touch point [1]. Otherwise, the tool axes are
307aligned with the touch axes.
308
263ABS_MT_TOOL_TYPE 309ABS_MT_TOOL_TYPE
264 310
265The type of approaching tool. A lot of kernel drivers cannot distinguish 311The type of approaching tool. A lot of kernel drivers cannot distinguish
@@ -305,6 +351,28 @@ The range of ABS_MT_ORIENTATION should be set to [0, 1], to indicate that
305the device can distinguish between a finger along the Y axis (0) and a 351the device can distinguish between a finger along the Y axis (0) and a
306finger along the X axis (1). 352finger along the X axis (1).
307 353
354For win8 devices with both T and C coordinates, the position mapping is
355
356 ABS_MT_POSITION_X := T_X
357 ABS_MT_POSITION_Y := T_Y
358 ABS_MT_TOOL_X := C_X
359 ABS_MT_TOOL_X := C_Y
360
361Unfortunately, there is not enough information to specify both the touching
362ellipse and the tool ellipse, so one has to resort to approximations. One
363simple scheme, which is compatible with earlier usage, is:
364
365 ABS_MT_TOUCH_MAJOR := min(X, Y)
366 ABS_MT_TOUCH_MINOR := <not used>
367 ABS_MT_ORIENTATION := <not used>
368 ABS_MT_WIDTH_MAJOR := min(X, Y) + distance(T, C)
369 ABS_MT_WIDTH_MINOR := min(X, Y)
370
371Rationale: We have no information about the orientation of the touching
372ellipse, so approximate it with an inscribed circle instead. The tool
373ellipse should align with the the vector (T - C), so the diameter must
374increase with distance(T, C). Finally, assume that the touch diameter is
375equal to the tool thickness, and we arrive at the formulas above.
308 376
309Finger Tracking 377Finger Tracking
310--------------- 378---------------
@@ -338,9 +406,7 @@ subsequent events of the same type refer to different fingers.
338For example usage of the type A protocol, see the bcm5974 driver. For 406For example usage of the type A protocol, see the bcm5974 driver. For
339example usage of the type B protocol, see the hid-egalax driver. 407example usage of the type B protocol, see the hid-egalax driver.
340 408
341[1] With the extension ABS_MT_APPROACH_X and ABS_MT_APPROACH_Y, the 409[1] Also, the difference (TOOL_X - POSITION_X) can be used to model tilt.
342difference between the contact position and the approaching tool position
343could be used to derive tilt.
344[2] The list can of course be extended. 410[2] The list can of course be extended.
345[3] The mtdev project: http://bitmath.org/code/mtdev/. 411[3] The mtdev project: http://bitmath.org/code/mtdev/.
346[4] See the section on event computation. 412[4] See the section on event computation.
diff --git a/Documentation/kdump/kdump.txt b/Documentation/kdump/kdump.txt
index 506c7390c2b9..13f1aa09b938 100644
--- a/Documentation/kdump/kdump.txt
+++ b/Documentation/kdump/kdump.txt
@@ -86,7 +86,7 @@ There is also a gitweb interface available at
86http://www.kernel.org/git/?p=utils/kernel/kexec/kexec-tools.git 86http://www.kernel.org/git/?p=utils/kernel/kexec/kexec-tools.git
87 87
88More information about kexec-tools can be found at 88More information about kexec-tools can be found at
89http://www.kernel.org/pub/linux/utils/kernel/kexec/README.html 89http://horms.net/projects/kexec/
90 90
913) Unpack the tarball with the tar command, as follows: 913) Unpack the tarball with the tar command, as follows:
92 92
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index a92c5ebf373e..c2619ef44a72 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1134,7 +1134,6 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
1134 forcesac 1134 forcesac
1135 soft 1135 soft
1136 pt [x86, IA-64] 1136 pt [x86, IA-64]
1137 group_mf [x86, IA-64]
1138 1137
1139 1138
1140 io7= [HW] IO7 for Marvel based alpha systems 1139 io7= [HW] IO7 for Marvel based alpha systems
@@ -2367,6 +2366,11 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
2367 Set maximum number of finished RCU callbacks to process 2366 Set maximum number of finished RCU callbacks to process
2368 in one batch. 2367 in one batch.
2369 2368
2369 rcutree.fanout_leaf= [KNL,BOOT]
2370 Increase the number of CPUs assigned to each
2371 leaf rcu_node structure. Useful for very large
2372 systems.
2373
2370 rcutree.qhimark= [KNL,BOOT] 2374 rcutree.qhimark= [KNL,BOOT]
2371 Set threshold of queued 2375 Set threshold of queued
2372 RCU callbacks over which batch limiting is disabled. 2376 RCU callbacks over which batch limiting is disabled.
@@ -2932,6 +2936,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
2932 initial READ(10) command); 2936 initial READ(10) command);
2933 o = CAPACITY_OK (accept the capacity 2937 o = CAPACITY_OK (accept the capacity
2934 reported by the device); 2938 reported by the device);
2939 p = WRITE_CACHE (the device cache is ON
2940 by default);
2935 r = IGNORE_RESIDUE (the device reports 2941 r = IGNORE_RESIDUE (the device reports
2936 bogus residue values); 2942 bogus residue values);
2937 s = SINGLE_LUN (the device has only one 2943 s = SINGLE_LUN (the device has only one
diff --git a/Documentation/laptops/asus-laptop.txt b/Documentation/laptops/asus-laptop.txt
index a1e04d679289..69f9fb3701e0 100644
--- a/Documentation/laptops/asus-laptop.txt
+++ b/Documentation/laptops/asus-laptop.txt
@@ -151,8 +151,7 @@ Display switching
151 151
152 Debugging: 152 Debugging:
153 1) Check whether the Fn+F8 key: 153 1) Check whether the Fn+F8 key:
154 a) does not lock the laptop (try disabling CONFIG_X86_UP_APIC or boot with 154 a) does not lock the laptop (try a boot with noapic / nolapic if it does)
155 noapic / nolapic if it does)
156 b) generates events (0x6n, where n is the value corresponding to the 155 b) generates events (0x6n, where n is the value corresponding to the
157 configuration above) 156 configuration above)
158 c) actually works 157 c) actually works
diff --git a/Documentation/misc-devices/mei/mei.txt b/Documentation/misc-devices/mei/mei.txt
index 2785697da59d..6ec702950719 100644
--- a/Documentation/misc-devices/mei/mei.txt
+++ b/Documentation/misc-devices/mei/mei.txt
@@ -50,25 +50,25 @@ Intel MEI Driver
50The driver exposes a misc device called /dev/mei. 50The driver exposes a misc device called /dev/mei.
51 51
52An application maintains communication with an Intel ME feature while 52An application maintains communication with an Intel ME feature while
53/dev/mei is open. The binding to a specific features is performed by calling 53/dev/mei is open. The binding to a specific feature is performed by calling
54MEI_CONNECT_CLIENT_IOCTL, which passes the desired UUID. 54MEI_CONNECT_CLIENT_IOCTL, which passes the desired UUID.
55The number of instances of an Intel ME feature that can be opened 55The number of instances of an Intel ME feature that can be opened
56at the same time depends on the Intel ME feature, but most of the 56at the same time depends on the Intel ME feature, but most of the
57features allow only a single instance. 57features allow only a single instance.
58 58
59The Intel AMT Host Interface (Intel AMTHI) feature supports multiple 59The Intel AMT Host Interface (Intel AMTHI) feature supports multiple
60simultaneous user applications. Therefore, the Intel MEI driver handles 60simultaneous user connected applications. The Intel MEI driver
61this internally by maintaining request queues for the applications. 61handles this internally by maintaining request queues for the applications.
62 62
63The driver is oblivious to data that is passed between firmware feature 63The driver is transparent to data that are passed between firmware feature
64and host application. 64and host application.
65 65
66Because some of the Intel ME features can change the system 66Because some of the Intel ME features can change the system
67configuration, the driver by default allows only a privileged 67configuration, the driver by default allows only a privileged
68user to access it. 68user to access it.
69 69
70A code snippet for an application communicating with 70A code snippet for an application communicating with Intel AMTHI client:
71Intel AMTHI client: 71
72 struct mei_connect_client_data data; 72 struct mei_connect_client_data data;
73 fd = open(MEI_DEVICE); 73 fd = open(MEI_DEVICE);
74 74
@@ -185,7 +185,7 @@ The Intel AMT Watchdog is composed of two parts:
185 2) Intel MEI driver - connects to the watchdog feature, configures the 185 2) Intel MEI driver - connects to the watchdog feature, configures the
186 watchdog and sends the heartbeats. 186 watchdog and sends the heartbeats.
187 187
188The Intel MEI driver uses the kernel watchdog to configure the Intel AMT 188The Intel MEI driver uses the kernel watchdog API to configure the Intel AMT
189Watchdog and to send heartbeats to it. The default timeout of the 189Watchdog and to send heartbeats to it. The default timeout of the
190watchdog is 120 seconds. 190watchdog is 120 seconds.
191 191
diff --git a/Documentation/networking/batman-adv.txt b/Documentation/networking/batman-adv.txt
index 75a592365af9..8f3ae4a6147e 100644
--- a/Documentation/networking/batman-adv.txt
+++ b/Documentation/networking/batman-adv.txt
@@ -211,6 +211,11 @@ The debug output can be changed at runtime using the file
211 211
212will enable debug messages for when routes change. 212will enable debug messages for when routes change.
213 213
214Counters for different types of packets entering and leaving the
215batman-adv module are available through ethtool:
216
217# ethtool --statistics bat0
218
214 219
215BATCTL 220BATCTL
216------ 221------
diff --git a/Documentation/networking/bonding.txt b/Documentation/networking/bonding.txt
index bfea8a338901..6b1c7110534e 100644
--- a/Documentation/networking/bonding.txt
+++ b/Documentation/networking/bonding.txt
@@ -1210,7 +1210,7 @@ options, you may wish to use the "max_bonds" module parameter,
1210documented above. 1210documented above.
1211 1211
1212 To create multiple bonding devices with differing options, it is 1212 To create multiple bonding devices with differing options, it is
1213preferrable to use bonding parameters exported by sysfs, documented in the 1213preferable to use bonding parameters exported by sysfs, documented in the
1214section below. 1214section below.
1215 1215
1216 For versions of bonding without sysfs support, the only means to 1216 For versions of bonding without sysfs support, the only means to
@@ -1950,7 +1950,7 @@ access to fail over to. Additionally, the bonding load balance modes
1950support link monitoring of their members, so if individual links fail, 1950support link monitoring of their members, so if individual links fail,
1951the load will be rebalanced across the remaining devices. 1951the load will be rebalanced across the remaining devices.
1952 1952
1953 See Section 13, "Configuring Bonding for Maximum Throughput" 1953 See Section 12, "Configuring Bonding for Maximum Throughput"
1954for information on configuring bonding with one peer device. 1954for information on configuring bonding with one peer device.
1955 1955
195611.2 High Availability in a Multiple Switch Topology 195611.2 High Availability in a Multiple Switch Topology
@@ -2620,7 +2620,7 @@ be found at:
2620 2620
2621https://lists.sourceforge.net/lists/listinfo/bonding-devel 2621https://lists.sourceforge.net/lists/listinfo/bonding-devel
2622 2622
2623 Discussions regarding the developpement of the bonding driver take place 2623 Discussions regarding the development of the bonding driver take place
2624on the main Linux network mailing list, hosted at vger.kernel.org. The list 2624on the main Linux network mailing list, hosted at vger.kernel.org. The list
2625address is: 2625address is:
2626 2626
diff --git a/Documentation/networking/bridge.txt b/Documentation/networking/bridge.txt
index a7ba5e4e2c91..a27cb6214ed7 100644
--- a/Documentation/networking/bridge.txt
+++ b/Documentation/networking/bridge.txt
@@ -1,7 +1,14 @@
1In order to use the Ethernet bridging functionality, you'll need the 1In order to use the Ethernet bridging functionality, you'll need the
2userspace tools. These programs and documentation are available 2userspace tools.
3at http://www.linuxfoundation.org/en/Net:Bridge. The download page is 3
4http://prdownloads.sourceforge.net/bridge. 4Documentation for Linux bridging is on:
5 http://www.linuxfoundation.org/collaborate/workgroups/networking/bridge
6
7The bridge-utilities are maintained at:
8 git://git.kernel.org/pub/scm/linux/kernel/git/shemminger/bridge-utils.git
9
10Additionally, the iproute2 utilities can be used to configure
11bridge devices.
5 12
6If you still have questions, don't hesitate to post to the mailing list 13If you still have questions, don't hesitate to post to the mailing list
7(more info https://lists.linux-foundation.org/mailman/listinfo/bridge). 14(more info https://lists.linux-foundation.org/mailman/listinfo/bridge).
diff --git a/Documentation/networking/caif/Linux-CAIF.txt b/Documentation/networking/caif/Linux-CAIF.txt
index e52fd62bef3a..0aa4bd381bec 100644
--- a/Documentation/networking/caif/Linux-CAIF.txt
+++ b/Documentation/networking/caif/Linux-CAIF.txt
@@ -19,60 +19,36 @@ and host. Currently, UART and Loopback are available for Linux.
19Architecture: 19Architecture:
20------------ 20------------
21The implementation of CAIF is divided into: 21The implementation of CAIF is divided into:
22* CAIF Socket Layer, Kernel API, and Net Device. 22* CAIF Socket Layer and GPRS IP Interface.
23* CAIF Core Protocol Implementation 23* CAIF Core Protocol Implementation
24* CAIF Link Layer, implemented as NET devices. 24* CAIF Link Layer, implemented as NET devices.
25 25
26 26
27 RTNL 27 RTNL
28 ! 28 !
29 ! +------+ +------+ +------+ 29 ! +------+ +------+
30 ! +------+! +------+! +------+! 30 ! +------+! +------+!
31 ! ! Sock !! !Kernel!! ! Net !! 31 ! ! IP !! !Socket!!
32 ! ! API !+ ! API !+ ! Dev !+ <- CAIF Client APIs 32 +-------> !interf!+ ! API !+ <- CAIF Client APIs
33 ! +------+ +------! +------+ 33 ! +------+ +------!
34 ! ! ! ! 34 ! ! !
35 ! +----------!----------+ 35 ! +-----------+
36 ! +------+ <- CAIF Protocol Implementation 36 ! !
37 +-------> ! CAIF ! 37 ! +------+ <- CAIF Core Protocol
38 ! Core ! 38 ! ! CAIF !
39 +------+ 39 ! ! Core !
40 +--------!--------+ 40 ! +------+
41 ! ! 41 ! +----------!---------+
42 +------+ +-----+ 42 ! ! ! !
43 ! ! ! TTY ! <- Link Layer (Net Devices) 43 ! +------+ +-----+ +------+
44 +------+ +-----+ 44 +--> ! HSI ! ! TTY ! ! USB ! <- Link Layer (Net Devices)
45 45 +------+ +-----+ +------+
46 46
47Using the Kernel API
48----------------------
49The Kernel API is used for accessing CAIF channels from the
50kernel.
51The user of the API has to implement two callbacks for receive
52and control.
53The receive callback gives a CAIF packet as a SKB. The control
54callback will
55notify of channel initialization complete, and flow-on/flow-
56off.
57
58
59 struct caif_device caif_dev = {
60 .caif_config = {
61 .name = "MYDEV"
62 .type = CAIF_CHTY_AT
63 }
64 .receive_cb = my_receive,
65 .control_cb = my_control,
66 };
67 caif_add_device(&caif_dev);
68 caif_transmit(&caif_dev, skb);
69
70See the caif_kernel.h for details about the CAIF kernel API.
71 47
72 48
73I M P L E M E N T A T I O N 49I M P L E M E N T A T I O N
74=========================== 50===========================
75=========================== 51
76 52
77CAIF Core Protocol Layer 53CAIF Core Protocol Layer
78========================================= 54=========================================
@@ -88,17 +64,13 @@ The Core CAIF implementation contains:
88 - Simple implementation of CAIF. 64 - Simple implementation of CAIF.
89 - Layered architecture (a la Streams), each layer in the CAIF 65 - Layered architecture (a la Streams), each layer in the CAIF
90 specification is implemented in a separate c-file. 66 specification is implemented in a separate c-file.
91 - Clients must implement PHY layer to access physical HW
92 with receive and transmit functions.
93 - Clients must call configuration function to add PHY layer. 67 - Clients must call configuration function to add PHY layer.
94 - Clients must implement CAIF layer to consume/produce 68 - Clients must implement CAIF layer to consume/produce
95 CAIF payload with receive and transmit functions. 69 CAIF payload with receive and transmit functions.
96 - Clients must call configuration function to add and connect the 70 - Clients must call configuration function to add and connect the
97 Client layer. 71 Client layer.
98 - When receiving / transmitting CAIF Packets (cfpkt), ownership is passed 72 - When receiving / transmitting CAIF Packets (cfpkt), ownership is passed
99 to the called function (except for framing layers' receive functions 73 to the called function (except for framing layers' receive function)
100 or if a transmit function returns an error, in which case the caller
101 must free the packet).
102 74
103Layered Architecture 75Layered Architecture
104-------------------- 76--------------------
@@ -109,11 +81,6 @@ Implementation. The support functions include:
109 CAIF Packet has functions for creating, destroying and adding content 81 CAIF Packet has functions for creating, destroying and adding content
110 and for adding/extracting header and trailers to protocol packets. 82 and for adding/extracting header and trailers to protocol packets.
111 83
112 - CFLST CAIF list implementation.
113
114 - CFGLUE CAIF Glue. Contains OS Specifics, such as memory
115 allocation, endianness, etc.
116
117The CAIF Protocol implementation contains: 84The CAIF Protocol implementation contains:
118 85
119 - CFCNFG CAIF Configuration layer. Configures the CAIF Protocol 86 - CFCNFG CAIF Configuration layer. Configures the CAIF Protocol
@@ -128,7 +95,7 @@ The CAIF Protocol implementation contains:
128 control and remote shutdown requests. 95 control and remote shutdown requests.
129 96
130 - CFVEI CAIF VEI layer. Handles CAIF AT Channels on VEI (Virtual 97 - CFVEI CAIF VEI layer. Handles CAIF AT Channels on VEI (Virtual
131 External Interface). This layer encodes/decodes VEI frames. 98 External Interface). This layer encodes/decodes VEI frames.
132 99
133 - CFDGML CAIF Datagram layer. Handles CAIF Datagram layer (IP 100 - CFDGML CAIF Datagram layer. Handles CAIF Datagram layer (IP
134 traffic), encodes/decodes Datagram frames. 101 traffic), encodes/decodes Datagram frames.
@@ -170,7 +137,7 @@ The CAIF Protocol implementation contains:
170 +---------+ +---------+ 137 +---------+ +---------+
171 ! ! 138 ! !
172 +---------+ +---------+ 139 +---------+ +---------+
173 | | | Serial | 140 | | | Serial |
174 | | | CFSERL | 141 | | | CFSERL |
175 +---------+ +---------+ 142 +---------+ +---------+
176 143
@@ -186,24 +153,20 @@ In this layered approach the following "rules" apply.
186 layer->dn->transmit(layer->dn, packet); 153 layer->dn->transmit(layer->dn, packet);
187 154
188 155
189Linux Driver Implementation 156CAIF Socket and IP interface
190=========================== 157===========================
191 158
192Linux GPRS Net Device and CAIF socket are implemented on top of the 159The IP interface and CAIF socket API are implemented on top of the
193CAIF Core protocol. The Net device and CAIF socket have an instance of 160CAIF Core protocol. The IP Interface and CAIF socket have an instance of
194'struct cflayer', just like the CAIF Core protocol stack. 161'struct cflayer', just like the CAIF Core protocol stack.
195Net device and Socket implement the 'receive()' function defined by 162Net device and Socket implement the 'receive()' function defined by
196'struct cflayer', just like the rest of the CAIF stack. In this way, transmit and 163'struct cflayer', just like the rest of the CAIF stack. In this way, transmit and
197receive of packets is handled as by the rest of the layers: the 'dn->transmit()' 164receive of packets is handled as by the rest of the layers: the 'dn->transmit()'
198function is called in order to transmit data. 165function is called in order to transmit data.
199 166
200The layer on top of the CAIF Core implementation is
201sometimes referred to as the "Client layer".
202
203
204Configuration of Link Layer 167Configuration of Link Layer
205--------------------------- 168---------------------------
206The Link Layer is implemented as Linux net devices (struct net_device). 169The Link Layer is implemented as Linux network devices (struct net_device).
207Payload handling and registration is done using standard Linux mechanisms. 170Payload handling and registration is done using standard Linux mechanisms.
208 171
209The CAIF Protocol relies on a loss-less link layer without implementing 172The CAIF Protocol relies on a loss-less link layer without implementing
diff --git a/Documentation/networking/can.txt b/Documentation/networking/can.txt
index ac295399f0d4..820f55344edc 100644
--- a/Documentation/networking/can.txt
+++ b/Documentation/networking/can.txt
@@ -22,7 +22,8 @@ This file contains
22 4.1.2 RAW socket option CAN_RAW_ERR_FILTER 22 4.1.2 RAW socket option CAN_RAW_ERR_FILTER
23 4.1.3 RAW socket option CAN_RAW_LOOPBACK 23 4.1.3 RAW socket option CAN_RAW_LOOPBACK
24 4.1.4 RAW socket option CAN_RAW_RECV_OWN_MSGS 24 4.1.4 RAW socket option CAN_RAW_RECV_OWN_MSGS
25 4.1.5 RAW socket returned message flags 25 4.1.5 RAW socket option CAN_RAW_FD_FRAMES
26 4.1.6 RAW socket returned message flags
26 4.2 Broadcast Manager protocol sockets (SOCK_DGRAM) 27 4.2 Broadcast Manager protocol sockets (SOCK_DGRAM)
27 4.3 connected transport protocols (SOCK_SEQPACKET) 28 4.3 connected transport protocols (SOCK_SEQPACKET)
28 4.4 unconnected transport protocols (SOCK_DGRAM) 29 4.4 unconnected transport protocols (SOCK_DGRAM)
@@ -41,7 +42,8 @@ This file contains
41 6.5.1 Netlink interface to set/get devices properties 42 6.5.1 Netlink interface to set/get devices properties
42 6.5.2 Setting the CAN bit-timing 43 6.5.2 Setting the CAN bit-timing
43 6.5.3 Starting and stopping the CAN network device 44 6.5.3 Starting and stopping the CAN network device
44 6.6 supported CAN hardware 45 6.6 CAN FD (flexible data rate) driver support
46 6.7 supported CAN hardware
45 47
46 7 Socket CAN resources 48 7 Socket CAN resources
47 49
@@ -232,16 +234,16 @@ solution for a couple of reasons:
232 arbitration problems and error frames caused by the different 234 arbitration problems and error frames caused by the different
233 ECUs. The occurrence of detected errors are important for diagnosis 235 ECUs. The occurrence of detected errors are important for diagnosis
234 and have to be logged together with the exact timestamp. For this 236 and have to be logged together with the exact timestamp. For this
235 reason the CAN interface driver can generate so called Error Frames 237 reason the CAN interface driver can generate so called Error Message
236 that can optionally be passed to the user application in the same 238 Frames that can optionally be passed to the user application in the
237 way as other CAN frames. Whenever an error on the physical layer 239 same way as other CAN frames. Whenever an error on the physical layer
238 or the MAC layer is detected (e.g. by the CAN controller) the driver 240 or the MAC layer is detected (e.g. by the CAN controller) the driver
239 creates an appropriate error frame. Error frames can be requested by 241 creates an appropriate error message frame. Error messages frames can
240 the user application using the common CAN filter mechanisms. Inside 242 be requested by the user application using the common CAN filter
241 this filter definition the (interested) type of errors may be 243 mechanisms. Inside this filter definition the (interested) type of
242 selected. The reception of error frames is disabled by default. 244 errors may be selected. The reception of error messages is disabled
243 The format of the CAN error frame is briefly described in the Linux 245 by default. The format of the CAN error message frame is briefly
244 header file "include/linux/can/error.h". 246 described in the Linux header file "include/linux/can/error.h".
245 247
2464. How to use Socket CAN 2484. How to use Socket CAN
247------------------------ 249------------------------
@@ -273,7 +275,7 @@ solution for a couple of reasons:
273 275
274 struct can_frame { 276 struct can_frame {
275 canid_t can_id; /* 32 bit CAN_ID + EFF/RTR/ERR flags */ 277 canid_t can_id; /* 32 bit CAN_ID + EFF/RTR/ERR flags */
276 __u8 can_dlc; /* data length code: 0 .. 8 */ 278 __u8 can_dlc; /* frame payload length in byte (0 .. 8) */
277 __u8 data[8] __attribute__((aligned(8))); 279 __u8 data[8] __attribute__((aligned(8)));
278 }; 280 };
279 281
@@ -375,6 +377,51 @@ solution for a couple of reasons:
375 nbytes = sendto(s, &frame, sizeof(struct can_frame), 377 nbytes = sendto(s, &frame, sizeof(struct can_frame),
376 0, (struct sockaddr*)&addr, sizeof(addr)); 378 0, (struct sockaddr*)&addr, sizeof(addr));
377 379
380 Remark about CAN FD (flexible data rate) support:
381
382 Generally the handling of CAN FD is very similar to the formerly described
383 examples. The new CAN FD capable CAN controllers support two different
384 bitrates for the arbitration phase and the payload phase of the CAN FD frame
385 and up to 64 bytes of payload. This extended payload length breaks all the
386 kernel interfaces (ABI) which heavily rely on the CAN frame with fixed eight
387 bytes of payload (struct can_frame) like the CAN_RAW socket. Therefore e.g.
388 the CAN_RAW socket supports a new socket option CAN_RAW_FD_FRAMES that
389 switches the socket into a mode that allows the handling of CAN FD frames
390 and (legacy) CAN frames simultaneously (see section 4.1.5).
391
392 The struct canfd_frame is defined in include/linux/can.h:
393
394 struct canfd_frame {
395 canid_t can_id; /* 32 bit CAN_ID + EFF/RTR/ERR flags */
396 __u8 len; /* frame payload length in byte (0 .. 64) */
397 __u8 flags; /* additional flags for CAN FD */
398 __u8 __res0; /* reserved / padding */
399 __u8 __res1; /* reserved / padding */
400 __u8 data[64] __attribute__((aligned(8)));
401 };
402
403 The struct canfd_frame and the existing struct can_frame have the can_id,
404 the payload length and the payload data at the same offset inside their
405 structures. This allows to handle the different structures very similar.
406 When the content of a struct can_frame is copied into a struct canfd_frame
407 all structure elements can be used as-is - only the data[] becomes extended.
408
409 When introducing the struct canfd_frame it turned out that the data length
410 code (DLC) of the struct can_frame was used as a length information as the
411 length and the DLC has a 1:1 mapping in the range of 0 .. 8. To preserve
412 the easy handling of the length information the canfd_frame.len element
413 contains a plain length value from 0 .. 64. So both canfd_frame.len and
414 can_frame.can_dlc are equal and contain a length information and no DLC.
415 For details about the distinction of CAN and CAN FD capable devices and
416 the mapping to the bus-relevant data length code (DLC), see chapter 6.6.
417
418 The length of the two CAN(FD) frame structures define the maximum transfer
419 unit (MTU) of the CAN(FD) network interface and skbuff data length. Two
420 definitions are specified for CAN specific MTUs in include/linux/can.h :
421
422 #define CAN_MTU (sizeof(struct can_frame)) == 16 => 'legacy' CAN frame
423 #define CANFD_MTU (sizeof(struct canfd_frame)) == 72 => CAN FD frame
424
378 4.1 RAW protocol sockets with can_filters (SOCK_RAW) 425 4.1 RAW protocol sockets with can_filters (SOCK_RAW)
379 426
380 Using CAN_RAW sockets is extensively comparable to the commonly 427 Using CAN_RAW sockets is extensively comparable to the commonly
@@ -383,7 +430,7 @@ solution for a couple of reasons:
383 defaults are set at RAW socket binding time: 430 defaults are set at RAW socket binding time:
384 431
385 - The filters are set to exactly one filter receiving everything 432 - The filters are set to exactly one filter receiving everything
386 - The socket only receives valid data frames (=> no error frames) 433 - The socket only receives valid data frames (=> no error message frames)
387 - The loopback of sent CAN frames is enabled (see chapter 3.2) 434 - The loopback of sent CAN frames is enabled (see chapter 3.2)
388 - The socket does not receive its own sent frames (in loopback mode) 435 - The socket does not receive its own sent frames (in loopback mode)
389 436
@@ -434,7 +481,7 @@ solution for a couple of reasons:
434 4.1.2 RAW socket option CAN_RAW_ERR_FILTER 481 4.1.2 RAW socket option CAN_RAW_ERR_FILTER
435 482
436 As described in chapter 3.4 the CAN interface driver can generate so 483 As described in chapter 3.4 the CAN interface driver can generate so
437 called Error Frames that can optionally be passed to the user 484 called Error Message Frames that can optionally be passed to the user
438 application in the same way as other CAN frames. The possible 485 application in the same way as other CAN frames. The possible
439 errors are divided into different error classes that may be filtered 486 errors are divided into different error classes that may be filtered
440 using the appropriate error mask. To register for every possible 487 using the appropriate error mask. To register for every possible
@@ -472,7 +519,69 @@ solution for a couple of reasons:
472 setsockopt(s, SOL_CAN_RAW, CAN_RAW_RECV_OWN_MSGS, 519 setsockopt(s, SOL_CAN_RAW, CAN_RAW_RECV_OWN_MSGS,
473 &recv_own_msgs, sizeof(recv_own_msgs)); 520 &recv_own_msgs, sizeof(recv_own_msgs));
474 521
475 4.1.5 RAW socket returned message flags 522 4.1.5 RAW socket option CAN_RAW_FD_FRAMES
523
524 CAN FD support in CAN_RAW sockets can be enabled with a new socket option
525 CAN_RAW_FD_FRAMES which is off by default. When the new socket option is
526 not supported by the CAN_RAW socket (e.g. on older kernels), switching the
527 CAN_RAW_FD_FRAMES option returns the error -ENOPROTOOPT.
528
529 Once CAN_RAW_FD_FRAMES is enabled the application can send both CAN frames
530 and CAN FD frames. OTOH the application has to handle CAN and CAN FD frames
531 when reading from the socket.
532
533 CAN_RAW_FD_FRAMES enabled: CAN_MTU and CANFD_MTU are allowed
534 CAN_RAW_FD_FRAMES disabled: only CAN_MTU is allowed (default)
535
536 Example:
537 [ remember: CANFD_MTU == sizeof(struct canfd_frame) ]
538
539 struct canfd_frame cfd;
540
541 nbytes = read(s, &cfd, CANFD_MTU);
542
543 if (nbytes == CANFD_MTU) {
544 printf("got CAN FD frame with length %d\n", cfd.len);
545 /* cfd.flags contains valid data */
546 } else if (nbytes == CAN_MTU) {
547 printf("got legacy CAN frame with length %d\n", cfd.len);
548 /* cfd.flags is undefined */
549 } else {
550 fprintf(stderr, "read: invalid CAN(FD) frame\n");
551 return 1;
552 }
553
554 /* the content can be handled independently from the received MTU size */
555
556 printf("can_id: %X data length: %d data: ", cfd.can_id, cfd.len);
557 for (i = 0; i < cfd.len; i++)
558 printf("%02X ", cfd.data[i]);
559
560 When reading with size CANFD_MTU only returns CAN_MTU bytes that have
561 been received from the socket a legacy CAN frame has been read into the
562 provided CAN FD structure. Note that the canfd_frame.flags data field is
563 not specified in the struct can_frame and therefore it is only valid in
564 CANFD_MTU sized CAN FD frames.
565
566 As long as the payload length is <=8 the received CAN frames from CAN FD
567 capable CAN devices can be received and read by legacy sockets too. When
568 user-generated CAN FD frames have a payload length <=8 these can be send
569 by legacy CAN network interfaces too. Sending CAN FD frames with payload
570 length > 8 to a legacy CAN network interface returns an -EMSGSIZE error.
571
572 Implementation hint for new CAN applications:
573
574 To build a CAN FD aware application use struct canfd_frame as basic CAN
575 data structure for CAN_RAW based applications. When the application is
576 executed on an older Linux kernel and switching the CAN_RAW_FD_FRAMES
577 socket option returns an error: No problem. You'll get legacy CAN frames
578 or CAN FD frames and can process them the same way.
579
580 When sending to CAN devices make sure that the device is capable to handle
581 CAN FD frames by checking if the device maximum transfer unit is CANFD_MTU.
582 The CAN device MTU can be retrieved e.g. with a SIOCGIFMTU ioctl() syscall.
583
584 4.1.6 RAW socket returned message flags
476 585
477 When using recvmsg() call, the msg->msg_flags may contain following flags: 586 When using recvmsg() call, the msg->msg_flags may contain following flags:
478 587
@@ -527,7 +636,7 @@ solution for a couple of reasons:
527 636
528 rcvlist_all - list for unfiltered entries (no filter operations) 637 rcvlist_all - list for unfiltered entries (no filter operations)
529 rcvlist_eff - list for single extended frame (EFF) entries 638 rcvlist_eff - list for single extended frame (EFF) entries
530 rcvlist_err - list for error frames masks 639 rcvlist_err - list for error message frames masks
531 rcvlist_fil - list for mask/value filters 640 rcvlist_fil - list for mask/value filters
532 rcvlist_inv - list for mask/value filters (inverse semantic) 641 rcvlist_inv - list for mask/value filters (inverse semantic)
533 rcvlist_sff - list for single standard frame (SFF) entries 642 rcvlist_sff - list for single standard frame (SFF) entries
@@ -573,10 +682,13 @@ solution for a couple of reasons:
573 dev->type = ARPHRD_CAN; /* the netdevice hardware type */ 682 dev->type = ARPHRD_CAN; /* the netdevice hardware type */
574 dev->flags = IFF_NOARP; /* CAN has no arp */ 683 dev->flags = IFF_NOARP; /* CAN has no arp */
575 684
576 dev->mtu = sizeof(struct can_frame); 685 dev->mtu = CAN_MTU; /* sizeof(struct can_frame) -> legacy CAN interface */
577 686
578 The struct can_frame is the payload of each socket buffer in the 687 or alternative, when the controller supports CAN with flexible data rate:
579 protocol family PF_CAN. 688 dev->mtu = CANFD_MTU; /* sizeof(struct canfd_frame) -> CAN FD interface */
689
690 The struct can_frame or struct canfd_frame is the payload of each socket
691 buffer (skbuff) in the protocol family PF_CAN.
580 692
581 6.2 local loopback of sent frames 693 6.2 local loopback of sent frames
582 694
@@ -784,15 +896,41 @@ solution for a couple of reasons:
784 $ ip link set canX type can restart-ms 100 896 $ ip link set canX type can restart-ms 100
785 897
786 Alternatively, the application may realize the "bus-off" condition 898 Alternatively, the application may realize the "bus-off" condition
787 by monitoring CAN error frames and do a restart when appropriate with 899 by monitoring CAN error message frames and do a restart when
788 the command: 900 appropriate with the command:
789 901
790 $ ip link set canX type can restart 902 $ ip link set canX type can restart
791 903
792 Note that a restart will also create a CAN error frame (see also 904 Note that a restart will also create a CAN error message frame (see
793 chapter 3.4). 905 also chapter 3.4).
906
907 6.6 CAN FD (flexible data rate) driver support
908
909 CAN FD capable CAN controllers support two different bitrates for the
910 arbitration phase and the payload phase of the CAN FD frame. Therefore a
911 second bittiming has to be specified in order to enable the CAN FD bitrate.
912
913 Additionally CAN FD capable CAN controllers support up to 64 bytes of
914 payload. The representation of this length in can_frame.can_dlc and
915 canfd_frame.len for userspace applications and inside the Linux network
916 layer is a plain value from 0 .. 64 instead of the CAN 'data length code'.
917 The data length code was a 1:1 mapping to the payload length in the legacy
918 CAN frames anyway. The payload length to the bus-relevant DLC mapping is
919 only performed inside the CAN drivers, preferably with the helper
920 functions can_dlc2len() and can_len2dlc().
921
922 The CAN netdevice driver capabilities can be distinguished by the network
923 devices maximum transfer unit (MTU):
924
925 MTU = 16 (CAN_MTU) => sizeof(struct can_frame) => 'legacy' CAN device
926 MTU = 72 (CANFD_MTU) => sizeof(struct canfd_frame) => CAN FD capable device
927
928 The CAN device MTU can be retrieved e.g. with a SIOCGIFMTU ioctl() syscall.
929 N.B. CAN FD capable devices can also handle and send legacy CAN frames.
930
931 FIXME: Add details about the CAN FD controller configuration when available.
794 932
795 6.6 Supported CAN hardware 933 6.7 Supported CAN hardware
796 934
797 Please check the "Kconfig" file in "drivers/net/can" to get an actual 935 Please check the "Kconfig" file in "drivers/net/can" to get an actual
798 list of the support CAN hardware. On the Socket CAN project website 936 list of the support CAN hardware. On the Socket CAN project website
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt
index 6f896b94abdc..406a5226220d 100644
--- a/Documentation/networking/ip-sysctl.txt
+++ b/Documentation/networking/ip-sysctl.txt
@@ -468,6 +468,19 @@ tcp_syncookies - BOOLEAN
468 SYN flood warnings in logs not being really flooded, your server 468 SYN flood warnings in logs not being really flooded, your server
469 is seriously misconfigured. 469 is seriously misconfigured.
470 470
471tcp_fastopen - INTEGER
472 Enable TCP Fast Open feature (draft-ietf-tcpm-fastopen) to send data
473 in the opening SYN packet. To use this feature, the client application
474 must not use connect(). Instead, it should use sendmsg() or sendto()
475 with MSG_FASTOPEN flag which performs a TCP handshake automatically.
476
477 The values (bitmap) are:
478 1: Enables sending data in the opening SYN on the client
479 5: Enables sending data in the opening SYN on the client regardless
480 of cookie availability.
481
482 Default: 0
483
471tcp_syn_retries - INTEGER 484tcp_syn_retries - INTEGER
472 Number of times initial SYNs for an active TCP connection attempt 485 Number of times initial SYNs for an active TCP connection attempt
473 will be retransmitted. Should not be higher than 255. Default value 486 will be retransmitted. Should not be higher than 255. Default value
@@ -551,6 +564,25 @@ tcp_thin_dupack - BOOLEAN
551 Documentation/networking/tcp-thin.txt 564 Documentation/networking/tcp-thin.txt
552 Default: 0 565 Default: 0
553 566
567tcp_limit_output_bytes - INTEGER
568 Controls TCP Small Queue limit per tcp socket.
569 TCP bulk sender tends to increase packets in flight until it
570 gets losses notifications. With SNDBUF autotuning, this can
571 result in a large amount of packets queued in qdisc/device
572 on the local machine, hurting latency of other flows, for
573 typical pfifo_fast qdiscs.
574 tcp_limit_output_bytes limits the number of bytes on qdisc
575 or device to reduce artificial RTT/cwnd and reduce bufferbloat.
576 Note: For GSO/TSO enabled flows, we try to have at least two
577 packets in flight. Reducing tcp_limit_output_bytes might also
578 reduce the size of individual GSO packet (64KB being the max)
579 Default: 131072
580
581tcp_challenge_ack_limit - INTEGER
582 Limits number of Challenge ACK sent per second, as recommended
583 in RFC 5961 (Improving TCP's Robustness to Blind In-Window Attacks)
584 Default: 100
585
554UDP variables: 586UDP variables:
555 587
556udp_mem - vector of 3 INTEGERs: min, pressure, max 588udp_mem - vector of 3 INTEGERs: min, pressure, max
@@ -857,9 +889,19 @@ accept_source_route - BOOLEAN
857 FALSE (host) 889 FALSE (host)
858 890
859accept_local - BOOLEAN 891accept_local - BOOLEAN
860 Accept packets with local source addresses. In combination with 892 Accept packets with local source addresses. In combination
861 suitable routing, this can be used to direct packets between two 893 with suitable routing, this can be used to direct packets
862 local interfaces over the wire and have them accepted properly. 894 between two local interfaces over the wire and have them
895 accepted properly.
896
897 rp_filter must be set to a non-zero value in order for
898 accept_local to have an effect.
899
900 default FALSE
901
902route_localnet - BOOLEAN
903 Do not consider loopback addresses as martian source or destination
904 while routing. This enables the use of 127/8 for local routing purposes.
863 default FALSE 905 default FALSE
864 906
865rp_filter - INTEGER 907rp_filter - INTEGER
@@ -1398,6 +1440,20 @@ path_max_retrans - INTEGER
1398 1440
1399 Default: 5 1441 Default: 5
1400 1442
1443pf_retrans - INTEGER
1444 The number of retransmissions that will be attempted on a given path
1445 before traffic is redirected to an alternate transport (should one
1446 exist). Note this is distinct from path_max_retrans, as a path that
1447 passes the pf_retrans threshold can still be used. Its only
1448 deprioritized when a transmission path is selected by the stack. This
1449 setting is primarily used to enable fast failover mechanisms without
1450 having to reduce path_max_retrans to a very low value. See:
1451 http://www.ietf.org/id/draft-nishida-tsvwg-sctp-failover-05.txt
1452 for details. Note also that a value of pf_retrans > path_max_retrans
1453 disables this feature
1454
1455 Default: 0
1456
1401rto_initial - INTEGER 1457rto_initial - INTEGER
1402 The initial round trip timeout value in milliseconds that will be used 1458 The initial round trip timeout value in milliseconds that will be used
1403 in calculating round trip times. This is the initial time interval 1459 in calculating round trip times. This is the initial time interval
diff --git a/Documentation/networking/openvswitch.txt b/Documentation/networking/openvswitch.txt
index b8a048b8df3a..8fa2dd1e792e 100644
--- a/Documentation/networking/openvswitch.txt
+++ b/Documentation/networking/openvswitch.txt
@@ -118,7 +118,7 @@ essentially like this, ignoring metadata:
118Naively, to add VLAN support, it makes sense to add a new "vlan" flow 118Naively, to add VLAN support, it makes sense to add a new "vlan" flow
119key attribute to contain the VLAN tag, then continue to decode the 119key attribute to contain the VLAN tag, then continue to decode the
120encapsulated headers beyond the VLAN tag using the existing field 120encapsulated headers beyond the VLAN tag using the existing field
121definitions. With this change, an TCP packet in VLAN 10 would have a 121definitions. With this change, a TCP packet in VLAN 10 would have a
122flow key much like this: 122flow key much like this:
123 123
124 eth(...), vlan(vid=10, pcp=0), eth_type(0x0800), ip(proto=6, ...), tcp(...) 124 eth(...), vlan(vid=10, pcp=0), eth_type(0x0800), ip(proto=6, ...), tcp(...)
diff --git a/Documentation/networking/s2io.txt b/Documentation/networking/s2io.txt
index 4be0c039edbc..d2a9f43b5546 100644
--- a/Documentation/networking/s2io.txt
+++ b/Documentation/networking/s2io.txt
@@ -136,16 +136,6 @@ For more information, please review the AMD8131 errata at
136http://vip.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/ 136http://vip.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/
13726310_AMD-8131_HyperTransport_PCI-X_Tunnel_Revision_Guide_rev_3_18.pdf 13726310_AMD-8131_HyperTransport_PCI-X_Tunnel_Revision_Guide_rev_3_18.pdf
138 138
1396. Available Downloads 1396. Support
140Neterion "s2io" driver in Red Hat and Suse 2.6-based distributions is kept up
141to date, also the latest "s2io" code (including support for 2.4 kernels) is
142available via "Support" link on the Neterion site: http://www.neterion.com.
143
144For Xframe User Guide (Programming manual), visit ftp site ns1.s2io.com,
145user: linuxdocs password: HALdocs
146
1477. Support
148For further support please contact either your 10GbE Xframe NIC vendor (IBM, 140For further support please contact either your 10GbE Xframe NIC vendor (IBM,
149HP, SGI etc.) or click on the "Support" link on the Neterion site: 141HP, SGI etc.)
150http://www.neterion.com.
151
diff --git a/Documentation/networking/stmmac.txt b/Documentation/networking/stmmac.txt
index 5cb9a1972460..c676b9cedbd0 100644
--- a/Documentation/networking/stmmac.txt
+++ b/Documentation/networking/stmmac.txt
@@ -257,9 +257,11 @@ reset procedure etc).
257 o Makefile 257 o Makefile
258 o stmmac_main.c: main network device driver; 258 o stmmac_main.c: main network device driver;
259 o stmmac_mdio.c: mdio functions; 259 o stmmac_mdio.c: mdio functions;
260 o stmmac_pci: PCI driver;
261 o stmmac_platform.c: platform driver
260 o stmmac_ethtool.c: ethtool support; 262 o stmmac_ethtool.c: ethtool support;
261 o stmmac_timer.[ch]: timer code used for mitigating the driver dma interrupts 263 o stmmac_timer.[ch]: timer code used for mitigating the driver dma interrupts
262 Only tested on ST40 platforms based. 264 (only tested on ST40 platforms based);
263 o stmmac.h: private driver structure; 265 o stmmac.h: private driver structure;
264 o common.h: common definitions and VFTs; 266 o common.h: common definitions and VFTs;
265 o descs.h: descriptor structure definitions; 267 o descs.h: descriptor structure definitions;
@@ -269,9 +271,11 @@ reset procedure etc).
269 o dwmac100_core: MAC 100 core and dma code; 271 o dwmac100_core: MAC 100 core and dma code;
270 o dwmac100_dma.c: dma funtions for the MAC chip; 272 o dwmac100_dma.c: dma funtions for the MAC chip;
271 o dwmac1000.h: specific header file for the MAC; 273 o dwmac1000.h: specific header file for the MAC;
272 o dwmac_lib.c: generic DMA functions shared among chips 274 o dwmac_lib.c: generic DMA functions shared among chips;
273 o enh_desc.c: functions for handling enhanced descriptors 275 o enh_desc.c: functions for handling enhanced descriptors;
274 o norm_desc.c: functions for handling normal descriptors 276 o norm_desc.c: functions for handling normal descriptors;
277 o chain_mode.c/ring_mode.c:: functions to manage RING/CHAINED modes;
278 o mmc_core.c/mmc.h: Management MAC Counters;
275 279
2765) Debug Information 2805) Debug Information
277 281
@@ -304,7 +308,27 @@ All these are only useful during the developing stage
304and should never enabled inside the code for general usage. 308and should never enabled inside the code for general usage.
305In fact, these can generate an huge amount of debug messages. 309In fact, these can generate an huge amount of debug messages.
306 310
3076) TODO: 3116) Energy Efficient Ethernet
312
313Energy Efficient Ethernet(EEE) enables IEEE 802.3 MAC sublayer along
314with a family of Physical layer to operate in the Low power Idle(LPI)
315mode. The EEE mode supports the IEEE 802.3 MAC operation at 100Mbps,
3161000Mbps & 10Gbps.
317
318The LPI mode allows power saving by switching off parts of the
319communication device functionality when there is no data to be
320transmitted & received. The system on both the side of the link can
321disable some functionalities & save power during the period of low-link
322utilization. The MAC controls whether the system should enter or exit
323the LPI mode & communicate this to PHY.
324
325As soon as the interface is opened, the driver verifies if the EEE can
326be supported. This is done by looking at both the DMA HW capability
327register and the PHY devices MCD registers.
328To enter in Tx LPI mode the driver needs to have a software timer
329that enable and disable the LPI mode when there is nothing to be
330transmitted.
331
3327) TODO:
308 o XGMAC is not supported. 333 o XGMAC is not supported.
309 o Add the EEE - Energy Efficient Ethernet
310 o Add the PTP - precision time protocol 334 o Add the PTP - precision time protocol
diff --git a/Documentation/networking/vxge.txt b/Documentation/networking/vxge.txt
index d2e2997e6fa0..bb76c667a476 100644
--- a/Documentation/networking/vxge.txt
+++ b/Documentation/networking/vxge.txt
@@ -91,10 +91,3 @@ v) addr_learn_en
91 virtualization environment. 91 virtualization environment.
92 Valid range: 0,1 (disabled, enabled respectively) 92 Valid range: 0,1 (disabled, enabled respectively)
93 Default: 0 93 Default: 0
94
954) Troubleshooting:
96-------------------
97
98To resolve an issue with the source code or X3100 series adapter, please collect
99the statistics, register dumps using ethool, relevant logs and email them to
100support@neterion.com.
diff --git a/Documentation/nfc/nfc-hci.txt b/Documentation/nfc/nfc-hci.txt
index 320f9336c781..89a339c9b079 100644
--- a/Documentation/nfc/nfc-hci.txt
+++ b/Documentation/nfc/nfc-hci.txt
@@ -178,3 +178,36 @@ ANY_GET_PARAMETER to the reader A gate to get information on the target
178that was discovered). 178that was discovered).
179 179
180Typically, such an event will be propagated to NFC Core from MSGRXWQ context. 180Typically, such an event will be propagated to NFC Core from MSGRXWQ context.
181
182Error management
183----------------
184
185Errors that occur synchronously with the execution of an NFC Core request are
186simply returned as the execution result of the request. These are easy.
187
188Errors that occur asynchronously (e.g. in a background protocol handling thread)
189must be reported such that upper layers don't stay ignorant that something
190went wrong below and know that expected events will probably never happen.
191Handling of these errors is done as follows:
192
193- driver (pn544) fails to deliver an incoming frame: it stores the error such
194that any subsequent call to the driver will result in this error. Then it calls
195the standard nfc_shdlc_recv_frame() with a NULL argument to report the problem
196above. shdlc stores a EREMOTEIO sticky status, which will trigger SMW to
197report above in turn.
198
199- SMW is basically a background thread to handle incoming and outgoing shdlc
200frames. This thread will also check the shdlc sticky status and report to HCI
201when it discovers it is not able to run anymore because of an unrecoverable
202error that happened within shdlc or below. If the problem occurs during shdlc
203connection, the error is reported through the connect completion.
204
205- HCI: if an internal HCI error happens (frame is lost), or HCI is reported an
206error from a lower layer, HCI will either complete the currently executing
207command with that error, or notify NFC Core directly if no command is executing.
208
209- NFC Core: when NFC Core is notified of an error from below and polling is
210active, it will send a tag discovered event with an empty tag list to the user
211space to let it know that the poll operation will never be able to detect a tag.
212If polling is not active and the error was sticky, lower levels will return it
213at next invocation.
diff --git a/Documentation/power/devices.txt b/Documentation/power/devices.txt
index 872815cd41d3..504dfe4d52eb 100644
--- a/Documentation/power/devices.txt
+++ b/Documentation/power/devices.txt
@@ -583,9 +583,10 @@ for the given device during all power transitions, instead of the respective
583subsystem-level callbacks. Specifically, if a device's pm_domain pointer is 583subsystem-level callbacks. Specifically, if a device's pm_domain pointer is
584not NULL, the ->suspend() callback from the object pointed to by it will be 584not NULL, the ->suspend() callback from the object pointed to by it will be
585executed instead of its subsystem's (e.g. bus type's) ->suspend() callback and 585executed instead of its subsystem's (e.g. bus type's) ->suspend() callback and
586anlogously for all of the remaining callbacks. In other words, power management 586analogously for all of the remaining callbacks. In other words, power
587domain callbacks, if defined for the given device, always take precedence over 587management domain callbacks, if defined for the given device, always take
588the callbacks provided by the device's subsystem (e.g. bus type). 588precedence over the callbacks provided by the device's subsystem (e.g. bus
589type).
589 590
590The support for device power management domains is only relevant to platforms 591The support for device power management domains is only relevant to platforms
591needing to use the same device driver power management callbacks in many 592needing to use the same device driver power management callbacks in many
@@ -598,7 +599,7 @@ it into account in any way.
598Device Low Power (suspend) States 599Device Low Power (suspend) States
599--------------------------------- 600---------------------------------
600Device low-power states aren't standard. One device might only handle 601Device low-power states aren't standard. One device might only handle
601"on" and "off, while another might support a dozen different versions of 602"on" and "off", while another might support a dozen different versions of
602"on" (how many engines are active?), plus a state that gets back to "on" 603"on" (how many engines are active?), plus a state that gets back to "on"
603faster than from a full "off". 604faster than from a full "off".
604 605
diff --git a/Documentation/power/swsusp.txt b/Documentation/power/swsusp.txt
index ac190cf1963e..92341b84250d 100644
--- a/Documentation/power/swsusp.txt
+++ b/Documentation/power/swsusp.txt
@@ -33,6 +33,11 @@ echo shutdown > /sys/power/disk; echo disk > /sys/power/state
33 33
34echo platform > /sys/power/disk; echo disk > /sys/power/state 34echo platform > /sys/power/disk; echo disk > /sys/power/state
35 35
36. If you would like to write hibernation image to swap and then suspend
37to RAM (provided your platform supports it), you can try
38
39echo suspend > /sys/power/disk; echo disk > /sys/power/state
40
36. If you have SATA disks, you'll need recent kernels with SATA suspend 41. If you have SATA disks, you'll need recent kernels with SATA suspend
37support. For suspend and resume to work, make sure your disk drivers 42support. For suspend and resume to work, make sure your disk drivers
38are built into kernel -- not modules. [There's way to make 43are built into kernel -- not modules. [There's way to make
diff --git a/Documentation/prctl/no_new_privs.txt b/Documentation/prctl/no_new_privs.txt
new file mode 100644
index 000000000000..f7be84fba910
--- /dev/null
+++ b/Documentation/prctl/no_new_privs.txt
@@ -0,0 +1,57 @@
1The execve system call can grant a newly-started program privileges that
2its parent did not have. The most obvious examples are setuid/setgid
3programs and file capabilities. To prevent the parent program from
4gaining these privileges as well, the kernel and user code must be
5careful to prevent the parent from doing anything that could subvert the
6child. For example:
7
8 - The dynamic loader handles LD_* environment variables differently if
9 a program is setuid.
10
11 - chroot is disallowed to unprivileged processes, since it would allow
12 /etc/passwd to be replaced from the point of view of a process that
13 inherited chroot.
14
15 - The exec code has special handling for ptrace.
16
17These are all ad-hoc fixes. The no_new_privs bit (since Linux 3.5) is a
18new, generic mechanism to make it safe for a process to modify its
19execution environment in a manner that persists across execve. Any task
20can set no_new_privs. Once the bit is set, it is inherited across fork,
21clone, and execve and cannot be unset. With no_new_privs set, execve
22promises not to grant the privilege to do anything that could not have
23been done without the execve call. For example, the setuid and setgid
24bits will no longer change the uid or gid; file capabilities will not
25add to the permitted set, and LSMs will not relax constraints after
26execve.
27
28To set no_new_privs, use prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0).
29
30Be careful, though: LSMs might also not tighten constraints on exec
31in no_new_privs mode. (This means that setting up a general-purpose
32service launcher to set no_new_privs before execing daemons may
33interfere with LSM-based sandboxing.)
34
35Note that no_new_privs does not prevent privilege changes that do not
36involve execve. An appropriately privileged task can still call
37setuid(2) and receive SCM_RIGHTS datagrams.
38
39There are two main use cases for no_new_privs so far:
40
41 - Filters installed for the seccomp mode 2 sandbox persist across
42 execve and can change the behavior of newly-executed programs.
43 Unprivileged users are therefore only allowed to install such filters
44 if no_new_privs is set.
45
46 - By itself, no_new_privs can be used to reduce the attack surface
47 available to an unprivileged user. If everything running with a
48 given uid has no_new_privs set, then that uid will be unable to
49 escalate its privileges by directly attacking setuid, setgid, and
50 fcap-using binaries; it will need to compromise something without the
51 no_new_privs bit set first.
52
53In the future, other potentially dangerous kernel features could become
54available to unprivileged tasks if no_new_privs is set. In principle,
55several options to unshare(2) and clone(2) would be safe when
56no_new_privs is set, and no_new_privs + chroot is considerable less
57dangerous than chroot by itself.
diff --git a/Documentation/ramoops.txt b/Documentation/ramoops.txt
index 4ba7db231cb2..197ad59ab9bf 100644
--- a/Documentation/ramoops.txt
+++ b/Documentation/ramoops.txt
@@ -40,6 +40,12 @@ corrupt, but usually it is restorable.
40Setting the ramoops parameters can be done in 2 different manners: 40Setting the ramoops parameters can be done in 2 different manners:
41 1. Use the module parameters (which have the names of the variables described 41 1. Use the module parameters (which have the names of the variables described
42 as before). 42 as before).
43 For quick debugging, you can also reserve parts of memory during boot
44 and then use the reserved memory for ramoops. For example, assuming a machine
45 with > 128 MB of memory, the following kernel command line will tell the
46 kernel to use only the first 128 MB of memory, and place ECC-protected ramoops
47 region at 128 MB boundary:
48 "mem=128M ramoops.mem_address=0x8000000 ramoops.ecc=1"
43 2. Use a platform device and set the platform data. The parameters can then 49 2. Use a platform device and set the platform data. The parameters can then
44 be set through that platform data. An example of doing that is: 50 be set through that platform data. An example of doing that is:
45 51
@@ -70,6 +76,14 @@ if (ret) {
70 return ret; 76 return ret;
71} 77}
72 78
79You can specify either RAM memory or peripheral devices' memory. However, when
80specifying RAM, be sure to reserve the memory by issuing memblock_reserve()
81very early in the architecture code, e.g.:
82
83#include <linux/memblock.h>
84
85memblock_reserve(ramoops_data.mem_address, ramoops_data.mem_size);
86
733. Dump format 873. Dump format
74 88
75The data dump begins with a header, currently defined as "====" followed by a 89The data dump begins with a header, currently defined as "====" followed by a
@@ -80,3 +94,28 @@ timestamp and a new line. The dump then continues with the actual data.
80The dump data can be read from the pstore filesystem. The format for these 94The dump data can be read from the pstore filesystem. The format for these
81files is "dmesg-ramoops-N", where N is the record number in memory. To delete 95files is "dmesg-ramoops-N", where N is the record number in memory. To delete
82a stored record from RAM, simply unlink the respective pstore file. 96a stored record from RAM, simply unlink the respective pstore file.
97
985. Persistent function tracing
99
100Persistent function tracing might be useful for debugging software or hardware
101related hangs. The functions call chain log is stored in a "ftrace-ramoops"
102file. Here is an example of usage:
103
104 # mount -t debugfs debugfs /sys/kernel/debug/
105 # cd /sys/kernel/debug/tracing
106 # echo function > current_tracer
107 # echo 1 > options/func_pstore
108 # reboot -f
109 [...]
110 # mount -t pstore pstore /mnt/
111 # tail /mnt/ftrace-ramoops
112 0 ffffffff8101ea64 ffffffff8101bcda native_apic_mem_read <- disconnect_bsp_APIC+0x6a/0xc0
113 0 ffffffff8101ea44 ffffffff8101bcf6 native_apic_mem_write <- disconnect_bsp_APIC+0x86/0xc0
114 0 ffffffff81020084 ffffffff8101a4b5 hpet_disable <- native_machine_shutdown+0x75/0x90
115 0 ffffffff81005f94 ffffffff8101a4bb iommu_shutdown_noop <- native_machine_shutdown+0x7b/0x90
116 0 ffffffff8101a6a1 ffffffff8101a437 native_machine_emergency_restart <- native_machine_restart+0x37/0x40
117 0 ffffffff811f9876 ffffffff8101a73a acpi_reboot <- native_machine_emergency_restart+0xaa/0x1e0
118 0 ffffffff8101a514 ffffffff8101a772 mach_reboot_fixups <- native_machine_emergency_restart+0xe2/0x1e0
119 0 ffffffff811d9c54 ffffffff8101a7a0 __const_udelay <- native_machine_emergency_restart+0x110/0x1e0
120 0 ffffffff811d9c34 ffffffff811d9c80 __delay <- __const_udelay+0x30/0x40
121 0 ffffffff811d9d14 ffffffff811d9c3f delay_tsc <- __delay+0xf/0x20
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt
index 221b81016dba..4e4d0bc9816f 100644
--- a/Documentation/sound/alsa/ALSA-Configuration.txt
+++ b/Documentation/sound/alsa/ALSA-Configuration.txt
@@ -875,8 +875,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
875 setup before initializing the codecs. This option is 875 setup before initializing the codecs. This option is
876 available only when CONFIG_SND_HDA_PATCH_LOADER=y is set. 876 available only when CONFIG_SND_HDA_PATCH_LOADER=y is set.
877 See HD-Audio.txt for details. 877 See HD-Audio.txt for details.
878 beep_mode - Selects the beep registration mode (0=off, 1=on, 2= 878 beep_mode - Selects the beep registration mode (0=off, 1=on); default
879 dynamic registration via mute switch on/off); the default
880 value is set via CONFIG_SND_HDA_INPUT_BEEP_MODE kconfig. 879 value is set via CONFIG_SND_HDA_INPUT_BEEP_MODE kconfig.
881 880
882 [Single (global) options] 881 [Single (global) options]
diff --git a/Documentation/sound/alsa/HD-Audio-Models.txt b/Documentation/sound/alsa/HD-Audio-Models.txt
index 03f7897c6414..7456360e161c 100644
--- a/Documentation/sound/alsa/HD-Audio-Models.txt
+++ b/Documentation/sound/alsa/HD-Audio-Models.txt
@@ -15,19 +15,24 @@ ALC260
15 15
16ALC262 16ALC262
17====== 17======
18 N/A 18 inv-dmic Inverted internal mic workaround
19 19
20ALC267/268 20ALC267/268
21========== 21==========
22 N/A 22 inv-dmic Inverted internal mic workaround
23 23
24ALC269 24ALC269/270/275/276/280/282
25====== 25======
26 laptop-amic Laptops with analog-mic input 26 laptop-amic Laptops with analog-mic input
27 laptop-dmic Laptops with digital-mic input 27 laptop-dmic Laptops with digital-mic input
28 alc269-dmic Enable ALC269(VA) digital mic workaround
29 alc271-dmic Enable ALC271X digital mic workaround
30 inv-dmic Inverted internal mic workaround
31 lenovo-dock Enables docking station I/O for some Lenovos
28 32
29ALC662/663/272 33ALC662/663/272
30============== 34==============
35 mario Chromebook mario model fixup
31 asus-mode1 ASUS 36 asus-mode1 ASUS
32 asus-mode2 ASUS 37 asus-mode2 ASUS
33 asus-mode3 ASUS 38 asus-mode3 ASUS
@@ -36,6 +41,7 @@ ALC662/663/272
36 asus-mode6 ASUS 41 asus-mode6 ASUS
37 asus-mode7 ASUS 42 asus-mode7 ASUS
38 asus-mode8 ASUS 43 asus-mode8 ASUS
44 inv-dmic Inverted internal mic workaround
39 45
40ALC680 46ALC680
41====== 47======
@@ -46,6 +52,7 @@ ALC882/883/885/888/889
46 acer-aspire-4930g Acer Aspire 4930G/5930G/6530G/6930G/7730G 52 acer-aspire-4930g Acer Aspire 4930G/5930G/6530G/6930G/7730G
47 acer-aspire-8930g Acer Aspire 8330G/6935G 53 acer-aspire-8930g Acer Aspire 8330G/6935G
48 acer-aspire Acer Aspire others 54 acer-aspire Acer Aspire others
55 inv-dmic Inverted internal mic workaround
49 56
50ALC861/660 57ALC861/660
51========== 58==========
diff --git a/Documentation/sound/alsa/hdspm.txt b/Documentation/sound/alsa/hdspm.txt
index 7a67ff71a9f8..7ba31948dea7 100644
--- a/Documentation/sound/alsa/hdspm.txt
+++ b/Documentation/sound/alsa/hdspm.txt
@@ -359,4 +359,4 @@ Calling Parameter:
359 enable_monitor int array (min = 1, max = 8), 359 enable_monitor int array (min = 1, max = 8),
360 "Enable Analog Out on Channel 63/64 by default." 360 "Enable Analog Out on Channel 63/64 by default."
361 361
362 note: here the analog output is enabled (but not routed). \ No newline at end of file 362 note: here the analog output is enabled (but not routed).
diff --git a/Documentation/stable_kernel_rules.txt b/Documentation/stable_kernel_rules.txt
index 4a7b54bd37e8..b0714d8f678a 100644
--- a/Documentation/stable_kernel_rules.txt
+++ b/Documentation/stable_kernel_rules.txt
@@ -1,4 +1,4 @@
1Everything you ever wanted to know about Linux 2.6 -stable releases. 1Everything you ever wanted to know about Linux -stable releases.
2 2
3Rules on what kind of patches are accepted, and which ones are not, into the 3Rules on what kind of patches are accepted, and which ones are not, into the
4"-stable" tree: 4"-stable" tree:
@@ -42,10 +42,10 @@ Procedure for submitting patches to the -stable tree:
42 cherry-picked than this can be specified in the following format in 42 cherry-picked than this can be specified in the following format in
43 the sign-off area: 43 the sign-off area:
44 44
45 Cc: <stable@vger.kernel.org> # .32.x: a1f84a3: sched: Check for idle 45 Cc: <stable@vger.kernel.org> # 3.3.x: a1f84a3: sched: Check for idle
46 Cc: <stable@vger.kernel.org> # .32.x: 1b9508f: sched: Rate-limit newidle 46 Cc: <stable@vger.kernel.org> # 3.3.x: 1b9508f: sched: Rate-limit newidle
47 Cc: <stable@vger.kernel.org> # .32.x: fd21073: sched: Fix affinity logic 47 Cc: <stable@vger.kernel.org> # 3.3.x: fd21073: sched: Fix affinity logic
48 Cc: <stable@vger.kernel.org> # .32.x 48 Cc: <stable@vger.kernel.org> # 3.3.x
49 Signed-off-by: Ingo Molnar <mingo@elte.hu> 49 Signed-off-by: Ingo Molnar <mingo@elte.hu>
50 50
51 The tag sequence has the meaning of: 51 The tag sequence has the meaning of:
@@ -79,6 +79,15 @@ Review cycle:
79 security kernel team, and not go through the normal review cycle. 79 security kernel team, and not go through the normal review cycle.
80 Contact the kernel security team for more details on this procedure. 80 Contact the kernel security team for more details on this procedure.
81 81
82Trees:
83
84 - The queues of patches, for both completed versions and in progress
85 versions can be found at:
86 http://git.kernel.org/?p=linux/kernel/git/stable/stable-queue.git
87 - The finalized and tagged releases of all stable kernels can be found
88 in separate branches per version at:
89 http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git
90
82 91
83Review committee: 92Review committee:
84 93
diff --git a/Documentation/usb/mass-storage.txt b/Documentation/usb/mass-storage.txt
new file mode 100644
index 000000000000..e9b9334627bf
--- /dev/null
+++ b/Documentation/usb/mass-storage.txt
@@ -0,0 +1,226 @@
1* Overview
2
3 Mass Storage Gadget (or MSG) acts as a USB Mass Storage device,
4 appearing to the host as a disk or a CD-ROM drive. It supports
5 multiple logical units (LUNs). Backing storage for each LUN is
6 provided by a regular file or a block device, access can be limited
7 to read-only, and gadget can indicate that it is removable and/or
8 CD-ROM (the latter implies read-only access).
9
10 Its requirements are modest; only a bulk-in and a bulk-out endpoint
11 are needed. The memory requirement amounts to two 16K buffers.
12 Support is included for full-speed, high-speed and SuperSpeed
13 operation.
14
15 Note that the driver is slightly non-portable in that it assumes
16 a single memory/DMA buffer will be useable for bulk-in and bulk-out
17 endpoints. With most device controllers this is not an issue, but
18 there may be some with hardware restrictions that prevent a buffer
19 from being used by more than one endpoint.
20
21 This document describes how to use the gadget from user space, its
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
24 will talk only briefly about how to use MSF within composite
25 gadgets.
26
27* Module parameters
28
29 The mass storage gadget accepts the following mass storage specific
30 module parameters:
31
32 - file=filename[,filename...]
33
34 This parameter lists paths to files or block devices used for
35 backing storage for each logical unit. There may be at most
36 FSG_MAX_LUNS (8) LUNs set. If more files are specified, they will
37 be silently ignored. See also “luns” parameter.
38
39 *BEWARE* that if a file is used as a backing storage, it may not
40 be modified by any other process. This is because the host
41 assumes the data does not change without its knowledge. It may be
42 read, but (if the logical unit is writable) due to buffering on
43 the host side, the contents are not well defined.
44
45 The size of the logical unit will be rounded down to a full
46 logical block. The logical block size is 2048 bytes for LUNs
47 simulating CD-ROM, block size of the device if the backing file is
48 a block device, or 512 bytes otherwise.
49
50 - removable=b[,b...]
51
52 This parameter specifies whether each logical unit should be
53 removable. “b” here is either “y”, “Y” or “1” for true or “n”,
54 “N” or “0” for false.
55
56 If this option is set for a logical unit, gadget will accept an
57 “eject” SCSI request (Start/Stop Unit). When it is sent, the
58 backing file will be closed to simulate ejection and the logical
59 unit will not be mountable by the host until a new backing file is
60 specified by userspace on the device (see “sysfs entries”
61 section).
62
63 If a logical unit is not removable (the default), a backing file
64 must be specified for it with the “file” parameter as the module
65 is loaded. The same applies if the module is built in, no
66 exceptions.
67
68 The default value of the flag is false, *HOWEVER* it used to be
69 true. This has been changed to better match File Storage Gadget
70 and because it seems like a saner default after all. Thus to
71 maintain compatibility with older kernels, it's best to specify
72 the default values. Also, if one relied on old default, explicit
73 “n” needs to be specified now.
74
75 Note that “removable” means the logical unit's media can be
76 ejected or removed (as is true for a CD-ROM drive or a card
77 reader). It does *not* mean that the entire gadget can be
78 unplugged from the host; the proper term for that is
79 “hot-unpluggable”.
80
81 - cdrom=b[,b...]
82
83 This parameter specifies whether each logical unit should simulate
84 CD-ROM. The default is false.
85
86 - ro=b[,b...]
87
88 This parameter specifies whether each logical unit should be
89 reported as read only. This will prevent host from modifying the
90 backing files.
91
92 Note that if this flag for given logical unit is false but the
93 backing file could not be opened in read/write mode, the gadget
94 will fall back to read only mode anyway.
95
96 The default value for non-CD-ROM logical units is false; for
97 logical units simulating CD-ROM it is forced to true.
98
99 - nofua=b[,b...]
100
101 This parameter specifies whether FUA flag should be ignored in SCSI
102 Write10 and Write12 commands sent to given logical units.
103
104 MS Windows mounts removable storage in “Removal optimised mode” by
105 default. All the writes to the media are synchronous, which is
106 achieved by setting the FUA (Force Unit Access) bit in SCSI
107 Write(10,12) commands. This forces each write to wait until the
108 data has actually been written out and prevents I/O requests
109 aggregation in block layer dramatically decreasing performance.
110
111 Note that this may mean that if the device is powered from USB and
112 the user unplugs the device without unmounting it first (which at
113 least some Windows users do), the data may be lost.
114
115 The default value is false.
116
117 - luns=N
118
119 This parameter specifies number of logical units the gadget will
120 have. It is limited by FSG_MAX_LUNS (8) and higher value will be
121 capped.
122
123 If this parameter is provided, and the number of files specified
124 in “file” argument is greater then the value of “luns”, all excess
125 files will be ignored.
126
127 If this parameter is not present, the number of logical units will
128 be deduced from the number of files specified in the “file”
129 parameter. If the file parameter is missing as well, one is
130 assumed.
131
132 - stall=b
133
134 Specifies whether the gadget is allowed to halt bulk endpoints.
135 The default is determined according to the type of USB device
136 controller, but usually true.
137
138 In addition to the above, the gadget also accepts the following
139 parameters defined by the composite framework (they are common to
140 all composite gadgets so just a quick listing):
141
142 - idVendor -- USB Vendor ID (16 bit integer)
143 - idProduct -- USB Product ID (16 bit integer)
144 - bcdDevice -- USB Device version (BCD) (16 bit integer)
145 - iManufacturer -- USB Manufacturer string (string)
146 - iProduct -- USB Product string (string)
147 - iSerialNumber -- SerialNumber string (sting)
148
149* sysfs entries
150
151 For each logical unit, the gadget creates a directory in the sysfs
152 hierarchy. Inside of it the following three files are created:
153
154 - file
155
156 When read it returns the path to the backing file for the given
157 logical unit. If there is no backing file (possible only if the
158 logical unit is removable), the content is empty.
159
160 When written into, it changes the backing file for given logical
161 unit. This change can be performed even if given logical unit is
162 not specified as removable (but that may look strange to the
163 host). It may fail, however, if host disallowed medium removal
164 with the Prevent-Allow Medium Removal SCSI command.
165
166 - ro
167
168 Reflects the state of ro flag for the given logical unit. It can
169 be read any time, and written to when there is no backing file
170 open for given logical unit.
171
172 - nofua
173
174 Reflects the state of nofua flag for given logical unit. It can
175 be read and written.
176
177 Other then those, as usual, the values of module parameters can be
178 read from /sys/module/g_mass_storage/parameters/* files.
179
180* Other gadgets using mass storage function
181
182 The Mass Storage Gadget uses the Mass Storage Function to handle
183 mass storage protocol. As a composite function, MSF may be used by
184 other gadgets as well (eg. g_multi and acm_ms).
185
186 All of the information in previous sections are valid for other
187 gadgets using MSF, except that support for mass storage related
188 module parameters may be missing, or the parameters may have
189 a prefix. To figure out whether any of this is true one needs to
190 consult the gadget's documentation or its source code.
191
192 For examples of how to include mass storage function in gadgets, one
193 may take a look at mass_storage.c, acm_ms.c and multi.c (sorted by
194 complexity).
195
196* Relation to file storage gadget
197
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
200 that MSG is a composite gadget (ie. uses the composite framework)
201 while file storage gadget is a traditional gadget. From userspace
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
204 duplicate code needed for handling basic USB protocol commands and
205 (ii) MSF can be used in any other composite gadget.
206
207 Because of that, File Storage Gadget has been deprecated and
208 scheduled to be removed in Linux 3.8. All users need to transition
209 to the Mass Storage Gadget by that time. The two gadgets behave
210 mostly the same from the outside except:
211
212 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
214 values for each logical unit. If one uses only a single logical
215 unit this does not matter, but if there are more, the y/n value
216 needs to be repeated for each logical unit.
217
218 2. FSG's “serial”, “vendor”, “product” and “release” module
219 parameters are handled in MSG by the composite layer's parameters
220 named respectively: “iSerialnumber”, “idVendor”, “idProduct” and
221 “bcdDevice”.
222
223 3. MSG does not support FSG's test mode, thus “transport”,
224 “protocol” and “buflen” FSG's module parameters are not
225 supported. MSG always uses SCSI protocol with bulk only
226 transport mode and 16 KiB buffers.
diff --git a/Documentation/video4linux/cpia2_overview.txt b/Documentation/video4linux/cpia2_overview.txt
index a6e53665216b..ad6adbedfe50 100644
--- a/Documentation/video4linux/cpia2_overview.txt
+++ b/Documentation/video4linux/cpia2_overview.txt
@@ -35,4 +35,4 @@ the camera. There are three modes for this. Block mode requests a number
35of contiguous registers. Random mode reads or writes random registers with 35of contiguous registers. Random mode reads or writes random registers with
36a tuple structure containing address/value pairs. The repeat mode is only 36a tuple structure containing address/value pairs. The repeat mode is only
37used by VP4 to load a firmware patch. It contains a starting address and 37used by VP4 to load a firmware patch. It contains a starting address and
38a sequence of bytes to be written into a gpio port. \ No newline at end of file 38a sequence of bytes to be written into a gpio port.
diff --git a/Documentation/video4linux/stv680.txt b/Documentation/video4linux/stv680.txt
index 4f8946f32f51..e3de33645308 100644
--- a/Documentation/video4linux/stv680.txt
+++ b/Documentation/video4linux/stv680.txt
@@ -50,4 +50,4 @@ The latest info on this driver can be found at:
50http://personal.clt.bellsouth.net/~kjsisson or at 50http://personal.clt.bellsouth.net/~kjsisson or at
51http://stv0680-usb.sourceforge.net 51http://stv0680-usb.sourceforge.net
52 52
53Any questions to me can be send to: kjsisson@bellsouth.net \ No newline at end of file 53Any questions to me can be send to: kjsisson@bellsouth.net
diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt
index 930126698a0f..bf33aaa4c59f 100644
--- a/Documentation/virtual/kvm/api.txt
+++ b/Documentation/virtual/kvm/api.txt
@@ -1930,6 +1930,57 @@ The "pte_enc" field provides a value that can OR'ed into the hash
1930PTE's RPN field (ie, it needs to be shifted left by 12 to OR it 1930PTE's RPN field (ie, it needs to be shifted left by 12 to OR it
1931into the hash PTE second double word). 1931into the hash PTE second double word).
1932 1932
19334.75 KVM_IRQFD
1934
1935Capability: KVM_CAP_IRQFD
1936Architectures: x86
1937Type: vm ioctl
1938Parameters: struct kvm_irqfd (in)
1939Returns: 0 on success, -1 on error
1940
1941Allows setting an eventfd to directly trigger a guest interrupt.
1942kvm_irqfd.fd specifies the file descriptor to use as the eventfd and
1943kvm_irqfd.gsi specifies the irqchip pin toggled by this event. When
1944an event is tiggered on the eventfd, an interrupt is injected into
1945the guest using the specified gsi pin. The irqfd is removed using
1946the KVM_IRQFD_FLAG_DEASSIGN flag, specifying both kvm_irqfd.fd
1947and kvm_irqfd.gsi.
1948
19494.76 KVM_PPC_ALLOCATE_HTAB
1950
1951Capability: KVM_CAP_PPC_ALLOC_HTAB
1952Architectures: powerpc
1953Type: vm ioctl
1954Parameters: Pointer to u32 containing hash table order (in/out)
1955Returns: 0 on success, -1 on error
1956
1957This requests the host kernel to allocate an MMU hash table for a
1958guest using the PAPR paravirtualization interface. This only does
1959anything if the kernel is configured to use the Book 3S HV style of
1960virtualization. Otherwise the capability doesn't exist and the ioctl
1961returns an ENOTTY error. The rest of this description assumes Book 3S
1962HV.
1963
1964There must be no vcpus running when this ioctl is called; if there
1965are, it will do nothing and return an EBUSY error.
1966
1967The parameter is a pointer to a 32-bit unsigned integer variable
1968containing the order (log base 2) of the desired size of the hash
1969table, which must be between 18 and 46. On successful return from the
1970ioctl, it will have been updated with the order of the hash table that
1971was allocated.
1972
1973If no hash table has been allocated when any vcpu is asked to run
1974(with the KVM_RUN ioctl), the host kernel will allocate a
1975default-sized hash table (16 MB).
1976
1977If this ioctl is called when a hash table has already been allocated,
1978the kernel will clear out the existing hash table (zero all HPTEs) and
1979return the hash table order in the parameter. (If the guest is using
1980the virtualized real-mode area (VRMA) facility, the kernel will
1981re-create the VMRA HPTEs on the next KVM_RUN of any vcpu.)
1982
1983
19335. The kvm_run structure 19845. The kvm_run structure
1934------------------------ 1985------------------------
1935 1986
diff --git a/Documentation/virtual/kvm/locking.txt b/Documentation/virtual/kvm/locking.txt
index 3b4cd3bf5631..41b7ac9884b5 100644
--- a/Documentation/virtual/kvm/locking.txt
+++ b/Documentation/virtual/kvm/locking.txt
@@ -6,7 +6,129 @@ KVM Lock Overview
6 6
7(to be written) 7(to be written)
8 8
92. Reference 92: Exception
10------------
11
12Fast page fault:
13
14Fast page fault is the fast path which fixes the guest page fault out of
15the mmu-lock on x86. Currently, the page fault can be fast only if the
16shadow page table is present and it is caused by write-protect, that means
17we just need change the W bit of the spte.
18
19What we use to avoid all the race is the SPTE_HOST_WRITEABLE bit and
20SPTE_MMU_WRITEABLE bit on the spte:
21- SPTE_HOST_WRITEABLE means the gfn is writable on host.
22- SPTE_MMU_WRITEABLE means the gfn is writable on mmu. The bit is set when
23 the gfn is writable on guest mmu and it is not write-protected by shadow
24 page write-protection.
25
26On fast page fault path, we will use cmpxchg to atomically set the spte W
27bit if spte.SPTE_HOST_WRITEABLE = 1 and spte.SPTE_WRITE_PROTECT = 1, this
28is safe because whenever changing these bits can be detected by cmpxchg.
29
30But we need carefully check these cases:
311): The mapping from gfn to pfn
32The mapping from gfn to pfn may be changed since we can only ensure the pfn
33is not changed during cmpxchg. This is a ABA problem, for example, below case
34will happen:
35
36At the beginning:
37gpte = gfn1
38gfn1 is mapped to pfn1 on host
39spte is the shadow page table entry corresponding with gpte and
40spte = pfn1
41
42 VCPU 0 VCPU0
43on fast page fault path:
44
45 old_spte = *spte;
46 pfn1 is swapped out:
47 spte = 0;
48
49 pfn1 is re-alloced for gfn2.
50
51 gpte is changed to point to
52 gfn2 by the guest:
53 spte = pfn1;
54
55 if (cmpxchg(spte, old_spte, old_spte+W)
56 mark_page_dirty(vcpu->kvm, gfn1)
57 OOPS!!!
58
59We dirty-log for gfn1, that means gfn2 is lost in dirty-bitmap.
60
61For direct sp, we can easily avoid it since the spte of direct sp is fixed
62to gfn. For indirect sp, before we do cmpxchg, we call gfn_to_pfn_atomic()
63to pin gfn to pfn, because after gfn_to_pfn_atomic():
64- We have held the refcount of pfn that means the pfn can not be freed and
65 be reused for another gfn.
66- The pfn is writable that means it can not be shared between different gfns
67 by KSM.
68
69Then, we can ensure the dirty bitmaps is correctly set for a gfn.
70
71Currently, to simplify the whole things, we disable fast page fault for
72indirect shadow page.
73
742): Dirty bit tracking
75In the origin code, the spte can be fast updated (non-atomically) if the
76spte is read-only and the Accessed bit has already been set since the
77Accessed bit and Dirty bit can not be lost.
78
79But it is not true after fast page fault since the spte can be marked
80writable between reading spte and updating spte. Like below case:
81
82At the beginning:
83spte.W = 0
84spte.Accessed = 1
85
86 VCPU 0 VCPU0
87In mmu_spte_clear_track_bits():
88
89 old_spte = *spte;
90
91 /* 'if' condition is satisfied. */
92 if (old_spte.Accssed == 1 &&
93 old_spte.W == 0)
94 spte = 0ull;
95 on fast page fault path:
96 spte.W = 1
97 memory write on the spte:
98 spte.Dirty = 1
99
100
101 else
102 old_spte = xchg(spte, 0ull)
103
104
105 if (old_spte.Accssed == 1)
106 kvm_set_pfn_accessed(spte.pfn);
107 if (old_spte.Dirty == 1)
108 kvm_set_pfn_dirty(spte.pfn);
109 OOPS!!!
110
111The Dirty bit is lost in this case.
112
113In order to avoid this kind of issue, we always treat the spte as "volatile"
114if it can be updated out of mmu-lock, see spte_has_volatile_bits(), it means,
115the spte is always atomicly updated in this case.
116
1173): flush tlbs due to spte updated
118If the spte is updated from writable to readonly, we should flush all TLBs,
119otherwise rmap_write_protect will find a read-only spte, even though the
120writable spte might be cached on a CPU's TLB.
121
122As mentioned before, the spte can be updated to writable out of mmu-lock on
123fast page fault path, in order to easily audit the path, we see if TLBs need
124be flushed caused by this reason in mmu_spte_update() since this is a common
125function to update spte (present -> present).
126
127Since the spte is "volatile" if it can be updated out of mmu-lock, we always
128atomicly update the spte, the race caused by fast page fault can be avoided,
129See the comments in spte_has_volatile_bits() and mmu_spte_update().
130
1313. Reference
10------------ 132------------
11 133
12Name: kvm_lock 134Name: kvm_lock
@@ -23,3 +145,9 @@ Arch: x86
23Protects: - kvm_arch::{last_tsc_write,last_tsc_nsec,last_tsc_offset} 145Protects: - kvm_arch::{last_tsc_write,last_tsc_nsec,last_tsc_offset}
24 - tsc offset in vmcb 146 - tsc offset in vmcb
25Comment: 'raw' because updating the tsc offsets must not be preempted. 147Comment: 'raw' because updating the tsc offsets must not be preempted.
148
149Name: kvm->mmu_lock
150Type: spinlock_t
151Arch: any
152Protects: -shadow page/shadow tlb entry
153Comment: it is a spinlock since it is used in mmu notifier.
diff --git a/Documentation/virtual/kvm/msr.txt b/Documentation/virtual/kvm/msr.txt
index 96b41bd97523..730471048583 100644
--- a/Documentation/virtual/kvm/msr.txt
+++ b/Documentation/virtual/kvm/msr.txt
@@ -223,3 +223,36 @@ MSR_KVM_STEAL_TIME: 0x4b564d03
223 steal: the amount of time in which this vCPU did not run, in 223 steal: the amount of time in which this vCPU did not run, in
224 nanoseconds. Time during which the vcpu is idle, will not be 224 nanoseconds. Time during which the vcpu is idle, will not be
225 reported as steal time. 225 reported as steal time.
226
227MSR_KVM_EOI_EN: 0x4b564d04
228 data: Bit 0 is 1 when PV end of interrupt is enabled on the vcpu; 0
229 when disabled. Bit 1 is reserved and must be zero. When PV end of
230 interrupt is enabled (bit 0 set), bits 63-2 hold a 4-byte aligned
231 physical address of a 4 byte memory area which must be in guest RAM and
232 must be zeroed.
233
234 The first, least significant bit of 4 byte memory location will be
235 written to by the hypervisor, typically at the time of interrupt
236 injection. Value of 1 means that guest can skip writing EOI to the apic
237 (using MSR or MMIO write); instead, it is sufficient to signal
238 EOI by clearing the bit in guest memory - this location will
239 later be polled by the hypervisor.
240 Value of 0 means that the EOI write is required.
241
242 It is always safe for the guest to ignore the optimization and perform
243 the APIC EOI write anyway.
244
245 Hypervisor is guaranteed to only modify this least
246 significant bit while in the current VCPU context, this means that
247 guest does not need to use either lock prefix or memory ordering
248 primitives to synchronise with the hypervisor.
249
250 However, hypervisor can set and clear this memory bit at any time:
251 therefore to make sure hypervisor does not interrupt the
252 guest and clear the least significant bit in the memory area
253 in the window between guest testing it to detect
254 whether it can skip EOI apic write and between guest
255 clearing it to signal EOI to the hypervisor,
256 guest must both read the least significant bit in the memory area and
257 clear it using a single CPU instruction, such as test and clear, or
258 compare and exchange.
diff --git a/Documentation/virtual/kvm/ppc-pv.txt b/Documentation/virtual/kvm/ppc-pv.txt
index 6e7c37050930..4911cf95c67e 100644
--- a/Documentation/virtual/kvm/ppc-pv.txt
+++ b/Documentation/virtual/kvm/ppc-pv.txt
@@ -109,8 +109,6 @@ The following bits are safe to be set inside the guest:
109 109
110 MSR_EE 110 MSR_EE
111 MSR_RI 111 MSR_RI
112 MSR_CR
113 MSR_ME
114 112
115If any other bit changes in the MSR, please still use mtmsr(d). 113If any other bit changes in the MSR, please still use mtmsr(d).
116 114
diff --git a/Documentation/vm/frontswap.txt b/Documentation/vm/frontswap.txt
index 37067cf455f4..5ef2d1366425 100644
--- a/Documentation/vm/frontswap.txt
+++ b/Documentation/vm/frontswap.txt
@@ -25,7 +25,7 @@ with the specified swap device number (aka "type"). A "store" will
25copy the page to transcendent memory and associate it with the type and 25copy the page to transcendent memory and associate it with the type and
26offset associated with the page. A "load" will copy the page, if found, 26offset associated with the page. A "load" will copy the page, if found,
27from transcendent memory into kernel memory, but will NOT remove the page 27from transcendent memory into kernel memory, but will NOT remove the page
28from from transcendent memory. An "invalidate_page" will remove the page 28from transcendent memory. An "invalidate_page" will remove the page
29from transcendent memory and an "invalidate_area" will remove ALL pages 29from transcendent memory and an "invalidate_area" will remove ALL pages
30associated with the swap type (e.g., like swapoff) and notify the "device" 30associated with the swap type (e.g., like swapoff) and notify the "device"
31to refuse further stores with that swap type. 31to refuse further stores with that swap type.
@@ -99,7 +99,7 @@ server configured with a large amount of RAM... without pre-configuring
99how much of the RAM is available for each of the clients! 99how much of the RAM is available for each of the clients!
100 100
101In the virtual case, the whole point of virtualization is to statistically 101In the virtual case, the whole point of virtualization is to statistically
102multiplex physical resources acrosst the varying demands of multiple 102multiplex physical resources across the varying demands of multiple
103virtual machines. This is really hard to do with RAM and efforts to do 103virtual machines. This is really hard to do with RAM and efforts to do
104it well with no kernel changes have essentially failed (except in some 104it well with no kernel changes have essentially failed (except in some
105well-publicized special-case workloads). 105well-publicized special-case workloads).
diff --git a/Documentation/w1/slaves/w1_ds28e04 b/Documentation/w1/slaves/w1_ds28e04
new file mode 100644
index 000000000000..85bc9a7e02fe
--- /dev/null
+++ b/Documentation/w1/slaves/w1_ds28e04
@@ -0,0 +1,36 @@
1Kernel driver w1_ds28e04
2========================
3
4Supported chips:
5 * Maxim DS28E04-100 4096-Bit Addressable 1-Wire EEPROM with PIO
6
7supported family codes:
8 W1_FAMILY_DS28E04 0x1C
9
10Author: Markus Franke, <franke.m@sebakmt.com> <franm@hrz.tu-chemnitz.de>
11
12Description
13-----------
14
15Support is provided through the sysfs files "eeprom" and "pio". CRC checking
16during memory accesses can optionally be enabled/disabled via the device
17attribute "crccheck". The strong pull-up can optionally be enabled/disabled
18via the module parameter "w1_strong_pullup".
19
20Memory Access
21
22 A read operation on the "eeprom" file reads the given amount of bytes
23 from the EEPROM of the DS28E04.
24
25 A write operation on the "eeprom" file writes the given byte sequence
26 to the EEPROM of the DS28E04. If CRC checking mode is enabled only
27 fully alligned blocks of 32 bytes with valid CRC16 values (in bytes 30
28 and 31) are allowed to be written.
29
30PIO Access
31
32 The 2 PIOs of the DS28E04-100 are accessible via the "pio" sysfs file.
33
34 The current status of the PIO's is returned as an 8 bit value. Bit 0/1
35 represent the state of PIO_0/PIO_1. Bits 2..7 do not care. The PIO's are
36 driven low-active, i.e. the driver delivers/expects low-active values.
diff --git a/Documentation/workqueue.txt b/Documentation/workqueue.txt
index a0b577de918f..a6ab4b62d926 100644
--- a/Documentation/workqueue.txt
+++ b/Documentation/workqueue.txt
@@ -89,25 +89,28 @@ called thread-pools.
89 89
90The cmwq design differentiates between the user-facing workqueues that 90The cmwq design differentiates between the user-facing workqueues that
91subsystems and drivers queue work items on and the backend mechanism 91subsystems and drivers queue work items on and the backend mechanism
92which manages thread-pool and processes the queued work items. 92which manages thread-pools and processes the queued work items.
93 93
94The backend is called gcwq. There is one gcwq for each possible CPU 94The backend is called gcwq. There is one gcwq for each possible CPU
95and one gcwq to serve work items queued on unbound workqueues. 95and one gcwq to serve work items queued on unbound workqueues. Each
96gcwq has two thread-pools - one for normal work items and the other
97for high priority ones.
96 98
97Subsystems and drivers can create and queue work items through special 99Subsystems and drivers can create and queue work items through special
98workqueue API functions as they see fit. They can influence some 100workqueue API functions as they see fit. They can influence some
99aspects of the way the work items are executed by setting flags on the 101aspects of the way the work items are executed by setting flags on the
100workqueue they are putting the work item on. These flags include 102workqueue they are putting the work item on. These flags include
101things like CPU locality, reentrancy, concurrency limits and more. To 103things like CPU locality, reentrancy, concurrency limits, priority and
102get a detailed overview refer to the API description of 104more. To get a detailed overview refer to the API description of
103alloc_workqueue() below. 105alloc_workqueue() below.
104 106
105When a work item is queued to a workqueue, the target gcwq is 107When a work item is queued to a workqueue, the target gcwq and
106determined according to the queue parameters and workqueue attributes 108thread-pool is determined according to the queue parameters and
107and appended on the shared worklist of the gcwq. For example, unless 109workqueue attributes and appended on the shared worklist of the
108specifically overridden, a work item of a bound workqueue will be 110thread-pool. For example, unless specifically overridden, a work item
109queued on the worklist of exactly that gcwq that is associated to the 111of a bound workqueue will be queued on the worklist of either normal
110CPU the issuer is running on. 112or highpri thread-pool of the gcwq that is associated to the CPU the
113issuer is running on.
111 114
112For any worker pool implementation, managing the concurrency level 115For any worker pool implementation, managing the concurrency level
113(how many execution contexts are active) is an important issue. cmwq 116(how many execution contexts are active) is an important issue. cmwq
@@ -115,26 +118,26 @@ tries to keep the concurrency at a minimal but sufficient level.
115Minimal to save resources and sufficient in that the system is used at 118Minimal to save resources and sufficient in that the system is used at
116its full capacity. 119its full capacity.
117 120
118Each gcwq bound to an actual CPU implements concurrency management by 121Each thread-pool bound to an actual CPU implements concurrency
119hooking into the scheduler. The gcwq is notified whenever an active 122management by hooking into the scheduler. The thread-pool is notified
120worker wakes up or sleeps and keeps track of the number of the 123whenever an active worker wakes up or sleeps and keeps track of the
121currently runnable workers. Generally, work items are not expected to 124number of the currently runnable workers. Generally, work items are
122hog a CPU and consume many cycles. That means maintaining just enough 125not expected to hog a CPU and consume many cycles. That means
123concurrency to prevent work processing from stalling should be 126maintaining just enough concurrency to prevent work processing from
124optimal. As long as there are one or more runnable workers on the 127stalling should be optimal. As long as there are one or more runnable
125CPU, the gcwq doesn't start execution of a new work, but, when the 128workers on the CPU, the thread-pool doesn't start execution of a new
126last running worker goes to sleep, it immediately schedules a new 129work, but, when the last running worker goes to sleep, it immediately
127worker so that the CPU doesn't sit idle while there are pending work 130schedules a new worker so that the CPU doesn't sit idle while there
128items. This allows using a minimal number of workers without losing 131are pending work items. This allows using a minimal number of workers
129execution bandwidth. 132without losing execution bandwidth.
130 133
131Keeping idle workers around doesn't cost other than the memory space 134Keeping idle workers around doesn't cost other than the memory space
132for kthreads, so cmwq holds onto idle ones for a while before killing 135for kthreads, so cmwq holds onto idle ones for a while before killing
133them. 136them.
134 137
135For an unbound wq, the above concurrency management doesn't apply and 138For an unbound wq, the above concurrency management doesn't apply and
136the gcwq for the pseudo unbound CPU tries to start executing all work 139the thread-pools for the pseudo unbound CPU try to start executing all
137items as soon as possible. The responsibility of regulating 140work items as soon as possible. The responsibility of regulating
138concurrency level is on the users. There is also a flag to mark a 141concurrency level is on the users. There is also a flag to mark a
139bound wq to ignore the concurrency management. Please refer to the 142bound wq to ignore the concurrency management. Please refer to the
140API section for details. 143API section for details.
@@ -205,31 +208,22 @@ resources, scheduled and executed.
205 208
206 WQ_HIGHPRI 209 WQ_HIGHPRI
207 210
208 Work items of a highpri wq are queued at the head of the 211 Work items of a highpri wq are queued to the highpri
209 worklist of the target gcwq and start execution regardless of 212 thread-pool of the target gcwq. Highpri thread-pools are
210 the current concurrency level. In other words, highpri work 213 served by worker threads with elevated nice level.
211 items will always start execution as soon as execution
212 resource is available.
213 214
214 Ordering among highpri work items is preserved - a highpri 215 Note that normal and highpri thread-pools don't interact with
215 work item queued after another highpri work item will start 216 each other. Each maintain its separate pool of workers and
216 execution after the earlier highpri work item starts. 217 implements concurrency management among its workers.
217
218 Although highpri work items are not held back by other
219 runnable work items, they still contribute to the concurrency
220 level. Highpri work items in runnable state will prevent
221 non-highpri work items from starting execution.
222
223 This flag is meaningless for unbound wq.
224 218
225 WQ_CPU_INTENSIVE 219 WQ_CPU_INTENSIVE
226 220
227 Work items of a CPU intensive wq do not contribute to the 221 Work items of a CPU intensive wq do not contribute to the
228 concurrency level. In other words, runnable CPU intensive 222 concurrency level. In other words, runnable CPU intensive
229 work items will not prevent other work items from starting 223 work items will not prevent other work items in the same
230 execution. This is useful for bound work items which are 224 thread-pool from starting execution. This is useful for bound
231 expected to hog CPU cycles so that their execution is 225 work items which are expected to hog CPU cycles so that their
232 regulated by the system scheduler. 226 execution is regulated by the system scheduler.
233 227
234 Although CPU intensive work items don't contribute to the 228 Although CPU intensive work items don't contribute to the
235 concurrency level, start of their executions is still 229 concurrency level, start of their executions is still
@@ -239,14 +233,6 @@ resources, scheduled and executed.
239 233
240 This flag is meaningless for unbound wq. 234 This flag is meaningless for unbound wq.
241 235
242 WQ_HIGHPRI | WQ_CPU_INTENSIVE
243
244 This combination makes the wq avoid interaction with
245 concurrency management completely and behave as a simple
246 per-CPU execution context provider. Work items queued on a
247 highpri CPU-intensive wq start execution as soon as resources
248 are available and don't affect execution of other work items.
249
250@max_active: 236@max_active:
251 237
252@max_active determines the maximum number of execution contexts per 238@max_active determines the maximum number of execution contexts per
@@ -328,20 +314,7 @@ If @max_active == 2,
328 35 w2 wakes up and finishes 314 35 w2 wakes up and finishes
329 315
330Now, let's assume w1 and w2 are queued to a different wq q1 which has 316Now, let's assume w1 and w2 are queued to a different wq q1 which has
331WQ_HIGHPRI set, 317WQ_CPU_INTENSIVE set,
332
333 TIME IN MSECS EVENT
334 0 w1 and w2 start and burn CPU
335 5 w1 sleeps
336 10 w2 sleeps
337 10 w0 starts and burns CPU
338 15 w0 sleeps
339 15 w1 wakes up and finishes
340 20 w2 wakes up and finishes
341 25 w0 wakes up and burns CPU
342 30 w0 finishes
343
344If q1 has WQ_CPU_INTENSIVE set,
345 318
346 TIME IN MSECS EVENT 319 TIME IN MSECS EVENT
347 0 w0 starts and burns CPU 320 0 w0 starts and burns CPU
diff --git a/Documentation/x86/boot.txt b/Documentation/x86/boot.txt
index 7c3a8801b7ce..9efceff51bfb 100644
--- a/Documentation/x86/boot.txt
+++ b/Documentation/x86/boot.txt
@@ -54,6 +54,9 @@ Protocol 2.10: (Kernel 2.6.31) Added a protocol for relaxed alignment
54 beyond the kernel_alignment added, new init_size and 54 beyond the kernel_alignment added, new init_size and
55 pref_address fields. Added extended boot loader IDs. 55 pref_address fields. Added extended boot loader IDs.
56 56
57Protocol 2.11: (Kernel 3.6) Added a field for offset of EFI handover
58 protocol entry point.
59
57**** MEMORY LAYOUT 60**** MEMORY LAYOUT
58 61
59The traditional memory map for the kernel loader, used for Image or 62The traditional memory map for the kernel loader, used for Image or
@@ -189,6 +192,7 @@ Offset Proto Name Meaning
189 of struct setup_data 192 of struct setup_data
1900258/8 2.10+ pref_address Preferred loading address 1930258/8 2.10+ pref_address Preferred loading address
1910260/4 2.10+ init_size Linear memory required during initialization 1940260/4 2.10+ init_size Linear memory required during initialization
1950264/4 2.11+ handover_offset Offset of handover entry point
192 196
193(1) For backwards compatibility, if the setup_sects field contains 0, the 197(1) For backwards compatibility, if the setup_sects field contains 0, the
194 real value is 4. 198 real value is 4.
@@ -363,7 +367,8 @@ Protocol: 2.00+
363 ext_loader_type <- 0x05 367 ext_loader_type <- 0x05
364 ext_loader_ver <- 0x23 368 ext_loader_ver <- 0x23
365 369
366 Assigned boot loader ids: 370 Assigned boot loader ids (hexadecimal):
371
367 0 LILO (0x00 reserved for pre-2.00 bootloader) 372 0 LILO (0x00 reserved for pre-2.00 bootloader)
368 1 Loadlin 373 1 Loadlin
369 2 bootsect-loader (0x20, all other values reserved) 374 2 bootsect-loader (0x20, all other values reserved)
@@ -378,6 +383,8 @@ Protocol: 2.00+
378 C Arcturus Networks uCbootloader 383 C Arcturus Networks uCbootloader
379 E Extended (see ext_loader_type) 384 E Extended (see ext_loader_type)
380 F Special (0xFF = undefined) 385 F Special (0xFF = undefined)
386 10 Reserved
387 11 Minimal Linux Bootloader <http://sebastian-plotz.blogspot.de>
381 388
382 Please contact <hpa@zytor.com> if you need a bootloader ID 389 Please contact <hpa@zytor.com> if you need a bootloader ID
383 value assigned. 390 value assigned.
@@ -690,6 +697,16 @@ Offset/size: 0x260/4
690 else 697 else
691 runtime_start = pref_address 698 runtime_start = pref_address
692 699
700Field name: handover_offset
701Type: read
702Offset/size: 0x264/4
703
704 This field is the offset from the beginning of the kernel image to
705 the EFI handover protocol entry point. Boot loaders using the EFI
706 handover protocol to boot the kernel should jump to this offset.
707
708 See EFI HANDOVER PROTOCOL below for more details.
709
693 710
694**** THE IMAGE CHECKSUM 711**** THE IMAGE CHECKSUM
695 712
@@ -1010,3 +1027,30 @@ segment; __BOOS_CS must have execute/read permission, and __BOOT_DS
1010must 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
1011must 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
1012address 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.
1030
1031**** EFI HANDOVER PROTOCOL
1032
1033This protocol allows boot loaders to defer initialisation to the EFI
1034boot stub. The boot loader is required to load the kernel/initrd(s)
1035from the boot media and jump to the EFI handover protocol entry point
1036which is hdr->handover_offset bytes from the beginning of
1037startup_{32,64}.
1038
1039The function prototype for the handover entry point looks like this,
1040
1041 efi_main(void *handle, efi_system_table_t *table, struct boot_params *bp)
1042
1043'handle' is the EFI image handle passed to the boot loader by the EFI
1044firmware, 'table' is the EFI system table - these are the first two
1045arguments of the "handoff state" as described in section 2.3 of the
1046UEFI specification. 'bp' is the boot loader-allocated boot params.
1047
1048The boot loader *must* fill out the following fields in bp,
1049
1050 o hdr.code32_start
1051 o hdr.cmd_line_ptr
1052 o hdr.cmdline_size
1053 o hdr.ramdisk_image (if applicable)
1054 o hdr.ramdisk_size (if applicable)
1055
1056All other fields should be zero.