aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/ABI/testing/sysfs-bus-mei7
-rw-r--r--Documentation/ABI/testing/sysfs-devices-system-cpu12
-rw-r--r--Documentation/devicetree/bindings/arm/atmel-adc.txt13
-rw-r--r--Documentation/devicetree/bindings/arm/msm/ssbi.txt18
-rw-r--r--Documentation/devicetree/bindings/arm/samsung/exynos-adc.txt60
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio.txt6
-rw-r--r--Documentation/devicetree/bindings/hwmon/ntc_thermistor.txt29
-rw-r--r--Documentation/devicetree/bindings/iio/iio-bindings.txt97
-rw-r--r--Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt109
-rw-r--r--Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt3
-rw-r--r--Documentation/devicetree/bindings/staging/dwc2.txt15
-rw-r--r--Documentation/devicetree/bindings/staging/imx-drm/fsl-imx-drm.txt2
-rw-r--r--Documentation/devicetree/bindings/video/via,vt8500-fb.txt48
-rw-r--r--Documentation/devicetree/bindings/video/wm,wm8505-fb.txt32
-rw-r--r--Documentation/hwmon/adt741047
-rw-r--r--Documentation/hwmon/lm2506634
-rw-r--r--Documentation/hwmon/lm9523436
-rw-r--r--Documentation/hwmon/ltc2978143
-rw-r--r--Documentation/hwmon/nct6775188
-rw-r--r--Documentation/hwmon/sht152
-rw-r--r--Documentation/hwmon/tmp40125
-rw-r--r--Documentation/hwmon/zl61002
-rw-r--r--Documentation/ia64/err_inject.txt2
-rw-r--r--Documentation/kdump/kdump.txt1
-rw-r--r--Documentation/kernel-parameters.txt29
-rw-r--r--Documentation/misc-devices/mei/mei-client-bus.txt138
-rw-r--r--Documentation/pinctrl.txt112
-rw-r--r--Documentation/s390/s390dbf.txt3
28 files changed, 1063 insertions, 150 deletions
diff --git a/Documentation/ABI/testing/sysfs-bus-mei b/Documentation/ABI/testing/sysfs-bus-mei
new file mode 100644
index 000000000000..2066f0bbd453
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-bus-mei
@@ -0,0 +1,7 @@
1What: /sys/bus/mei/devices/.../modalias
2Date: March 2013
3KernelVersion: 3.10
4Contact: Samuel Ortiz <sameo@linux.intel.com>
5 linux-mei@linux.intel.com
6Description: Stores the same MODALIAS value emitted by uevent
7 Format: mei:<mei device name>
diff --git a/Documentation/ABI/testing/sysfs-devices-system-cpu b/Documentation/ABI/testing/sysfs-devices-system-cpu
index 9c978dcae07d..2447698aed41 100644
--- a/Documentation/ABI/testing/sysfs-devices-system-cpu
+++ b/Documentation/ABI/testing/sysfs-devices-system-cpu
@@ -173,3 +173,15 @@ Description: Processor frequency boosting control
173 Boosting allows the CPU and the firmware to run at a frequency 173 Boosting allows the CPU and the firmware to run at a frequency
174 beyound it's nominal limit. 174 beyound it's nominal limit.
175 More details can be found in Documentation/cpu-freq/boost.txt 175 More details can be found in Documentation/cpu-freq/boost.txt
176
177
178What: /sys/devices/system/cpu/cpu#/crash_notes
179 /sys/devices/system/cpu/cpu#/crash_notes_size
180Date: April 2013
181Contact: kexec@lists.infradead.org
182Description: address and size of the percpu note.
183
184 crash_notes: the physical address of the memory that holds the
185 note of cpu#.
186
187 crash_notes_size: size of the note of cpu#.
diff --git a/Documentation/devicetree/bindings/arm/atmel-adc.txt b/Documentation/devicetree/bindings/arm/atmel-adc.txt
index c63097d6afeb..16769d9cedd6 100644
--- a/Documentation/devicetree/bindings/arm/atmel-adc.txt
+++ b/Documentation/devicetree/bindings/arm/atmel-adc.txt
@@ -14,9 +14,19 @@ Required properties:
14 - atmel,adc-status-register: Offset of the Interrupt Status Register 14 - atmel,adc-status-register: Offset of the Interrupt Status Register
15 - atmel,adc-trigger-register: Offset of the Trigger Register 15 - atmel,adc-trigger-register: Offset of the Trigger Register
16 - atmel,adc-vref: Reference voltage in millivolts for the conversions 16 - atmel,adc-vref: Reference voltage in millivolts for the conversions
17 - atmel,adc-res: List of resolution in bits supported by the ADC. List size
18 must be two at least.
19 - atmel,adc-res-names: Contains one identifier string for each resolution
20 in atmel,adc-res property. "lowres" and "highres"
21 identifiers are required.
17 22
18Optional properties: 23Optional properties:
19 - atmel,adc-use-external: Boolean to enable of external triggers 24 - atmel,adc-use-external: Boolean to enable of external triggers
25 - atmel,adc-use-res: String corresponding to an identifier from
26 atmel,adc-res-names property. If not specified, the highest
27 resolution will be used.
28 - atmel,adc-sleep-mode: Boolean to enable sleep mode when no conversion
29 - atmel,adc-sample-hold-time: Sample and Hold Time in microseconds
20 30
21Optional trigger Nodes: 31Optional trigger Nodes:
22 - Required properties: 32 - Required properties:
@@ -40,6 +50,9 @@ adc0: adc@fffb0000 {
40 atmel,adc-trigger-register = <0x08>; 50 atmel,adc-trigger-register = <0x08>;
41 atmel,adc-use-external; 51 atmel,adc-use-external;
42 atmel,adc-vref = <3300>; 52 atmel,adc-vref = <3300>;
53 atmel,adc-res = <8 10>;
54 atmel,adc-res-names = "lowres", "highres";
55 atmel,adc-use-res = "lowres";
43 56
44 trigger@0 { 57 trigger@0 {
45 trigger-name = "external-rising"; 58 trigger-name = "external-rising";
diff --git a/Documentation/devicetree/bindings/arm/msm/ssbi.txt b/Documentation/devicetree/bindings/arm/msm/ssbi.txt
new file mode 100644
index 000000000000..54fd5ced3401
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/msm/ssbi.txt
@@ -0,0 +1,18 @@
1* Qualcomm SSBI
2
3Some Qualcomm MSM devices contain a point-to-point serial bus used to
4communicate with a limited range of devices (mostly power management
5chips).
6
7These require the following properties:
8
9- compatible: "qcom,ssbi"
10
11- qcom,controller-type
12 indicates the SSBI bus variant the controller should use to talk
13 with the slave device. This should be one of "ssbi", "ssbi2", or
14 "pmic-arbiter". The type chosen is determined by the attached
15 slave.
16
17The slave device should be the single child node of the ssbi device
18with a compatible field.
diff --git a/Documentation/devicetree/bindings/arm/samsung/exynos-adc.txt b/Documentation/devicetree/bindings/arm/samsung/exynos-adc.txt
new file mode 100644
index 000000000000..47ada1dff216
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/samsung/exynos-adc.txt
@@ -0,0 +1,60 @@
1Samsung Exynos Analog to Digital Converter bindings
2
3The devicetree bindings are for the new ADC driver written for
4Exynos4 and upward SoCs from Samsung.
5
6New driver handles the following
71. Supports ADC IF found on EXYNOS4412/EXYNOS5250
8 and future SoCs from Samsung
92. Add ADC driver under iio/adc framework
103. Also adds the Documentation for device tree bindings
11
12Required properties:
13- compatible: Must be "samsung,exynos-adc-v1"
14 for exynos4412/5250 controllers.
15 Must be "samsung,exynos-adc-v2" for
16 future controllers.
17- reg: Contains ADC register address range (base address and
18 length) and the address of the phy enable register.
19- interrupts: Contains the interrupt information for the timer. The
20 format is being dependent on which interrupt controller
21 the Samsung device uses.
22- #io-channel-cells = <1>; As ADC has multiple outputs
23- clocks From common clock binding: handle to adc clock.
24- clock-names From common clock binding: Shall be "adc".
25- vdd-supply VDD input supply.
26
27Note: child nodes can be added for auto probing from device tree.
28
29Example: adding device info in dtsi file
30
31adc: adc@12D10000 {
32 compatible = "samsung,exynos-adc-v1";
33 reg = <0x12D10000 0x100>, <0x10040718 0x4>;
34 interrupts = <0 106 0>;
35 #io-channel-cells = <1>;
36 io-channel-ranges;
37
38 clocks = <&clock 303>;
39 clock-names = "adc";
40
41 vdd-supply = <&buck5_reg>;
42};
43
44
45Example: Adding child nodes in dts file
46
47adc@12D10000 {
48
49 /* NTC thermistor is a hwmon device */
50 ncp15wb473@0 {
51 compatible = "ntc,ncp15wb473";
52 pullup-uV = <1800000>;
53 pullup-ohm = <47000>;
54 pulldown-ohm = <0>;
55 io-channels = <&adc 4>;
56 };
57};
58
59Note: Does not apply to ADC driver under arch/arm/plat-samsung/
60Note: The child node can be added under the adc node or separately.
diff --git a/Documentation/devicetree/bindings/gpio/gpio.txt b/Documentation/devicetree/bindings/gpio/gpio.txt
index a33628759d36..d933af370697 100644
--- a/Documentation/devicetree/bindings/gpio/gpio.txt
+++ b/Documentation/devicetree/bindings/gpio/gpio.txt
@@ -98,7 +98,7 @@ announce the pinrange to the pin ctrl subsystem. For example,
98 compatible = "fsl,qe-pario-bank-e", "fsl,qe-pario-bank"; 98 compatible = "fsl,qe-pario-bank-e", "fsl,qe-pario-bank";
99 reg = <0x1460 0x18>; 99 reg = <0x1460 0x18>;
100 gpio-controller; 100 gpio-controller;
101 gpio-ranges = <&pinctrl1 20 10>, <&pinctrl2 50 20>; 101 gpio-ranges = <&pinctrl1 0 20 10>, <&pinctrl2 10 50 20>;
102 102
103 } 103 }
104 104
@@ -107,8 +107,8 @@ where,
107 107
108 Next values specify the base pin and number of pins for the range 108 Next values specify the base pin and number of pins for the range
109 handled by 'qe_pio_e' gpio. In the given example from base pin 20 to 109 handled by 'qe_pio_e' gpio. In the given example from base pin 20 to
110 pin 29 under pinctrl1 and pin 50 to pin 69 under pinctrl2 is handled 110 pin 29 under pinctrl1 with gpio offset 0 and pin 50 to pin 69 under
111 by this gpio controller. 111 pinctrl2 with gpio offset 10 is handled by this gpio controller.
112 112
113The pinctrl node must have "#gpio-range-cells" property to show number of 113The pinctrl node must have "#gpio-range-cells" property to show number of
114arguments to pass with phandle from gpio controllers node. 114arguments to pass with phandle from gpio controllers node.
diff --git a/Documentation/devicetree/bindings/hwmon/ntc_thermistor.txt b/Documentation/devicetree/bindings/hwmon/ntc_thermistor.txt
new file mode 100644
index 000000000000..c6f66674f19c
--- /dev/null
+++ b/Documentation/devicetree/bindings/hwmon/ntc_thermistor.txt
@@ -0,0 +1,29 @@
1NTC Thermistor hwmon sensors
2-------------------------------
3
4Requires node properties:
5- "compatible" value : one of
6 "ntc,ncp15wb473"
7 "ntc,ncp18wb473"
8 "ntc,ncp21wb473"
9 "ntc,ncp03wb473"
10 "ntc,ncp15wl333"
11- "pullup-uv" Pull up voltage in micro volts
12- "pullup-ohm" Pull up resistor value in ohms
13- "pulldown-ohm" Pull down resistor value in ohms
14- "connected-positive" Always ON, If not specified.
15 Status change is possible.
16- "io-channels" Channel node of ADC to be used for
17 conversion.
18
19Read more about iio bindings at
20 Documentation/devicetree/bindings/iio/iio-bindings.txt
21
22Example:
23 ncp15wb473@0 {
24 compatible = "ntc,ncp15wb473";
25 pullup-uv = <1800000>;
26 pullup-ohm = <47000>;
27 pulldown-ohm = <0>;
28 io-channels = <&adc 3>;
29 };
diff --git a/Documentation/devicetree/bindings/iio/iio-bindings.txt b/Documentation/devicetree/bindings/iio/iio-bindings.txt
new file mode 100644
index 000000000000..0b447d9ad196
--- /dev/null
+++ b/Documentation/devicetree/bindings/iio/iio-bindings.txt
@@ -0,0 +1,97 @@
1This binding is derived from clock bindings, and based on suggestions
2from Lars-Peter Clausen [1].
3
4Sources of IIO channels can be represented by any node in the device
5tree. Those nodes are designated as IIO providers. IIO consumer
6nodes use a phandle and IIO specifier pair to connect IIO provider
7outputs to IIO inputs. Similar to the gpio specifiers, an IIO
8specifier is an array of one or more cells identifying the IIO
9output on a device. The length of an IIO specifier is defined by the
10value of a #io-channel-cells property in the IIO provider node.
11
12[1] http://marc.info/?l=linux-iio&m=135902119507483&w=2
13
14==IIO providers==
15
16Required properties:
17#io-channel-cells: Number of cells in an IIO specifier; Typically 0 for nodes
18 with a single IIO output and 1 for nodes with multiple
19 IIO outputs.
20
21Example for a simple configuration with no trigger:
22
23 adc: voltage-sensor@35 {
24 compatible = "maxim,max1139";
25 reg = <0x35>;
26 #io-channel-cells = <1>;
27 };
28
29Example for a configuration with trigger:
30
31 adc@35 {
32 compatible = "some-vendor,some-adc";
33 reg = <0x35>;
34
35 adc1: iio-device@0 {
36 #io-channel-cells = <1>;
37 /* other properties */
38 };
39 adc2: iio-device@1 {
40 #io-channel-cells = <1>;
41 /* other properties */
42 };
43 };
44
45==IIO consumers==
46
47Required properties:
48io-channels: List of phandle and IIO specifier pairs, one pair
49 for each IIO input to the device. Note: if the
50 IIO provider specifies '0' for #io-channel-cells,
51 then only the phandle portion of the pair will appear.
52
53Optional properties:
54io-channel-names:
55 List of IIO input name strings sorted in the same
56 order as the io-channels property. Consumers drivers
57 will use io-channel-names to match IIO input names
58 with IIO specifiers.
59io-channel-ranges:
60 Empty property indicating that child nodes can inherit named
61 IIO channels from this node. Useful for bus nodes to provide
62 and IIO channel to their children.
63
64For example:
65
66 device {
67 io-channels = <&adc 1>, <&ref 0>;
68 io-channel-names = "vcc", "vdd";
69 };
70
71This represents a device with two IIO inputs, named "vcc" and "vdd".
72The vcc channel is connected to output 1 of the &adc device, and the
73vdd channel is connected to output 0 of the &ref device.
74
75==Example==
76
77 adc: max1139@35 {
78 compatible = "maxim,max1139";
79 reg = <0x35>;
80 #io-channel-cells = <1>;
81 };
82
83 ...
84
85 iio_hwmon {
86 compatible = "iio-hwmon";
87 io-channels = <&adc 0>, <&adc 1>, <&adc 2>,
88 <&adc 3>, <&adc 4>, <&adc 5>,
89 <&adc 6>, <&adc 7>, <&adc 8>,
90 <&adc 9>;
91 };
92
93 some_consumer {
94 compatible = "some-consumer";
95 io-channels = <&adc 10>, <&adc 11>;
96 io-channel-names = "adc1", "adc2";
97 };
diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt
index 2c81e45f1374..08f0c3d01575 100644
--- a/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt
+++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt
@@ -1,7 +1,9 @@
1One-register-per-pin type device tree based pinctrl driver 1One-register-per-pin type device tree based pinctrl driver
2 2
3Required properties: 3Required properties:
4- compatible : "pinctrl-single" 4- compatible : "pinctrl-single" or "pinconf-single".
5 "pinctrl-single" means that pinconf isn't supported.
6 "pinconf-single" means that generic pinconf is supported.
5 7
6- reg : offset and length of the register set for the mux registers 8- reg : offset and length of the register set for the mux registers
7 9
@@ -14,9 +16,61 @@ Optional properties:
14- pinctrl-single,function-off : function off mode for disabled state if 16- pinctrl-single,function-off : function off mode for disabled state if
15 available and same for all registers; if not specified, disabling of 17 available and same for all registers; if not specified, disabling of
16 pin functions is ignored 18 pin functions is ignored
19
17- pinctrl-single,bit-per-mux : boolean to indicate that one register controls 20- pinctrl-single,bit-per-mux : boolean to indicate that one register controls
18 more than one pin 21 more than one pin
19 22
23- pinctrl-single,drive-strength : array of value that are used to configure
24 drive strength in the pinmux register. They're value of drive strength
25 current and drive strength mask.
26
27 /* drive strength current, mask */
28 pinctrl-single,power-source = <0x30 0xf0>;
29
30- pinctrl-single,bias-pullup : array of value that are used to configure the
31 input bias pullup in the pinmux register.
32
33 /* input, enabled pullup bits, disabled pullup bits, mask */
34 pinctrl-single,bias-pullup = <0 1 0 1>;
35
36- pinctrl-single,bias-pulldown : array of value that are used to configure the
37 input bias pulldown in the pinmux register.
38
39 /* input, enabled pulldown bits, disabled pulldown bits, mask */
40 pinctrl-single,bias-pulldown = <2 2 0 2>;
41
42 * Two bits to control input bias pullup and pulldown: User should use
43 pinctrl-single,bias-pullup & pinctrl-single,bias-pulldown. One bit means
44 pullup, and the other one bit means pulldown.
45 * Three bits to control input bias enable, pullup and pulldown. User should
46 use pinctrl-single,bias-pullup & pinctrl-single,bias-pulldown. Input bias
47 enable bit should be included in pullup or pulldown bits.
48 * Although driver could set PIN_CONFIG_BIAS_DISABLE, there's no property as
49 pinctrl-single,bias-disable. Because pinctrl single driver could implement
50 it by calling pulldown, pullup disabled.
51
52- pinctrl-single,input-schmitt : array of value that are used to configure
53 input schmitt in the pinmux register. In some silicons, there're two input
54 schmitt value (rising-edge & falling-edge) in the pinmux register.
55
56 /* input schmitt value, mask */
57 pinctrl-single,input-schmitt = <0x30 0x70>;
58
59- pinctrl-single,input-schmitt-enable : array of value that are used to
60 configure input schmitt enable or disable in the pinmux register.
61
62 /* input, enable bits, disable bits, mask */
63 pinctrl-single,input-schmitt-enable = <0x30 0x40 0 0x70>;
64
65- pinctrl-single,gpio-range : list of value that are used to configure a GPIO
66 range. They're value of subnode phandle, pin base in pinctrl device, pin
67 number in this range, GPIO function value of this GPIO range.
68 The number of parameters is depend on #pinctrl-single,gpio-range-cells
69 property.
70
71 /* pin base, nr pins & gpio function */
72 pinctrl-single,gpio-range = <&range 0 3 0 &range 3 9 1>;
73
20This driver assumes that there is only one register for each pin (unless the 74This driver assumes that there is only one register for each pin (unless the
21pinctrl-single,bit-per-mux is set), and uses the common pinctrl bindings as 75pinctrl-single,bit-per-mux is set), and uses the common pinctrl bindings as
22specified in the pinctrl-bindings.txt document in this directory. 76specified in the pinctrl-bindings.txt document in this directory.
@@ -42,6 +96,20 @@ Where 0xdc is the offset from the pinctrl register base address for the
42device pinctrl register, 0x18 is the desired value, and 0xff is the sub mask to 96device pinctrl register, 0x18 is the desired value, and 0xff is the sub mask to
43be used when applying this change to the register. 97be used when applying this change to the register.
44 98
99
100Optional sub-node: In case some pins could be configured as GPIO in the pinmux
101register, those pins could be defined as a GPIO range. This sub-node is required
102by pinctrl-single,gpio-range property.
103
104Required properties in sub-node:
105- #pinctrl-single,gpio-range-cells : the number of parameters after phandle in
106 pinctrl-single,gpio-range property.
107
108 range: gpio-range {
109 #pinctrl-single,gpio-range-cells = <3>;
110 };
111
112
45Example: 113Example:
46 114
47/* SoC common file */ 115/* SoC common file */
@@ -58,7 +126,7 @@ pmx_core: pinmux@4a100040 {
58 126
59/* second controller instance for pins in wkup domain */ 127/* second controller instance for pins in wkup domain */
60pmx_wkup: pinmux@4a31e040 { 128pmx_wkup: pinmux@4a31e040 {
61 compatible = "pinctrl-single; 129 compatible = "pinctrl-single";
62 reg = <0x4a31e040 0x0038>; 130 reg = <0x4a31e040 0x0038>;
63 #address-cells = <1>; 131 #address-cells = <1>;
64 #size-cells = <0>; 132 #size-cells = <0>;
@@ -76,6 +144,29 @@ control_devconf0: pinmux@48002274 {
76 pinctrl-single,function-mask = <0x5F>; 144 pinctrl-single,function-mask = <0x5F>;
77}; 145};
78 146
147/* third controller instance for pins in gpio domain */
148pmx_gpio: pinmux@d401e000 {
149 compatible = "pinconf-single";
150 reg = <0xd401e000 0x0330>;
151 #address-cells = <1>;
152 #size-cells = <1>;
153 ranges;
154
155 pinctrl-single,register-width = <32>;
156 pinctrl-single,function-mask = <7>;
157
158 /* sparse GPIO range could be supported */
159 pinctrl-single,gpio-range = <&range 0 3 0 &range 3 9 1
160 &range 12 1 0 &range 13 29 1
161 &range 43 1 0 &range 44 49 1
162 &range 94 1 1 &range 96 2 1>;
163
164 range: gpio-range {
165 #pinctrl-single,gpio-range-cells = <3>;
166 };
167};
168
169
79/* board specific .dts file */ 170/* board specific .dts file */
80 171
81&pmx_core { 172&pmx_core {
@@ -96,6 +187,15 @@ control_devconf0: pinmux@48002274 {
96 >; 187 >;
97 }; 188 };
98 189
190 uart0_pins: pinmux_uart0_pins {
191 pinctrl-single,pins = <
192 0x208 0 /* UART0_RXD (IOCFG138) */
193 0x20c 0 /* UART0_TXD (IOCFG139) */
194 >;
195 pinctrl-single,bias-pulldown = <0 2 2>;
196 pinctrl-single,bias-pullup = <0 1 1>;
197 };
198
99 /* map uart2 pins */ 199 /* map uart2 pins */
100 uart2_pins: pinmux_uart2_pins { 200 uart2_pins: pinmux_uart2_pins {
101 pinctrl-single,pins = < 201 pinctrl-single,pins = <
@@ -122,6 +222,11 @@ control_devconf0: pinmux@48002274 {
122 222
123}; 223};
124 224
225&uart1 {
226 pinctrl-names = "default";
227 pinctrl-0 = <&uart0_pins>;
228};
229
125&uart2 { 230&uart2 {
126 pinctrl-names = "default"; 231 pinctrl-names = "default";
127 pinctrl-0 = <&uart2_pins>; 232 pinctrl-0 = <&uart2_pins>;
diff --git a/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt
index 4598a47aa0cd..c70fca146e91 100644
--- a/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt
@@ -7,6 +7,7 @@ on-chip controllers onto these pads.
7 7
8Required Properties: 8Required Properties:
9- compatible: should be one of the following. 9- compatible: should be one of the following.
10 - "samsung,s3c64xx-pinctrl": for S3C64xx-compatible pin-controller,
10 - "samsung,exynos4210-pinctrl": for Exynos4210 compatible pin-controller. 11 - "samsung,exynos4210-pinctrl": for Exynos4210 compatible pin-controller.
11 - "samsung,exynos4x12-pinctrl": for Exynos4x12 compatible pin-controller. 12 - "samsung,exynos4x12-pinctrl": for Exynos4x12 compatible pin-controller.
12 - "samsung,exynos5250-pinctrl": for Exynos5250 compatible pin-controller. 13 - "samsung,exynos5250-pinctrl": for Exynos5250 compatible pin-controller.
@@ -105,6 +106,8 @@ B. External Wakeup Interrupts: For supporting external wakeup interrupts, a
105 106
106 - compatible: identifies the type of the external wakeup interrupt controller 107 - compatible: identifies the type of the external wakeup interrupt controller
107 The possible values are: 108 The possible values are:
109 - samsung,s3c64xx-wakeup-eint: represents wakeup interrupt controller
110 found on Samsung S3C64xx SoCs,
108 - samsung,exynos4210-wakeup-eint: represents wakeup interrupt controller 111 - samsung,exynos4210-wakeup-eint: represents wakeup interrupt controller
109 found on Samsung Exynos4210 SoC. 112 found on Samsung Exynos4210 SoC.
110 - interrupt-parent: phandle of the interrupt parent to which the external 113 - interrupt-parent: phandle of the interrupt parent to which the external
diff --git a/Documentation/devicetree/bindings/staging/dwc2.txt b/Documentation/devicetree/bindings/staging/dwc2.txt
new file mode 100644
index 000000000000..1a1b7cfa4845
--- /dev/null
+++ b/Documentation/devicetree/bindings/staging/dwc2.txt
@@ -0,0 +1,15 @@
1Platform DesignWare HS OTG USB 2.0 controller
2-----------------------------------------------------
3
4Required properties:
5- compatible : "snps,dwc2"
6- reg : Should contain 1 register range (address and length)
7- interrupts : Should contain 1 interrupt
8
9Example:
10
11 usb@101c0000 {
12 compatible = "ralink,rt3050-usb, snps,dwc2";
13 reg = <0x101c0000 40000>;
14 interrupts = <18>;
15 };
diff --git a/Documentation/devicetree/bindings/staging/imx-drm/fsl-imx-drm.txt b/Documentation/devicetree/bindings/staging/imx-drm/fsl-imx-drm.txt
index 07654f0338b6..8071ac20d4b3 100644
--- a/Documentation/devicetree/bindings/staging/imx-drm/fsl-imx-drm.txt
+++ b/Documentation/devicetree/bindings/staging/imx-drm/fsl-imx-drm.txt
@@ -26,7 +26,7 @@ Required properties:
26- crtc: the crtc this display is connected to, see below 26- crtc: the crtc this display is connected to, see below
27Optional properties: 27Optional properties:
28- interface_pix_fmt: How this display is connected to the 28- interface_pix_fmt: How this display is connected to the
29 crtc. Currently supported types: "rgb24", "rgb565" 29 crtc. Currently supported types: "rgb24", "rgb565", "bgr666"
30- edid: verbatim EDID data block describing attached display. 30- edid: verbatim EDID data block describing attached display.
31- ddc: phandle describing the i2c bus handling the display data 31- ddc: phandle describing the i2c bus handling the display data
32 channel 32 channel
diff --git a/Documentation/devicetree/bindings/video/via,vt8500-fb.txt b/Documentation/devicetree/bindings/video/via,vt8500-fb.txt
index c870b6478ec8..2871e218a0fb 100644
--- a/Documentation/devicetree/bindings/video/via,vt8500-fb.txt
+++ b/Documentation/devicetree/bindings/video/via,vt8500-fb.txt
@@ -5,58 +5,32 @@ Required properties:
5- compatible : "via,vt8500-fb" 5- compatible : "via,vt8500-fb"
6- reg : Should contain 1 register ranges(address and length) 6- reg : Should contain 1 register ranges(address and length)
7- interrupts : framebuffer controller interrupt 7- interrupts : framebuffer controller interrupt
8- display: a phandle pointing to the display node 8- bits-per-pixel : bit depth of framebuffer (16 or 32)
9 9
10Required nodes: 10Required subnodes:
11- display: a display node is required to initialize the lcd panel 11- display-timings: see display-timing.txt for information
12 This should be in the board dts.
13- default-mode: a videomode within the display with timing parameters
14 as specified below.
15 12
16Example: 13Example:
17 14
18 fb@d800e400 { 15 fb@d8050800 {
19 compatible = "via,vt8500-fb"; 16 compatible = "via,vt8500-fb";
20 reg = <0xd800e400 0x400>; 17 reg = <0xd800e400 0x400>;
21 interrupts = <12>; 18 interrupts = <12>;
22 display = <&display>; 19 bits-per-pixel = <16>;
23 default-mode = <&mode0>;
24 };
25
26VIA VT8500 Display
27-----------------------------------------------------
28Required properties (as per of_videomode_helper):
29
30 - hactive, vactive: Display resolution
31 - hfront-porch, hback-porch, hsync-len: Horizontal Display timing parameters
32 in pixels
33 vfront-porch, vback-porch, vsync-len: Vertical display timing parameters in
34 lines
35 - clock: displayclock in Hz
36 - bpp: lcd panel bit-depth.
37 <16> for RGB565, <32> for RGB888
38
39Optional properties (as per of_videomode_helper):
40 - width-mm, height-mm: Display dimensions in mm
41 - hsync-active-high (bool): Hsync pulse is active high
42 - vsync-active-high (bool): Vsync pulse is active high
43 - interlaced (bool): This is an interlaced mode
44 - doublescan (bool): This is a doublescan mode
45 20
46Example: 21 display-timings {
47 display: display@0 { 22 native-mode = <&timing0>;
48 modes { 23 timing0: 800x480 {
49 mode0: mode@0 { 24 clock-frequency = <0>; /* unused but required */
50 hactive = <800>; 25 hactive = <800>;
51 vactive = <480>; 26 vactive = <480>;
52 hback-porch = <88>;
53 hfront-porch = <40>; 27 hfront-porch = <40>;
28 hback-porch = <88>;
54 hsync-len = <0>; 29 hsync-len = <0>;
55 vback-porch = <32>; 30 vback-porch = <32>;
56 vfront-porch = <11>; 31 vfront-porch = <11>;
57 vsync-len = <1>; 32 vsync-len = <1>;
58 clock = <0>; /* unused but required */
59 bpp = <16>; /* non-standard but required */
60 }; 33 };
61 }; 34 };
62 }; 35 };
36
diff --git a/Documentation/devicetree/bindings/video/wm,wm8505-fb.txt b/Documentation/devicetree/bindings/video/wm,wm8505-fb.txt
index 3d325e1d11ee..0bcadb2840a5 100644
--- a/Documentation/devicetree/bindings/video/wm,wm8505-fb.txt
+++ b/Documentation/devicetree/bindings/video/wm,wm8505-fb.txt
@@ -4,20 +4,30 @@ Wondermedia WM8505 Framebuffer
4Required properties: 4Required properties:
5- compatible : "wm,wm8505-fb" 5- compatible : "wm,wm8505-fb"
6- reg : Should contain 1 register ranges(address and length) 6- reg : Should contain 1 register ranges(address and length)
7- via,display: a phandle pointing to the display node 7- bits-per-pixel : bit depth of framebuffer (16 or 32)
8 8
9Required nodes: 9Required subnodes:
10- display: a display node is required to initialize the lcd panel 10- display-timings: see display-timing.txt for information
11 This should be in the board dts. See definition in
12 Documentation/devicetree/bindings/video/via,vt8500-fb.txt
13- default-mode: a videomode node as specified in
14 Documentation/devicetree/bindings/video/via,vt8500-fb.txt
15 11
16Example: 12Example:
17 13
18 fb@d8050800 { 14 fb@d8051700 {
19 compatible = "wm,wm8505-fb"; 15 compatible = "wm,wm8505-fb";
20 reg = <0xd8050800 0x200>; 16 reg = <0xd8051700 0x200>;
21 display = <&display>; 17 bits-per-pixel = <16>;
22 default-mode = <&mode0>; 18
19 display-timings {
20 native-mode = <&timing0>;
21 timing0: 800x480 {
22 clock-frequency = <0>; /* unused but required */
23 hactive = <800>;
24 vactive = <480>;
25 hfront-porch = <40>;
26 hback-porch = <88>;
27 hsync-len = <0>;
28 vback-porch = <32>;
29 vfront-porch = <11>;
30 vsync-len = <1>;
31 };
32 };
23 }; 33 };
diff --git a/Documentation/hwmon/adt7410 b/Documentation/hwmon/adt7410
index 58150c480e56..9817941e5f19 100644
--- a/Documentation/hwmon/adt7410
+++ b/Documentation/hwmon/adt7410
@@ -12,29 +12,42 @@ Supported chips:
12 Addresses scanned: None 12 Addresses scanned: None
13 Datasheet: Publicly available at the Analog Devices website 13 Datasheet: Publicly available at the Analog Devices website
14 http://www.analog.com/static/imported-files/data_sheets/ADT7420.pdf 14 http://www.analog.com/static/imported-files/data_sheets/ADT7420.pdf
15 * Analog Devices ADT7310
16 Prefix: 'adt7310'
17 Addresses scanned: None
18 Datasheet: Publicly available at the Analog Devices website
19 http://www.analog.com/static/imported-files/data_sheets/ADT7310.pdf
20 * Analog Devices ADT7320
21 Prefix: 'adt7320'
22 Addresses scanned: None
23 Datasheet: Publicly available at the Analog Devices website
24 http://www.analog.com/static/imported-files/data_sheets/ADT7320.pdf
15 25
16Author: Hartmut Knaack <knaack.h@gmx.de> 26Author: Hartmut Knaack <knaack.h@gmx.de>
17 27
18Description 28Description
19----------- 29-----------
20 30
21The ADT7410 is a temperature sensor with rated temperature range of -55°C to 31The ADT7310/ADT7410 is a temperature sensor with rated temperature range of
22+150°C. It has a high accuracy of +/-0.5°C and can be operated at a resolution 32-55°C to +150°C. It has a high accuracy of +/-0.5°C and can be operated at a
23of 13 bits (0.0625°C) or 16 bits (0.0078°C). The sensor provides an INT pin to 33resolution of 13 bits (0.0625°C) or 16 bits (0.0078°C). The sensor provides an
24indicate that a minimum or maximum temperature set point has been exceeded, as 34INT pin to indicate that a minimum or maximum temperature set point has been
25well as a critical temperature (CT) pin to indicate that the critical 35exceeded, as well as a critical temperature (CT) pin to indicate that the
26temperature set point has been exceeded. Both pins can be set up with a common 36critical temperature set point has been exceeded. Both pins can be set up with a
27hysteresis of 0°C - 15°C and a fault queue, ranging from 1 to 4 events. Both 37common hysteresis of 0°C - 15°C and a fault queue, ranging from 1 to 4 events.
28pins can individually set to be active-low or active-high, while the whole 38Both pins can individually set to be active-low or active-high, while the whole
29device can either run in comparator mode or interrupt mode. The ADT7410 39device can either run in comparator mode or interrupt mode. The ADT7410 supports
30supports continous temperature sampling, as well as sampling one temperature 40continuous temperature sampling, as well as sampling one temperature value per
31value per second or even justget one sample on demand for power saving. 41second or even just get one sample on demand for power saving. Besides, it can
32Besides, it can completely power down its ADC, if power management is 42completely power down its ADC, if power management is required.
33required. 43
34 44The ADT7320/ADT7420 is register compatible, the only differences being the
35The ADT7420 is register compatible, the only differences being the package, 45package, a slightly narrower operating temperature range (-40°C to +150°C), and
36a slightly narrower operating temperature range (-40°C to +150°C), and a 46a better accuracy (0.25°C instead of 0.50°C.)
37better accuracy (0.25°C instead of 0.50°C.) 47
48The difference between the ADT7310/ADT7320 and ADT7410/ADT7420 is the control
49interface, the ADT7310 and ADT7320 use SPI while the ADT7410 and ADT7420 use
50I2C.
38 51
39Configuration Notes 52Configuration Notes
40------------------- 53-------------------
diff --git a/Documentation/hwmon/lm25066 b/Documentation/hwmon/lm25066
index 26025e419d35..c1b57d72efc3 100644
--- a/Documentation/hwmon/lm25066
+++ b/Documentation/hwmon/lm25066
@@ -1,7 +1,13 @@
1Kernel driver max8688 1Kernel driver lm25066
2===================== 2=====================
3 3
4Supported chips: 4Supported chips:
5 * TI LM25056
6 Prefix: 'lm25056'
7 Addresses scanned: -
8 Datasheets:
9 http://www.ti.com/lit/gpn/lm25056
10 http://www.ti.com/lit/gpn/lm25056a
5 * National Semiconductor LM25066 11 * National Semiconductor LM25066
6 Prefix: 'lm25066' 12 Prefix: 'lm25066'
7 Addresses scanned: - 13 Addresses scanned: -
@@ -25,8 +31,9 @@ Author: Guenter Roeck <linux@roeck-us.net>
25Description 31Description
26----------- 32-----------
27 33
28This driver supports hardware montoring for National Semiconductor LM25066, 34This driver supports hardware montoring for National Semiconductor / TI LM25056,
29LM5064, and LM5064 Power Management, Monitoring, Control, and Protection ICs. 35LM25066, LM5064, and LM5064 Power Management, Monitoring, Control, and
36Protection ICs.
30 37
31The driver is a client driver to the core PMBus driver. Please see 38The driver is a client driver to the core PMBus driver. Please see
32Documentation/hwmon/pmbus for details on PMBus client drivers. 39Documentation/hwmon/pmbus for details on PMBus client drivers.
@@ -60,14 +67,19 @@ in1_max Maximum input voltage.
60in1_min_alarm Input voltage low alarm. 67in1_min_alarm Input voltage low alarm.
61in1_max_alarm Input voltage high alarm. 68in1_max_alarm Input voltage high alarm.
62 69
63in2_label "vout1" 70in2_label "vmon"
64in2_input Measured output voltage. 71in2_input Measured voltage on VAUX pin
65in2_average Average measured output voltage. 72in2_min Minimum VAUX voltage (LM25056 only).
66in2_min Minimum output voltage. 73in2_max Maximum VAUX voltage (LM25056 only).
67in2_min_alarm Output voltage low alarm. 74in2_min_alarm VAUX voltage low alarm (LM25056 only).
68 75in2_max_alarm VAUX voltage high alarm (LM25056 only).
69in3_label "vout2" 76
70in3_input Measured voltage on vaux pin 77in3_label "vout1"
78 Not supported on LM25056.
79in3_input Measured output voltage.
80in3_average Average measured output voltage.
81in3_min Minimum output voltage.
82in3_min_alarm Output voltage low alarm.
71 83
72curr1_label "iin" 84curr1_label "iin"
73curr1_input Measured input current. 85curr1_input Measured input current.
diff --git a/Documentation/hwmon/lm95234 b/Documentation/hwmon/lm95234
new file mode 100644
index 000000000000..a0e95ddfd372
--- /dev/null
+++ b/Documentation/hwmon/lm95234
@@ -0,0 +1,36 @@
1Kernel driver lm95234
2=====================
3
4Supported chips:
5 * National Semiconductor / Texas Instruments LM95234
6 Addresses scanned: I2C 0x18, 0x4d, 0x4e
7 Datasheet: Publicly available at the Texas Instruments website
8 http://www.ti.com/product/lm95234
9
10
11Author: Guenter Roeck <linux@roeck-us.net>
12
13Description
14-----------
15
16LM95234 is an 11-bit digital temperature sensor with a 2-wire System Management
17Bus (SMBus) interface and TrueTherm technology that can very accurately monitor
18the temperature of four remote diodes as well as its own temperature.
19The four remote diodes can be external devices such as microprocessors,
20graphics processors or diode-connected 2N3904s. The LM95234's TruTherm
21beta compensation technology allows sensing of 90 nm or 65 nm process
22thermal diodes accurately.
23
24All temperature values are given in millidegrees Celsius. Temperature
25is provided within a range of -127 to +255 degrees (+127.875 degrees for
26the internal sensor). Resolution depends on temperature input and range.
27
28Each sensor has its own maximum limit, but the hysteresis is common to all
29channels. The hysteresis is configurable with the tem1_max_hyst attribute and
30affects the hysteresis on all channels. The first two external sensors also
31have a critical limit.
32
33The lm95234 driver can change its update interval to a fixed set of values.
34It will round up to the next selectable interval. See the datasheet for exact
35values. Reading sensor values more often will do no harm, but will return
36'old' values.
diff --git a/Documentation/hwmon/ltc2978 b/Documentation/hwmon/ltc2978
index e4d75c606c97..dc0d08c61305 100644
--- a/Documentation/hwmon/ltc2978
+++ b/Documentation/hwmon/ltc2978
@@ -2,6 +2,10 @@ Kernel driver ltc2978
2===================== 2=====================
3 3
4Supported chips: 4Supported chips:
5 * Linear Technology LTC2974
6 Prefix: 'ltc2974'
7 Addresses scanned: -
8 Datasheet: http://www.linear.com/product/ltc2974
5 * Linear Technology LTC2978 9 * Linear Technology LTC2978
6 Prefix: 'ltc2978' 10 Prefix: 'ltc2978'
7 Addresses scanned: - 11 Addresses scanned: -
@@ -10,6 +14,10 @@ Supported chips:
10 Prefix: 'ltc3880' 14 Prefix: 'ltc3880'
11 Addresses scanned: - 15 Addresses scanned: -
12 Datasheet: http://www.linear.com/product/ltc3880 16 Datasheet: http://www.linear.com/product/ltc3880
17 * Linear Technology LTC3883
18 Prefix: 'ltc3883'
19 Addresses scanned: -
20 Datasheet: http://www.linear.com/product/ltc3883
13 21
14Author: Guenter Roeck <linux@roeck-us.net> 22Author: Guenter Roeck <linux@roeck-us.net>
15 23
@@ -17,9 +25,9 @@ Author: Guenter Roeck <linux@roeck-us.net>
17Description 25Description
18----------- 26-----------
19 27
20The LTC2978 is an octal power supply monitor, supervisor, sequencer and 28LTC2974 is a quad digital power supply manager. LTC2978 is an octal power supply
21margin controller. The LTC3880 is a dual, PolyPhase DC/DC synchronous 29monitor. LTC3880 is a dual output poly-phase step-down DC/DC controller. LTC3883
22step-down switching regulator controller. 30is a single phase step-down DC/DC controller.
23 31
24 32
25Usage Notes 33Usage Notes
@@ -41,63 +49,90 @@ Sysfs attributes
41in1_label "vin" 49in1_label "vin"
42in1_input Measured input voltage. 50in1_input Measured input voltage.
43in1_min Minimum input voltage. 51in1_min Minimum input voltage.
44in1_max Maximum input voltage. 52in1_max Maximum input voltage. LTC2974 and LTC2978 only.
45in1_lcrit Critical minimum input voltage. 53in1_lcrit Critical minimum input voltage. LTC2974 and LTC2978
54 only.
46in1_crit Critical maximum input voltage. 55in1_crit Critical maximum input voltage.
47in1_min_alarm Input voltage low alarm. 56in1_min_alarm Input voltage low alarm.
48in1_max_alarm Input voltage high alarm. 57in1_max_alarm Input voltage high alarm. LTC2974 and LTC2978 only.
49in1_lcrit_alarm Input voltage critical low alarm. 58in1_lcrit_alarm Input voltage critical low alarm. LTC2974 and LTC2978
59 only.
50in1_crit_alarm Input voltage critical high alarm. 60in1_crit_alarm Input voltage critical high alarm.
51in1_lowest Lowest input voltage. LTC2978 only. 61in1_lowest Lowest input voltage. LTC2974 and LTC2978 only.
52in1_highest Highest input voltage. 62in1_highest Highest input voltage.
53in1_reset_history Reset history. Writing into this attribute will reset 63in1_reset_history Reset input voltage history.
54 history for all attributes. 64
55 65in[N]_label "vout[1-8]".
56in[2-9]_label "vout[1-8]". Channels 3 to 9 on LTC2978 only. 66 LTC2974: N=2-5
57in[2-9]_input Measured output voltage. 67 LTC2978: N=2-9
58in[2-9]_min Minimum output voltage. 68 LTC3880: N=2-3
59in[2-9]_max Maximum output voltage. 69 LTC3883: N=2
60in[2-9]_lcrit Critical minimum output voltage. 70in[N]_input Measured output voltage.
61in[2-9]_crit Critical maximum output voltage. 71in[N]_min Minimum output voltage.
62in[2-9]_min_alarm Output voltage low alarm. 72in[N]_max Maximum output voltage.
63in[2-9]_max_alarm Output voltage high alarm. 73in[N]_lcrit Critical minimum output voltage.
64in[2-9]_lcrit_alarm Output voltage critical low alarm. 74in[N]_crit Critical maximum output voltage.
65in[2-9]_crit_alarm Output voltage critical high alarm. 75in[N]_min_alarm Output voltage low alarm.
66in[2-9]_lowest Lowest output voltage. LTC2978 only. 76in[N]_max_alarm Output voltage high alarm.
67in[2-9]_highest Lowest output voltage. 77in[N]_lcrit_alarm Output voltage critical low alarm.
68in[2-9]_reset_history Reset history. Writing into this attribute will reset 78in[N]_crit_alarm Output voltage critical high alarm.
69 history for all attributes. 79in[N]_lowest Lowest output voltage. LTC2974 and LTC2978 only.
70 80in[N]_highest Highest output voltage.
71temp[1-3]_input Measured temperature. 81in[N]_reset_history Reset output voltage history.
82
83temp[N]_input Measured temperature.
84 On LTC2974, temp[1-4] report external temperatures,
85 and temp5 reports the chip temperature.
72 On LTC2978, only one temperature measurement is 86 On LTC2978, only one temperature measurement is
73 supported and reflects the internal temperature. 87 supported and reports the chip temperature.
74 On LTC3880, temp1 and temp2 report external 88 On LTC3880, temp1 and temp2 report external
75 temperatures, and temp3 reports the internal 89 temperatures, and temp3 reports the chip temperature.
76 temperature. 90 On LTC3883, temp1 reports an external temperature,
77temp[1-3]_min Mimimum temperature. 91 and temp2 reports the chip temperature.
78temp[1-3]_max Maximum temperature. 92temp[N]_min Mimimum temperature. LTC2974 and LTC2978 only.
79temp[1-3]_lcrit Critical low temperature. 93temp[N]_max Maximum temperature.
80temp[1-3]_crit Critical high temperature. 94temp[N]_lcrit Critical low temperature.
81temp[1-3]_min_alarm Chip temperature low alarm. 95temp[N]_crit Critical high temperature.
82temp[1-3]_max_alarm Chip temperature high alarm. 96temp[N]_min_alarm Temperature low alarm. LTC2974 and LTC2978 only.
83temp[1-3]_lcrit_alarm Chip temperature critical low alarm. 97temp[N]_max_alarm Temperature high alarm.
84temp[1-3]_crit_alarm Chip temperature critical high alarm. 98temp[N]_lcrit_alarm Temperature critical low alarm.
85temp[1-3]_lowest Lowest measured temperature. LTC2978 only. 99temp[N]_crit_alarm Temperature critical high alarm.
86temp[1-3]_highest Highest measured temperature. 100temp[N]_lowest Lowest measured temperature. LTC2974 and LTC2978 only.
87temp[1-3]_reset_history Reset history. Writing into this attribute will reset 101 Not supported for chip temperature sensor on LTC2974.
88 history for all attributes. 102temp[N]_highest Highest measured temperature. Not supported for chip
89 103 temperature sensor on LTC2974.
90power[1-2]_label "pout[1-2]". LTC3880 only. 104temp[N]_reset_history Reset temperature history. Not supported for chip
91power[1-2]_input Measured power. 105 temperature sensor on LTC2974.
92 106
93curr1_label "iin". LTC3880 only. 107power1_label "pin". LTC3883 only.
108power1_input Measured input power.
109
110power[N]_label "pout[1-4]".
111 LTC2974: N=1-4
112 LTC2978: Not supported
113 LTC3880: N=1-2
114 LTC3883: N=2
115power[N]_input Measured output power.
116
117curr1_label "iin". LTC3880 and LTC3883 only.
94curr1_input Measured input current. 118curr1_input Measured input current.
95curr1_max Maximum input current. 119curr1_max Maximum input current.
96curr1_max_alarm Input current high alarm. 120curr1_max_alarm Input current high alarm.
97 121curr1_highest Highest input current. LTC3883 only.
98curr[2-3]_label "iout[1-2]". LTC3880 only. 122curr1_reset_history Reset input current history. LTC3883 only.
99curr[2-3]_input Measured input current. 123
100curr[2-3]_max Maximum input current. 124curr[N]_label "iout[1-4]".
101curr[2-3]_crit Critical input current. 125 LTC2974: N=1-4
102curr[2-3]_max_alarm Input current high alarm. 126 LTC2978: not supported
103curr[2-3]_crit_alarm Input current critical high alarm. 127 LTC3880: N=2-3
128 LTC3883: N=2
129curr[N]_input Measured output current.
130curr[N]_max Maximum output current.
131curr[N]_crit Critical high output current.
132curr[N]_lcrit Critical low output current. LTC2974 only.
133curr[N]_max_alarm Output current high alarm.
134curr[N]_crit_alarm Output current critical high alarm.
135curr[N]_lcrit_alarm Output current critical low alarm. LTC2974 only.
136curr[N]_lowest Lowest output current. LTC2974 only.
137curr[N]_highest Highest output current.
138curr[N]_reset_history Reset output current history.
diff --git a/Documentation/hwmon/nct6775 b/Documentation/hwmon/nct6775
new file mode 100644
index 000000000000..4e9ef60e8c6c
--- /dev/null
+++ b/Documentation/hwmon/nct6775
@@ -0,0 +1,188 @@
1Note
2====
3
4This driver supersedes the NCT6775F and NCT6776F support in the W83627EHF
5driver.
6
7Kernel driver NCT6775
8=====================
9
10Supported chips:
11 * Nuvoton NCT5572D/NCT6771F/NCT6772F/NCT6775F/W83677HG-I
12 Prefix: 'nct6775'
13 Addresses scanned: ISA address retrieved from Super I/O registers
14 Datasheet: Available from Nuvoton upon request
15 * Nuvoton NCT5577D/NCT6776D/NCT6776F
16 Prefix: 'nct6776'
17 Addresses scanned: ISA address retrieved from Super I/O registers
18 Datasheet: Available from Nuvoton upon request
19 * Nuvoton NCT5532D/NCT6779D
20 Prefix: 'nct6779'
21 Addresses scanned: ISA address retrieved from Super I/O registers
22 Datasheet: Available from Nuvoton upon request
23
24Authors:
25 Guenter Roeck <linux@roeck-us.net>
26
27Description
28-----------
29
30This driver implements support for the Nuvoton NCT6775F, NCT6776F, and NCT6779D
31and compatible super I/O chips.
32
33The chips support up to 25 temperature monitoring sources. Up to 6 of those are
34direct temperature sensor inputs, the others are special sources such as PECI,
35PCH, and SMBUS. Depending on the chip type, 2 to 6 of the temperature sources
36can be monitored and compared against minimum, maximum, and critical
37temperatures. The driver reports up to 10 of the temperatures to the user.
38There are 4 to 5 fan rotation speed sensors, 8 to 15 analog voltage sensors,
39one VID, alarms with beep warnings (control unimplemented), and some automatic
40fan regulation strategies (plus manual fan control mode).
41
42The temperature sensor sources on all chips are configurable. The configured
43source for each of the temperature sensors is provided in tempX_label.
44
45Temperatures are measured in degrees Celsius and measurement resolution is
46either 1 degC or 0.5 degC, depending on the temperature source and
47configuration. An alarm is triggered when the temperature gets higher than
48the high limit; it stays on until the temperature falls below the hysteresis
49value. Alarms are only supported for temp1 to temp6, depending on the chip type.
50
51Fan rotation speeds are reported in RPM (rotations per minute). An alarm is
52triggered if the rotation speed has dropped below a programmable limit. On
53NCT6775F, fan readings can be divided by a programmable divider (1, 2, 4, 8,
5416, 32, 64 or 128) to give the readings more range or accuracy; the other chips
55do not have a fan speed divider. The driver sets the most suitable fan divisor
56itself; specifically, it increases the divider value each time a fan speed
57reading returns an invalid value, and it reduces it if the fan speed reading
58is lower than optimal. Some fans might not be present because they share pins
59with other functions.
60
61Voltage sensors (also known as IN sensors) report their values in millivolts.
62An alarm is triggered if the voltage has crossed a programmable minimum
63or maximum limit.
64
65The driver supports automatic fan control mode known as Thermal Cruise.
66In this mode, the chip attempts to keep the measured temperature in a
67predefined temperature range. If the temperature goes out of range, fan
68is driven slower/faster to reach the predefined range again.
69
70The mode works for fan1-fan5.
71
72sysfs attributes
73----------------
74
75pwm[1-5] - this file stores PWM duty cycle or DC value (fan speed) in range:
76 0 (lowest speed) to 255 (full)
77
78pwm[1-5]_enable - this file controls mode of fan/temperature control:
79 * 0 Fan control disabled (fans set to maximum speed)
80 * 1 Manual mode, write to pwm[0-5] any value 0-255
81 * 2 "Thermal Cruise" mode
82 * 3 "Fan Speed Cruise" mode
83 * 4 "Smart Fan III" mode (NCT6775F only)
84 * 5 "Smart Fan IV" mode
85
86pwm[1-5]_mode - controls if output is PWM or DC level
87 * 0 DC output
88 * 1 PWM output
89
90Common fan control attributes
91-----------------------------
92
93pwm[1-5]_temp_sel Temperature source. Value is temperature sensor index.
94 For example, select '1' for temp1_input.
95pwm[1-5]_weight_temp_sel
96 Secondary temperature source. Value is temperature
97 sensor index. For example, select '1' for temp1_input.
98 Set to 0 to disable secondary temperature control.
99
100If secondary temperature functionality is enabled, it is controlled with the
101following attributes.
102
103pwm[1-5]_weight_duty_step
104 Duty step size.
105pwm[1-5]_weight_temp_step
106 Temperature step size. With each step over
107 temp_step_base, the value of weight_duty_step is added
108 to the current pwm value.
109pwm[1-5]_weight_temp_step_base
110 Temperature at which secondary temperature control kicks
111 in.
112pwm[1-5]_weight_temp_step_tol
113 Temperature step tolerance.
114
115Thermal Cruise mode (2)
116-----------------------
117
118If the temperature is in the range defined by:
119
120pwm[1-5]_target_temp Target temperature, unit millidegree Celsius
121 (range 0 - 127000)
122pwm[1-5]_temp_tolerance
123 Target temperature tolerance, unit millidegree Celsius
124
125there are no changes to fan speed. Once the temperature leaves the interval, fan
126speed increases (if temperature is higher that desired) or decreases (if
127temperature is lower than desired), using the following limits and time
128intervals.
129
130pwm[1-5]_start fan pwm start value (range 1 - 255), to start fan
131 when the temperature is above defined range.
132pwm[1-5]_floor lowest fan pwm (range 0 - 255) if temperature is below
133 the defined range. If set to 0, the fan is expected to
134 stop if the temperature is below the defined range.
135pwm[1-5]_step_up_time milliseconds before fan speed is increased
136pwm[1-5]_step_down_time milliseconds before fan speed is decreased
137pwm[1-5]_stop_time how many milliseconds must elapse to switch
138 corresponding fan off (when the temperature was below
139 defined range).
140
141Speed Cruise mode (3)
142---------------------
143
144This modes tries to keep the fan speed constant.
145
146fan[1-5]_target Target fan speed
147fan[1-5]_tolerance
148 Target speed tolerance
149
150
151Untested; use at your own risk.
152
153Smart Fan IV mode (5)
154---------------------
155
156This mode offers multiple slopes to control the fan speed. The slopes can be
157controlled by setting the pwm and temperature attributes. When the temperature
158rises, the chip will calculate the DC/PWM output based on the current slope.
159There are up to seven data points depending on the chip type. Subsequent data
160points should be set to higher temperatures and higher pwm values to achieve
161higher fan speeds with increasing temperature. The last data point reflects
162critical temperature mode, in which the fans should run at full speed.
163
164pwm[1-5]_auto_point[1-7]_pwm
165 pwm value to be set if temperature reaches matching
166 temperature range.
167pwm[1-5]_auto_point[1-7]_temp
168 Temperature over which the matching pwm is enabled.
169pwm[1-5]_temp_tolerance
170 Temperature tolerance, unit millidegree Celsius
171pwm[1-5]_crit_temp_tolerance
172 Temperature tolerance for critical temperature,
173 unit millidegree Celsius
174
175pwm[1-5]_step_up_time milliseconds before fan speed is increased
176pwm[1-5]_step_down_time milliseconds before fan speed is decreased
177
178Usage Notes
179-----------
180
181On various ASUS boards with NCT6776F, it appears that CPUTIN is not really
182connected to anything and floats, or that it is connected to some non-standard
183temperature measurement device. As a result, the temperature reported on CPUTIN
184will not reflect a usable value. It often reports unreasonably high
185temperatures, and in some cases the reported temperature declines if the actual
186temperature increases (similar to the raw PECI temperature value - see PECI
187specification for details). CPUTIN should therefore be be ignored on ASUS
188boards. The CPU temperature on ASUS boards is reported from PECI 0.
diff --git a/Documentation/hwmon/sht15 b/Documentation/hwmon/sht15
index 02850bdfac18..778987d1856f 100644
--- a/Documentation/hwmon/sht15
+++ b/Documentation/hwmon/sht15
@@ -40,7 +40,7 @@ bits for humidity, or 12 bits for temperature and 8 bits for humidity.
40The humidity calibration coefficients are programmed into an OTP memory on the 40The humidity calibration coefficients are programmed into an OTP memory on the
41chip. These coefficients are used to internally calibrate the signals from the 41chip. These coefficients are used to internally calibrate the signals from the
42sensors. Disabling the reload of those coefficients allows saving 10ms for each 42sensors. Disabling the reload of those coefficients allows saving 10ms for each
43measurement and decrease power consumption, while loosing on precision. 43measurement and decrease power consumption, while losing on precision.
44 44
45Some options may be set directly in the sht15_platform_data structure 45Some options may be set directly in the sht15_platform_data structure
46or via sysfs attributes. 46or via sysfs attributes.
diff --git a/Documentation/hwmon/tmp401 b/Documentation/hwmon/tmp401
index 9fc447249212..f91e3fa7e5ec 100644
--- a/Documentation/hwmon/tmp401
+++ b/Documentation/hwmon/tmp401
@@ -8,8 +8,16 @@ Supported chips:
8 Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp401.html 8 Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp401.html
9 * Texas Instruments TMP411 9 * Texas Instruments TMP411
10 Prefix: 'tmp411' 10 Prefix: 'tmp411'
11 Addresses scanned: I2C 0x4c 11 Addresses scanned: I2C 0x4c, 0x4d, 0x4e
12 Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp411.html 12 Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp411.html
13 * Texas Instruments TMP431
14 Prefix: 'tmp431'
15 Addresses scanned: I2C 0x4c, 0x4d
16 Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp431.html
17 * Texas Instruments TMP432
18 Prefix: 'tmp432'
19 Addresses scanned: I2C 0x4c, 0x4d
20 Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp432.html
13 21
14Authors: 22Authors:
15 Hans de Goede <hdegoede@redhat.com> 23 Hans de Goede <hdegoede@redhat.com>
@@ -18,19 +26,19 @@ Authors:
18Description 26Description
19----------- 27-----------
20 28
21This driver implements support for Texas Instruments TMP401 and 29This driver implements support for Texas Instruments TMP401, TMP411,
22TMP411 chips. These chips implements one remote and one local 30TMP431, and TMP432 chips. These chips implement one or two remote and
23temperature sensor. Temperature is measured in degrees 31one local temperature sensors. Temperature is measured in degrees
24Celsius. Resolution of the remote sensor is 0.0625 degree. Local 32Celsius. Resolution of the remote sensor is 0.0625 degree. Local
25sensor resolution can be set to 0.5, 0.25, 0.125 or 0.0625 degree (not 33sensor resolution can be set to 0.5, 0.25, 0.125 or 0.0625 degree (not
26supported by the driver so far, so using the default resolution of 0.5 34supported by the driver so far, so using the default resolution of 0.5
27degree). 35degree).
28 36
29The driver provides the common sysfs-interface for temperatures (see 37The driver provides the common sysfs-interface for temperatures (see
30/Documentation/hwmon/sysfs-interface under Temperatures). 38Documentation/hwmon/sysfs-interface under Temperatures).
31 39
32The TMP411 chip is compatible with TMP401. It provides some additional 40The TMP411 and TMP431 chips are compatible with TMP401. TMP411 provides
33features. 41some additional features.
34 42
35* Minimum and Maximum temperature measured since power-on, chip-reset 43* Minimum and Maximum temperature measured since power-on, chip-reset
36 44
@@ -40,3 +48,6 @@ features.
40 48
41 Exported via sysfs attribute temp_reset_history. Writing 1 to this 49 Exported via sysfs attribute temp_reset_history. Writing 1 to this
42 file triggers a reset. 50 file triggers a reset.
51
52TMP432 is compatible with TMP401 and TMP431. It supports two external
53temperature sensors.
diff --git a/Documentation/hwmon/zl6100 b/Documentation/hwmon/zl6100
index 756b57c6b73e..33908a4d68ff 100644
--- a/Documentation/hwmon/zl6100
+++ b/Documentation/hwmon/zl6100
@@ -125,7 +125,7 @@ in2_label "vmon"
125in2_input Measured voltage on VMON (ZL2004) or VDRV (ZL9101M, 125in2_input Measured voltage on VMON (ZL2004) or VDRV (ZL9101M,
126 ZL9117M) pin. Reported voltage is 16x the voltage on the 126 ZL9117M) pin. Reported voltage is 16x the voltage on the
127 pin (adjusted internally by the chip). 127 pin (adjusted internally by the chip).
128in2_lcrit Critical minumum VMON/VDRV Voltage. 128in2_lcrit Critical minimum VMON/VDRV Voltage.
129in2_crit Critical maximum VMON/VDRV voltage. 129in2_crit Critical maximum VMON/VDRV voltage.
130in2_lcrit_alarm VMON/VDRV voltage critical low alarm. 130in2_lcrit_alarm VMON/VDRV voltage critical low alarm.
131in2_crit_alarm VMON/VDRV voltage critical high alarm. 131in2_crit_alarm VMON/VDRV voltage critical high alarm.
diff --git a/Documentation/ia64/err_inject.txt b/Documentation/ia64/err_inject.txt
index 223e4f0582d0..9f651c181429 100644
--- a/Documentation/ia64/err_inject.txt
+++ b/Documentation/ia64/err_inject.txt
@@ -882,7 +882,7 @@ int err_inj()
882 cpu=parameters[i].cpu; 882 cpu=parameters[i].cpu;
883 k = cpu%64; 883 k = cpu%64;
884 j = cpu/64; 884 j = cpu/64;
885 mask[j]=1<<k; 885 mask[j] = 1UL << k;
886 886
887 if (sched_setaffinity(0, MASK_SIZE*8, mask)==-1) { 887 if (sched_setaffinity(0, MASK_SIZE*8, mask)==-1) {
888 perror("Error sched_setaffinity:"); 888 perror("Error sched_setaffinity:");
diff --git a/Documentation/kdump/kdump.txt b/Documentation/kdump/kdump.txt
index 13f1aa09b938..9c7fd988e299 100644
--- a/Documentation/kdump/kdump.txt
+++ b/Documentation/kdump/kdump.txt
@@ -297,6 +297,7 @@ Boot into System Kernel
297 On ia64, 256M@256M is a generous value that typically works. 297 On ia64, 256M@256M is a generous value that typically works.
298 The region may be automatically placed on ia64, see the 298 The region may be automatically placed on ia64, see the
299 dump-capture kernel config option notes above. 299 dump-capture kernel config option notes above.
300 If use sparse memory, the size should be rounded to GRANULE boundaries.
300 301
301 On s390x, typically use "crashkernel=xxM". The value of xx is dependent 302 On s390x, typically use "crashkernel=xxM". The value of xx is dependent
302 on the memory consumption of the kdump system. In general this is not 303 on the memory consumption of the kdump system. In general this is not
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 4609e81dbc37..8ccbf27aead4 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -596,9 +596,6 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
596 is selected automatically. Check 596 is selected automatically. Check
597 Documentation/kdump/kdump.txt for further details. 597 Documentation/kdump/kdump.txt for further details.
598 598
599 crashkernel_low=size[KMG]
600 [KNL, x86] parts under 4G.
601
602 crashkernel=range1:size1[,range2:size2,...][@offset] 599 crashkernel=range1:size1[,range2:size2,...][@offset]
603 [KNL] Same as above, but depends on the memory 600 [KNL] Same as above, but depends on the memory
604 in the running system. The syntax of range is 601 in the running system. The syntax of range is
@@ -606,6 +603,26 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
606 a memory unit (amount[KMG]). See also 603 a memory unit (amount[KMG]). See also
607 Documentation/kdump/kdump.txt for an example. 604 Documentation/kdump/kdump.txt for an example.
608 605
606 crashkernel=size[KMG],high
607 [KNL, x86_64] range could be above 4G. Allow kernel
608 to allocate physical memory region from top, so could
609 be above 4G if system have more than 4G ram installed.
610 Otherwise memory region will be allocated below 4G, if
611 available.
612 It will be ignored if crashkernel=X is specified.
613 crashkernel=size[KMG],low
614 [KNL, x86_64] range under 4G. When crashkernel=X,high
615 is passed, kernel could allocate physical memory region
616 above 4G, that cause second kernel crash on system
617 that require some amount of low memory, e.g. swiotlb
618 requires at least 64M+32K low memory. Kernel would
619 try to allocate 72M below 4G automatically.
620 This one let user to specify own low range under 4G
621 for second kernel instead.
622 0: to disable low allocation.
623 It will be ignored when crashkernel=X,high is not used
624 or memory reserved is below 4G.
625
609 cs89x0_dma= [HW,NET] 626 cs89x0_dma= [HW,NET]
610 Format: <dma> 627 Format: <dma>
611 628
@@ -788,6 +805,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
788 edd= [EDD] 805 edd= [EDD]
789 Format: {"off" | "on" | "skip[mbr]"} 806 Format: {"off" | "on" | "skip[mbr]"}
790 807
808 efi_no_storage_paranoia [EFI; X86]
809 Using this parameter you can use more than 50% of
810 your efi variable storage. Use this parameter only if
811 you are really sure that your UEFI does sane gc and
812 fulfills the spec otherwise your board may brick.
813
791 eisa_irq_edge= [PARISC,HW] 814 eisa_irq_edge= [PARISC,HW]
792 See header of drivers/parisc/eisa.c. 815 See header of drivers/parisc/eisa.c.
793 816
diff --git a/Documentation/misc-devices/mei/mei-client-bus.txt b/Documentation/misc-devices/mei/mei-client-bus.txt
new file mode 100644
index 000000000000..f83910a8ce76
--- /dev/null
+++ b/Documentation/misc-devices/mei/mei-client-bus.txt
@@ -0,0 +1,138 @@
1Intel(R) Management Engine (ME) Client bus API
2===============================================
3
4
5Rationale
6=========
7MEI misc character device is useful for dedicated applications to send and receive
8data to the many FW appliance found in Intel's ME from the user space.
9However for some of the ME functionalities it make sense to leverage existing software
10stack and expose them through existing kernel subsystems.
11
12In order to plug seamlessly into the kernel device driver model we add kernel virtual
13bus abstraction on top of the MEI driver. This allows implementing linux kernel drivers
14for the various MEI features as a stand alone entities found in their respective subsystem.
15Existing device drivers can even potentially be re-used by adding an MEI CL bus layer to
16the existing code.
17
18
19MEI CL bus API
20===========
21A driver implementation for an MEI Client is very similar to existing bus
22based device drivers. The driver registers itself as an MEI CL bus driver through
23the mei_cl_driver structure:
24
25struct mei_cl_driver {
26 struct device_driver driver;
27 const char *name;
28
29 const struct mei_cl_device_id *id_table;
30
31 int (*probe)(struct mei_cl_device *dev, const struct mei_cl_id *id);
32 int (*remove)(struct mei_cl_device *dev);
33};
34
35struct mei_cl_id {
36 char name[MEI_NAME_SIZE];
37 kernel_ulong_t driver_info;
38};
39
40The mei_cl_id structure allows the driver to bind itself against a device name.
41
42To actually register a driver on the ME Client bus one must call the mei_cl_add_driver()
43API. This is typically called at module init time.
44
45Once registered on the ME Client bus, a driver will typically try to do some I/O on
46this bus and this should be done through the mei_cl_send() and mei_cl_recv()
47routines. The latter is synchronous (blocks and sleeps until data shows up).
48In order for drivers to be notified of pending events waiting for them (e.g.
49an Rx event) they can register an event handler through the
50mei_cl_register_event_cb() routine. Currently only the MEI_EVENT_RX event
51will trigger an event handler call and the driver implementation is supposed
52to call mei_recv() from the event handler in order to fetch the pending
53received buffers.
54
55
56Example
57=======
58As a theoretical example let's pretend the ME comes with a "contact" NFC IP.
59The driver init and exit routines for this device would look like:
60
61#define CONTACT_DRIVER_NAME "contact"
62
63static struct mei_cl_device_id contact_mei_cl_tbl[] = {
64 { CONTACT_DRIVER_NAME, },
65
66 /* required last entry */
67 { }
68};
69MODULE_DEVICE_TABLE(mei_cl, contact_mei_cl_tbl);
70
71static struct mei_cl_driver contact_driver = {
72 .id_table = contact_mei_tbl,
73 .name = CONTACT_DRIVER_NAME,
74
75 .probe = contact_probe,
76 .remove = contact_remove,
77};
78
79static int contact_init(void)
80{
81 int r;
82
83 r = mei_cl_driver_register(&contact_driver);
84 if (r) {
85 pr_err(CONTACT_DRIVER_NAME ": driver registration failed\n");
86 return r;
87 }
88
89 return 0;
90}
91
92static void __exit contact_exit(void)
93{
94 mei_cl_driver_unregister(&contact_driver);
95}
96
97module_init(contact_init);
98module_exit(contact_exit);
99
100And the driver's simplified probe routine would look like that:
101
102int contact_probe(struct mei_cl_device *dev, struct mei_cl_device_id *id)
103{
104 struct contact_driver *contact;
105
106 [...]
107 mei_cl_enable_device(dev);
108
109 mei_cl_register_event_cb(dev, contact_event_cb, contact);
110
111 return 0;
112 }
113
114In the probe routine the driver first enable the MEI device and then registers
115an ME bus event handler which is as close as it can get to registering a
116threaded IRQ handler.
117The handler implementation will typically call some I/O routine depending on
118the pending events:
119
120#define MAX_NFC_PAYLOAD 128
121
122static void contact_event_cb(struct mei_cl_device *dev, u32 events,
123 void *context)
124{
125 struct contact_driver *contact = context;
126
127 if (events & BIT(MEI_EVENT_RX)) {
128 u8 payload[MAX_NFC_PAYLOAD];
129 int payload_size;
130
131 payload_size = mei_recv(dev, payload, MAX_NFC_PAYLOAD);
132 if (payload_size <= 0)
133 return;
134
135 /* Hook to the NFC subsystem */
136 nfc_hci_recv_frame(contact->hdev, payload, payload_size);
137 }
138}
diff --git a/Documentation/pinctrl.txt b/Documentation/pinctrl.txt
index a2b57e0a1db0..447fd4cd54ec 100644
--- a/Documentation/pinctrl.txt
+++ b/Documentation/pinctrl.txt
@@ -736,6 +736,13 @@ All the above functions are mandatory to implement for a pinmux driver.
736Pin control interaction with the GPIO subsystem 736Pin control interaction with the GPIO subsystem
737=============================================== 737===============================================
738 738
739Note that the following implies that the use case is to use a certain pin
740from the Linux kernel using the API in <linux/gpio.h> with gpio_request()
741and similar functions. There are cases where you may be using something
742that your datasheet calls "GPIO mode" but actually is just an electrical
743configuration for a certain device. See the section below named
744"GPIO mode pitfalls" for more details on this scenario.
745
739The public pinmux API contains two functions named pinctrl_request_gpio() 746The public pinmux API contains two functions named pinctrl_request_gpio()
740and pinctrl_free_gpio(). These two functions shall *ONLY* be called from 747and pinctrl_free_gpio(). These two functions shall *ONLY* be called from
741gpiolib-based drivers as part of their gpio_request() and 748gpiolib-based drivers as part of their gpio_request() and
@@ -774,6 +781,111 @@ obtain the function "gpioN" where "N" is the global GPIO pin number if no
774special GPIO-handler is registered. 781special GPIO-handler is registered.
775 782
776 783
784GPIO mode pitfalls
785==================
786
787Sometime the developer may be confused by a datasheet talking about a pin
788being possible to set into "GPIO mode". It appears that what hardware
789engineers mean with "GPIO mode" is not necessarily the use case that is
790implied in the kernel interface <linux/gpio.h>: a pin that you grab from
791kernel code and then either listen for input or drive high/low to
792assert/deassert some external line.
793
794Rather hardware engineers think that "GPIO mode" means that you can
795software-control a few electrical properties of the pin that you would
796not be able to control if the pin was in some other mode, such as muxed in
797for a device.
798
799Example: a pin is usually muxed in to be used as a UART TX line. But during
800system sleep, we need to put this pin into "GPIO mode" and ground it.
801
802If you make a 1-to-1 map to the GPIO subsystem for this pin, you may start
803to think that you need to come up with something real complex, that the
804pin shall be used for UART TX and GPIO at the same time, that you will grab
805a pin control handle and set it to a certain state to enable UART TX to be
806muxed in, then twist it over to GPIO mode and use gpio_direction_output()
807to drive it low during sleep, then mux it over to UART TX again when you
808wake up and maybe even gpio_request/gpio_free as part of this cycle. This
809all gets very complicated.
810
811The solution is to not think that what the datasheet calls "GPIO mode"
812has to be handled by the <linux/gpio.h> interface. Instead view this as
813a certain pin config setting. Look in e.g. <linux/pinctrl/pinconf-generic.h>
814and you find this in the documentation:
815
816 PIN_CONFIG_OUTPUT: this will configure the pin in output, use argument
817 1 to indicate high level, argument 0 to indicate low level.
818
819So it is perfectly possible to push a pin into "GPIO mode" and drive the
820line low as part of the usual pin control map. So for example your UART
821driver may look like this:
822
823#include <linux/pinctrl/consumer.h>
824
825struct pinctrl *pinctrl;
826struct pinctrl_state *pins_default;
827struct pinctrl_state *pins_sleep;
828
829pins_default = pinctrl_lookup_state(uap->pinctrl, PINCTRL_STATE_DEFAULT);
830pins_sleep = pinctrl_lookup_state(uap->pinctrl, PINCTRL_STATE_SLEEP);
831
832/* Normal mode */
833retval = pinctrl_select_state(pinctrl, pins_default);
834/* Sleep mode */
835retval = pinctrl_select_state(pinctrl, pins_sleep);
836
837And your machine configuration may look like this:
838--------------------------------------------------
839
840static unsigned long uart_default_mode[] = {
841 PIN_CONF_PACKED(PIN_CONFIG_DRIVE_PUSH_PULL, 0),
842};
843
844static unsigned long uart_sleep_mode[] = {
845 PIN_CONF_PACKED(PIN_CONFIG_OUTPUT, 0),
846};
847
848static struct pinctrl_map __initdata pinmap[] = {
849 PIN_MAP_MUX_GROUP("uart", PINCTRL_STATE_DEFAULT, "pinctrl-foo",
850 "u0_group", "u0"),
851 PIN_MAP_CONFIGS_PIN("uart", PINCTRL_STATE_DEFAULT, "pinctrl-foo",
852 "UART_TX_PIN", uart_default_mode),
853 PIN_MAP_MUX_GROUP("uart", PINCTRL_STATE_SLEEP, "pinctrl-foo",
854 "u0_group", "gpio-mode"),
855 PIN_MAP_CONFIGS_PIN("uart", PINCTRL_STATE_SLEEP, "pinctrl-foo",
856 "UART_TX_PIN", uart_sleep_mode),
857};
858
859foo_init(void) {
860 pinctrl_register_mappings(pinmap, ARRAY_SIZE(pinmap));
861}
862
863Here the pins we want to control are in the "u0_group" and there is some
864function called "u0" that can be enabled on this group of pins, and then
865everything is UART business as usual. But there is also some function
866named "gpio-mode" that can be mapped onto the same pins to move them into
867GPIO mode.
868
869This will give the desired effect without any bogus interaction with the
870GPIO subsystem. It is just an electrical configuration used by that device
871when going to sleep, it might imply that the pin is set into something the
872datasheet calls "GPIO mode" but that is not the point: it is still used
873by that UART device to control the pins that pertain to that very UART
874driver, putting them into modes needed by the UART. GPIO in the Linux
875kernel sense are just some 1-bit line, and is a different use case.
876
877How the registers are poked to attain the push/pull and output low
878configuration and the muxing of the "u0" or "gpio-mode" group onto these
879pins is a question for the driver.
880
881Some datasheets will be more helpful and refer to the "GPIO mode" as
882"low power mode" rather than anything to do with GPIO. This often means
883the same thing electrically speaking, but in this latter case the
884software engineers will usually quickly identify that this is some
885specific muxing/configuration rather than anything related to the GPIO
886API.
887
888
777Board/machine configuration 889Board/machine configuration
778================================== 890==================================
779 891
diff --git a/Documentation/s390/s390dbf.txt b/Documentation/s390/s390dbf.txt
index ae66f9b90a25..fcaf0b4efba2 100644
--- a/Documentation/s390/s390dbf.txt
+++ b/Documentation/s390/s390dbf.txt
@@ -143,7 +143,8 @@ Parameter: id: handle for debug log
143 143
144Return Value: none 144Return Value: none
145 145
146Description: frees memory for a debug log 146Description: frees memory for a debug log and removes all registered debug
147 views.
147 Must not be called within an interrupt handler 148 Must not be called within an interrupt handler
148 149
149--------------------------------------------------------------------------- 150---------------------------------------------------------------------------