diff options
author | Grant Likely <grant.likely@secretlab.ca> | 2012-07-25 00:31:09 -0400 |
---|---|---|
committer | Grant Likely <grant.likely@secretlab.ca> | 2012-07-25 00:34:40 -0400 |
commit | 6aeea3ecc33b1f36dbc3b80461d15a7052ae424f (patch) | |
tree | bbd273e3e0ca76094aed8e9c77e5adfe2b07f779 /Documentation | |
parent | 9844a5524ec532aee826c35e3031637c7fc8287b (diff) | |
parent | bdc0077af574800d24318b6945cf2344e8dbb050 (diff) |
Merge remote-tracking branch 'origin' into irqdomain/next
Diffstat (limited to 'Documentation')
123 files changed, 2219 insertions, 436 deletions
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/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-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 | |||
142 | Contact: linux-mtd@lists.infradead.org | 142 | Contact: linux-mtd@lists.infradead.org |
143 | Description: | 143 | Description: |
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 @@ | |||
1 | What: /sys/devices/system/xen_cpu/ | ||
2 | Date: May 2012 | ||
3 | Contact: Liu, Jinsong <jinsong.liu@intel.com> | ||
4 | Description: | ||
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 | |||
12 | What: /sys/devices/system/xen_cpu/xen_cpu#/online | ||
13 | Date: May 2012 | ||
14 | Contact: Liu, Jinsong <jinsong.liu@intel.com> | ||
15 | Description: | ||
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 @@ | |||
1 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/press_to_select | ||
2 | Date: July 2011 | ||
3 | Contact: linux-input@vger.kernel.org | ||
4 | Description: 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 | |||
8 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/dragging | ||
9 | Date: July 2011 | ||
10 | Contact: linux-input@vger.kernel.org | ||
11 | Description: 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 | |||
14 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/release_to_select | ||
15 | Date: July 2011 | ||
16 | Contact: linux-input@vger.kernel.org | ||
17 | Description: For details regarding this setting please refer to http://www.pc.ibm.com/ww/healthycomputing/trkpntb.html | ||
18 | Values are 0 or 1. | ||
19 | |||
20 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/select_right | ||
21 | Date: July 2011 | ||
22 | Contact: linux-input@vger.kernel.org | ||
23 | Description: 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 | |||
27 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/sensitivity | ||
28 | Date: July 2011 | ||
29 | Contact: linux-input@vger.kernel.org | ||
30 | Description: This file contains the trackpoint sensitivity. | ||
31 | Values are decimal integers from 1 (lowest sensitivity) to 255 (highest sensitivity). | ||
32 | |||
33 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/press_speed | ||
34 | Date: July 2011 | ||
35 | Contact: linux-input@vger.kernel.org | ||
36 | Description: 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 @@ | |||
1 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/savu/roccatsavu<minor>/buttons | ||
2 | Date: Mai 2012 | ||
3 | Contact: Stefan Achatz <erazor_de@users.sourceforge.net> | ||
4 | Description: 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. | ||
14 | Users: http://roccat.sourceforge.net | ||
15 | |||
16 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/savu/roccatsavu<minor>/control | ||
17 | Date: Mai 2012 | ||
18 | Contact: Stefan Achatz <erazor_de@users.sourceforge.net> | ||
19 | Description: 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. | ||
22 | Users: http://roccat.sourceforge.net | ||
23 | |||
24 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/savu/roccatsavu<minor>/general | ||
25 | Date: Mai 2012 | ||
26 | Contact: Stefan Achatz <erazor_de@users.sourceforge.net> | ||
27 | Description: 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. | ||
37 | Users: http://roccat.sourceforge.net | ||
38 | |||
39 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/savu/roccatsavu<minor>/info | ||
40 | Date: Mai 2012 | ||
41 | Contact: Stefan Achatz <erazor_de@users.sourceforge.net> | ||
42 | Description: When read, this file returns general data like firmware version. | ||
43 | The data is 8 bytes long. | ||
44 | This file is readonly. | ||
45 | Users: http://roccat.sourceforge.net | ||
46 | |||
47 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/savu/roccatsavu<minor>/macro | ||
48 | Date: Mai 2012 | ||
49 | Contact: Stefan Achatz <erazor_de@users.sourceforge.net> | ||
50 | Description: 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. | ||
56 | Users: http://roccat.sourceforge.net | ||
57 | |||
58 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/savu/roccatsavu<minor>/profile | ||
59 | Date: Mai 2012 | ||
60 | Contact: Stefan Achatz <erazor_de@users.sourceforge.net> | ||
61 | Description: 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. | ||
68 | Users: http://roccat.sourceforge.net | ||
69 | |||
70 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/savu/roccatsavu<minor>/sensor | ||
71 | Date: July 2012 | ||
72 | Contact: Stefan Achatz <erazor_de@users.sourceforge.net> | ||
73 | Description: 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. | ||
76 | Users: 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 @@ | |||
1 | What: /sys/kernel/iommu_groups/ | ||
2 | Date: May 2012 | ||
3 | KernelVersion: v3.5 | ||
4 | Contact: Alex Williamson <alex.williamson@redhat.com> | ||
5 | Description: /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. | ||
14 | Users: | ||
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 | |||
235 | What: /sys/power/pm_print_times | ||
236 | Date: May 2012 | ||
237 | Contact: Sameer Nanda <snanda@chromium.org> | ||
238 | Description: | ||
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. | ||
291 | These 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 | |||
178 | knowledge that we're better than the average person (let's face it, | 178 | knowledge that we're better than the average person (let's face it, |
179 | nobody ever believes that they're average or below-average), we should | 179 | nobody ever believes that they're average or below-average), we should |
180 | also admit that we're not the sharpest knife around, and there will be | 180 | also admit that we're not the sharpest knife around, and there will be |
181 | other people that are less of an idiot that you are. | 181 | other people that are less of an idiot than you are. |
182 | 182 | ||
183 | Some people react badly to smart people. Others take advantage of them. | 183 | Some 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 | ||
165 | 5. If call_rcu(), or a related primitive such as call_rcu_bh() or | 165 | 5. 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 | ||
170 | 6. Since synchronize_rcu() can block, it cannot be called from | 170 | 6. 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 | ||
335 | 14. SRCU (srcu_read_lock(), srcu_read_unlock(), srcu_dereference(), | 336 | 14. 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 | ||
380 | 15. The whole point of call_rcu(), synchronize_rcu(), and friends | 381 | 15. 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 | ||
82 | Quick Quiz #1: Why is there no srcu_barrier()? | ||
83 | |||
84 | The rcutorture module makes use of rcu_barrier in its exit function | 82 | The rcutorture module makes use of rcu_barrier in its exit function |
85 | as follows: | 83 | as follows: |
86 | 84 | ||
@@ -162,7 +160,7 @@ for any pre-existing callbacks to complete. | |||
162 | Then lines 55-62 print status and do operation-specific cleanup, and | 160 | Then lines 55-62 print status and do operation-specific cleanup, and |
163 | then return, permitting the module-unload operation to be completed. | 161 | then return, permitting the module-unload operation to be completed. |
164 | 162 | ||
165 | Quick Quiz #2: Is there any other situation where rcu_barrier() might | 163 | Quick Quiz #1: Is there any other situation where rcu_barrier() might |
166 | be required? | 164 | be required? |
167 | 165 | ||
168 | Your module might have additional complications. For example, if your | 166 | Your 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 | ||
245 | Quick Quiz #3: What happens if CPU 0's rcu_barrier_func() executes | 243 | Quick 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 | ||
260 | Answers to Quick Quizzes | 258 | Answers to Quick Quizzes |
261 | 259 | ||
262 | Quick Quiz #1: Why is there no srcu_barrier()? | 260 | Quick Quiz #1: Is there any other situation where rcu_barrier() might |
263 | |||
264 | Answer: Since there is no call_srcu(), there can be no outstanding SRCU | ||
265 | callbacks. Therefore, there is no need to wait for them. | ||
266 | |||
267 | Quick Quiz #2: Is there any other situation where rcu_barrier() might | ||
268 | be required? | 261 | be required? |
269 | 262 | ||
270 | Answer: Interestingly enough, rcu_barrier() was not originally | 263 | Answer: 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 | ||
281 | Quick Quiz #3: What happens if CPU 0's rcu_barrier_func() executes | 274 | Quick 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 | ||
834 | SRCU: Critical sections Grace period Barrier | 834 | SRCU: 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 | |||
370 | subsystems, type: | 370 | subsystems, 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 | ||
373 | To change the set of subsystems bound to a mounted hierarchy, just | 373 | While remounting cgroups is currently supported, it is not recommend |
374 | remount with different options: | 374 | to use it. Remounting allows changing bound subsystems and |
375 | # mount -o remount,cpuset,blkio hier1 /sys/fs/cgroup/rg1 | 375 | release_agent. Rebinding is hardly useful as it only works when the |
376 | 376 | hierarchy is empty and release_agent itself should be replaced with | |
377 | Now memory is removed from the hierarchy and blkio is added. | 377 | conventional fsnotify. The support for remounting will be removed in |
378 | 378 | the future. | |
379 | Note this will add blkio to the hierarchy but won't remove memory or | ||
380 | cpuset, because the new options are appended to the old ones: | ||
381 | # mount -o remount,blkio /sys/fs/cgroup/rg1 | ||
382 | 379 | ||
383 | To Specify a hierarchy's release_agent: | 380 | To 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 | ||
638 | Called during task exit. | 635 | Called during task exit. |
639 | 636 | ||
640 | int populate(struct cgroup *cgrp) | ||
641 | (cgroup_mutex held by caller) | ||
642 | |||
643 | Called after creation of a cgroup to allow a subsystem to populate | ||
644 | the cgroup directory with file entries. The subsystem should make | ||
645 | calls to cgroup_add_file() with objects of type cftype (see | ||
646 | include/linux/cgroup.h for details). Note that although this | ||
647 | method can return an error code, the error code is currently not | ||
648 | always handled well. | ||
649 | |||
650 | void post_clone(struct cgroup *cgrp) | 637 | void 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 | |||
656 | up. | 643 | up. |
657 | 644 | ||
658 | void bind(struct cgroup *root) | 645 | void bind(struct cgroup *root) |
659 | (cgroup_mutex and ss->hierarchy_mutex held by caller) | 646 | (cgroup_mutex held by caller) |
660 | 647 | ||
661 | Called when a cgroup subsystem is rebound to a different hierarchy | 648 | Called when a cgroup subsystem is rebound to a different hierarchy |
662 | and root cgroup. Currently this will only involve movement between | 649 | and 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 | |||
121 | nlmsg_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/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 | ||
2420 | 163 char | 2422 | 163 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 @@ | |||
1 | Marvell Armada 370 and Armada XP Interrupt Controller | ||
2 | ----------------------------------------------------- | ||
3 | |||
4 | Required 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 | |||
13 | Example: | ||
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 @@ | |||
1 | Marvell Armada 370 and Armada XP Global Timers | ||
2 | ---------------------------------------------- | ||
3 | |||
4 | Required 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 | |||
9 | Optional 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 @@ | |||
1 | Marvell Armada 370 and Armada XP Platforms Device Tree Bindings | ||
2 | --------------------------------------------------------------- | ||
3 | |||
4 | Boards with a SoC of the Marvell Armada 370 and Armada XP families | ||
5 | shall have the following property: | ||
6 | |||
7 | Required root node property: | ||
8 | |||
9 | compatible: must contain "marvell,armada-370-xp" | ||
10 | |||
11 | In addition, boards using the Marvell Armada 370 SoC shall have the | ||
12 | following property: | ||
13 | |||
14 | Required root node property: | ||
15 | |||
16 | compatible: must contain "marvell,armada370" | ||
17 | |||
18 | In addition, boards using the Marvell Armada XP SoC shall have the | ||
19 | following property: | ||
20 | |||
21 | Required root node property: | ||
22 | |||
23 | compatible: 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 | ||
19 | Examples: | 22 | Examples: |
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 | |||
3 | Common Platform Interrupt Controller (cp_intc) is used on | ||
4 | OMAP-L1x SoCs and can support several configurable number | ||
5 | of interrupts. | ||
6 | |||
7 | Main 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 | |||
19 | Example: | ||
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 @@ | |||
1 | MVEBU System Controller | ||
2 | ----------------------- | ||
3 | MVEBU (Marvell SOCs: Armada 370/XP, Dove, mv78xx0, Kirkwood, Orion5x) | ||
4 | |||
5 | Required 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 | |||
12 | Example: | ||
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 @@ | |||
1 | Olimex i.MX Platforms Device Tree Bindings | ||
2 | ------------------------------------------ | ||
3 | |||
4 | i.MX23 Olinuxino Low Cost Board | ||
5 | Required 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: | |||
13 | Optional properties: | 13 | Optional 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 | ||
17 | Example: | 20 | Example: |
18 | 21 | ||
19 | serial@fff36000 { | 22 | serial@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 | ||
16 | Example: | 16 | Example: |
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 | ||
10 | Example: | 10 | Example: |
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 | ||
10 | Example: | 10 | Example: |
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 @@ | |||
1 | Device Tree Clock bindings for Calxeda highbank platform | ||
2 | |||
3 | This binding uses the common clock binding[1]. | ||
4 | |||
5 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
6 | |||
7 | Required 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 @@ | |||
1 | This binding is a work-in-progress, and are based on some experimental | ||
2 | work by benh[1]. | ||
3 | |||
4 | Sources of clock signal can be represented by any node in the device | ||
5 | tree. Those nodes are designated as clock providers. Clock consumer | ||
6 | nodes use a phandle and clock specifier pair to connect clock provider | ||
7 | outputs to clock inputs. Similar to the gpio specifiers, a clock | ||
8 | specifier is an array of one more more cells identifying the clock | ||
9 | output on a device. The length of a clock specifier is defined by the | ||
10 | value of a #clock-cells property in the clock provider node. | ||
11 | |||
12 | [1] http://patchwork.ozlabs.org/patch/31551/ | ||
13 | |||
14 | ==Clock providers== | ||
15 | |||
16 | Required 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 | |||
21 | Optional properties: | ||
22 | clock-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 | |||
35 | For 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 | |||
49 | Required properties: | ||
50 | clocks: 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 | |||
55 | Optional properties: | ||
56 | clock-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. | ||
60 | clock-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 | |||
64 | For example: | ||
65 | |||
66 | device { | ||
67 | clocks = <&osc 1>, <&ref 0>; | ||
68 | clock-names = "baud", "register"; | ||
69 | }; | ||
70 | |||
71 | |||
72 | This represents a device with two clock inputs, named "baud" and "register". | ||
73 | The baud clock is connected to output 1 of the &osc device, and the register | ||
74 | clock 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 | |||
108 | This DT fragment defines three devices: an external oscillator to provide a | ||
109 | low-frequency reference clock, a PLL device to generate a higher frequency | ||
110 | clock 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 @@ | |||
1 | Binding for simple fixed-rate clock sources. | ||
2 | |||
3 | This binding uses the common clock binding[1]. | ||
4 | |||
5 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
6 | |||
7 | Required 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 | |||
12 | Optional properties: | ||
13 | - gpios : From common gpio binding; gpio connection to clock enable pin. | ||
14 | - clock-output-names : From common clock binding. | ||
15 | |||
16 | Example: | ||
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 | |||
3 | Required 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 | |||
9 | Optional properties: | ||
10 | - panel-enable-gpios : Should specify the gpio for panel enable | ||
11 | |||
12 | Examples: | ||
13 | |||
14 | lcdif@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 4363ae4b3c14..4f3929713ae4 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 | ||
14 | Example: | 22 | Example: |
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/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/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 @@ | |||
1 | NVIDIA Tegra 30 IOMMU H/W, SMMU (System Memory Management Unit) | ||
2 | |||
3 | Required 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 | |||
12 | Example: | ||
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/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 | |||
27 | Optional properties: | 53 | Optional 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 = <®_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/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 @@ | |||
3 | The Enhanced Secure Digital Host Controller provides an interface | 3 | The Enhanced Secure Digital Host Controller provides an interface |
4 | for MMC, SD, and SDIO types of memory cards. | 4 | for MMC, SD, and SDIO types of memory cards. |
5 | 5 | ||
6 | This file documents differences between the core properties described | ||
7 | by mmc.txt and the properties used by the sdhci-esdhc driver. | ||
8 | |||
6 | Required properties: | 9 | Required 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 | 13 | Optional 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 | ||
22 | Example: | 23 | Example: |
23 | 24 | ||
diff --git a/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt b/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt index fea541ee8b34..70cd49b1caa8 100644 --- a/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt +++ b/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt | |||
@@ -3,17 +3,15 @@ | |||
3 | The Enhanced Secure Digital Host Controller on Freescale i.MX family | 3 | The Enhanced Secure Digital Host Controller on Freescale i.MX family |
4 | provides an interface for MMC, SD, and SDIO types of memory cards. | 4 | provides an interface for MMC, SD, and SDIO types of memory cards. |
5 | 5 | ||
6 | This file documents differences between the core properties described | ||
7 | by mmc.txt and the properties used by the sdhci-esdhc-imx driver. | ||
8 | |||
6 | Required properties: | 9 | Required 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 | ||
11 | Optional properties: | 12 | Optional 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 | ||
18 | Examples: | 16 | Examples: |
19 | 17 | ||
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 @@ | |||
1 | MMC/SD/SDIO slot directly connected to a SPI bus | 1 | MMC/SD/SDIO slot directly connected to a SPI bus |
2 | 2 | ||
3 | This file documents differences between the core properties described | ||
4 | by mmc.txt and the properties used by the mmc_spi driver. | ||
5 | |||
3 | Required properties: | 6 | Required 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: | |||
11 | Optional properties: | 12 | Optional 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 | |||
2 | that requires the respective functionality should implement them using | 2 | that requires the respective functionality should implement them using |
3 | these definitions. | 3 | these definitions. |
4 | 4 | ||
5 | Interpreted by the OF core: | ||
6 | - reg: Registers location and length. | ||
7 | - interrupts: Interrupts used by the MMC controller. | ||
8 | |||
5 | Required properties: | 9 | Required 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 | ||
8 | Optional properties: | 12 | Optional 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 | ||
3 | The ARM PrimeCell MMCI PL180 and PL181 provides and interface for | 3 | The ARM PrimeCell MMCI PL180 and PL181 provides an interface for |
4 | reading and writing to MultiMedia and SD cards alike. | 4 | reading and writing to MultiMedia and SD cards alike. |
5 | 5 | ||
6 | This file documents differences between the core properties described | ||
7 | by mmc.txt and the properties used by the mmci driver. | ||
8 | |||
6 | Required properties: | 9 | Required 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 | ||
12 | Optional properties: | 13 | Optional 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 @@ | |||
3 | The Freescale MXS Synchronous Serial Ports (SSP) can act as a MMC controller | 3 | The Freescale MXS Synchronous Serial Ports (SSP) can act as a MMC controller |
4 | to support MMC, SD, and SDIO types of memory cards. | 4 | to support MMC, SD, and SDIO types of memory cards. |
5 | 5 | ||
6 | This file documents differences between the core properties in mmc.txt | ||
7 | and the properties used by the mxsmmc driver. | ||
8 | |||
6 | Required properties: | 9 | Required 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 | |||
14 | Optional properties: | ||
15 | - wp-gpios: Specify GPIOs for write protection | ||
16 | 14 | ||
17 | Examples: | 15 | Examples: |
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 @@ | |||
3 | This controller on Tegra family SoCs provides an interface for MMC, SD, | 3 | This controller on Tegra family SoCs provides an interface for MMC, SD, |
4 | and SDIO types of memory cards. | 4 | and SDIO types of memory cards. |
5 | 5 | ||
6 | This file documents differences between the core properties described | ||
7 | by mmc.txt and the properties used by the sdhci-tegra driver. | ||
8 | |||
6 | Required properties: | 9 | Required 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 | ||
12 | Optional properties: | 12 | Optional 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 | ||
17 | Example: | 15 | Example: |
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 | |||
3 | This file documents differences between the core properties in mmc.txt | ||
4 | and the properties used by the sdhci-pxav2 and sdhci-pxav3 drivers. | ||
5 | |||
6 | Required properties: | ||
7 | - compatible: Should be "mrvl,pxav2-mmc" or "mrvl,pxav3-mmc". | ||
8 | |||
9 | Optional properties: | ||
10 | - mrvl,clk-delay-cycles: Specify a number of cycles to delay for tuning. | ||
11 | |||
12 | Example: | ||
13 | |||
14 | sdhci@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 @@ | |||
3 | The Highspeed MMC Host Controller on TI OMAP family | 3 | The Highspeed MMC Host Controller on TI OMAP family |
4 | provides an interface for MMC, SD, and SDIO types of memory cards. | 4 | provides an interface for MMC, SD, and SDIO types of memory cards. |
5 | 5 | ||
6 | This file documents differences between the core properties described | ||
7 | by mmc.txt and the properties used by the omap_hsmmc driver. | ||
8 | |||
6 | Required properties: | 9 | Required 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 | ||
14 | Optional properties: | 16 | Optional properties: |
15 | ti,dual-volt: boolean, supports dual voltage cards | 17 | ti,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 |
18 | bus-width: Number of data lines, default assumed is 1 if the property is missing. | ||
19 | cd-gpios: GPIOs for card detection | ||
20 | wp-gpios: GPIOs for write protection | ||
21 | ti,non-removable: non-removable slot (like eMMC) | 20 | ti,non-removable: non-removable slot (like eMMC) |
22 | ti,needs-special-reset: Requires a special softreset sequence | 21 | ti,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 @@ | |||
1 | The Broadcom BCM87XX devices are a family of 10G Ethernet PHYs. They | ||
2 | have these bindings in addition to the standard PHY bindings. | ||
3 | |||
4 | Compatible: Should contain "broadcom,bcm8706" or "broadcom,bcm8727" and | ||
5 | "ethernet-phy-ieee802.3-c45" | ||
6 | |||
7 | Optional 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 | |||
16 | Example: | ||
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 | |||
15 | Optional properties: | ||
16 | |||
14 | - clock-frequency : The oscillator frequency driving the flexcan device | 17 | - clock-frequency : The oscillator frequency driving the flexcan device |
15 | 18 | ||
16 | Example: | 19 | Example: |
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 | |||
3 | This file provides information, what the device node | ||
4 | for the davinci_emac interface contains. | ||
5 | |||
6 | Required 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 | |||
23 | Optional properties: | ||
24 | - local-mac-address : 6 bytes, mac address | ||
25 | |||
26 | Example (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 4616fc28ee86..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 | ||
12 | Optional properties: | 11 | Optional 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 | ||
15 | Example: | 19 | Example: |
16 | 20 | ||
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 | ||
17 | Optional 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 | |||
17 | Example: | 26 | Example: |
18 | 27 | ||
19 | ethernet-phy@0 { | 28 | ethernet-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 | ||
3 | Required properties: | 3 | Required 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 | |||
1626 | MX6Q_PAD_SD2_DAT3__GPIO_1_12 1588 | 1626 | MX6Q_PAD_SD2_DAT3__GPIO_1_12 1588 |
1627 | MX6Q_PAD_SD2_DAT3__SJC_DONE 1589 | 1627 | MX6Q_PAD_SD2_DAT3__SJC_DONE 1589 |
1628 | MX6Q_PAD_SD2_DAT3__ANATOP_TESTO_3 1590 | 1628 | MX6Q_PAD_SD2_DAT3__ANATOP_TESTO_3 1590 |
1629 | MX6Q_PAD_ENET_RX_ER__ANATOP_USBOTG_ID 1591 | ||
1630 | MX6Q_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 @@ | |||
1 | One-register-per-pin type device tree based pinctrl driver | ||
2 | |||
3 | Required 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 | |||
13 | Optional 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 | |||
18 | This driver assumes that there is only one register for each pin, | ||
19 | and uses the common pinctrl bindings as specified in the pinctrl-bindings.txt | ||
20 | document in this directory. | ||
21 | |||
22 | The pin configuration nodes for pinctrl-single are specified as pinctrl | ||
23 | register offset and value pairs using pinctrl-single,pins. Only the bits | ||
24 | specified in pinctrl-single,function-mask are updated. For example, setting | ||
25 | a pin for a device could be done with: | ||
26 | |||
27 | pinctrl-single,pins = <0xdc 0x118>; | ||
28 | |||
29 | Where 0xdc is the offset from the pinctrl register base address for the | ||
30 | device pinctrl register, and 0x118 contains the desired value of the | ||
31 | pinctrl register. See the device example and static board pins example | ||
32 | below for more information. | ||
33 | |||
34 | Example: | ||
35 | |||
36 | /* SoC common file */ | ||
37 | |||
38 | /* first controller instance for pins in core domain */ | ||
39 | pmx_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 */ | ||
49 | pmx_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: | |||
10 | If this property is missing, the default assumed is Active low. | 10 | If 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 | ||
14 | Any property defined as part of the core regulator | 15 | Any property defined as part of the core regulator |
15 | binding, defined in regulator.txt, can also be used. | 16 | binding, 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 | ||
14 | Example: | 19 | Example: |
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 @@ | |||
1 | TPS65217 family of regulators | ||
2 | |||
3 | Required 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 | |||
17 | Each regulator is defined using the standard binding for regulators. | ||
18 | |||
19 | Example: | ||
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 | ||
12 | Each regulator is defined using the standard binding for regulators. | 21 | Each 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 | |||
3 | Required 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 | |||
11 | Example: | ||
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 | |||
3 | Required 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 | |||
10 | Example: | ||
11 | |||
12 | rtc@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/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-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 | |||
3 | The Samsung SPI controller is used to interface with various devices such as flash | ||
4 | and display controllers using the SPI communication interface. | ||
5 | |||
6 | Required 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 | ||
22 | official 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 | |||
30 | Required 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 | |||
38 | Optional 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 | |||
48 | SPI 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 | |||
66 | Aliases: | ||
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 | |||
72 | Example: | ||
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 | |||
3 | Required 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 | |||
9 | Example: | ||
10 | auart0: serial@8006a000 { | ||
11 | compatible = "fsl,imx28-auart", "fsl,imx23-auart"; | ||
12 | reg = <0x8006a000 0x2000>; | ||
13 | interrupts = <112 70 71>; | ||
14 | }; | ||
15 | |||
16 | Note: Each auart port should have an alias correctly numbered in "aliases" | ||
17 | node. | ||
18 | |||
19 | Example: | ||
20 | |||
21 | aliases { | ||
22 | serial0 = &auart0; | ||
23 | serial1 = &auart1; | ||
24 | serial2 = &auart2; | ||
25 | serial3 = &auart3; | ||
26 | serial4 = &auart4; | ||
27 | }; | ||
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/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 @@ | |||
1 | TI Watchdog Timer (WDT) Controller for OMAP | ||
2 | |||
3 | Required properties: | ||
4 | compatible: | ||
5 | - "ti,omap3-wdt" for OMAP3 | ||
6 | - "ti,omap4-wdt" for OMAP4 | ||
7 | - ti,hwmods: Name of the hwmod associated to the WDT | ||
8 | |||
9 | Examples: | ||
10 | |||
11 | wdt2: 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 | ||
315 | At .machine_init() time, Tegra board support code will need to look at | 315 | At .init_machine() time, Tegra board support code will need to look at |
316 | this DT and decide which nodes to create platform_devices for. | 316 | this DT and decide which nodes to create platform_devices for. |
317 | However, looking at the tree, it is not immediately obvious what kind | 317 | However, looking at the tree, it is not immediately obvious what kind |
318 | of device each node represents, or even if a node represents a device | 318 | of 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 | ||
252 | What: Code that is now under CONFIG_WIRELESS_EXT_SYSFS | ||
253 | (in net/core/net-sysfs.c) | ||
254 | When: 3.5 | ||
255 | Why: Over 1K .text/.data size reduction, data is available in other | ||
256 | ways (ioctls) | ||
257 | Who: Johannes Berg <johannes@sipsolutions.net> | ||
258 | |||
259 | --------------------------- | ||
260 | |||
261 | What: sysfs ui for changing p4-clockmod parameters | 252 | What: sysfs ui for changing p4-clockmod parameters |
262 | When: September 2009 | 253 | When: September 2009 |
263 | Why: See commits 129f8ae9b1b5be94517da76009ea956e89104ce8 and | 254 | Why: See commits 129f8ae9b1b5be94517da76009ea956e89104ce8 and |
@@ -414,21 +405,6 @@ Who: Jean Delvare <khali@linux-fr.org> | |||
414 | 405 | ||
415 | ---------------------------- | 406 | ---------------------------- |
416 | 407 | ||
417 | What: xt_connlimit rev 0 | ||
418 | When: 2012 | ||
419 | Who: Jan Engelhardt <jengelh@medozas.de> | ||
420 | Files: net/netfilter/xt_connlimit.c | ||
421 | |||
422 | ---------------------------- | ||
423 | |||
424 | What: ipt_addrtype match include file | ||
425 | When: 2012 | ||
426 | Why: superseded by xt_addrtype | ||
427 | Who: Florian Westphal <fw@strlen.de> | ||
428 | Files: include/linux/netfilter_ipv4/ipt_addrtype.h | ||
429 | |||
430 | ---------------------------- | ||
431 | |||
432 | What: i2c_driver.attach_adapter | 408 | What: i2c_driver.attach_adapter |
433 | i2c_driver.detach_adapter | 409 | i2c_driver.detach_adapter |
434 | When: September 2011 | 410 | When: September 2011 |
@@ -449,6 +425,19 @@ Who: Hans Verkuil <hans.verkuil@cisco.com> | |||
449 | 425 | ||
450 | ---------------------------- | 426 | ---------------------------- |
451 | 427 | ||
428 | What: CONFIG_CFG80211_WEXT | ||
429 | When: as soon as distributions ship new wireless tools, ie. wpa_supplicant 1.0 | ||
430 | and NetworkManager/connman/etc. that are able to use nl80211 | ||
431 | Why: 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. | ||
437 | Who: Johannes Berg <johannes@sipsolutions.net> | ||
438 | |||
439 | ---------------------------- | ||
440 | |||
452 | What: g_file_storage driver | 441 | What: g_file_storage driver |
453 | When: 3.8 | 442 | When: 3.8 |
454 | Why: This driver has been superseded by g_mass_storage. | 443 | Why: 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 | ||
581 | What: xt_recent rev 0 | ||
582 | When: 2013 | ||
583 | Who: Pablo Neira Ayuso <pablo@netfilter.org> | ||
584 | Files: net/netfilter/xt_recent.c | ||
585 | |||
586 | ---------------------------- | ||
587 | |||
592 | What: KVM debugfs statistics | 588 | What: KVM debugfs statistics |
593 | When: 2013 | 589 | When: 2013 |
594 | Why: KVM tracepoints provide mostly equivalent information in a much more | 590 | Why: 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 -------------------------- |
11 | prototypes: | 11 | prototypes: |
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 --------------------------- |
39 | prototypes: | 39 | prototypes: |
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); |
42 | ata *); | ||
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 | ||
66 | locking rules: | 68 | locking rules: |
67 | all may block | 69 | all may block |
@@ -89,6 +91,7 @@ listxattr: no | |||
89 | removexattr: yes | 91 | removexattr: yes |
90 | fiemap: no | 92 | fiemap: no |
91 | update_time: no | 93 | update_time: no |
94 | atomic_open: yes | ||
92 | 95 | ||
93 | Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on | 96 | Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on |
94 | victim. | 97 | victim. |
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. | |||
355 | via rcu-walk path walk (basically, if the file can have had a path name in the | 355 | via rcu-walk path walk (basically, if the file can have had a path name in the |
356 | vfs namespace). | 356 | vfs 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 |
359 | i_dentry to be reinitialized before it is freed, so an: | 359 | initialize the former in inode_init_always(), so just leave it alone in |
360 | 360 | the 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 | |||
363 | must 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 |
434 | misusing it. Replacement: d_make_root(inode). The difference is, | 432 | misusing it. Replacement: d_make_root(inode). The difference is, |
435 | d_make_root() drops the reference to inode if dentry allocation fails. | 433 | d_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 | ||
442 | two, it gets "is it an O_EXCL or equivalent?" boolean argument. Note that | ||
443 | local filesystems can ignore tha argument - they are guaranteed that the | ||
444 | object 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 | |||
341 | filesystem. As of kernel 2.6.22, the following members are defined: | 341 | filesystem. As of kernel 2.6.22, the following members are defined: |
342 | 342 | ||
343 | struct inode_operations { | 343 | struct 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 | ||
369 | Again, all methods are called without any locks being held, unless | 372 | Again, 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 | |||
479 | The Address Space Object | 490 | The 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 | |||
891 | defined: | 902 | defined: |
892 | 903 | ||
893 | struct dentry_operations { | 904 | struct 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 | |||
4 | The 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 | |||
18 | Historically, the USB stack was the first subsystem to provide an HID I/O | ||
19 | Driver. However, other standards like Bluetooth have adopted the HID specs and | ||
20 | may provide HID I/O Drivers, too. The UHID driver allows to implement HID I/O | ||
21 | Drivers in user-space and feed the data into the kernel HID-subsystem. | ||
22 | |||
23 | This allows user-space to operate on the same level as USB-HID, Bluetooth-HID | ||
24 | and similar. It does not provide a way to write HID Device Drivers, though. Use | ||
25 | hidraw for this purpose. | ||
26 | |||
27 | There is an example user-space application in ./samples/uhid/uhid-example.c | ||
28 | |||
29 | The UHID API | ||
30 | ------------ | ||
31 | |||
32 | UHID is accessed through a character misc-device. The minor-number is allocated | ||
33 | dynamically so you need to rely on udev (or similar) to create the device node. | ||
34 | This is /dev/uhid by default. | ||
35 | |||
36 | If a new device is detected by your HID I/O Driver and you want to register this | ||
37 | device with the HID subsystem, then you need to open /dev/uhid once for each | ||
38 | device you want to register. All further communication is done by read()'ing or | ||
39 | write()'ing "struct uhid_event" objects. Non-blocking operations are supported | ||
40 | by setting O_NONBLOCK. | ||
41 | |||
42 | struct uhid_event { | ||
43 | __u32 type; | ||
44 | union { | ||
45 | struct uhid_create_req create; | ||
46 | struct uhid_data_req data; | ||
47 | ... | ||
48 | } u; | ||
49 | }; | ||
50 | |||
51 | The "type" field contains the ID of the event. Depending on the ID different | ||
52 | payloads are sent. You must not split a single event across multiple read()'s or | ||
53 | multiple write()'s. A single event must always be sent as a whole. Furthermore, | ||
54 | only a single event can be sent per read() or write(). Pending data is ignored. | ||
55 | If you want to handle multiple events in a single syscall, then use vectored | ||
56 | I/O with readv()/writev(). | ||
57 | |||
58 | The first thing you should do is sending an UHID_CREATE event. This will | ||
59 | register the device. UHID will respond with an UHID_START event. You can now | ||
60 | start sending data to and reading data from UHID. However, unless UHID sends the | ||
61 | UHID_OPEN event, the internally attached HID Device Driver has no user attached. | ||
62 | That is, you might put your device asleep unless you receive the UHID_OPEN | ||
63 | event. If you receive the UHID_OPEN event, you should start I/O. If the last | ||
64 | user closes the HID device, you will receive an UHID_CLOSE event. This may be | ||
65 | followed by an UHID_OPEN event again and so on. There is no need to perform | ||
66 | reference-counting in user-space. That is, you will never receive multiple | ||
67 | UHID_OPEN events without an UHID_CLOSE event. The HID subsystem performs | ||
68 | ref-counting for you. | ||
69 | You may decide to ignore UHID_OPEN/UHID_CLOSE, though. I/O is allowed even | ||
70 | though the device may have no users. | ||
71 | |||
72 | If you want to send data to the HID subsystem, you send an HID_INPUT event with | ||
73 | your raw data payload. If the kernel wants to send data to the device, you will | ||
74 | read an UHID_OUTPUT or UHID_OUTPUT_EV event. | ||
75 | |||
76 | If your device disconnects, you should send an UHID_DESTROY event. This will | ||
77 | unregister the device. You can now send UHID_CREATE again to register a new | ||
78 | device. | ||
79 | If you close() the fd, the device is automatically unregistered and destroyed | ||
80 | internally. | ||
81 | |||
82 | write() | ||
83 | ------- | ||
84 | write() allows you to modify the state of the device and feed input data into | ||
85 | the kernel. The following types are supported: UHID_CREATE, UHID_DESTROY and | ||
86 | UHID_INPUT. The kernel will parse the event immediately and if the event ID is | ||
87 | not 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 | ||
89 | the 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 | |||
115 | read() | ||
116 | ------ | ||
117 | read() will return a queued ouput report. These output reports can be of type | ||
118 | UHID_START, UHID_STOP, UHID_OPEN, UHID_CLOSE, UHID_OUTPUT or UHID_OUTPUT_EV. No | ||
119 | reaction is required to any of them but you should handle them according to your | ||
120 | needs. 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 | |||
168 | Document 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 @@ | |||
1 | Supported chips: | ||
2 | * Dialog Semiconductors DA9052-BC and DA9053-AA/Bx PMICs | ||
3 | Prefix: 'da9052' | ||
4 | Datasheet: Datasheet is not publicly available. | ||
5 | |||
6 | Authors: David Dajun Chen <dchen@diasemi.com> | ||
7 | |||
8 | Description | ||
9 | ----------- | ||
10 | |||
11 | The DA9052/53 provides an Analogue to Digital Converter (ADC) with 10 bits | ||
12 | resolution and track and hold circuitry combined with an analogue input | ||
13 | multiplexer. The analogue input multiplexer will allow conversion of up to 10 | ||
14 | different inputs. The track and hold circuit ensures stable input voltages at | ||
15 | the input of the ADC during the conversion. | ||
16 | |||
17 | The ADC is used to measure the following inputs: | ||
18 | Channel 0: VDDOUT - measurement of the system voltage | ||
19 | Channel 1: ICH - internal battery charger current measurement | ||
20 | Channel 2: TBAT - output from the battery NTC | ||
21 | Channel 3: VBAT - measurement of the battery voltage | ||
22 | Channel 4: ADC_IN4 - high impedance input (0 - 2.5V) | ||
23 | Channel 5: ADC_IN5 - high impedance input (0 - 2.5V) | ||
24 | Channel 6: ADC_IN6 - high impedance input (0 - 2.5V) | ||
25 | Channel 7: XY - TSI interface to measure the X and Y voltage of the touch | ||
26 | screen resistive potentiometers | ||
27 | Channel 8: Internal Tjunc. - sense (internal temp. sensor) | ||
28 | Channel 9: VBBAT - measurement of the backup battery voltage | ||
29 | |||
30 | By using sysfs attributes we can measure the system voltage VDDOUT, the battery | ||
31 | charging current ICH, battery temperature TBAT, battery junction temperature | ||
32 | TJUNC, battery voltage VBAT and the back up battery voltage VBBAT. | ||
33 | |||
34 | Voltage Monitoring | ||
35 | ------------------ | ||
36 | |||
37 | Voltages are sampled by a 10 bit ADC. | ||
38 | |||
39 | The battery voltage is calculated as: | ||
40 | Milli volt = ((ADC value * 1000) / 512) + 2500 | ||
41 | |||
42 | The backup battery voltage is calculated as: | ||
43 | Milli volt = (ADC value * 2500) / 512; | ||
44 | |||
45 | The voltages on ADC channels 4, 5 and 6 are calculated as: | ||
46 | Milli volt = (ADC value * 2500) / 1023 | ||
47 | |||
48 | Temperature Monitoring | ||
49 | ---------------------- | ||
50 | |||
51 | Temperatures are sampled by a 10 bit ADC. Junction and battery temperatures | ||
52 | are monitored by the ADC channels. | ||
53 | |||
54 | The junction temperature is calculated: | ||
55 | Degrees celsius = 1.708 * (TJUNC_RES - T_OFFSET) - 108.8 | ||
56 | The junction temperature attribute is supported by the driver. | ||
57 | |||
58 | The battery temperature is calculated: | ||
59 | Degree Celcius = 1 / (t1 + 1/298)- 273 | ||
60 | where t1 = (1/B)* ln(( ADCval * 2.5)/(R25*ITBAT*255)) | ||
61 | Default 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 @@ | |||
1 | Kernel driver hih6130 | ||
2 | ===================== | ||
3 | |||
4 | Supported 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 | |||
11 | Author: | ||
12 | Iain Paton <ipaton0@gmail.com> | ||
13 | |||
14 | Description | ||
15 | ----------- | ||
16 | |||
17 | The HIH-6130 & HIH-6131 are humidity and temperature sensors in a SO8 package. | ||
18 | The difference between the two devices is that the HIH-6131 has a condensation | ||
19 | filter. | ||
20 | |||
21 | The devices communicate with the I2C protocol. All sensors are set to the same | ||
22 | I2C address 0x27 by default, so an entry with I2C_BOARD_INFO("hih6130", 0x27) | ||
23 | can be used in the board setup code. | ||
24 | |||
25 | Please see Documentation/i2c/instantiating-devices for details on how to | ||
26 | instantiate I2C devices. | ||
27 | |||
28 | sysfs-Interface | ||
29 | --------------- | ||
30 | |||
31 | temp1_input - temperature input | ||
32 | humidity1_input - humidity input | ||
33 | |||
34 | Notes | ||
35 | ----- | ||
36 | |||
37 | Command 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 | |||
38 | Disable selected features normally supported by the device. This makes it | 38 | Disable selected features normally supported by the device. This makes it |
39 | possible to work around possible driver or hardware bugs if the feature in | 39 | possible to work around possible driver or hardware bugs if the feature in |
40 | question doesn't work as intended for whatever reason. Bit values: | 40 | question 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 | ||
46 | Description | 47 | Description |
@@ -86,6 +87,12 @@ SMBus 2.0 Support | |||
86 | The 82801DB (ICH4) and later chips support several SMBus 2.0 features. | 87 | The 82801DB (ICH4) and later chips support several SMBus 2.0 features. |
87 | 88 | ||
88 | 89 | ||
90 | Interrupt Support | ||
91 | ----------------- | ||
92 | |||
93 | PCI interrupt support is supported on the 82801EB (ICH5) and later chips. | ||
94 | |||
95 | |||
89 | Hidden ICH SMBus | 96 | Hidden 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. | |||
68 | The ServerWorks Southbridges, the Intel 440MX, and the Victory66 are | 73 | The ServerWorks Southbridges, the Intel 440MX, and the Victory66 are |
69 | identical to the PIIX4 in I2C/SMBus support. | 74 | identical to the PIIX4 in I2C/SMBus support. |
70 | 75 | ||
76 | The AMD SB700 and SP5100 chipsets implement two PIIX4-compatible SMBus | ||
77 | controllers. If your BIOS initializes the secondary controller, it will | ||
78 | be detected by this driver as an "Auxiliary SMBus Host Controller". | ||
79 | |||
71 | If you own Force CPCI735 motherboard or other OSB4 based systems you may need | 80 | If you own Force CPCI735 motherboard or other OSB4 based systems you may need |
72 | to change the SMBus Interrupt Select register so the SMBus controller uses | 81 | to change the SMBus Interrupt Select register so the SMBus controller uses |
73 | the SMI mode. | 82 | the 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 | } |
248 | module_init(foo_init); | ||
248 | 249 | ||
249 | static void __exit foo_cleanup(void) | 250 | static void __exit foo_cleanup(void) |
250 | { | 251 | { |
251 | i2c_del_driver(&foo_driver); | 252 | i2c_del_driver(&foo_driver); |
252 | } | 253 | } |
254 | module_exit(foo_cleanup); | ||
253 | 255 | ||
254 | /* Substitute your own name and email address */ | 256 | The module_i2c_driver() macro can be used to reduce above code. |
255 | MODULE_AUTHOR("Frodo Looijaard <frodol@dds.nl>" | ||
256 | MODULE_DESCRIPTION("Driver for Barf Inc. Foo I2C devices"); | ||
257 | |||
258 | /* a few non-GPL license types are also allowed */ | ||
259 | MODULE_LICENSE("GPL"); | ||
260 | 257 | ||
261 | module_init(foo_init); | 258 | module_i2c_driver(foo_driver); |
262 | module_exit(foo_cleanup); | ||
263 | 259 | ||
264 | Note that some functions are marked by `__init'. These functions can | 260 | Note that some functions are marked by `__init'. These functions can |
265 | be removed after kernel booting (or module loading) is completed. | 261 | be removed after kernel booting (or module loading) is completed. |
@@ -267,6 +263,17 @@ Likewise, functions marked by `__exit' are dropped by the compiler when | |||
267 | the code is built into the kernel, as they would never be called. | 263 | the code is built into the kernel, as they would never be called. |
268 | 264 | ||
269 | 265 | ||
266 | Driver Information | ||
267 | ================== | ||
268 | |||
269 | /* Substitute your own name and email address */ | ||
270 | MODULE_AUTHOR("Frodo Looijaard <frodol@dds.nl>" | ||
271 | MODULE_DESCRIPTION("Driver for Barf Inc. Foo I2C devices"); | ||
272 | |||
273 | /* a few non-GPL license types are also allowed */ | ||
274 | MODULE_LICENSE("GPL"); | ||
275 | |||
276 | |||
270 | Power Management | 277 | Power Management |
271 | ================ | 278 | ================ |
272 | 279 | ||
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 | |||
86 | http://www.kernel.org/git/?p=utils/kernel/kexec/kexec-tools.git | 86 | http://www.kernel.org/git/?p=utils/kernel/kexec/kexec-tools.git |
87 | 87 | ||
88 | More information about kexec-tools can be found at | 88 | More information about kexec-tools can be found at |
89 | http://www.kernel.org/pub/linux/utils/kernel/kexec/README.html | 89 | http://horms.net/projects/kexec/ |
90 | 90 | ||
91 | 3) Unpack the tarball with the tar command, as follows: | 91 | 3) 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/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 | ||
212 | will enable debug messages for when routes change. | 212 | will enable debug messages for when routes change. |
213 | 213 | ||
214 | Counters for different types of packets entering and leaving the | ||
215 | batman-adv module are available through ethtool: | ||
216 | |||
217 | # ethtool --statistics bat0 | ||
218 | |||
214 | 219 | ||
215 | BATCTL | 220 | BATCTL |
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, | |||
1210 | documented above. | 1210 | documented 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 |
1213 | preferrable to use bonding parameters exported by sysfs, documented in the | 1213 | preferable to use bonding parameters exported by sysfs, documented in the |
1214 | section below. | 1214 | section 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 | |||
1950 | support link monitoring of their members, so if individual links fail, | 1950 | support link monitoring of their members, so if individual links fail, |
1951 | the load will be rebalanced across the remaining devices. | 1951 | the 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" |
1954 | for information on configuring bonding with one peer device. | 1954 | for information on configuring bonding with one peer device. |
1955 | 1955 | ||
1956 | 11.2 High Availability in a Multiple Switch Topology | 1956 | 11.2 High Availability in a Multiple Switch Topology |
@@ -2620,7 +2620,7 @@ be found at: | |||
2620 | 2620 | ||
2621 | https://lists.sourceforge.net/lists/listinfo/bonding-devel | 2621 | https://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 |
2624 | on the main Linux network mailing list, hosted at vger.kernel.org. The list | 2624 | on the main Linux network mailing list, hosted at vger.kernel.org. The list |
2625 | address is: | 2625 | address 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 @@ | |||
1 | In order to use the Ethernet bridging functionality, you'll need the | 1 | In order to use the Ethernet bridging functionality, you'll need the |
2 | userspace tools. These programs and documentation are available | 2 | userspace tools. |
3 | at http://www.linuxfoundation.org/en/Net:Bridge. The download page is | 3 | |
4 | http://prdownloads.sourceforge.net/bridge. | 4 | Documentation for Linux bridging is on: |
5 | http://www.linuxfoundation.org/collaborate/workgroups/networking/bridge | ||
6 | |||
7 | The bridge-utilities are maintained at: | ||
8 | git://git.kernel.org/pub/scm/linux/kernel/git/shemminger/bridge-utils.git | ||
9 | |||
10 | Additionally, the iproute2 utilities can be used to configure | ||
11 | bridge devices. | ||
5 | 12 | ||
6 | If you still have questions, don't hesitate to post to the mailing list | 13 | If 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. | |||
19 | Architecture: | 19 | Architecture: |
20 | ------------ | 20 | ------------ |
21 | The implementation of CAIF is divided into: | 21 | The 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 | ||
47 | Using the Kernel API | ||
48 | ---------------------- | ||
49 | The Kernel API is used for accessing CAIF channels from the | ||
50 | kernel. | ||
51 | The user of the API has to implement two callbacks for receive | ||
52 | and control. | ||
53 | The receive callback gives a CAIF packet as a SKB. The control | ||
54 | callback will | ||
55 | notify of channel initialization complete, and flow-on/flow- | ||
56 | off. | ||
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 | |||
70 | See the caif_kernel.h for details about the CAIF kernel API. | ||
71 | 47 | ||
72 | 48 | ||
73 | I M P L E M E N T A T I O N | 49 | I M P L E M E N T A T I O N |
74 | =========================== | 50 | =========================== |
75 | =========================== | 51 | |
76 | 52 | ||
77 | CAIF Core Protocol Layer | 53 | CAIF 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 | ||
103 | Layered Architecture | 75 | Layered 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 | |||
117 | The CAIF Protocol implementation contains: | 84 | The 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 | ||
189 | Linux Driver Implementation | 156 | CAIF Socket and IP interface |
190 | =========================== | 157 | =========================== |
191 | 158 | ||
192 | Linux GPRS Net Device and CAIF socket are implemented on top of the | 159 | The IP interface and CAIF socket API are implemented on top of the |
193 | CAIF Core protocol. The Net device and CAIF socket have an instance of | 160 | CAIF 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. |
195 | Net device and Socket implement the 'receive()' function defined by | 162 | Net 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 |
197 | receive of packets is handled as by the rest of the layers: the 'dn->transmit()' | 164 | receive of packets is handled as by the rest of the layers: the 'dn->transmit()' |
198 | function is called in order to transmit data. | 165 | function is called in order to transmit data. |
199 | 166 | ||
200 | The layer on top of the CAIF Core implementation is | ||
201 | sometimes referred to as the "Client layer". | ||
202 | |||
203 | |||
204 | Configuration of Link Layer | 167 | Configuration of Link Layer |
205 | --------------------------- | 168 | --------------------------- |
206 | The Link Layer is implemented as Linux net devices (struct net_device). | 169 | The Link Layer is implemented as Linux network devices (struct net_device). |
207 | Payload handling and registration is done using standard Linux mechanisms. | 170 | Payload handling and registration is done using standard Linux mechanisms. |
208 | 171 | ||
209 | The CAIF Protocol relies on a loss-less link layer without implementing | 172 | The 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 | ||
246 | 4. How to use Socket CAN | 248 | 4. 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 | ||
471 | tcp_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 | |||
471 | tcp_syn_retries - INTEGER | 484 | tcp_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 | ||
567 | tcp_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 | |||
581 | tcp_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 | |||
554 | UDP variables: | 586 | UDP variables: |
555 | 587 | ||
556 | udp_mem - vector of 3 INTEGERs: min, pressure, max | 588 | udp_mem - vector of 3 INTEGERs: min, pressure, max |
@@ -857,9 +889,19 @@ accept_source_route - BOOLEAN | |||
857 | FALSE (host) | 889 | FALSE (host) |
858 | 890 | ||
859 | accept_local - BOOLEAN | 891 | accept_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 | |||
902 | route_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 | ||
865 | rp_filter - INTEGER | 907 | rp_filter - INTEGER |
@@ -1398,6 +1440,20 @@ path_max_retrans - INTEGER | |||
1398 | 1440 | ||
1399 | Default: 5 | 1441 | Default: 5 |
1400 | 1442 | ||
1443 | pf_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 | |||
1401 | rto_initial - INTEGER | 1457 | rto_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: | |||
118 | Naively, to add VLAN support, it makes sense to add a new "vlan" flow | 118 | Naively, to add VLAN support, it makes sense to add a new "vlan" flow |
119 | key attribute to contain the VLAN tag, then continue to decode the | 119 | key attribute to contain the VLAN tag, then continue to decode the |
120 | encapsulated headers beyond the VLAN tag using the existing field | 120 | encapsulated headers beyond the VLAN tag using the existing field |
121 | definitions. With this change, an TCP packet in VLAN 10 would have a | 121 | definitions. With this change, a TCP packet in VLAN 10 would have a |
122 | flow key much like this: | 122 | flow 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 | |||
136 | http://vip.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/ | 136 | http://vip.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/ |
137 | 26310_AMD-8131_HyperTransport_PCI-X_Tunnel_Revision_Guide_rev_3_18.pdf | 137 | 26310_AMD-8131_HyperTransport_PCI-X_Tunnel_Revision_Guide_rev_3_18.pdf |
138 | 138 | ||
139 | 6. Available Downloads | 139 | 6. Support |
140 | Neterion "s2io" driver in Red Hat and Suse 2.6-based distributions is kept up | ||
141 | to date, also the latest "s2io" code (including support for 2.4 kernels) is | ||
142 | available via "Support" link on the Neterion site: http://www.neterion.com. | ||
143 | |||
144 | For Xframe User Guide (Programming manual), visit ftp site ns1.s2io.com, | ||
145 | user: linuxdocs password: HALdocs | ||
146 | |||
147 | 7. Support | ||
148 | For further support please contact either your 10GbE Xframe NIC vendor (IBM, | 140 | For further support please contact either your 10GbE Xframe NIC vendor (IBM, |
149 | HP, SGI etc.) or click on the "Support" link on the Neterion site: | 141 | HP, SGI etc.) |
150 | http://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 | ||
276 | 5) Debug Information | 280 | 5) Debug Information |
277 | 281 | ||
@@ -304,7 +308,27 @@ All these are only useful during the developing stage | |||
304 | and should never enabled inside the code for general usage. | 308 | and should never enabled inside the code for general usage. |
305 | In fact, these can generate an huge amount of debug messages. | 309 | In fact, these can generate an huge amount of debug messages. |
306 | 310 | ||
307 | 6) TODO: | 311 | 6) Energy Efficient Ethernet |
312 | |||
313 | Energy Efficient Ethernet(EEE) enables IEEE 802.3 MAC sublayer along | ||
314 | with a family of Physical layer to operate in the Low power Idle(LPI) | ||
315 | mode. The EEE mode supports the IEEE 802.3 MAC operation at 100Mbps, | ||
316 | 1000Mbps & 10Gbps. | ||
317 | |||
318 | The LPI mode allows power saving by switching off parts of the | ||
319 | communication device functionality when there is no data to be | ||
320 | transmitted & received. The system on both the side of the link can | ||
321 | disable some functionalities & save power during the period of low-link | ||
322 | utilization. The MAC controls whether the system should enter or exit | ||
323 | the LPI mode & communicate this to PHY. | ||
324 | |||
325 | As soon as the interface is opened, the driver verifies if the EEE can | ||
326 | be supported. This is done by looking at both the DMA HW capability | ||
327 | register and the PHY devices MCD registers. | ||
328 | To enter in Tx LPI mode the driver needs to have a software timer | ||
329 | that enable and disable the LPI mode when there is nothing to be | ||
330 | transmitted. | ||
331 | |||
332 | 7) 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 | |||
95 | 4) Troubleshooting: | ||
96 | ------------------- | ||
97 | |||
98 | To resolve an issue with the source code or X3100 series adapter, please collect | ||
99 | the statistics, register dumps using ethool, relevant logs and email them to | ||
100 | support@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 | |||
178 | that was discovered). | 178 | that was discovered). |
179 | 179 | ||
180 | Typically, such an event will be propagated to NFC Core from MSGRXWQ context. | 180 | Typically, such an event will be propagated to NFC Core from MSGRXWQ context. |
181 | |||
182 | Error management | ||
183 | ---------------- | ||
184 | |||
185 | Errors that occur synchronously with the execution of an NFC Core request are | ||
186 | simply returned as the execution result of the request. These are easy. | ||
187 | |||
188 | Errors that occur asynchronously (e.g. in a background protocol handling thread) | ||
189 | must be reported such that upper layers don't stay ignorant that something | ||
190 | went wrong below and know that expected events will probably never happen. | ||
191 | Handling of these errors is done as follows: | ||
192 | |||
193 | - driver (pn544) fails to deliver an incoming frame: it stores the error such | ||
194 | that any subsequent call to the driver will result in this error. Then it calls | ||
195 | the standard nfc_shdlc_recv_frame() with a NULL argument to report the problem | ||
196 | above. shdlc stores a EREMOTEIO sticky status, which will trigger SMW to | ||
197 | report above in turn. | ||
198 | |||
199 | - SMW is basically a background thread to handle incoming and outgoing shdlc | ||
200 | frames. This thread will also check the shdlc sticky status and report to HCI | ||
201 | when it discovers it is not able to run anymore because of an unrecoverable | ||
202 | error that happened within shdlc or below. If the problem occurs during shdlc | ||
203 | connection, 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 | ||
206 | error from a lower layer, HCI will either complete the currently executing | ||
207 | command 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 | ||
210 | active, it will send a tag discovered event with an empty tag list to the user | ||
211 | space to let it know that the poll operation will never be able to detect a tag. | ||
212 | If polling is not active and the error was sticky, lower levels will return it | ||
213 | at 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 | |||
583 | subsystem-level callbacks. Specifically, if a device's pm_domain pointer is | 583 | subsystem-level callbacks. Specifically, if a device's pm_domain pointer is |
584 | not NULL, the ->suspend() callback from the object pointed to by it will be | 584 | not NULL, the ->suspend() callback from the object pointed to by it will be |
585 | executed instead of its subsystem's (e.g. bus type's) ->suspend() callback and | 585 | executed instead of its subsystem's (e.g. bus type's) ->suspend() callback and |
586 | anlogously for all of the remaining callbacks. In other words, power management | 586 | analogously for all of the remaining callbacks. In other words, power |
587 | domain callbacks, if defined for the given device, always take precedence over | 587 | management domain callbacks, if defined for the given device, always take |
588 | the callbacks provided by the device's subsystem (e.g. bus type). | 588 | precedence over the callbacks provided by the device's subsystem (e.g. bus |
589 | type). | ||
589 | 590 | ||
590 | The support for device power management domains is only relevant to platforms | 591 | The support for device power management domains is only relevant to platforms |
591 | needing to use the same device driver power management callbacks in many | 592 | needing to use the same device driver power management callbacks in many |
@@ -598,7 +599,7 @@ it into account in any way. | |||
598 | Device Low Power (suspend) States | 599 | Device Low Power (suspend) States |
599 | --------------------------------- | 600 | --------------------------------- |
600 | Device low-power states aren't standard. One device might only handle | 601 | Device 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" |
603 | faster than from a full "off". | 604 | faster 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 | ||
34 | echo platform > /sys/power/disk; echo disk > /sys/power/state | 34 | echo 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 | ||
37 | to RAM (provided your platform supports it), you can try | ||
38 | |||
39 | echo 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 |
37 | support. For suspend and resume to work, make sure your disk drivers | 42 | support. For suspend and resume to work, make sure your disk drivers |
38 | are built into kernel -- not modules. [There's way to make | 43 | are built into kernel -- not modules. [There's way to make |
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 | ||
16 | ALC262 | 16 | ALC262 |
17 | ====== | 17 | ====== |
18 | N/A | 18 | inv-dmic Inverted internal mic workaround |
19 | 19 | ||
20 | ALC267/268 | 20 | ALC267/268 |
21 | ========== | 21 | ========== |
22 | N/A | 22 | inv-dmic Inverted internal mic workaround |
23 | 23 | ||
24 | ALC269 | 24 | ALC269/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 | ||
29 | ALC662/663/272 | 33 | ALC662/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 | ||
40 | ALC680 | 46 | ALC680 |
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 | ||
50 | ALC861/660 | 57 | ALC861/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/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 | |||
35 | of contiguous registers. Random mode reads or writes random registers with | 35 | of contiguous registers. Random mode reads or writes random registers with |
36 | a tuple structure containing address/value pairs. The repeat mode is only | 36 | a tuple structure containing address/value pairs. The repeat mode is only |
37 | used by VP4 to load a firmware patch. It contains a starting address and | 37 | used by VP4 to load a firmware patch. It contains a starting address and |
38 | a sequence of bytes to be written into a gpio port. \ No newline at end of file | 38 | a 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: | |||
50 | http://personal.clt.bellsouth.net/~kjsisson or at | 50 | http://personal.clt.bellsouth.net/~kjsisson or at |
51 | http://stv0680-usb.sourceforge.net | 51 | http://stv0680-usb.sourceforge.net |
52 | 52 | ||
53 | Any questions to me can be send to: kjsisson@bellsouth.net \ No newline at end of file | 53 | Any 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 2c9948379469..bf33aaa4c59f 100644 --- a/Documentation/virtual/kvm/api.txt +++ b/Documentation/virtual/kvm/api.txt | |||
@@ -1946,6 +1946,40 @@ the guest using the specified gsi pin. The irqfd is removed using | |||
1946 | the KVM_IRQFD_FLAG_DEASSIGN flag, specifying both kvm_irqfd.fd | 1946 | the KVM_IRQFD_FLAG_DEASSIGN flag, specifying both kvm_irqfd.fd |
1947 | and kvm_irqfd.gsi. | 1947 | and kvm_irqfd.gsi. |
1948 | 1948 | ||
1949 | 4.76 KVM_PPC_ALLOCATE_HTAB | ||
1950 | |||
1951 | Capability: KVM_CAP_PPC_ALLOC_HTAB | ||
1952 | Architectures: powerpc | ||
1953 | Type: vm ioctl | ||
1954 | Parameters: Pointer to u32 containing hash table order (in/out) | ||
1955 | Returns: 0 on success, -1 on error | ||
1956 | |||
1957 | This requests the host kernel to allocate an MMU hash table for a | ||
1958 | guest using the PAPR paravirtualization interface. This only does | ||
1959 | anything if the kernel is configured to use the Book 3S HV style of | ||
1960 | virtualization. Otherwise the capability doesn't exist and the ioctl | ||
1961 | returns an ENOTTY error. The rest of this description assumes Book 3S | ||
1962 | HV. | ||
1963 | |||
1964 | There must be no vcpus running when this ioctl is called; if there | ||
1965 | are, it will do nothing and return an EBUSY error. | ||
1966 | |||
1967 | The parameter is a pointer to a 32-bit unsigned integer variable | ||
1968 | containing the order (log base 2) of the desired size of the hash | ||
1969 | table, which must be between 18 and 46. On successful return from the | ||
1970 | ioctl, it will have been updated with the order of the hash table that | ||
1971 | was allocated. | ||
1972 | |||
1973 | If 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 | ||
1975 | default-sized hash table (16 MB). | ||
1976 | |||
1977 | If this ioctl is called when a hash table has already been allocated, | ||
1978 | the kernel will clear out the existing hash table (zero all HPTEs) and | ||
1979 | return the hash table order in the parameter. (If the guest is using | ||
1980 | the virtualized real-mode area (VRMA) facility, the kernel will | ||
1981 | re-create the VMRA HPTEs on the next KVM_RUN of any vcpu.) | ||
1982 | |||
1949 | 1983 | ||
1950 | 5. The kvm_run structure | 1984 | 5. The kvm_run structure |
1951 | ------------------------ | 1985 | ------------------------ |
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 | ||
9 | 2. Reference | 9 | 2: Exception |
10 | ------------ | ||
11 | |||
12 | Fast page fault: | ||
13 | |||
14 | Fast page fault is the fast path which fixes the guest page fault out of | ||
15 | the mmu-lock on x86. Currently, the page fault can be fast only if the | ||
16 | shadow page table is present and it is caused by write-protect, that means | ||
17 | we just need change the W bit of the spte. | ||
18 | |||
19 | What we use to avoid all the race is the SPTE_HOST_WRITEABLE bit and | ||
20 | SPTE_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 | |||
26 | On fast page fault path, we will use cmpxchg to atomically set the spte W | ||
27 | bit if spte.SPTE_HOST_WRITEABLE = 1 and spte.SPTE_WRITE_PROTECT = 1, this | ||
28 | is safe because whenever changing these bits can be detected by cmpxchg. | ||
29 | |||
30 | But we need carefully check these cases: | ||
31 | 1): The mapping from gfn to pfn | ||
32 | The mapping from gfn to pfn may be changed since we can only ensure the pfn | ||
33 | is not changed during cmpxchg. This is a ABA problem, for example, below case | ||
34 | will happen: | ||
35 | |||
36 | At the beginning: | ||
37 | gpte = gfn1 | ||
38 | gfn1 is mapped to pfn1 on host | ||
39 | spte is the shadow page table entry corresponding with gpte and | ||
40 | spte = pfn1 | ||
41 | |||
42 | VCPU 0 VCPU0 | ||
43 | on 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 | |||
59 | We dirty-log for gfn1, that means gfn2 is lost in dirty-bitmap. | ||
60 | |||
61 | For direct sp, we can easily avoid it since the spte of direct sp is fixed | ||
62 | to gfn. For indirect sp, before we do cmpxchg, we call gfn_to_pfn_atomic() | ||
63 | to 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 | |||
69 | Then, we can ensure the dirty bitmaps is correctly set for a gfn. | ||
70 | |||
71 | Currently, to simplify the whole things, we disable fast page fault for | ||
72 | indirect shadow page. | ||
73 | |||
74 | 2): Dirty bit tracking | ||
75 | In the origin code, the spte can be fast updated (non-atomically) if the | ||
76 | spte is read-only and the Accessed bit has already been set since the | ||
77 | Accessed bit and Dirty bit can not be lost. | ||
78 | |||
79 | But it is not true after fast page fault since the spte can be marked | ||
80 | writable between reading spte and updating spte. Like below case: | ||
81 | |||
82 | At the beginning: | ||
83 | spte.W = 0 | ||
84 | spte.Accessed = 1 | ||
85 | |||
86 | VCPU 0 VCPU0 | ||
87 | In 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 | |||
111 | The Dirty bit is lost in this case. | ||
112 | |||
113 | In order to avoid this kind of issue, we always treat the spte as "volatile" | ||
114 | if it can be updated out of mmu-lock, see spte_has_volatile_bits(), it means, | ||
115 | the spte is always atomicly updated in this case. | ||
116 | |||
117 | 3): flush tlbs due to spte updated | ||
118 | If the spte is updated from writable to readonly, we should flush all TLBs, | ||
119 | otherwise rmap_write_protect will find a read-only spte, even though the | ||
120 | writable spte might be cached on a CPU's TLB. | ||
121 | |||
122 | As mentioned before, the spte can be updated to writable out of mmu-lock on | ||
123 | fast page fault path, in order to easily audit the path, we see if TLBs need | ||
124 | be flushed caused by this reason in mmu_spte_update() since this is a common | ||
125 | function to update spte (present -> present). | ||
126 | |||
127 | Since the spte is "volatile" if it can be updated out of mmu-lock, we always | ||
128 | atomicly update the spte, the race caused by fast page fault can be avoided, | ||
129 | See the comments in spte_has_volatile_bits() and mmu_spte_update(). | ||
130 | |||
131 | 3. Reference | ||
10 | ------------ | 132 | ------------ |
11 | 133 | ||
12 | Name: kvm_lock | 134 | Name: kvm_lock |
@@ -23,3 +145,9 @@ Arch: x86 | |||
23 | Protects: - kvm_arch::{last_tsc_write,last_tsc_nsec,last_tsc_offset} | 145 | Protects: - kvm_arch::{last_tsc_write,last_tsc_nsec,last_tsc_offset} |
24 | - tsc offset in vmcb | 146 | - tsc offset in vmcb |
25 | Comment: 'raw' because updating the tsc offsets must not be preempted. | 147 | Comment: 'raw' because updating the tsc offsets must not be preempted. |
148 | |||
149 | Name: kvm->mmu_lock | ||
150 | Type: spinlock_t | ||
151 | Arch: any | ||
152 | Protects: -shadow page/shadow tlb entry | ||
153 | Comment: 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 | |||
227 | MSR_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 | ||
115 | If any other bit changes in the MSR, please still use mtmsr(d). | 113 | If 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 | |||
25 | copy the page to transcendent memory and associate it with the type and | 25 | copy the page to transcendent memory and associate it with the type and |
26 | offset associated with the page. A "load" will copy the page, if found, | 26 | offset associated with the page. A "load" will copy the page, if found, |
27 | from transcendent memory into kernel memory, but will NOT remove the page | 27 | from transcendent memory into kernel memory, but will NOT remove the page |
28 | from from transcendent memory. An "invalidate_page" will remove the page | 28 | from transcendent memory. An "invalidate_page" will remove the page |
29 | from transcendent memory and an "invalidate_area" will remove ALL pages | 29 | from transcendent memory and an "invalidate_area" will remove ALL pages |
30 | associated with the swap type (e.g., like swapoff) and notify the "device" | 30 | associated with the swap type (e.g., like swapoff) and notify the "device" |
31 | to refuse further stores with that swap type. | 31 | to refuse further stores with that swap type. |
@@ -99,7 +99,7 @@ server configured with a large amount of RAM... without pre-configuring | |||
99 | how much of the RAM is available for each of the clients! | 99 | how much of the RAM is available for each of the clients! |
100 | 100 | ||
101 | In the virtual case, the whole point of virtualization is to statistically | 101 | In the virtual case, the whole point of virtualization is to statistically |
102 | multiplex physical resources acrosst the varying demands of multiple | 102 | multiplex physical resources across the varying demands of multiple |
103 | virtual machines. This is really hard to do with RAM and efforts to do | 103 | virtual machines. This is really hard to do with RAM and efforts to do |
104 | it well with no kernel changes have essentially failed (except in some | 104 | it well with no kernel changes have essentially failed (except in some |
105 | well-publicized special-case workloads). | 105 | well-publicized special-case workloads). |
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 | ||
90 | The cmwq design differentiates between the user-facing workqueues that | 90 | The cmwq design differentiates between the user-facing workqueues that |
91 | subsystems and drivers queue work items on and the backend mechanism | 91 | subsystems and drivers queue work items on and the backend mechanism |
92 | which manages thread-pool and processes the queued work items. | 92 | which manages thread-pools and processes the queued work items. |
93 | 93 | ||
94 | The backend is called gcwq. There is one gcwq for each possible CPU | 94 | The backend is called gcwq. There is one gcwq for each possible CPU |
95 | and one gcwq to serve work items queued on unbound workqueues. | 95 | and one gcwq to serve work items queued on unbound workqueues. Each |
96 | gcwq has two thread-pools - one for normal work items and the other | ||
97 | for high priority ones. | ||
96 | 98 | ||
97 | Subsystems and drivers can create and queue work items through special | 99 | Subsystems and drivers can create and queue work items through special |
98 | workqueue API functions as they see fit. They can influence some | 100 | workqueue API functions as they see fit. They can influence some |
99 | aspects of the way the work items are executed by setting flags on the | 101 | aspects of the way the work items are executed by setting flags on the |
100 | workqueue they are putting the work item on. These flags include | 102 | workqueue they are putting the work item on. These flags include |
101 | things like CPU locality, reentrancy, concurrency limits and more. To | 103 | things like CPU locality, reentrancy, concurrency limits, priority and |
102 | get a detailed overview refer to the API description of | 104 | more. To get a detailed overview refer to the API description of |
103 | alloc_workqueue() below. | 105 | alloc_workqueue() below. |
104 | 106 | ||
105 | When a work item is queued to a workqueue, the target gcwq is | 107 | When a work item is queued to a workqueue, the target gcwq and |
106 | determined according to the queue parameters and workqueue attributes | 108 | thread-pool is determined according to the queue parameters and |
107 | and appended on the shared worklist of the gcwq. For example, unless | 109 | workqueue attributes and appended on the shared worklist of the |
108 | specifically overridden, a work item of a bound workqueue will be | 110 | thread-pool. For example, unless specifically overridden, a work item |
109 | queued on the worklist of exactly that gcwq that is associated to the | 111 | of a bound workqueue will be queued on the worklist of either normal |
110 | CPU the issuer is running on. | 112 | or highpri thread-pool of the gcwq that is associated to the CPU the |
113 | issuer is running on. | ||
111 | 114 | ||
112 | For any worker pool implementation, managing the concurrency level | 115 | For 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. | |||
115 | Minimal to save resources and sufficient in that the system is used at | 118 | Minimal to save resources and sufficient in that the system is used at |
116 | its full capacity. | 119 | its full capacity. |
117 | 120 | ||
118 | Each gcwq bound to an actual CPU implements concurrency management by | 121 | Each thread-pool bound to an actual CPU implements concurrency |
119 | hooking into the scheduler. The gcwq is notified whenever an active | 122 | management by hooking into the scheduler. The thread-pool is notified |
120 | worker wakes up or sleeps and keeps track of the number of the | 123 | whenever an active worker wakes up or sleeps and keeps track of the |
121 | currently runnable workers. Generally, work items are not expected to | 124 | number of the currently runnable workers. Generally, work items are |
122 | hog a CPU and consume many cycles. That means maintaining just enough | 125 | not expected to hog a CPU and consume many cycles. That means |
123 | concurrency to prevent work processing from stalling should be | 126 | maintaining just enough concurrency to prevent work processing from |
124 | optimal. As long as there are one or more runnable workers on the | 127 | stalling should be optimal. As long as there are one or more runnable |
125 | CPU, the gcwq doesn't start execution of a new work, but, when the | 128 | workers on the CPU, the thread-pool doesn't start execution of a new |
126 | last running worker goes to sleep, it immediately schedules a new | 129 | work, but, when the last running worker goes to sleep, it immediately |
127 | worker so that the CPU doesn't sit idle while there are pending work | 130 | schedules a new worker so that the CPU doesn't sit idle while there |
128 | items. This allows using a minimal number of workers without losing | 131 | are pending work items. This allows using a minimal number of workers |
129 | execution bandwidth. | 132 | without losing execution bandwidth. |
130 | 133 | ||
131 | Keeping idle workers around doesn't cost other than the memory space | 134 | Keeping idle workers around doesn't cost other than the memory space |
132 | for kthreads, so cmwq holds onto idle ones for a while before killing | 135 | for kthreads, so cmwq holds onto idle ones for a while before killing |
133 | them. | 136 | them. |
134 | 137 | ||
135 | For an unbound wq, the above concurrency management doesn't apply and | 138 | For an unbound wq, the above concurrency management doesn't apply and |
136 | the gcwq for the pseudo unbound CPU tries to start executing all work | 139 | the thread-pools for the pseudo unbound CPU try to start executing all |
137 | items as soon as possible. The responsibility of regulating | 140 | work items as soon as possible. The responsibility of regulating |
138 | concurrency level is on the users. There is also a flag to mark a | 141 | concurrency level is on the users. There is also a flag to mark a |
139 | bound wq to ignore the concurrency management. Please refer to the | 142 | bound wq to ignore the concurrency management. Please refer to the |
140 | API section for details. | 143 | API 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 | ||
330 | Now, let's assume w1 and w2 are queued to a different wq q1 which has | 316 | Now, let's assume w1 and w2 are queued to a different wq q1 which has |
331 | WQ_HIGHPRI set, | 317 | WQ_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 | |||
344 | If 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 |