diff options
Diffstat (limited to 'Documentation')
372 files changed, 9440 insertions, 1891 deletions
diff --git a/Documentation/ABI/testing/configfs-usb-gadget b/Documentation/ABI/testing/configfs-usb-gadget index 01e769d6984d..37559a06393b 100644 --- a/Documentation/ABI/testing/configfs-usb-gadget +++ b/Documentation/ABI/testing/configfs-usb-gadget | |||
@@ -1,13 +1,13 @@ | |||
1 | What: /config/usb-gadget | 1 | What: /config/usb-gadget |
2 | Date: Jun 2013 | 2 | Date: Jun 2013 |
3 | KenelVersion: 3.11 | 3 | KernelVersion: 3.11 |
4 | Description: | 4 | Description: |
5 | This group contains sub-groups corresponding to created | 5 | This group contains sub-groups corresponding to created |
6 | USB gadgets. | 6 | USB gadgets. |
7 | 7 | ||
8 | What: /config/usb-gadget/gadget | 8 | What: /config/usb-gadget/gadget |
9 | Date: Jun 2013 | 9 | Date: Jun 2013 |
10 | KenelVersion: 3.11 | 10 | KernelVersion: 3.11 |
11 | Description: | 11 | Description: |
12 | 12 | ||
13 | The attributes of a gadget: | 13 | The attributes of a gadget: |
@@ -27,7 +27,7 @@ Description: | |||
27 | 27 | ||
28 | What: /config/usb-gadget/gadget/configs | 28 | What: /config/usb-gadget/gadget/configs |
29 | Date: Jun 2013 | 29 | Date: Jun 2013 |
30 | KenelVersion: 3.11 | 30 | KernelVersion: 3.11 |
31 | Description: | 31 | Description: |
32 | This group contains a USB gadget's configurations | 32 | This group contains a USB gadget's configurations |
33 | 33 | ||
@@ -58,20 +58,20 @@ Description: | |||
58 | 58 | ||
59 | What: /config/usb-gadget/gadget/functions | 59 | What: /config/usb-gadget/gadget/functions |
60 | Date: Jun 2013 | 60 | Date: Jun 2013 |
61 | KenelVersion: 3.11 | 61 | KernelVersion: 3.11 |
62 | Description: | 62 | Description: |
63 | This group contains functions available to this USB gadget. | 63 | This group contains functions available to this USB gadget. |
64 | 64 | ||
65 | What: /config/usb-gadget/gadget/strings | 65 | What: /config/usb-gadget/gadget/strings |
66 | Date: Jun 2013 | 66 | Date: Jun 2013 |
67 | KenelVersion: 3.11 | 67 | KernelVersion: 3.11 |
68 | Description: | 68 | Description: |
69 | This group contains subdirectories for language-specific | 69 | This group contains subdirectories for language-specific |
70 | strings for this gadget. | 70 | strings for this gadget. |
71 | 71 | ||
72 | What: /config/usb-gadget/gadget/strings/language | 72 | What: /config/usb-gadget/gadget/strings/language |
73 | Date: Jun 2013 | 73 | Date: Jun 2013 |
74 | KenelVersion: 3.11 | 74 | KernelVersion: 3.11 |
75 | Description: | 75 | Description: |
76 | The attributes: | 76 | The attributes: |
77 | 77 | ||
diff --git a/Documentation/ABI/testing/configfs-usb-gadget-acm b/Documentation/ABI/testing/configfs-usb-gadget-acm index 5708a568b5f6..d21092d75a05 100644 --- a/Documentation/ABI/testing/configfs-usb-gadget-acm +++ b/Documentation/ABI/testing/configfs-usb-gadget-acm | |||
@@ -1,6 +1,6 @@ | |||
1 | What: /config/usb-gadget/gadget/functions/acm.name | 1 | What: /config/usb-gadget/gadget/functions/acm.name |
2 | Date: Jun 2013 | 2 | Date: Jun 2013 |
3 | KenelVersion: 3.11 | 3 | KernelVersion: 3.11 |
4 | Description: | 4 | Description: |
5 | 5 | ||
6 | This item contains just one readonly attribute: port_num. | 6 | This item contains just one readonly attribute: port_num. |
diff --git a/Documentation/ABI/testing/configfs-usb-gadget-ecm b/Documentation/ABI/testing/configfs-usb-gadget-ecm index 6b9a582ce0b5..0addf7704b4c 100644 --- a/Documentation/ABI/testing/configfs-usb-gadget-ecm +++ b/Documentation/ABI/testing/configfs-usb-gadget-ecm | |||
@@ -1,6 +1,6 @@ | |||
1 | What: /config/usb-gadget/gadget/functions/ecm.name | 1 | What: /config/usb-gadget/gadget/functions/ecm.name |
2 | Date: Jun 2013 | 2 | Date: Jun 2013 |
3 | KenelVersion: 3.11 | 3 | KernelVersion: 3.11 |
4 | Description: | 4 | Description: |
5 | The attributes: | 5 | The attributes: |
6 | 6 | ||
diff --git a/Documentation/ABI/testing/configfs-usb-gadget-eem b/Documentation/ABI/testing/configfs-usb-gadget-eem index dbddf36b48b3..a4c57158fcde 100644 --- a/Documentation/ABI/testing/configfs-usb-gadget-eem +++ b/Documentation/ABI/testing/configfs-usb-gadget-eem | |||
@@ -1,6 +1,6 @@ | |||
1 | What: /config/usb-gadget/gadget/functions/eem.name | 1 | What: /config/usb-gadget/gadget/functions/eem.name |
2 | Date: Jun 2013 | 2 | Date: Jun 2013 |
3 | KenelVersion: 3.11 | 3 | KernelVersion: 3.11 |
4 | Description: | 4 | Description: |
5 | The attributes: | 5 | The attributes: |
6 | 6 | ||
diff --git a/Documentation/ABI/testing/configfs-usb-gadget-ffs b/Documentation/ABI/testing/configfs-usb-gadget-ffs new file mode 100644 index 000000000000..e39b27653c65 --- /dev/null +++ b/Documentation/ABI/testing/configfs-usb-gadget-ffs | |||
@@ -0,0 +1,9 @@ | |||
1 | What: /config/usb-gadget/gadget/functions/ffs.name | ||
2 | Date: Nov 2013 | ||
3 | KernelVersion: 3.13 | ||
4 | Description: The purpose of this directory is to create and remove it. | ||
5 | |||
6 | A corresponding USB function instance is created/removed. | ||
7 | There are no attributes here. | ||
8 | |||
9 | All parameters are set through FunctionFS. | ||
diff --git a/Documentation/ABI/testing/configfs-usb-gadget-loopback b/Documentation/ABI/testing/configfs-usb-gadget-loopback new file mode 100644 index 000000000000..9aae5bfb9908 --- /dev/null +++ b/Documentation/ABI/testing/configfs-usb-gadget-loopback | |||
@@ -0,0 +1,8 @@ | |||
1 | What: /config/usb-gadget/gadget/functions/Loopback.name | ||
2 | Date: Nov 2013 | ||
3 | KernelVersion: 3.13 | ||
4 | Description: | ||
5 | The attributes: | ||
6 | |||
7 | qlen - depth of loopback queue | ||
8 | bulk_buflen - buffer length | ||
diff --git a/Documentation/ABI/testing/configfs-usb-gadget-mass-storage b/Documentation/ABI/testing/configfs-usb-gadget-mass-storage index ad72a37ee9ff..9931fb0d63ba 100644 --- a/Documentation/ABI/testing/configfs-usb-gadget-mass-storage +++ b/Documentation/ABI/testing/configfs-usb-gadget-mass-storage | |||
@@ -1,6 +1,6 @@ | |||
1 | What: /config/usb-gadget/gadget/functions/mass_storage.name | 1 | What: /config/usb-gadget/gadget/functions/mass_storage.name |
2 | Date: Oct 2013 | 2 | Date: Oct 2013 |
3 | KenelVersion: 3.13 | 3 | KernelVersion: 3.13 |
4 | Description: | 4 | Description: |
5 | The attributes: | 5 | The attributes: |
6 | 6 | ||
@@ -13,7 +13,7 @@ Description: | |||
13 | 13 | ||
14 | What: /config/usb-gadget/gadget/functions/mass_storage.name/lun.name | 14 | What: /config/usb-gadget/gadget/functions/mass_storage.name/lun.name |
15 | Date: Oct 2013 | 15 | Date: Oct 2013 |
16 | KenelVersion: 3.13 | 16 | KernelVersion: 3.13 |
17 | Description: | 17 | Description: |
18 | The attributes: | 18 | The attributes: |
19 | 19 | ||
diff --git a/Documentation/ABI/testing/configfs-usb-gadget-ncm b/Documentation/ABI/testing/configfs-usb-gadget-ncm index bc309f42357d..6fe723effc78 100644 --- a/Documentation/ABI/testing/configfs-usb-gadget-ncm +++ b/Documentation/ABI/testing/configfs-usb-gadget-ncm | |||
@@ -1,6 +1,6 @@ | |||
1 | What: /config/usb-gadget/gadget/functions/ncm.name | 1 | What: /config/usb-gadget/gadget/functions/ncm.name |
2 | Date: Jun 2013 | 2 | Date: Jun 2013 |
3 | KenelVersion: 3.11 | 3 | KernelVersion: 3.11 |
4 | Description: | 4 | Description: |
5 | The attributes: | 5 | The attributes: |
6 | 6 | ||
diff --git a/Documentation/ABI/testing/configfs-usb-gadget-obex b/Documentation/ABI/testing/configfs-usb-gadget-obex index aaa5c96fb7c6..a6a9327ed9ba 100644 --- a/Documentation/ABI/testing/configfs-usb-gadget-obex +++ b/Documentation/ABI/testing/configfs-usb-gadget-obex | |||
@@ -1,6 +1,6 @@ | |||
1 | What: /config/usb-gadget/gadget/functions/obex.name | 1 | What: /config/usb-gadget/gadget/functions/obex.name |
2 | Date: Jun 2013 | 2 | Date: Jun 2013 |
3 | KenelVersion: 3.11 | 3 | KernelVersion: 3.11 |
4 | Description: | 4 | Description: |
5 | 5 | ||
6 | This item contains just one readonly attribute: port_num. | 6 | This item contains just one readonly attribute: port_num. |
diff --git a/Documentation/ABI/testing/configfs-usb-gadget-phonet b/Documentation/ABI/testing/configfs-usb-gadget-phonet index 3e3b742cdfd7..7037a358e6c4 100644 --- a/Documentation/ABI/testing/configfs-usb-gadget-phonet +++ b/Documentation/ABI/testing/configfs-usb-gadget-phonet | |||
@@ -1,6 +1,6 @@ | |||
1 | What: /config/usb-gadget/gadget/functions/phonet.name | 1 | What: /config/usb-gadget/gadget/functions/phonet.name |
2 | Date: Jun 2013 | 2 | Date: Jun 2013 |
3 | KenelVersion: 3.11 | 3 | KernelVersion: 3.11 |
4 | Description: | 4 | Description: |
5 | 5 | ||
6 | This item contains just one readonly attribute: ifname. | 6 | This item contains just one readonly attribute: ifname. |
diff --git a/Documentation/ABI/testing/configfs-usb-gadget-rndis b/Documentation/ABI/testing/configfs-usb-gadget-rndis index 822e6dad8fc0..e32879b84b4d 100644 --- a/Documentation/ABI/testing/configfs-usb-gadget-rndis +++ b/Documentation/ABI/testing/configfs-usb-gadget-rndis | |||
@@ -1,6 +1,6 @@ | |||
1 | What: /config/usb-gadget/gadget/functions/rndis.name | 1 | What: /config/usb-gadget/gadget/functions/rndis.name |
2 | Date: Jun 2013 | 2 | Date: Jun 2013 |
3 | KenelVersion: 3.11 | 3 | KernelVersion: 3.11 |
4 | Description: | 4 | Description: |
5 | The attributes: | 5 | The attributes: |
6 | 6 | ||
diff --git a/Documentation/ABI/testing/configfs-usb-gadget-serial b/Documentation/ABI/testing/configfs-usb-gadget-serial index 16f130c1501f..474d249f760b 100644 --- a/Documentation/ABI/testing/configfs-usb-gadget-serial +++ b/Documentation/ABI/testing/configfs-usb-gadget-serial | |||
@@ -1,6 +1,6 @@ | |||
1 | What: /config/usb-gadget/gadget/functions/gser.name | 1 | What: /config/usb-gadget/gadget/functions/gser.name |
2 | Date: Jun 2013 | 2 | Date: Jun 2013 |
3 | KenelVersion: 3.11 | 3 | KernelVersion: 3.11 |
4 | Description: | 4 | Description: |
5 | 5 | ||
6 | This item contains just one readonly attribute: port_num. | 6 | This item contains just one readonly attribute: port_num. |
diff --git a/Documentation/ABI/testing/configfs-usb-gadget-sourcesink b/Documentation/ABI/testing/configfs-usb-gadget-sourcesink new file mode 100644 index 000000000000..29477c319f61 --- /dev/null +++ b/Documentation/ABI/testing/configfs-usb-gadget-sourcesink | |||
@@ -0,0 +1,12 @@ | |||
1 | What: /config/usb-gadget/gadget/functions/SourceSink.name | ||
2 | Date: Nov 2013 | ||
3 | KernelVersion: 3.13 | ||
4 | Description: | ||
5 | The attributes: | ||
6 | |||
7 | pattern - 0 (all zeros), 1 (mod63), 2 (none) | ||
8 | isoc_interval - 1..16 | ||
9 | isoc_maxpacket - 0 - 1023 (fs), 0 - 1024 (hs/ss) | ||
10 | isoc_mult - 0..2 (hs/ss only) | ||
11 | isoc_maxburst - 0..15 (ss only) | ||
12 | qlen - buffer length | ||
diff --git a/Documentation/ABI/testing/configfs-usb-gadget-subset b/Documentation/ABI/testing/configfs-usb-gadget-subset index 154ae597cd99..9373e2c51ea4 100644 --- a/Documentation/ABI/testing/configfs-usb-gadget-subset +++ b/Documentation/ABI/testing/configfs-usb-gadget-subset | |||
@@ -1,6 +1,6 @@ | |||
1 | What: /config/usb-gadget/gadget/functions/geth.name | 1 | What: /config/usb-gadget/gadget/functions/geth.name |
2 | Date: Jun 2013 | 2 | Date: Jun 2013 |
3 | KenelVersion: 3.11 | 3 | KernelVersion: 3.11 |
4 | Description: | 4 | Description: |
5 | The attributes: | 5 | The attributes: |
6 | 6 | ||
diff --git a/Documentation/ABI/testing/debugfs-driver-genwqe b/Documentation/ABI/testing/debugfs-driver-genwqe new file mode 100644 index 000000000000..1c2f25674e8c --- /dev/null +++ b/Documentation/ABI/testing/debugfs-driver-genwqe | |||
@@ -0,0 +1,91 @@ | |||
1 | What: /sys/kernel/debug/genwqe/genwqe<n>_card/ddcb_info | ||
2 | Date: Oct 2013 | ||
3 | Contact: haver@linux.vnet.ibm.com | ||
4 | Description: DDCB queue dump used for debugging queueing problems. | ||
5 | |||
6 | What: /sys/kernel/debug/genwqe/genwqe<n>_card/curr_regs | ||
7 | Date: Oct 2013 | ||
8 | Contact: haver@linux.vnet.ibm.com | ||
9 | Description: Dump of the current error registers. | ||
10 | Only available for PF. | ||
11 | |||
12 | What: /sys/kernel/debug/genwqe/genwqe<n>_card/curr_dbg_uid0 | ||
13 | Date: Oct 2013 | ||
14 | Contact: haver@linux.vnet.ibm.com | ||
15 | Description: Internal chip state of UID0 (unit id 0). | ||
16 | Only available for PF. | ||
17 | |||
18 | What: /sys/kernel/debug/genwqe/genwqe<n>_card/curr_dbg_uid1 | ||
19 | Date: Oct 2013 | ||
20 | Contact: haver@linux.vnet.ibm.com | ||
21 | Description: Internal chip state of UID1. | ||
22 | Only available for PF. | ||
23 | |||
24 | What: /sys/kernel/debug/genwqe/genwqe<n>_card/curr_dbg_uid2 | ||
25 | Date: Oct 2013 | ||
26 | Contact: haver@linux.vnet.ibm.com | ||
27 | Description: Internal chip state of UID2. | ||
28 | Only available for PF. | ||
29 | |||
30 | What: /sys/kernel/debug/genwqe/genwqe<n>_card/prev_regs | ||
31 | Date: Oct 2013 | ||
32 | Contact: haver@linux.vnet.ibm.com | ||
33 | Description: Dump of the error registers before the last reset of | ||
34 | the card occured. | ||
35 | Only available for PF. | ||
36 | |||
37 | What: /sys/kernel/debug/genwqe/genwqe<n>_card/prev_dbg_uid0 | ||
38 | Date: Oct 2013 | ||
39 | Contact: haver@linux.vnet.ibm.com | ||
40 | Description: Internal chip state of UID0 before card was reset. | ||
41 | Only available for PF. | ||
42 | |||
43 | What: /sys/kernel/debug/genwqe/genwqe<n>_card/prev_dbg_uid1 | ||
44 | Date: Oct 2013 | ||
45 | Contact: haver@linux.vnet.ibm.com | ||
46 | Description: Internal chip state of UID1 before card was reset. | ||
47 | Only available for PF. | ||
48 | |||
49 | What: /sys/kernel/debug/genwqe/genwqe<n>_card/prev_dbg_uid2 | ||
50 | Date: Oct 2013 | ||
51 | Contact: haver@linux.vnet.ibm.com | ||
52 | Description: Internal chip state of UID2 before card was reset. | ||
53 | Only available for PF. | ||
54 | |||
55 | What: /sys/kernel/debug/genwqe/genwqe<n>_card/info | ||
56 | Date: Oct 2013 | ||
57 | Contact: haver@linux.vnet.ibm.com | ||
58 | Description: Comprehensive summary of bitstream version and software | ||
59 | version. Used bitstream and bitstream clocking information. | ||
60 | |||
61 | What: /sys/kernel/debug/genwqe/genwqe<n>_card/err_inject | ||
62 | Date: Oct 2013 | ||
63 | Contact: haver@linux.vnet.ibm.com | ||
64 | Description: Possibility to inject error cases to ensure that the drivers | ||
65 | error handling code works well. | ||
66 | |||
67 | What: /sys/kernel/debug/genwqe/genwqe<n>_card/vf<0..14>_jobtimeout_msec | ||
68 | Date: Oct 2013 | ||
69 | Contact: haver@linux.vnet.ibm.com | ||
70 | Description: Default VF timeout 250ms. Testing might require 1000ms. | ||
71 | Using 0 will use the cards default value (whatever that is). | ||
72 | |||
73 | The timeout depends on the max number of available cards | ||
74 | in the system and the maximum allowed queue size. | ||
75 | |||
76 | The driver ensures that the settings are done just before | ||
77 | the VFs get enabled. Changing the timeouts in flight is not | ||
78 | possible. | ||
79 | Only available for PF. | ||
80 | |||
81 | What: /sys/kernel/debug/genwqe/genwqe<n>_card/jobtimer | ||
82 | Date: Oct 2013 | ||
83 | Contact: haver@linux.vnet.ibm.com | ||
84 | Description: Dump job timeout register values for PF and VFs. | ||
85 | Only available for PF. | ||
86 | |||
87 | What: /sys/kernel/debug/genwqe/genwqe<n>_card/queue_working_time | ||
88 | Date: Dec 2013 | ||
89 | Contact: haver@linux.vnet.ibm.com | ||
90 | Description: Dump queue working time register values for PF and VFs. | ||
91 | Only available for PF. | ||
diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio index b20e829d350f..6e02c5029152 100644 --- a/Documentation/ABI/testing/sysfs-bus-iio +++ b/Documentation/ABI/testing/sysfs-bus-iio | |||
@@ -197,6 +197,19 @@ Description: | |||
197 | Raw pressure measurement from channel Y. Units after | 197 | Raw pressure measurement from channel Y. Units after |
198 | application of scale and offset are kilopascal. | 198 | application of scale and offset are kilopascal. |
199 | 199 | ||
200 | What: /sys/bus/iio/devices/iio:deviceX/in_humidityrelative_raw | ||
201 | KernelVersion: 3.14 | ||
202 | Contact: linux-iio@vger.kernel.org | ||
203 | Description: | ||
204 | Raw humidity measurement of air. Units after application of | ||
205 | scale and offset are milli percent. | ||
206 | |||
207 | What: /sys/bus/iio/devices/iio:deviceX/in_humidityrelative_input | ||
208 | KernelVersion: 3.14 | ||
209 | Contact: linux-iio@vger.kernel.org | ||
210 | Description: | ||
211 | Scaled humidity measurement in milli percent. | ||
212 | |||
200 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_offset | 213 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_offset |
201 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_x_offset | 214 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_x_offset |
202 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_y_offset | 215 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_y_offset |
diff --git a/Documentation/ABI/testing/sysfs-bus-pci b/Documentation/ABI/testing/sysfs-bus-pci index 5210a51c90fd..a3c5a6685036 100644 --- a/Documentation/ABI/testing/sysfs-bus-pci +++ b/Documentation/ABI/testing/sysfs-bus-pci | |||
@@ -70,18 +70,15 @@ Date: September, 2011 | |||
70 | Contact: Neil Horman <nhorman@tuxdriver.com> | 70 | Contact: Neil Horman <nhorman@tuxdriver.com> |
71 | Description: | 71 | Description: |
72 | The /sys/devices/.../msi_irqs directory contains a variable set | 72 | The /sys/devices/.../msi_irqs directory contains a variable set |
73 | of sub-directories, with each sub-directory being named after a | 73 | of files, with each file being named after a corresponding msi |
74 | corresponding msi irq vector allocated to that device. Each | 74 | irq vector allocated to that device. |
75 | numbered sub-directory N contains attributes of that irq. | ||
76 | Note that this directory is not created for device drivers which | ||
77 | do not support msi irqs | ||
78 | 75 | ||
79 | What: /sys/bus/pci/devices/.../msi_irqs/<N>/mode | 76 | What: /sys/bus/pci/devices/.../msi_irqs/<N> |
80 | Date: September 2011 | 77 | Date: September 2011 |
81 | Contact: Neil Horman <nhorman@tuxdriver.com> | 78 | Contact: Neil Horman <nhorman@tuxdriver.com> |
82 | Description: | 79 | Description: |
83 | This attribute indicates the mode that the irq vector named by | 80 | This attribute indicates the mode that the irq vector named by |
84 | the parent directory is in (msi vs. msix) | 81 | the file is in (msi vs. msix) |
85 | 82 | ||
86 | What: /sys/bus/pci/devices/.../remove | 83 | What: /sys/bus/pci/devices/.../remove |
87 | Date: January 2009 | 84 | Date: January 2009 |
diff --git a/Documentation/ABI/testing/sysfs-bus-rbd b/Documentation/ABI/testing/sysfs-bus-rbd index 0a306476424e..501adc2a9ec7 100644 --- a/Documentation/ABI/testing/sysfs-bus-rbd +++ b/Documentation/ABI/testing/sysfs-bus-rbd | |||
@@ -18,6 +18,28 @@ Removal of a device: | |||
18 | 18 | ||
19 | $ echo <dev-id> > /sys/bus/rbd/remove | 19 | $ echo <dev-id> > /sys/bus/rbd/remove |
20 | 20 | ||
21 | What: /sys/bus/rbd/add_single_major | ||
22 | Date: December 2013 | ||
23 | KernelVersion: 3.14 | ||
24 | Contact: Sage Weil <sage@inktank.com> | ||
25 | Description: Available only if rbd module is inserted with single_major | ||
26 | parameter set to true. | ||
27 | Usage is the same as for /sys/bus/rbd/add. If present, | ||
28 | should be used instead of the latter: any attempts to use | ||
29 | /sys/bus/rbd/add if /sys/bus/rbd/add_single_major is | ||
30 | available will fail for backwards compatibility reasons. | ||
31 | |||
32 | What: /sys/bus/rbd/remove_single_major | ||
33 | Date: December 2013 | ||
34 | KernelVersion: 3.14 | ||
35 | Contact: Sage Weil <sage@inktank.com> | ||
36 | Description: Available only if rbd module is inserted with single_major | ||
37 | parameter set to true. | ||
38 | Usage is the same as for /sys/bus/rbd/remove. If present, | ||
39 | should be used instead of the latter: any attempts to use | ||
40 | /sys/bus/rbd/remove if /sys/bus/rbd/remove_single_major is | ||
41 | available will fail for backwards compatibility reasons. | ||
42 | |||
21 | Entries under /sys/bus/rbd/devices/<dev-id>/ | 43 | Entries under /sys/bus/rbd/devices/<dev-id>/ |
22 | -------------------------------------------- | 44 | -------------------------------------------- |
23 | 45 | ||
@@ -33,6 +55,10 @@ major | |||
33 | 55 | ||
34 | The block device major number. | 56 | The block device major number. |
35 | 57 | ||
58 | minor | ||
59 | |||
60 | The block device minor number. (December 2013, since 3.14.) | ||
61 | |||
36 | name | 62 | name |
37 | 63 | ||
38 | The name of the rbd image. | 64 | The name of the rbd image. |
diff --git a/Documentation/ABI/testing/sysfs-bus-usb b/Documentation/ABI/testing/sysfs-bus-usb index 1430f584b266..614d451cee41 100644 --- a/Documentation/ABI/testing/sysfs-bus-usb +++ b/Documentation/ABI/testing/sysfs-bus-usb | |||
@@ -50,13 +50,19 @@ Description: | |||
50 | This may allow the driver to support more hardware than | 50 | This may allow the driver to support more hardware than |
51 | was included in the driver's static device ID support | 51 | was included in the driver's static device ID support |
52 | table at compile time. The format for the device ID is: | 52 | table at compile time. The format for the device ID is: |
53 | idVendor idProduct bInterfaceClass. | 53 | idVendor idProduct bInterfaceClass RefIdVendor RefIdProduct |
54 | The vendor ID and device ID fields are required, the | 54 | The vendor ID and device ID fields are required, the |
55 | interface class is optional. | 55 | rest is optional. The Ref* tuple can be used to tell the |
56 | driver to use the same driver_data for the new device as | ||
57 | it is used for the reference device. | ||
56 | Upon successfully adding an ID, the driver will probe | 58 | Upon successfully adding an ID, the driver will probe |
57 | for the device and attempt to bind to it. For example: | 59 | for the device and attempt to bind to it. For example: |
58 | # echo "8086 10f5" > /sys/bus/usb/drivers/foo/new_id | 60 | # echo "8086 10f5" > /sys/bus/usb/drivers/foo/new_id |
59 | 61 | ||
62 | Here add a new device (0458:7045) using driver_data from | ||
63 | an already supported device (0458:704c): | ||
64 | # echo "0458 7045 0 0458 704c" > /sys/bus/usb/drivers/foo/new_id | ||
65 | |||
60 | Reading from this file will list all dynamically added | 66 | Reading from this file will list all dynamically added |
61 | device IDs in the same format, with one entry per | 67 | device IDs in the same format, with one entry per |
62 | line. For example: | 68 | line. For example: |
diff --git a/Documentation/ABI/testing/sysfs-class-net-mesh b/Documentation/ABI/testing/sysfs-class-net-mesh index 0baa657b18c4..4793d3dff6af 100644 --- a/Documentation/ABI/testing/sysfs-class-net-mesh +++ b/Documentation/ABI/testing/sysfs-class-net-mesh | |||
@@ -68,6 +68,14 @@ Description: | |||
68 | Defines the penalty which will be applied to an | 68 | Defines the penalty which will be applied to an |
69 | originator message's tq-field on every hop. | 69 | originator message's tq-field on every hop. |
70 | 70 | ||
71 | What: /sys/class/net/<mesh_iface>/mesh/isolation_mark | ||
72 | Date: Nov 2013 | ||
73 | Contact: Antonio Quartulli <antonio@meshcoding.com> | ||
74 | Description: | ||
75 | Defines the isolation mark (and its bitmask) which | ||
76 | is used to classify clients as "isolated" by the | ||
77 | Extended Isolation feature. | ||
78 | |||
71 | What: /sys/class/net/<mesh_iface>/mesh/network_coding | 79 | What: /sys/class/net/<mesh_iface>/mesh/network_coding |
72 | Date: Nov 2012 | 80 | Date: Nov 2012 |
73 | Contact: Martin Hundeboll <martin@hundeboll.net> | 81 | Contact: Martin Hundeboll <martin@hundeboll.net> |
diff --git a/Documentation/ABI/testing/sysfs-devices-system-cpu b/Documentation/ABI/testing/sysfs-devices-system-cpu index 468e4d48f884..d5a0d33c571f 100644 --- a/Documentation/ABI/testing/sysfs-devices-system-cpu +++ b/Documentation/ABI/testing/sysfs-devices-system-cpu | |||
@@ -200,3 +200,27 @@ Description: address and size of the percpu note. | |||
200 | note of cpu#. | 200 | note of cpu#. |
201 | 201 | ||
202 | crash_notes_size: size of the note of cpu#. | 202 | crash_notes_size: size of the note of cpu#. |
203 | |||
204 | |||
205 | What: /sys/devices/system/cpu/intel_pstate/max_perf_pct | ||
206 | /sys/devices/system/cpu/intel_pstate/min_perf_pct | ||
207 | /sys/devices/system/cpu/intel_pstate/no_turbo | ||
208 | Date: February 2013 | ||
209 | Contact: linux-pm@vger.kernel.org | ||
210 | Description: Parameters for the Intel P-state driver | ||
211 | |||
212 | Logic for selecting the current P-state in Intel | ||
213 | Sandybridge+ processors. The three knobs control | ||
214 | limits for the P-state that will be requested by the | ||
215 | driver. | ||
216 | |||
217 | max_perf_pct: limits the maximum P state that will be requested by | ||
218 | the driver stated as a percentage of the available performance. | ||
219 | |||
220 | min_perf_pct: limits the minimum P state that will be requested by | ||
221 | the driver stated as a percentage of the available performance. | ||
222 | |||
223 | no_turbo: limits the driver to selecting P states below the turbo | ||
224 | frequency range. | ||
225 | |||
226 | More details can be found in Documentation/cpu-freq/intel-pstate.txt | ||
diff --git a/Documentation/ABI/testing/sysfs-driver-genwqe b/Documentation/ABI/testing/sysfs-driver-genwqe new file mode 100644 index 000000000000..1870737a1f5e --- /dev/null +++ b/Documentation/ABI/testing/sysfs-driver-genwqe | |||
@@ -0,0 +1,62 @@ | |||
1 | What: /sys/class/genwqe/genwqe<n>_card/version | ||
2 | Date: Oct 2013 | ||
3 | Contact: haver@linux.vnet.ibm.com | ||
4 | Description: Unique bitstream identification e.g. | ||
5 | '0000000330336283.00000000475a4950'. | ||
6 | |||
7 | What: /sys/class/genwqe/genwqe<n>_card/appid | ||
8 | Date: Oct 2013 | ||
9 | Contact: haver@linux.vnet.ibm.com | ||
10 | Description: Identifies the currently active card application e.g. 'GZIP' | ||
11 | for compression/decompression. | ||
12 | |||
13 | What: /sys/class/genwqe/genwqe<n>_card/type | ||
14 | Date: Oct 2013 | ||
15 | Contact: haver@linux.vnet.ibm.com | ||
16 | Description: Type of the card e.g. 'GenWQE5-A7'. | ||
17 | |||
18 | What: /sys/class/genwqe/genwqe<n>_card/curr_bitstream | ||
19 | Date: Oct 2013 | ||
20 | Contact: haver@linux.vnet.ibm.com | ||
21 | Description: Currently active bitstream. 1 is default, 0 is backup. | ||
22 | |||
23 | What: /sys/class/genwqe/genwqe<n>_card/next_bitstream | ||
24 | Date: Oct 2013 | ||
25 | Contact: haver@linux.vnet.ibm.com | ||
26 | Description: Interface to set the next bitstream to be used. | ||
27 | |||
28 | What: /sys/class/genwqe/genwqe<n>_card/tempsens | ||
29 | Date: Oct 2013 | ||
30 | Contact: haver@linux.vnet.ibm.com | ||
31 | Description: Interface to read the cards temperature sense register. | ||
32 | |||
33 | What: /sys/class/genwqe/genwqe<n>_card/freerunning_timer | ||
34 | Date: Oct 2013 | ||
35 | Contact: haver@linux.vnet.ibm.com | ||
36 | Description: Interface to read the cards free running timer. | ||
37 | Used for performance and utilization measurements. | ||
38 | |||
39 | What: /sys/class/genwqe/genwqe<n>_card/queue_working_time | ||
40 | Date: Oct 2013 | ||
41 | Contact: haver@linux.vnet.ibm.com | ||
42 | Description: Interface to read queue working time. | ||
43 | Used for performance and utilization measurements. | ||
44 | |||
45 | What: /sys/class/genwqe/genwqe<n>_card/state | ||
46 | Date: Oct 2013 | ||
47 | Contact: haver@linux.vnet.ibm.com | ||
48 | Description: State of the card: "unused", "used", "error". | ||
49 | |||
50 | What: /sys/class/genwqe/genwqe<n>_card/base_clock | ||
51 | Date: Oct 2013 | ||
52 | Contact: haver@linux.vnet.ibm.com | ||
53 | Description: Base clock frequency of the card. | ||
54 | |||
55 | What: /sys/class/genwqe/genwqe<n>_card/device/sriov_numvfs | ||
56 | Date: Oct 2013 | ||
57 | Contact: haver@linux.vnet.ibm.com | ||
58 | Description: Enable VFs (1..15): | ||
59 | sudo sh -c 'echo 15 > \ | ||
60 | /sys/bus/pci/devices/0000\:1b\:00.0/sriov_numvfs' | ||
61 | Disable VFs: | ||
62 | Write a 0 into the same sysfs entry. | ||
diff --git a/Documentation/ABI/testing/sysfs-fs-f2fs b/Documentation/ABI/testing/sysfs-fs-f2fs index 31942efcaf0e..32b0809203dd 100644 --- a/Documentation/ABI/testing/sysfs-fs-f2fs +++ b/Documentation/ABI/testing/sysfs-fs-f2fs | |||
@@ -24,3 +24,34 @@ Date: July 2013 | |||
24 | Contact: "Namjae Jeon" <namjae.jeon@samsung.com> | 24 | Contact: "Namjae Jeon" <namjae.jeon@samsung.com> |
25 | Description: | 25 | Description: |
26 | Controls the victim selection policy for garbage collection. | 26 | Controls the victim selection policy for garbage collection. |
27 | |||
28 | What: /sys/fs/f2fs/<disk>/reclaim_segments | ||
29 | Date: October 2013 | ||
30 | Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com> | ||
31 | Description: | ||
32 | Controls the issue rate of segment discard commands. | ||
33 | |||
34 | What: /sys/fs/f2fs/<disk>/ipu_policy | ||
35 | Date: November 2013 | ||
36 | Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com> | ||
37 | Description: | ||
38 | Controls the in-place-update policy. | ||
39 | |||
40 | What: /sys/fs/f2fs/<disk>/min_ipu_util | ||
41 | Date: November 2013 | ||
42 | Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com> | ||
43 | Description: | ||
44 | Controls the FS utilization condition for the in-place-update | ||
45 | policies. | ||
46 | |||
47 | What: /sys/fs/f2fs/<disk>/max_small_discards | ||
48 | Date: November 2013 | ||
49 | Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com> | ||
50 | Description: | ||
51 | Controls the issue rate of small discard commands. | ||
52 | |||
53 | What: /sys/fs/f2fs/<disk>/max_victim_search | ||
54 | Date: January 2014 | ||
55 | Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com> | ||
56 | Description: | ||
57 | Controls the number of trials to find a victim segment. | ||
diff --git a/Documentation/ABI/testing/sysfs-kernel-vmcoreinfo b/Documentation/ABI/testing/sysfs-kernel-vmcoreinfo new file mode 100644 index 000000000000..7bd81168e063 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-kernel-vmcoreinfo | |||
@@ -0,0 +1,14 @@ | |||
1 | What: /sys/kernel/vmcoreinfo | ||
2 | Date: October 2007 | ||
3 | KernelVersion: 2.6.24 | ||
4 | Contact: Ken'ichi Ohmichi <oomichi@mxs.nes.nec.co.jp> | ||
5 | Kexec Mailing List <kexec@lists.infradead.org> | ||
6 | Vivek Goyal <vgoyal@redhat.com> | ||
7 | Description | ||
8 | Shows physical address and size of vmcoreinfo ELF note. | ||
9 | First value contains physical address of note in hex and | ||
10 | second value contains the size of note in hex. This ELF | ||
11 | note info is parsed by second kernel and exported to user | ||
12 | space as part of ELF note in /proc/vmcore file. This note | ||
13 | contains various information like struct size, symbol | ||
14 | values, page size etc. | ||
diff --git a/Documentation/ABI/testing/sysfs-platform-tahvo-usb b/Documentation/ABI/testing/sysfs-platform-tahvo-usb new file mode 100644 index 000000000000..f6e20ce4b538 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-platform-tahvo-usb | |||
@@ -0,0 +1,16 @@ | |||
1 | What: /sys/bus/platform/devices/tahvo-usb/otg_mode | ||
2 | Date: December 2013 | ||
3 | Contact: Aaro Koskinen <aaro.koskinen@iki.fi> | ||
4 | Description: | ||
5 | Set or read the current OTG mode. Valid values are "host" and | ||
6 | "peripheral". | ||
7 | |||
8 | Reading: returns the current mode. | ||
9 | |||
10 | What: /sys/bus/platform/devices/tahvo-usb/vbus | ||
11 | Date: December 2013 | ||
12 | Contact: Aaro Koskinen <aaro.koskinen@iki.fi> | ||
13 | Description: | ||
14 | Read the current VBUS state. | ||
15 | |||
16 | Reading: returns "on" or "off". | ||
diff --git a/Documentation/DocBook/.gitignore b/Documentation/DocBook/.gitignore index 720f245ceb1f..7ebd5465d927 100644 --- a/Documentation/DocBook/.gitignore +++ b/Documentation/DocBook/.gitignore | |||
@@ -10,5 +10,6 @@ | |||
10 | *.out | 10 | *.out |
11 | *.png | 11 | *.png |
12 | *.gif | 12 | *.gif |
13 | *.svg | ||
13 | media-indices.tmpl | 14 | media-indices.tmpl |
14 | media-entities.tmpl | 15 | media-entities.tmpl |
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile index bc3d9f8c0a90..0f9c6ff41aac 100644 --- a/Documentation/DocBook/Makefile +++ b/Documentation/DocBook/Makefile | |||
@@ -54,6 +54,7 @@ htmldocs: $(HTML) | |||
54 | 54 | ||
55 | MAN := $(patsubst %.xml, %.9, $(BOOKS)) | 55 | MAN := $(patsubst %.xml, %.9, $(BOOKS)) |
56 | mandocs: $(MAN) | 56 | mandocs: $(MAN) |
57 | $(if $(wildcard $(obj)/man/*.9),gzip -f $(obj)/man/*.9) | ||
57 | 58 | ||
58 | installmandocs: mandocs | 59 | installmandocs: mandocs |
59 | mkdir -p /usr/local/man/man9/ | 60 | mkdir -p /usr/local/man/man9/ |
@@ -145,7 +146,7 @@ build_main_index = rm -rf $(main_idx); \ | |||
145 | cat $(HTML) >> $(main_idx) | 146 | cat $(HTML) >> $(main_idx) |
146 | 147 | ||
147 | quiet_cmd_db2html = HTML $@ | 148 | quiet_cmd_db2html = HTML $@ |
148 | cmd_db2html = xmlto xhtml $(XMLTOFLAGS) -o $(patsubst %.html,%,$@) $< && \ | 149 | cmd_db2html = xmlto html $(XMLTOFLAGS) -o $(patsubst %.html,%,$@) $< && \ |
149 | echo '<a HREF="$(patsubst %.html,%,$(notdir $@))/index.html"> \ | 150 | echo '<a HREF="$(patsubst %.html,%,$(notdir $@))/index.html"> \ |
150 | $(patsubst %.html,%,$(notdir $@))</a><p>' > $@ | 151 | $(patsubst %.html,%,$(notdir $@))</a><p>' > $@ |
151 | 152 | ||
@@ -159,7 +160,7 @@ quiet_cmd_db2html = HTML $@ | |||
159 | cp $(PNG-$(basename $(notdir $@))) $(patsubst %.html,%,$@); fi | 160 | cp $(PNG-$(basename $(notdir $@))) $(patsubst %.html,%,$@); fi |
160 | 161 | ||
161 | quiet_cmd_db2man = MAN $@ | 162 | quiet_cmd_db2man = MAN $@ |
162 | cmd_db2man = if grep -q refentry $<; then xmlto man $(XMLTOFLAGS) -o $(obj)/man $< ; gzip -f $(obj)/man/*.9; fi | 163 | cmd_db2man = if grep -q refentry $<; then xmlto man $(XMLTOFLAGS) -o $(obj)/man $< ; fi |
163 | %.9 : %.xml | 164 | %.9 : %.xml |
164 | @(which xmlto > /dev/null 2>&1) || \ | 165 | @(which xmlto > /dev/null 2>&1) || \ |
165 | (echo "*** You need to install xmlto ***"; \ | 166 | (echo "*** You need to install xmlto ***"; \ |
diff --git a/Documentation/DocBook/kernel-api.tmpl b/Documentation/DocBook/kernel-api.tmpl index f75ab4c1b281..ecfd0ea40661 100644 --- a/Documentation/DocBook/kernel-api.tmpl +++ b/Documentation/DocBook/kernel-api.tmpl | |||
@@ -109,6 +109,7 @@ X!Ilib/string.c | |||
109 | <sect1><title>The Slab Cache</title> | 109 | <sect1><title>The Slab Cache</title> |
110 | !Iinclude/linux/slab.h | 110 | !Iinclude/linux/slab.h |
111 | !Emm/slab.c | 111 | !Emm/slab.c |
112 | !Emm/util.c | ||
112 | </sect1> | 113 | </sect1> |
113 | <sect1><title>User Space Memory Access</title> | 114 | <sect1><title>User Space Memory Access</title> |
114 | !Iarch/x86/include/asm/uaccess_32.h | 115 | !Iarch/x86/include/asm/uaccess_32.h |
diff --git a/Documentation/HOWTO b/Documentation/HOWTO index 27faae3e3846..57cf5efb044d 100644 --- a/Documentation/HOWTO +++ b/Documentation/HOWTO | |||
@@ -112,7 +112,7 @@ required reading: | |||
112 | 112 | ||
113 | Other excellent descriptions of how to create patches properly are: | 113 | Other excellent descriptions of how to create patches properly are: |
114 | "The Perfect Patch" | 114 | "The Perfect Patch" |
115 | http://kerneltrap.org/node/3737 | 115 | http://www.ozlabs.org/~akpm/stuff/tpp.txt |
116 | "Linux kernel patch submission format" | 116 | "Linux kernel patch submission format" |
117 | http://linux.yyz.us/patch-format.html | 117 | http://linux.yyz.us/patch-format.html |
118 | 118 | ||
@@ -579,7 +579,7 @@ all time. It should describe the patch completely, containing: | |||
579 | For more details on what this should all look like, please see the | 579 | For more details on what this should all look like, please see the |
580 | ChangeLog section of the document: | 580 | ChangeLog section of the document: |
581 | "The Perfect Patch" | 581 | "The Perfect Patch" |
582 | http://userweb.kernel.org/~akpm/stuff/tpp.txt | 582 | http://www.ozlabs.org/~akpm/stuff/tpp.txt |
583 | 583 | ||
584 | 584 | ||
585 | 585 | ||
diff --git a/Documentation/IRQ-domain.txt b/Documentation/IRQ-domain.txt index 9bc95942ec22..03df71aeb38c 100644 --- a/Documentation/IRQ-domain.txt +++ b/Documentation/IRQ-domain.txt | |||
@@ -141,7 +141,7 @@ will use a legacy domain only if an IRQ range is supplied by the | |||
141 | system and will otherwise use a linear domain mapping. The semantics | 141 | system and will otherwise use a linear domain mapping. The semantics |
142 | of this call are such that if an IRQ range is specified then | 142 | of this call are such that if an IRQ range is specified then |
143 | descriptors will be allocated on-the-fly for it, and if no range is | 143 | descriptors will be allocated on-the-fly for it, and if no range is |
144 | specified it will fall through to irq_domain_add_linear() which meand | 144 | specified it will fall through to irq_domain_add_linear() which means |
145 | *no* irq descriptors will be allocated. | 145 | *no* irq descriptors will be allocated. |
146 | 146 | ||
147 | A typical use case for simple domains is where an irqchip provider | 147 | A typical use case for simple domains is where an irqchip provider |
diff --git a/Documentation/PCI/00-INDEX b/Documentation/PCI/00-INDEX index 812b17fe3ed0..147231f1613e 100644 --- a/Documentation/PCI/00-INDEX +++ b/Documentation/PCI/00-INDEX | |||
@@ -2,12 +2,12 @@ | |||
2 | - this file | 2 | - this file |
3 | MSI-HOWTO.txt | 3 | MSI-HOWTO.txt |
4 | - the Message Signaled Interrupts (MSI) Driver Guide HOWTO and FAQ. | 4 | - the Message Signaled Interrupts (MSI) Driver Guide HOWTO and FAQ. |
5 | PCI-DMA-mapping.txt | ||
6 | - info for PCI drivers using DMA portably across all platforms | ||
7 | PCIEBUS-HOWTO.txt | 5 | PCIEBUS-HOWTO.txt |
8 | - a guide describing the PCI Express Port Bus driver | 6 | - a guide describing the PCI Express Port Bus driver |
9 | pci-error-recovery.txt | 7 | pci-error-recovery.txt |
10 | - info on PCI error recovery | 8 | - info on PCI error recovery |
9 | pci-iov-howto.txt | ||
10 | - the PCI Express I/O Virtualization HOWTO | ||
11 | pci.txt | 11 | pci.txt |
12 | - info on the PCI subsystem for device driver authors | 12 | - info on the PCI subsystem for device driver authors |
13 | pcieaer-howto.txt | 13 | pcieaer-howto.txt |
diff --git a/Documentation/PCI/MSI-HOWTO.txt b/Documentation/PCI/MSI-HOWTO.txt index a09178086c30..a8d01005f480 100644 --- a/Documentation/PCI/MSI-HOWTO.txt +++ b/Documentation/PCI/MSI-HOWTO.txt | |||
@@ -82,93 +82,111 @@ Most of the hard work is done for the driver in the PCI layer. It simply | |||
82 | has to request that the PCI layer set up the MSI capability for this | 82 | has to request that the PCI layer set up the MSI capability for this |
83 | device. | 83 | device. |
84 | 84 | ||
85 | 4.2.1 pci_enable_msi | 85 | 4.2.1 pci_enable_msi_range |
86 | 86 | ||
87 | int pci_enable_msi(struct pci_dev *dev) | 87 | int pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec) |
88 | 88 | ||
89 | A successful call allocates ONE interrupt to the device, regardless | 89 | This function allows a device driver to request any number of MSI |
90 | of how many MSIs the device supports. The device is switched from | 90 | interrupts within specified range from 'minvec' to 'maxvec'. |
91 | pin-based interrupt mode to MSI mode. The dev->irq number is changed | ||
92 | to a new number which represents the message signaled interrupt; | ||
93 | consequently, this function should be called before the driver calls | ||
94 | request_irq(), because an MSI is delivered via a vector that is | ||
95 | different from the vector of a pin-based interrupt. | ||
96 | 91 | ||
97 | 4.2.2 pci_enable_msi_block | 92 | If this function returns a positive number it indicates the number of |
93 | MSI interrupts that have been successfully allocated. In this case | ||
94 | the device is switched from pin-based interrupt mode to MSI mode and | ||
95 | updates dev->irq to be the lowest of the new interrupts assigned to it. | ||
96 | The other interrupts assigned to the device are in the range dev->irq | ||
97 | to dev->irq + returned value - 1. Device driver can use the returned | ||
98 | number of successfully allocated MSI interrupts to further allocate | ||
99 | and initialize device resources. | ||
98 | 100 | ||
99 | int pci_enable_msi_block(struct pci_dev *dev, int count) | 101 | If this function returns a negative number, it indicates an error and |
102 | the driver should not attempt to request any more MSI interrupts for | ||
103 | this device. | ||
100 | 104 | ||
101 | This variation on the above call allows a device driver to request multiple | 105 | This function should be called before the driver calls request_irq(), |
102 | MSIs. The MSI specification only allows interrupts to be allocated in | 106 | because MSI interrupts are delivered via vectors that are different |
103 | powers of two, up to a maximum of 2^5 (32). | 107 | from the vector of a pin-based interrupt. |
104 | 108 | ||
105 | If this function returns 0, it has succeeded in allocating at least as many | 109 | It is ideal if drivers can cope with a variable number of MSI interrupts; |
106 | interrupts as the driver requested (it may have allocated more in order | 110 | there are many reasons why the platform may not be able to provide the |
107 | to satisfy the power-of-two requirement). In this case, the function | 111 | exact number that a driver asks for. |
108 | enables MSI on this device and updates dev->irq to be the lowest of | ||
109 | the new interrupts assigned to it. The other interrupts assigned to | ||
110 | the device are in the range dev->irq to dev->irq + count - 1. | ||
111 | 112 | ||
112 | If this function returns a negative number, it indicates an error and | 113 | There could be devices that can not operate with just any number of MSI |
113 | the driver should not attempt to request any more MSI interrupts for | 114 | interrupts within a range. See chapter 4.3.1.3 to get the idea how to |
114 | this device. If this function returns a positive number, it is | 115 | handle such devices for MSI-X - the same logic applies to MSI. |
115 | less than 'count' and indicates the number of interrupts that could have | ||
116 | been allocated. In neither case is the irq value updated or the device | ||
117 | switched into MSI mode. | ||
118 | |||
119 | The device driver must decide what action to take if | ||
120 | pci_enable_msi_block() returns a value less than the number requested. | ||
121 | For instance, the driver could still make use of fewer interrupts; | ||
122 | in this case the driver should call pci_enable_msi_block() | ||
123 | again. Note that it is not guaranteed to succeed, even when the | ||
124 | 'count' has been reduced to the value returned from a previous call to | ||
125 | pci_enable_msi_block(). This is because there are multiple constraints | ||
126 | on the number of vectors that can be allocated; pci_enable_msi_block() | ||
127 | returns as soon as it finds any constraint that doesn't allow the | ||
128 | call to succeed. | ||
129 | |||
130 | 4.2.3 pci_enable_msi_block_auto | ||
131 | |||
132 | int pci_enable_msi_block_auto(struct pci_dev *dev, unsigned int *count) | ||
133 | |||
134 | This variation on pci_enable_msi() call allows a device driver to request | ||
135 | the maximum possible number of MSIs. The MSI specification only allows | ||
136 | interrupts to be allocated in powers of two, up to a maximum of 2^5 (32). | ||
137 | |||
138 | If this function returns a positive number, it indicates that it has | ||
139 | succeeded and the returned value is the number of allocated interrupts. In | ||
140 | this case, the function enables MSI on this device and updates dev->irq to | ||
141 | be the lowest of the new interrupts assigned to it. The other interrupts | ||
142 | assigned to the device are in the range dev->irq to dev->irq + returned | ||
143 | value - 1. | ||
144 | 116 | ||
145 | If this function returns a negative number, it indicates an error and | 117 | 4.2.1.1 Maximum possible number of MSI interrupts |
146 | the driver should not attempt to request any more MSI interrupts for | 118 | |
147 | this device. | 119 | The typical usage of MSI interrupts is to allocate as many vectors as |
120 | possible, likely up to the limit returned by pci_msi_vec_count() function: | ||
121 | |||
122 | static int foo_driver_enable_msi(struct pci_dev *pdev, int nvec) | ||
123 | { | ||
124 | return pci_enable_msi_range(pdev, 1, nvec); | ||
125 | } | ||
126 | |||
127 | Note the value of 'minvec' parameter is 1. As 'minvec' is inclusive, | ||
128 | the value of 0 would be meaningless and could result in error. | ||
148 | 129 | ||
149 | If the device driver needs to know the number of interrupts the device | 130 | Some devices have a minimal limit on number of MSI interrupts. |
150 | supports it can pass the pointer count where that number is stored. The | 131 | In this case the function could look like this: |
151 | device driver must decide what action to take if pci_enable_msi_block_auto() | ||
152 | succeeds, but returns a value less than the number of interrupts supported. | ||
153 | If the device driver does not need to know the number of interrupts | ||
154 | supported, it can set the pointer count to NULL. | ||
155 | 132 | ||
156 | 4.2.4 pci_disable_msi | 133 | static int foo_driver_enable_msi(struct pci_dev *pdev, int nvec) |
134 | { | ||
135 | return pci_enable_msi_range(pdev, FOO_DRIVER_MINIMUM_NVEC, nvec); | ||
136 | } | ||
137 | |||
138 | 4.2.1.2 Exact number of MSI interrupts | ||
139 | |||
140 | If a driver is unable or unwilling to deal with a variable number of MSI | ||
141 | interrupts it could request a particular number of interrupts by passing | ||
142 | that number to pci_enable_msi_range() function as both 'minvec' and 'maxvec' | ||
143 | parameters: | ||
144 | |||
145 | static int foo_driver_enable_msi(struct pci_dev *pdev, int nvec) | ||
146 | { | ||
147 | return pci_enable_msi_range(pdev, nvec, nvec); | ||
148 | } | ||
149 | |||
150 | 4.2.1.3 Single MSI mode | ||
151 | |||
152 | The most notorious example of the request type described above is | ||
153 | enabling the single MSI mode for a device. It could be done by passing | ||
154 | two 1s as 'minvec' and 'maxvec': | ||
155 | |||
156 | static int foo_driver_enable_single_msi(struct pci_dev *pdev) | ||
157 | { | ||
158 | return pci_enable_msi_range(pdev, 1, 1); | ||
159 | } | ||
160 | |||
161 | 4.2.2 pci_disable_msi | ||
157 | 162 | ||
158 | void pci_disable_msi(struct pci_dev *dev) | 163 | void pci_disable_msi(struct pci_dev *dev) |
159 | 164 | ||
160 | This function should be used to undo the effect of pci_enable_msi() or | 165 | This function should be used to undo the effect of pci_enable_msi_range(). |
161 | pci_enable_msi_block() or pci_enable_msi_block_auto(). Calling it restores | 166 | Calling it restores dev->irq to the pin-based interrupt number and frees |
162 | dev->irq to the pin-based interrupt number and frees the previously | 167 | the previously allocated MSIs. The interrupts may subsequently be assigned |
163 | allocated message signaled interrupt(s). The interrupt may subsequently be | 168 | to another device, so drivers should not cache the value of dev->irq. |
164 | assigned to another device, so drivers should not cache the value of | ||
165 | dev->irq. | ||
166 | 169 | ||
167 | Before calling this function, a device driver must always call free_irq() | 170 | Before calling this function, a device driver must always call free_irq() |
168 | on any interrupt for which it previously called request_irq(). | 171 | on any interrupt for which it previously called request_irq(). |
169 | Failure to do so results in a BUG_ON(), leaving the device with | 172 | Failure to do so results in a BUG_ON(), leaving the device with |
170 | MSI enabled and thus leaking its vector. | 173 | MSI enabled and thus leaking its vector. |
171 | 174 | ||
175 | 4.2.3 pci_msi_vec_count | ||
176 | |||
177 | int pci_msi_vec_count(struct pci_dev *dev) | ||
178 | |||
179 | This function could be used to retrieve the number of MSI vectors the | ||
180 | device requested (via the Multiple Message Capable register). The MSI | ||
181 | specification only allows the returned value to be a power of two, | ||
182 | up to a maximum of 2^5 (32). | ||
183 | |||
184 | If this function returns a negative number, it indicates the device is | ||
185 | not capable of sending MSIs. | ||
186 | |||
187 | If this function returns a positive number, it indicates the maximum | ||
188 | number of MSI interrupt vectors that could be allocated. | ||
189 | |||
172 | 4.3 Using MSI-X | 190 | 4.3 Using MSI-X |
173 | 191 | ||
174 | The MSI-X capability is much more flexible than the MSI capability. | 192 | The MSI-X capability is much more flexible than the MSI capability. |
@@ -188,26 +206,31 @@ in each element of the array to indicate for which entries the kernel | |||
188 | should assign interrupts; it is invalid to fill in two entries with the | 206 | should assign interrupts; it is invalid to fill in two entries with the |
189 | same number. | 207 | same number. |
190 | 208 | ||
191 | 4.3.1 pci_enable_msix | 209 | 4.3.1 pci_enable_msix_range |
192 | 210 | ||
193 | int pci_enable_msix(struct pci_dev *dev, struct msix_entry *entries, int nvec) | 211 | int pci_enable_msix_range(struct pci_dev *dev, struct msix_entry *entries, |
212 | int minvec, int maxvec) | ||
194 | 213 | ||
195 | Calling this function asks the PCI subsystem to allocate 'nvec' MSIs. | 214 | Calling this function asks the PCI subsystem to allocate any number of |
215 | MSI-X interrupts within specified range from 'minvec' to 'maxvec'. | ||
196 | The 'entries' argument is a pointer to an array of msix_entry structs | 216 | The 'entries' argument is a pointer to an array of msix_entry structs |
197 | which should be at least 'nvec' entries in size. On success, the | 217 | which should be at least 'maxvec' entries in size. |
198 | device is switched into MSI-X mode and the function returns 0. | 218 | |
199 | The 'vector' member in each entry is populated with the interrupt number; | 219 | On success, the device is switched into MSI-X mode and the function |
220 | returns the number of MSI-X interrupts that have been successfully | ||
221 | allocated. In this case the 'vector' member in entries numbered from | ||
222 | 0 to the returned value - 1 is populated with the interrupt number; | ||
200 | the driver should then call request_irq() for each 'vector' that it | 223 | the driver should then call request_irq() for each 'vector' that it |
201 | decides to use. The device driver is responsible for keeping track of the | 224 | decides to use. The device driver is responsible for keeping track of the |
202 | interrupts assigned to the MSI-X vectors so it can free them again later. | 225 | interrupts assigned to the MSI-X vectors so it can free them again later. |
226 | Device driver can use the returned number of successfully allocated MSI-X | ||
227 | interrupts to further allocate and initialize device resources. | ||
203 | 228 | ||
204 | If this function returns a negative number, it indicates an error and | 229 | If this function returns a negative number, it indicates an error and |
205 | the driver should not attempt to allocate any more MSI-X interrupts for | 230 | the driver should not attempt to allocate any more MSI-X interrupts for |
206 | this device. If it returns a positive number, it indicates the maximum | 231 | this device. |
207 | number of interrupt vectors that could have been allocated. See example | ||
208 | below. | ||
209 | 232 | ||
210 | This function, in contrast with pci_enable_msi(), does not adjust | 233 | This function, in contrast with pci_enable_msi_range(), does not adjust |
211 | dev->irq. The device will not generate interrupts for this interrupt | 234 | dev->irq. The device will not generate interrupts for this interrupt |
212 | number once MSI-X is enabled. | 235 | number once MSI-X is enabled. |
213 | 236 | ||
@@ -218,28 +241,103 @@ It is ideal if drivers can cope with a variable number of MSI-X interrupts; | |||
218 | there are many reasons why the platform may not be able to provide the | 241 | there are many reasons why the platform may not be able to provide the |
219 | exact number that a driver asks for. | 242 | exact number that a driver asks for. |
220 | 243 | ||
221 | A request loop to achieve that might look like: | 244 | There could be devices that can not operate with just any number of MSI-X |
245 | interrupts within a range. E.g., an network adapter might need let's say | ||
246 | four vectors per each queue it provides. Therefore, a number of MSI-X | ||
247 | interrupts allocated should be a multiple of four. In this case interface | ||
248 | pci_enable_msix_range() can not be used alone to request MSI-X interrupts | ||
249 | (since it can allocate any number within the range, without any notion of | ||
250 | the multiple of four) and the device driver should master a custom logic | ||
251 | to request the required number of MSI-X interrupts. | ||
252 | |||
253 | 4.3.1.1 Maximum possible number of MSI-X interrupts | ||
254 | |||
255 | The typical usage of MSI-X interrupts is to allocate as many vectors as | ||
256 | possible, likely up to the limit returned by pci_msix_vec_count() function: | ||
222 | 257 | ||
223 | static int foo_driver_enable_msix(struct foo_adapter *adapter, int nvec) | 258 | static int foo_driver_enable_msix(struct foo_adapter *adapter, int nvec) |
224 | { | 259 | { |
225 | while (nvec >= FOO_DRIVER_MINIMUM_NVEC) { | 260 | return pci_enable_msi_range(adapter->pdev, adapter->msix_entries, |
226 | rc = pci_enable_msix(adapter->pdev, | 261 | 1, nvec); |
227 | adapter->msix_entries, nvec); | 262 | } |
228 | if (rc > 0) | 263 | |
229 | nvec = rc; | 264 | Note the value of 'minvec' parameter is 1. As 'minvec' is inclusive, |
230 | else | 265 | the value of 0 would be meaningless and could result in error. |
231 | return rc; | 266 | |
267 | Some devices have a minimal limit on number of MSI-X interrupts. | ||
268 | In this case the function could look like this: | ||
269 | |||
270 | static int foo_driver_enable_msix(struct foo_adapter *adapter, int nvec) | ||
271 | { | ||
272 | return pci_enable_msi_range(adapter->pdev, adapter->msix_entries, | ||
273 | FOO_DRIVER_MINIMUM_NVEC, nvec); | ||
274 | } | ||
275 | |||
276 | 4.3.1.2 Exact number of MSI-X interrupts | ||
277 | |||
278 | If a driver is unable or unwilling to deal with a variable number of MSI-X | ||
279 | interrupts it could request a particular number of interrupts by passing | ||
280 | that number to pci_enable_msix_range() function as both 'minvec' and 'maxvec' | ||
281 | parameters: | ||
282 | |||
283 | static int foo_driver_enable_msix(struct foo_adapter *adapter, int nvec) | ||
284 | { | ||
285 | return pci_enable_msi_range(adapter->pdev, adapter->msix_entries, | ||
286 | nvec, nvec); | ||
287 | } | ||
288 | |||
289 | 4.3.1.3 Specific requirements to the number of MSI-X interrupts | ||
290 | |||
291 | As noted above, there could be devices that can not operate with just any | ||
292 | number of MSI-X interrupts within a range. E.g., let's assume a device that | ||
293 | is only capable sending the number of MSI-X interrupts which is a power of | ||
294 | two. A routine that enables MSI-X mode for such device might look like this: | ||
295 | |||
296 | /* | ||
297 | * Assume 'minvec' and 'maxvec' are non-zero | ||
298 | */ | ||
299 | static int foo_driver_enable_msix(struct foo_adapter *adapter, | ||
300 | int minvec, int maxvec) | ||
301 | { | ||
302 | int rc; | ||
303 | |||
304 | minvec = roundup_pow_of_two(minvec); | ||
305 | maxvec = rounddown_pow_of_two(maxvec); | ||
306 | |||
307 | if (minvec > maxvec) | ||
308 | return -ERANGE; | ||
309 | |||
310 | retry: | ||
311 | rc = pci_enable_msix_range(adapter->pdev, adapter->msix_entries, | ||
312 | maxvec, maxvec); | ||
313 | /* | ||
314 | * -ENOSPC is the only error code allowed to be analized | ||
315 | */ | ||
316 | if (rc == -ENOSPC) { | ||
317 | if (maxvec == 1) | ||
318 | return -ENOSPC; | ||
319 | |||
320 | maxvec /= 2; | ||
321 | |||
322 | if (minvec > maxvec) | ||
323 | return -ENOSPC; | ||
324 | |||
325 | goto retry; | ||
232 | } | 326 | } |
233 | 327 | ||
234 | return -ENOSPC; | 328 | return rc; |
235 | } | 329 | } |
236 | 330 | ||
331 | Note how pci_enable_msix_range() return value is analized for a fallback - | ||
332 | any error code other than -ENOSPC indicates a fatal error and should not | ||
333 | be retried. | ||
334 | |||
237 | 4.3.2 pci_disable_msix | 335 | 4.3.2 pci_disable_msix |
238 | 336 | ||
239 | void pci_disable_msix(struct pci_dev *dev) | 337 | void pci_disable_msix(struct pci_dev *dev) |
240 | 338 | ||
241 | This function should be used to undo the effect of pci_enable_msix(). It frees | 339 | This function should be used to undo the effect of pci_enable_msix_range(). |
242 | the previously allocated message signaled interrupts. The interrupts may | 340 | It frees the previously allocated MSI-X interrupts. The interrupts may |
243 | subsequently be assigned to another device, so drivers should not cache | 341 | subsequently be assigned to another device, so drivers should not cache |
244 | the value of the 'vector' elements over a call to pci_disable_msix(). | 342 | the value of the 'vector' elements over a call to pci_disable_msix(). |
245 | 343 | ||
@@ -255,18 +353,32 @@ MSI-X Table. This address is mapped by the PCI subsystem, and should not | |||
255 | be accessed directly by the device driver. If the driver wishes to | 353 | be accessed directly by the device driver. If the driver wishes to |
256 | mask or unmask an interrupt, it should call disable_irq() / enable_irq(). | 354 | mask or unmask an interrupt, it should call disable_irq() / enable_irq(). |
257 | 355 | ||
356 | 4.3.4 pci_msix_vec_count | ||
357 | |||
358 | int pci_msix_vec_count(struct pci_dev *dev) | ||
359 | |||
360 | This function could be used to retrieve number of entries in the device | ||
361 | MSI-X table. | ||
362 | |||
363 | If this function returns a negative number, it indicates the device is | ||
364 | not capable of sending MSI-Xs. | ||
365 | |||
366 | If this function returns a positive number, it indicates the maximum | ||
367 | number of MSI-X interrupt vectors that could be allocated. | ||
368 | |||
258 | 4.4 Handling devices implementing both MSI and MSI-X capabilities | 369 | 4.4 Handling devices implementing both MSI and MSI-X capabilities |
259 | 370 | ||
260 | If a device implements both MSI and MSI-X capabilities, it can | 371 | If a device implements both MSI and MSI-X capabilities, it can |
261 | run in either MSI mode or MSI-X mode, but not both simultaneously. | 372 | run in either MSI mode or MSI-X mode, but not both simultaneously. |
262 | This is a requirement of the PCI spec, and it is enforced by the | 373 | This is a requirement of the PCI spec, and it is enforced by the |
263 | PCI layer. Calling pci_enable_msi() when MSI-X is already enabled or | 374 | PCI layer. Calling pci_enable_msi_range() when MSI-X is already |
264 | pci_enable_msix() when MSI is already enabled results in an error. | 375 | enabled or pci_enable_msix_range() when MSI is already enabled |
265 | If a device driver wishes to switch between MSI and MSI-X at runtime, | 376 | results in an error. If a device driver wishes to switch between MSI |
266 | it must first quiesce the device, then switch it back to pin-interrupt | 377 | and MSI-X at runtime, it must first quiesce the device, then switch |
267 | mode, before calling pci_enable_msi() or pci_enable_msix() and resuming | 378 | it back to pin-interrupt mode, before calling pci_enable_msi_range() |
268 | operation. This is not expected to be a common operation but may be | 379 | or pci_enable_msix_range() and resuming operation. This is not expected |
269 | useful for debugging or testing during development. | 380 | to be a common operation but may be useful for debugging or testing |
381 | during development. | ||
270 | 382 | ||
271 | 4.5 Considerations when using MSIs | 383 | 4.5 Considerations when using MSIs |
272 | 384 | ||
@@ -381,5 +493,5 @@ or disabled (0). If 0 is found in any of the msi_bus files belonging | |||
381 | to bridges between the PCI root and the device, MSIs are disabled. | 493 | to bridges between the PCI root and the device, MSIs are disabled. |
382 | 494 | ||
383 | It is also worth checking the device driver to see whether it supports MSIs. | 495 | It is also worth checking the device driver to see whether it supports MSIs. |
384 | For example, it may contain calls to pci_enable_msi(), pci_enable_msix() or | 496 | For example, it may contain calls to pci_enable_msi_range() or |
385 | pci_enable_msi_block(). | 497 | pci_enable_msix_range(). |
diff --git a/Documentation/PCI/pci.txt b/Documentation/PCI/pci.txt index 6f458564d625..9518006f6675 100644 --- a/Documentation/PCI/pci.txt +++ b/Documentation/PCI/pci.txt | |||
@@ -123,8 +123,10 @@ initialization with a pointer to a structure describing the driver | |||
123 | 123 | ||
124 | 124 | ||
125 | The ID table is an array of struct pci_device_id entries ending with an | 125 | The ID table is an array of struct pci_device_id entries ending with an |
126 | all-zero entry; use of the macro DEFINE_PCI_DEVICE_TABLE is the preferred | 126 | all-zero entry. Definitions with static const are generally preferred. |
127 | method of declaring the table. Each entry consists of: | 127 | Use of the deprecated macro DEFINE_PCI_DEVICE_TABLE should be avoided. |
128 | |||
129 | Each entry consists of: | ||
128 | 130 | ||
129 | vendor,device Vendor and device ID to match (or PCI_ANY_ID) | 131 | vendor,device Vendor and device ID to match (or PCI_ANY_ID) |
130 | 132 | ||
diff --git a/Documentation/acpi/enumeration.txt b/Documentation/acpi/enumeration.txt index b994bcb32b92..2a1519b87177 100644 --- a/Documentation/acpi/enumeration.txt +++ b/Documentation/acpi/enumeration.txt | |||
@@ -293,36 +293,13 @@ the device to the driver. For example: | |||
293 | 293 | ||
294 | These GPIO numbers are controller relative and path "\\_SB.PCI0.GPI0" | 294 | These GPIO numbers are controller relative and path "\\_SB.PCI0.GPI0" |
295 | specifies the path to the controller. In order to use these GPIOs in Linux | 295 | specifies the path to the controller. In order to use these GPIOs in Linux |
296 | we need to translate them to the Linux GPIO numbers. | 296 | we need to translate them to the corresponding Linux GPIO descriptors. |
297 | 297 | ||
298 | In a simple case of just getting the Linux GPIO number from device | 298 | There is a standard GPIO API for that and is documented in |
299 | resources one can use acpi_get_gpio_by_index() helper function. It takes | 299 | Documentation/gpio.txt. |
300 | pointer to the device and index of the GpioIo/GpioInt descriptor in the | ||
301 | device resources list. For example: | ||
302 | 300 | ||
303 | int gpio_irq, gpio_power; | 301 | In the above example we can get the corresponding two GPIO descriptors with |
304 | int ret; | 302 | a code like this: |
305 | |||
306 | gpio_irq = acpi_get_gpio_by_index(dev, 1, NULL); | ||
307 | if (gpio_irq < 0) | ||
308 | /* handle error */ | ||
309 | |||
310 | gpio_power = acpi_get_gpio_by_index(dev, 0, NULL); | ||
311 | if (gpio_power < 0) | ||
312 | /* handle error */ | ||
313 | |||
314 | /* Now we can use the GPIO numbers */ | ||
315 | |||
316 | Other GpioIo parameters must be converted first by the driver to be | ||
317 | suitable to the gpiolib before passing them. | ||
318 | |||
319 | In case of GpioInt resource an additional call to gpio_to_irq() must be | ||
320 | done before calling request_irq(). | ||
321 | |||
322 | Note that the above API is ACPI specific and not recommended for drivers | ||
323 | that need to support non-ACPI systems. The recommended way is to use | ||
324 | the descriptor based GPIO interfaces. The above example looks like this | ||
325 | when converted to the GPIO desc: | ||
326 | 303 | ||
327 | #include <linux/gpio/consumer.h> | 304 | #include <linux/gpio/consumer.h> |
328 | ... | 305 | ... |
@@ -339,4 +316,5 @@ when converted to the GPIO desc: | |||
339 | 316 | ||
340 | /* Now we can use the GPIO descriptors */ | 317 | /* Now we can use the GPIO descriptors */ |
341 | 318 | ||
342 | See also Documentation/gpio.txt. | 319 | There are also devm_* versions of these functions which release the |
320 | descriptors once the device is released. | ||
diff --git a/Documentation/acpi/namespace.txt b/Documentation/acpi/namespace.txt index 260f6a3661fa..1860cb3865c6 100644 --- a/Documentation/acpi/namespace.txt +++ b/Documentation/acpi/namespace.txt | |||
@@ -235,10 +235,6 @@ Wysocki <rafael.j.wysocki@intel.com>. | |||
235 | named object's type in the second column). In that case the object's | 235 | named object's type in the second column). In that case the object's |
236 | directory in sysfs will contain the 'path' attribute whose value is | 236 | directory in sysfs will contain the 'path' attribute whose value is |
237 | the full path to the node from the namespace root. | 237 | the full path to the node from the namespace root. |
238 | struct acpi_device objects are created for the ACPI namespace nodes | ||
239 | whose _STA control methods return PRESENT or FUNCTIONING. The power | ||
240 | resource nodes or nodes without _STA are assumed to be both PRESENT | ||
241 | and FUNCTIONING. | ||
242 | F: | 238 | F: |
243 | The struct acpi_device object is created for a fixed hardware | 239 | The struct acpi_device object is created for a fixed hardware |
244 | feature (as indicated by the fixed feature flag's name in the second | 240 | feature (as indicated by the fixed feature flag's name in the second |
@@ -340,7 +336,7 @@ Wysocki <rafael.j.wysocki@intel.com>. | |||
340 | | +-------------+-------+----------------+ | 336 | | +-------------+-------+----------------+ |
341 | | | | 337 | | | |
342 | | | +- - - - - - - +- - - - - - +- - - - - - - -+ | 338 | | | +- - - - - - - +- - - - - - +- - - - - - - -+ |
343 | | +-| * PNP0C0D:00 | \_SB_.LID0 | acpi:PNP0C0D: | | 339 | | +-| PNP0C0D:00 | \_SB_.LID0 | acpi:PNP0C0D: | |
344 | | | +- - - - - - - +- - - - - - +- - - - - - - -+ | 340 | | | +- - - - - - - +- - - - - - +- - - - - - - -+ |
345 | | | | 341 | | | |
346 | | | +------------+------------+-----------------------+ | 342 | | | +------------+------------+-----------------------+ |
@@ -390,6 +386,3 @@ Wysocki <rafael.j.wysocki@intel.com>. | |||
390 | attribute (as described earlier in this document). | 386 | attribute (as described earlier in this document). |
391 | NOTE: N/A indicates the device object does not have the 'path' or the | 387 | NOTE: N/A indicates the device object does not have the 'path' or the |
392 | 'modalias' attribute. | 388 | 'modalias' attribute. |
393 | NOTE: The PNP0C0D device listed above is highlighted (marked by "*") | ||
394 | to indicate it will be created only when its _STA methods return | ||
395 | PRESENT or FUNCTIONING. | ||
diff --git a/Documentation/arm/Marvell/README b/Documentation/arm/Marvell/README index da0151db9964..5a930c1528ad 100644 --- a/Documentation/arm/Marvell/README +++ b/Documentation/arm/Marvell/README | |||
@@ -211,6 +211,30 @@ MMP/MMP2 family (communication processor) | |||
211 | Linux kernel mach directory: arch/arm/mach-mmp | 211 | Linux kernel mach directory: arch/arm/mach-mmp |
212 | Linux kernel plat directory: arch/arm/plat-pxa | 212 | Linux kernel plat directory: arch/arm/plat-pxa |
213 | 213 | ||
214 | Berlin family (Digital Entertainment) | ||
215 | ------------------------------------- | ||
216 | |||
217 | Flavors: | ||
218 | 88DE3005, Armada 1500-mini | ||
219 | Design name: BG2CD | ||
220 | Core: ARM Cortex-A9, PL310 L2CC | ||
221 | Homepage: http://www.marvell.com/digital-entertainment/armada-1500-mini/ | ||
222 | 88DE3100, Armada 1500 | ||
223 | Design name: BG2 | ||
224 | Core: Marvell PJ4B (ARMv7), Tauros3 L2CC | ||
225 | Homepage: http://www.marvell.com/digital-entertainment/armada-1500/ | ||
226 | Product Brief: http://www.marvell.com/digital-entertainment/armada-1500/assets/Marvell-ARMADA-1500-Product-Brief.pdf | ||
227 | 88DE???? | ||
228 | Design name: BG3 | ||
229 | Core: ARM Cortex-A15, CA15 integrated L2CC | ||
230 | |||
231 | Homepage: http://www.marvell.com/digital-entertainment/ | ||
232 | Directory: arch/arm/mach-berlin | ||
233 | |||
234 | Comments: | ||
235 | * This line of SoCs is based on Marvell Sheeva or ARM Cortex CPUs | ||
236 | with Synopsys DesignWare (IRQ, GPIO, Timers, ...) and PXA IP (SDHCI, USB, ETH, ...). | ||
237 | |||
214 | Long-term plans | 238 | Long-term plans |
215 | --------------- | 239 | --------------- |
216 | 240 | ||
diff --git a/Documentation/arm/Samsung-S3C24XX/GPIO.txt b/Documentation/arm/Samsung-S3C24XX/GPIO.txt index 8b46c79679c4..0ebd7e2244d0 100644 --- a/Documentation/arm/Samsung-S3C24XX/GPIO.txt +++ b/Documentation/arm/Samsung-S3C24XX/GPIO.txt | |||
@@ -85,21 +85,10 @@ between the calls. | |||
85 | Headers | 85 | Headers |
86 | ------- | 86 | ------- |
87 | 87 | ||
88 | See arch/arm/mach-s3c2410/include/mach/regs-gpio.h for the list | 88 | See arch/arm/mach-s3c24xx/include/mach/regs-gpio.h for the list |
89 | of GPIO pins, and the configuration values for them. This | 89 | of GPIO pins, and the configuration values for them. This |
90 | is included by using #include <mach/regs-gpio.h> | 90 | is included by using #include <mach/regs-gpio.h> |
91 | 91 | ||
92 | The GPIO management functions are defined in the hardware | ||
93 | header arch/arm/mach-s3c2410/include/mach/hardware.h which can be | ||
94 | included by #include <mach/hardware.h> | ||
95 | |||
96 | A useful amount of documentation can be found in the hardware | ||
97 | header on how the GPIO functions (and others) work. | ||
98 | |||
99 | Whilst a number of these functions do make some checks on what | ||
100 | is passed to them, for speed of use, they may not always ensure | ||
101 | that the user supplied data to them is correct. | ||
102 | |||
103 | 92 | ||
104 | PIN Numbers | 93 | PIN Numbers |
105 | ----------- | 94 | ----------- |
diff --git a/Documentation/block/biodoc.txt b/Documentation/block/biodoc.txt index 8df5e8e6dceb..2101e718670d 100644 --- a/Documentation/block/biodoc.txt +++ b/Documentation/block/biodoc.txt | |||
@@ -447,14 +447,13 @@ struct bio_vec { | |||
447 | * main unit of I/O for the block layer and lower layers (ie drivers) | 447 | * main unit of I/O for the block layer and lower layers (ie drivers) |
448 | */ | 448 | */ |
449 | struct bio { | 449 | struct bio { |
450 | sector_t bi_sector; | ||
451 | struct bio *bi_next; /* request queue link */ | 450 | struct bio *bi_next; /* request queue link */ |
452 | struct block_device *bi_bdev; /* target device */ | 451 | struct block_device *bi_bdev; /* target device */ |
453 | unsigned long bi_flags; /* status, command, etc */ | 452 | unsigned long bi_flags; /* status, command, etc */ |
454 | unsigned long bi_rw; /* low bits: r/w, high: priority */ | 453 | unsigned long bi_rw; /* low bits: r/w, high: priority */ |
455 | 454 | ||
456 | unsigned int bi_vcnt; /* how may bio_vec's */ | 455 | unsigned int bi_vcnt; /* how may bio_vec's */ |
457 | unsigned int bi_idx; /* current index into bio_vec array */ | 456 | struct bvec_iter bi_iter; /* current index into bio_vec array */ |
458 | 457 | ||
459 | unsigned int bi_size; /* total size in bytes */ | 458 | unsigned int bi_size; /* total size in bytes */ |
460 | unsigned short bi_phys_segments; /* segments after physaddr coalesce*/ | 459 | unsigned short bi_phys_segments; /* segments after physaddr coalesce*/ |
@@ -480,7 +479,7 @@ With this multipage bio design: | |||
480 | - Code that traverses the req list can find all the segments of a bio | 479 | - Code that traverses the req list can find all the segments of a bio |
481 | by using rq_for_each_segment. This handles the fact that a request | 480 | by using rq_for_each_segment. This handles the fact that a request |
482 | has multiple bios, each of which can have multiple segments. | 481 | has multiple bios, each of which can have multiple segments. |
483 | - Drivers which can't process a large bio in one shot can use the bi_idx | 482 | - Drivers which can't process a large bio in one shot can use the bi_iter |
484 | field to keep track of the next bio_vec entry to process. | 483 | field to keep track of the next bio_vec entry to process. |
485 | (e.g a 1MB bio_vec needs to be handled in max 128kB chunks for IDE) | 484 | (e.g a 1MB bio_vec needs to be handled in max 128kB chunks for IDE) |
486 | [TBD: Should preferably also have a bi_voffset and bi_vlen to avoid modifying | 485 | [TBD: Should preferably also have a bi_voffset and bi_vlen to avoid modifying |
@@ -589,7 +588,7 @@ driver should not modify these values. The block layer sets up the | |||
589 | nr_sectors and current_nr_sectors fields (based on the corresponding | 588 | nr_sectors and current_nr_sectors fields (based on the corresponding |
590 | hard_xxx values and the number of bytes transferred) and updates it on | 589 | hard_xxx values and the number of bytes transferred) and updates it on |
591 | every transfer that invokes end_that_request_first. It does the same for the | 590 | every transfer that invokes end_that_request_first. It does the same for the |
592 | buffer, bio, bio->bi_idx fields too. | 591 | buffer, bio, bio->bi_iter fields too. |
593 | 592 | ||
594 | The buffer field is just a virtual address mapping of the current segment | 593 | The buffer field is just a virtual address mapping of the current segment |
595 | of the i/o buffer in cases where the buffer resides in low-memory. For high | 594 | of the i/o buffer in cases where the buffer resides in low-memory. For high |
diff --git a/Documentation/block/biovecs.txt b/Documentation/block/biovecs.txt new file mode 100644 index 000000000000..74a32ad52f53 --- /dev/null +++ b/Documentation/block/biovecs.txt | |||
@@ -0,0 +1,111 @@ | |||
1 | |||
2 | Immutable biovecs and biovec iterators: | ||
3 | ======================================= | ||
4 | |||
5 | Kent Overstreet <kmo@daterainc.com> | ||
6 | |||
7 | As of 3.13, biovecs should never be modified after a bio has been submitted. | ||
8 | Instead, we have a new struct bvec_iter which represents a range of a biovec - | ||
9 | the iterator will be modified as the bio is completed, not the biovec. | ||
10 | |||
11 | More specifically, old code that needed to partially complete a bio would | ||
12 | update bi_sector and bi_size, and advance bi_idx to the next biovec. If it | ||
13 | ended up partway through a biovec, it would increment bv_offset and decrement | ||
14 | bv_len by the number of bytes completed in that biovec. | ||
15 | |||
16 | In the new scheme of things, everything that must be mutated in order to | ||
17 | partially complete a bio is segregated into struct bvec_iter: bi_sector, | ||
18 | bi_size and bi_idx have been moved there; and instead of modifying bv_offset | ||
19 | and bv_len, struct bvec_iter has bi_bvec_done, which represents the number of | ||
20 | bytes completed in the current bvec. | ||
21 | |||
22 | There are a bunch of new helper macros for hiding the gory details - in | ||
23 | particular, presenting the illusion of partially completed biovecs so that | ||
24 | normal code doesn't have to deal with bi_bvec_done. | ||
25 | |||
26 | * Driver code should no longer refer to biovecs directly; we now have | ||
27 | bio_iovec() and bio_iovec_iter() macros that return literal struct biovecs, | ||
28 | constructed from the raw biovecs but taking into account bi_bvec_done and | ||
29 | bi_size. | ||
30 | |||
31 | bio_for_each_segment() has been updated to take a bvec_iter argument | ||
32 | instead of an integer (that corresponded to bi_idx); for a lot of code the | ||
33 | conversion just required changing the types of the arguments to | ||
34 | bio_for_each_segment(). | ||
35 | |||
36 | * Advancing a bvec_iter is done with bio_advance_iter(); bio_advance() is a | ||
37 | wrapper around bio_advance_iter() that operates on bio->bi_iter, and also | ||
38 | advances the bio integrity's iter if present. | ||
39 | |||
40 | There is a lower level advance function - bvec_iter_advance() - which takes | ||
41 | a pointer to a biovec, not a bio; this is used by the bio integrity code. | ||
42 | |||
43 | What's all this get us? | ||
44 | ======================= | ||
45 | |||
46 | Having a real iterator, and making biovecs immutable, has a number of | ||
47 | advantages: | ||
48 | |||
49 | * Before, iterating over bios was very awkward when you weren't processing | ||
50 | exactly one bvec at a time - for example, bio_copy_data() in fs/bio.c, | ||
51 | which copies the contents of one bio into another. Because the biovecs | ||
52 | wouldn't necessarily be the same size, the old code was tricky convoluted - | ||
53 | it had to walk two different bios at the same time, keeping both bi_idx and | ||
54 | and offset into the current biovec for each. | ||
55 | |||
56 | The new code is much more straightforward - have a look. This sort of | ||
57 | pattern comes up in a lot of places; a lot of drivers were essentially open | ||
58 | coding bvec iterators before, and having common implementation considerably | ||
59 | simplifies a lot of code. | ||
60 | |||
61 | * Before, any code that might need to use the biovec after the bio had been | ||
62 | completed (perhaps to copy the data somewhere else, or perhaps to resubmit | ||
63 | it somewhere else if there was an error) had to save the entire bvec array | ||
64 | - again, this was being done in a fair number of places. | ||
65 | |||
66 | * Biovecs can be shared between multiple bios - a bvec iter can represent an | ||
67 | arbitrary range of an existing biovec, both starting and ending midway | ||
68 | through biovecs. This is what enables efficient splitting of arbitrary | ||
69 | bios. Note that this means we _only_ use bi_size to determine when we've | ||
70 | reached the end of a bio, not bi_vcnt - and the bio_iovec() macro takes | ||
71 | bi_size into account when constructing biovecs. | ||
72 | |||
73 | * Splitting bios is now much simpler. The old bio_split() didn't even work on | ||
74 | bios with more than a single bvec! Now, we can efficiently split arbitrary | ||
75 | size bios - because the new bio can share the old bio's biovec. | ||
76 | |||
77 | Care must be taken to ensure the biovec isn't freed while the split bio is | ||
78 | still using it, in case the original bio completes first, though. Using | ||
79 | bio_chain() when splitting bios helps with this. | ||
80 | |||
81 | * Submitting partially completed bios is now perfectly fine - this comes up | ||
82 | occasionally in stacking block drivers and various code (e.g. md and | ||
83 | bcache) had some ugly workarounds for this. | ||
84 | |||
85 | It used to be the case that submitting a partially completed bio would work | ||
86 | fine to _most_ devices, but since accessing the raw bvec array was the | ||
87 | norm, not all drivers would respect bi_idx and those would break. Now, | ||
88 | since all drivers _must_ go through the bvec iterator - and have been | ||
89 | audited to make sure they are - submitting partially completed bios is | ||
90 | perfectly fine. | ||
91 | |||
92 | Other implications: | ||
93 | =================== | ||
94 | |||
95 | * Almost all usage of bi_idx is now incorrect and has been removed; instead, | ||
96 | where previously you would have used bi_idx you'd now use a bvec_iter, | ||
97 | probably passing it to one of the helper macros. | ||
98 | |||
99 | I.e. instead of using bio_iovec_idx() (or bio->bi_iovec[bio->bi_idx]), you | ||
100 | now use bio_iter_iovec(), which takes a bvec_iter and returns a | ||
101 | literal struct bio_vec - constructed on the fly from the raw biovec but | ||
102 | taking into account bi_bvec_done (and bi_size). | ||
103 | |||
104 | * bi_vcnt can't be trusted or relied upon by driver code - i.e. anything that | ||
105 | doesn't actually own the bio. The reason is twofold: firstly, it's not | ||
106 | actually needed for iterating over the bio anymore - we only use bi_size. | ||
107 | Secondly, when cloning a bio and reusing (a portion of) the original bio's | ||
108 | biovec, in order to calculate bi_vcnt for the new bio we'd have to iterate | ||
109 | over all the biovecs in the new bio - which is silly as it's not needed. | ||
110 | |||
111 | So, don't use bi_vcnt anymore. | ||
diff --git a/Documentation/blockdev/ramdisk.txt b/Documentation/blockdev/ramdisk.txt index fa72e97dd669..fe2ef978d85a 100644 --- a/Documentation/blockdev/ramdisk.txt +++ b/Documentation/blockdev/ramdisk.txt | |||
@@ -36,21 +36,30 @@ allowing one to squeeze more programs onto an average installation or | |||
36 | rescue floppy disk. | 36 | rescue floppy disk. |
37 | 37 | ||
38 | 38 | ||
39 | 2) Kernel Command Line Parameters | 39 | 2) Parameters |
40 | --------------------------------- | 40 | --------------------------------- |
41 | 41 | ||
42 | 2a) Kernel Command Line Parameters | ||
43 | |||
42 | ramdisk_size=N | 44 | ramdisk_size=N |
43 | ============== | 45 | ============== |
44 | 46 | ||
45 | This parameter tells the RAM disk driver to set up RAM disks of N k size. The | 47 | This parameter tells the RAM disk driver to set up RAM disks of N k size. The |
46 | default is 4096 (4 MB) (8192 (8 MB) on S390). | 48 | default is 4096 (4 MB). |
49 | |||
50 | 2b) Module parameters | ||
47 | 51 | ||
48 | ramdisk_blocksize=N | 52 | rd_nr |
49 | =================== | 53 | ===== |
54 | /dev/ramX devices created. | ||
50 | 55 | ||
51 | This parameter tells the RAM disk driver how many bytes to use per block. The | 56 | max_part |
52 | default is 1024 (BLOCK_SIZE). | 57 | ======== |
58 | Maximum partition number. | ||
53 | 59 | ||
60 | rd_size | ||
61 | ======= | ||
62 | See ramdisk_size. | ||
54 | 63 | ||
55 | 3) Using "rdev -r" | 64 | 3) Using "rdev -r" |
56 | ------------------ | 65 | ------------------ |
diff --git a/Documentation/blockdev/zram.txt b/Documentation/blockdev/zram.txt new file mode 100644 index 000000000000..2eccddffa6c8 --- /dev/null +++ b/Documentation/blockdev/zram.txt | |||
@@ -0,0 +1,71 @@ | |||
1 | zram: Compressed RAM based block devices | ||
2 | ---------------------------------------- | ||
3 | |||
4 | * Introduction | ||
5 | |||
6 | The zram module creates RAM based block devices named /dev/zram<id> | ||
7 | (<id> = 0, 1, ...). Pages written to these disks are compressed and stored | ||
8 | in memory itself. These disks allow very fast I/O and compression provides | ||
9 | good amounts of memory savings. Some of the usecases include /tmp storage, | ||
10 | use as swap disks, various caches under /var and maybe many more :) | ||
11 | |||
12 | Statistics for individual zram devices are exported through sysfs nodes at | ||
13 | /sys/block/zram<id>/ | ||
14 | |||
15 | * Usage | ||
16 | |||
17 | Following shows a typical sequence of steps for using zram. | ||
18 | |||
19 | 1) Load Module: | ||
20 | modprobe zram num_devices=4 | ||
21 | This creates 4 devices: /dev/zram{0,1,2,3} | ||
22 | (num_devices parameter is optional. Default: 1) | ||
23 | |||
24 | 2) Set Disksize | ||
25 | Set disk size by writing the value to sysfs node 'disksize'. | ||
26 | The value can be either in bytes or you can use mem suffixes. | ||
27 | Examples: | ||
28 | # Initialize /dev/zram0 with 50MB disksize | ||
29 | echo $((50*1024*1024)) > /sys/block/zram0/disksize | ||
30 | |||
31 | # Using mem suffixes | ||
32 | echo 256K > /sys/block/zram0/disksize | ||
33 | echo 512M > /sys/block/zram0/disksize | ||
34 | echo 1G > /sys/block/zram0/disksize | ||
35 | |||
36 | 3) Activate: | ||
37 | mkswap /dev/zram0 | ||
38 | swapon /dev/zram0 | ||
39 | |||
40 | mkfs.ext4 /dev/zram1 | ||
41 | mount /dev/zram1 /tmp | ||
42 | |||
43 | 4) Stats: | ||
44 | Per-device statistics are exported as various nodes under | ||
45 | /sys/block/zram<id>/ | ||
46 | disksize | ||
47 | num_reads | ||
48 | num_writes | ||
49 | invalid_io | ||
50 | notify_free | ||
51 | discard | ||
52 | zero_pages | ||
53 | orig_data_size | ||
54 | compr_data_size | ||
55 | mem_used_total | ||
56 | |||
57 | 5) Deactivate: | ||
58 | swapoff /dev/zram0 | ||
59 | umount /dev/zram1 | ||
60 | |||
61 | 6) Reset: | ||
62 | Write any positive value to 'reset' sysfs node | ||
63 | echo 1 > /sys/block/zram0/reset | ||
64 | echo 1 > /sys/block/zram1/reset | ||
65 | |||
66 | This frees all the memory allocated for the given device and | ||
67 | resets the disksize to zero. You must set the disksize again | ||
68 | before reusing the device. | ||
69 | |||
70 | Nitin Gupta | ||
71 | ngupta@vflare.org | ||
diff --git a/Documentation/cgroups/cgroups.txt b/Documentation/cgroups/cgroups.txt index 638bf17ff869..821de56d1580 100644 --- a/Documentation/cgroups/cgroups.txt +++ b/Documentation/cgroups/cgroups.txt | |||
@@ -24,7 +24,6 @@ CONTENTS: | |||
24 | 2.1 Basic Usage | 24 | 2.1 Basic Usage |
25 | 2.2 Attaching processes | 25 | 2.2 Attaching processes |
26 | 2.3 Mounting hierarchies by name | 26 | 2.3 Mounting hierarchies by name |
27 | 2.4 Notification API | ||
28 | 3. Kernel API | 27 | 3. Kernel API |
29 | 3.1 Overview | 28 | 3.1 Overview |
30 | 3.2 Synchronization | 29 | 3.2 Synchronization |
@@ -472,25 +471,6 @@ you give a subsystem a name. | |||
472 | The name of the subsystem appears as part of the hierarchy description | 471 | The name of the subsystem appears as part of the hierarchy description |
473 | in /proc/mounts and /proc/<pid>/cgroups. | 472 | in /proc/mounts and /proc/<pid>/cgroups. |
474 | 473 | ||
475 | 2.4 Notification API | ||
476 | -------------------- | ||
477 | |||
478 | There is mechanism which allows to get notifications about changing | ||
479 | status of a cgroup. | ||
480 | |||
481 | To register a new notification handler you need to: | ||
482 | - create a file descriptor for event notification using eventfd(2); | ||
483 | - open a control file to be monitored (e.g. memory.usage_in_bytes); | ||
484 | - write "<event_fd> <control_fd> <args>" to cgroup.event_control. | ||
485 | Interpretation of args is defined by control file implementation; | ||
486 | |||
487 | eventfd will be woken up by control file implementation or when the | ||
488 | cgroup is removed. | ||
489 | |||
490 | To unregister a notification handler just close eventfd. | ||
491 | |||
492 | NOTE: Support of notifications should be implemented for the control | ||
493 | file. See documentation for the subsystem. | ||
494 | 474 | ||
495 | 3. Kernel API | 475 | 3. Kernel API |
496 | ============= | 476 | ============= |
diff --git a/Documentation/cgroups/memory.txt b/Documentation/cgroups/memory.txt index e2bc132608fd..2622115276aa 100644 --- a/Documentation/cgroups/memory.txt +++ b/Documentation/cgroups/memory.txt | |||
@@ -577,7 +577,7 @@ Each memcg's numa_stat file includes "total", "file", "anon" and "unevictable" | |||
577 | per-node page counts including "hierarchical_<counter>" which sums up all | 577 | per-node page counts including "hierarchical_<counter>" which sums up all |
578 | hierarchical children's values in addition to the memcg's own value. | 578 | hierarchical children's values in addition to the memcg's own value. |
579 | 579 | ||
580 | The ouput format of memory.numa_stat is: | 580 | The output format of memory.numa_stat is: |
581 | 581 | ||
582 | total=<total pages> N0=<node 0 pages> N1=<node 1 pages> ... | 582 | total=<total pages> N0=<node 0 pages> N1=<node 1 pages> ... |
583 | file=<total file pages> N0=<node 0 pages> N1=<node 1 pages> ... | 583 | file=<total file pages> N0=<node 0 pages> N1=<node 1 pages> ... |
@@ -670,7 +670,7 @@ page tables. | |||
670 | 670 | ||
671 | 8.1 Interface | 671 | 8.1 Interface |
672 | 672 | ||
673 | This feature is disabled by default. It can be enabledi (and disabled again) by | 673 | This feature is disabled by default. It can be enabled (and disabled again) by |
674 | writing to memory.move_charge_at_immigrate of the destination cgroup. | 674 | writing to memory.move_charge_at_immigrate of the destination cgroup. |
675 | 675 | ||
676 | If you want to enable it: | 676 | If you want to enable it: |
diff --git a/Documentation/cgroups/net_cls.txt b/Documentation/cgroups/net_cls.txt index 9face6bb578a..ec182346dea2 100644 --- a/Documentation/cgroups/net_cls.txt +++ b/Documentation/cgroups/net_cls.txt | |||
@@ -6,6 +6,8 @@ tag network packets with a class identifier (classid). | |||
6 | 6 | ||
7 | The Traffic Controller (tc) can be used to assign | 7 | The Traffic Controller (tc) can be used to assign |
8 | different priorities to packets from different cgroups. | 8 | different priorities to packets from different cgroups. |
9 | Also, Netfilter (iptables) can use this tag to perform | ||
10 | actions on such packets. | ||
9 | 11 | ||
10 | Creating a net_cls cgroups instance creates a net_cls.classid file. | 12 | Creating a net_cls cgroups instance creates a net_cls.classid file. |
11 | This net_cls.classid value is initialized to 0. | 13 | This net_cls.classid value is initialized to 0. |
@@ -32,3 +34,6 @@ tc class add dev eth0 parent 10: classid 10:1 htb rate 40mbit | |||
32 | - creating traffic class 10:1 | 34 | - creating traffic class 10:1 |
33 | 35 | ||
34 | tc filter add dev eth0 parent 10: protocol ip prio 10 handle 1: cgroup | 36 | tc filter add dev eth0 parent 10: protocol ip prio 10 handle 1: cgroup |
37 | |||
38 | configuring iptables, basic example: | ||
39 | iptables -A OUTPUT -m cgroup ! --cgroup 0x100001 -j DROP | ||
diff --git a/Documentation/cgroups/resource_counter.txt b/Documentation/cgroups/resource_counter.txt index c4d99ed0b418..52e1da16a309 100644 --- a/Documentation/cgroups/resource_counter.txt +++ b/Documentation/cgroups/resource_counter.txt | |||
@@ -97,8 +97,8 @@ to work with it. | |||
97 | (struct res_counter *rc, struct res_counter *top, | 97 | (struct res_counter *rc, struct res_counter *top, |
98 | unsinged long val) | 98 | unsinged long val) |
99 | 99 | ||
100 | Almost same as res_cunter_uncharge() but propagation of uncharge | 100 | Almost same as res_counter_uncharge() but propagation of uncharge |
101 | stops when rc == top. This is useful when kill a res_coutner in | 101 | stops when rc == top. This is useful when kill a res_counter in |
102 | child cgroup. | 102 | child cgroup. |
103 | 103 | ||
104 | 2.1 Other accounting routines | 104 | 2.1 Other accounting routines |
diff --git a/Documentation/clk.txt b/Documentation/clk.txt index 3aeb5c440442..699ef2a323b1 100644 --- a/Documentation/clk.txt +++ b/Documentation/clk.txt | |||
@@ -77,6 +77,11 @@ the operations defined in clk.h: | |||
77 | int (*set_parent)(struct clk_hw *hw, u8 index); | 77 | int (*set_parent)(struct clk_hw *hw, u8 index); |
78 | u8 (*get_parent)(struct clk_hw *hw); | 78 | u8 (*get_parent)(struct clk_hw *hw); |
79 | int (*set_rate)(struct clk_hw *hw, unsigned long); | 79 | int (*set_rate)(struct clk_hw *hw, unsigned long); |
80 | int (*set_rate_and_parent)(struct clk_hw *hw, | ||
81 | unsigned long rate, | ||
82 | unsigned long parent_rate, u8 index); | ||
83 | unsigned long (*recalc_accuracy)(struct clk_hw *hw, | ||
84 | unsigned long parent_accuracy); | ||
80 | void (*init)(struct clk_hw *hw); | 85 | void (*init)(struct clk_hw *hw); |
81 | }; | 86 | }; |
82 | 87 | ||
@@ -202,6 +207,8 @@ optional or must be evaluated on a case-by-case basis. | |||
202 | .set_parent | | | n | y | n | | 207 | .set_parent | | | n | y | n | |
203 | .get_parent | | | n | y | n | | 208 | .get_parent | | | n | y | n | |
204 | | | | | | | | 209 | | | | | | | |
210 | .recalc_accuracy| | | | | | | ||
211 | | | | | | | | ||
205 | .init | | | | | | | 212 | .init | | | | | | |
206 | ----------------------------------------------------------- | 213 | ----------------------------------------------------------- |
207 | [1] either one of round_rate or determine_rate is required. | 214 | [1] either one of round_rate or determine_rate is required. |
diff --git a/Documentation/cpu-freq/boost.txt b/Documentation/cpu-freq/boost.txt index 9b4edfcf486f..dd62e1334f0a 100644 --- a/Documentation/cpu-freq/boost.txt +++ b/Documentation/cpu-freq/boost.txt | |||
@@ -17,8 +17,8 @@ Introduction | |||
17 | Some CPUs support a functionality to raise the operating frequency of | 17 | Some CPUs support a functionality to raise the operating frequency of |
18 | some cores in a multi-core package if certain conditions apply, mostly | 18 | some cores in a multi-core package if certain conditions apply, mostly |
19 | if the whole chip is not fully utilized and below it's intended thermal | 19 | if the whole chip is not fully utilized and below it's intended thermal |
20 | budget. This is done without operating system control by a combination | 20 | budget. The decision about boost disable/enable is made either at hardware |
21 | of hardware and firmware. | 21 | (e.g. x86) or software (e.g ARM). |
22 | On Intel CPUs this is called "Turbo Boost", AMD calls it "Turbo-Core", | 22 | On Intel CPUs this is called "Turbo Boost", AMD calls it "Turbo-Core", |
23 | in technical documentation "Core performance boost". In Linux we use | 23 | in technical documentation "Core performance boost". In Linux we use |
24 | the term "boost" for convenience. | 24 | the term "boost" for convenience. |
@@ -48,24 +48,24 @@ be desirable: | |||
48 | User controlled switch | 48 | User controlled switch |
49 | ---------------------- | 49 | ---------------------- |
50 | 50 | ||
51 | To allow the user to toggle the boosting functionality, the acpi-cpufreq | 51 | To allow the user to toggle the boosting functionality, the cpufreq core |
52 | driver exports a sysfs knob to disable it. There is a file: | 52 | driver exports a sysfs knob to enable or disable it. There is a file: |
53 | /sys/devices/system/cpu/cpufreq/boost | 53 | /sys/devices/system/cpu/cpufreq/boost |
54 | which can either read "0" (boosting disabled) or "1" (boosting enabled). | 54 | which can either read "0" (boosting disabled) or "1" (boosting enabled). |
55 | Reading the file is always supported, even if the processor does not | 55 | The file is exported only when cpufreq driver supports boosting. |
56 | support boosting. In this case the file will be read-only and always | 56 | Explicitly changing the permissions and writing to that file anyway will |
57 | reads as "0". Explicitly changing the permissions and writing to that | 57 | return EINVAL. |
58 | file anyway will return EINVAL. | ||
59 | 58 | ||
60 | On supported CPUs one can write either a "0" or a "1" into this file. | 59 | On supported CPUs one can write either a "0" or a "1" into this file. |
61 | This will either disable the boost functionality on all cores in the | 60 | This will either disable the boost functionality on all cores in the |
62 | whole system (0) or will allow the hardware to boost at will (1). | 61 | whole system (0) or will allow the software or hardware to boost at will |
62 | (1). | ||
63 | 63 | ||
64 | Writing a "1" does not explicitly boost the system, but just allows the | 64 | Writing a "1" does not explicitly boost the system, but just allows the |
65 | CPU (and the firmware) to boost at their discretion. Some implementations | 65 | CPU to boost at their discretion. Some implementations take external |
66 | take external factors like the chip's temperature into account, so | 66 | factors like the chip's temperature into account, so boosting once does |
67 | boosting once does not necessarily mean that it will occur every time | 67 | not necessarily mean that it will occur every time even using the exact |
68 | even using the exact same software setup. | 68 | same software setup. |
69 | 69 | ||
70 | 70 | ||
71 | AMD legacy cpb switch | 71 | AMD legacy cpb switch |
diff --git a/Documentation/cpu-freq/intel-pstate.txt b/Documentation/cpu-freq/intel-pstate.txt new file mode 100644 index 000000000000..e742d21dbd96 --- /dev/null +++ b/Documentation/cpu-freq/intel-pstate.txt | |||
@@ -0,0 +1,40 @@ | |||
1 | Intel P-state driver | ||
2 | -------------------- | ||
3 | |||
4 | This driver implements a scaling driver with an internal governor for | ||
5 | Intel Core processors. The driver follows the same model as the | ||
6 | Transmeta scaling driver (longrun.c) and implements the setpolicy() | ||
7 | instead of target(). Scaling drivers that implement setpolicy() are | ||
8 | assumed to implement internal governors by the cpufreq core. All the | ||
9 | logic for selecting the current P state is contained within the | ||
10 | driver; no external governor is used by the cpufreq core. | ||
11 | |||
12 | Intel SandyBridge+ processors are supported. | ||
13 | |||
14 | New sysfs files for controlling P state selection have been added to | ||
15 | /sys/devices/system/cpu/intel_pstate/ | ||
16 | |||
17 | max_perf_pct: limits the maximum P state that will be requested by | ||
18 | the driver stated as a percentage of the available performance. | ||
19 | |||
20 | min_perf_pct: limits the minimum P state that will be requested by | ||
21 | the driver stated as a percentage of the available performance. | ||
22 | |||
23 | no_turbo: limits the driver to selecting P states below the turbo | ||
24 | frequency range. | ||
25 | |||
26 | For contemporary Intel processors, the frequency is controlled by the | ||
27 | processor itself and the P-states exposed to software are related to | ||
28 | performance levels. The idea that frequency can be set to a single | ||
29 | frequency is fiction for Intel Core processors. Even if the scaling | ||
30 | driver selects a single P state the actual frequency the processor | ||
31 | will run at is selected by the processor itself. | ||
32 | |||
33 | New debugfs files have also been added to /sys/kernel/debug/pstate_snb/ | ||
34 | |||
35 | deadband | ||
36 | d_gain_pct | ||
37 | i_gain_pct | ||
38 | p_gain_pct | ||
39 | sample_rate_ms | ||
40 | setpoint | ||
diff --git a/Documentation/cpu-hotplug.txt b/Documentation/cpu-hotplug.txt index 8cb9938cc47e..be675d2d15a7 100644 --- a/Documentation/cpu-hotplug.txt +++ b/Documentation/cpu-hotplug.txt | |||
@@ -285,7 +285,7 @@ A: This is what you would need in your kernel code to receive notifications. | |||
285 | return NOTIFY_OK; | 285 | return NOTIFY_OK; |
286 | } | 286 | } |
287 | 287 | ||
288 | static struct notifier_block foobar_cpu_notifer = | 288 | static struct notifier_block foobar_cpu_notifier = |
289 | { | 289 | { |
290 | .notifier_call = foobar_cpu_callback, | 290 | .notifier_call = foobar_cpu_callback, |
291 | }; | 291 | }; |
diff --git a/Documentation/debugging-via-ohci1394.txt b/Documentation/debugging-via-ohci1394.txt index 611f5a5499b1..fa0151a712f9 100644 --- a/Documentation/debugging-via-ohci1394.txt +++ b/Documentation/debugging-via-ohci1394.txt | |||
@@ -22,10 +22,12 @@ locations such as buffers like the printk buffer or the process table. | |||
22 | Retrieving a full system memory dump is also possible over the FireWire, | 22 | Retrieving a full system memory dump is also possible over the FireWire, |
23 | using data transfer rates in the order of 10MB/s or more. | 23 | using data transfer rates in the order of 10MB/s or more. |
24 | 24 | ||
25 | Memory access is currently limited to the low 4G of physical address | 25 | With most FireWire controllers, memory access is limited to the low 4 GB |
26 | space which can be a problem on IA64 machines where memory is located | 26 | of physical address space. This can be a problem on IA64 machines where |
27 | mostly above that limit, but it is rarely a problem on more common | 27 | memory is located mostly above that limit, but it is rarely a problem on |
28 | hardware such as hardware based on x86, x86-64 and PowerPC. | 28 | more common hardware such as x86, x86-64 and PowerPC. However, at least |
29 | Agere/LSI FW643e and FW643e2 controllers are known to support access to | ||
30 | physical addresses above 4 GB. | ||
29 | 31 | ||
30 | Together with a early initialization of the OHCI-1394 controller for debugging, | 32 | Together with a early initialization of the OHCI-1394 controller for debugging, |
31 | this facility proved most useful for examining long debugs logs in the printk | 33 | this facility proved most useful for examining long debugs logs in the printk |
@@ -36,17 +38,11 @@ available (notebooks) or too slow for extensive debug information (like ACPI). | |||
36 | Drivers | 38 | Drivers |
37 | ------- | 39 | ------- |
38 | 40 | ||
39 | The ohci1394 driver in drivers/ieee1394 initializes the OHCI-1394 controllers | 41 | The firewire-ohci driver in drivers/firewire uses filtered physical |
40 | to a working state and enables physical DMA by default for all remote nodes. | ||
41 | This can be turned off by ohci1394's module parameter phys_dma=0. | ||
42 | |||
43 | The alternative firewire-ohci driver in drivers/firewire uses filtered physical | ||
44 | DMA by default, which is more secure but not suitable for remote debugging. | 42 | DMA by default, which is more secure but not suitable for remote debugging. |
45 | Compile the driver with CONFIG_FIREWIRE_OHCI_REMOTE_DMA (Kernel hacking menu: | 43 | Pass the remote_dma=1 parameter to the driver to get unfiltered physical DMA. |
46 | Remote debugging over FireWire with firewire-ohci) to get unfiltered physical | ||
47 | DMA. | ||
48 | 44 | ||
49 | Because ohci1394 and firewire-ohci depend on the PCI enumeration to be | 45 | Because the firewire-ohci driver depends on the PCI enumeration to be |
50 | completed, an initialization routine which runs pretty early has been | 46 | completed, an initialization routine which runs pretty early has been |
51 | implemented for x86. This routine runs long before console_init() can be | 47 | implemented for x86. This routine runs long before console_init() can be |
52 | called, i.e. before the printk buffer appears on the console. | 48 | called, i.e. before the printk buffer appears on the console. |
@@ -64,7 +60,7 @@ be used to view the printk buffer of a remote machine, even with live update. | |||
64 | 60 | ||
65 | Bernhard Kaindl enhanced firescope to support accessing 64-bit machines | 61 | Bernhard Kaindl enhanced firescope to support accessing 64-bit machines |
66 | from 32-bit firescope and vice versa: | 62 | from 32-bit firescope and vice versa: |
67 | - http://halobates.de/firewire/firescope-0.2.2.tar.bz2 | 63 | - http://v3.sk/~lkundrak/firescope/ |
68 | 64 | ||
69 | and he implemented fast system dump (alpha version - read README.txt): | 65 | and he implemented fast system dump (alpha version - read README.txt): |
70 | - http://halobates.de/firewire/firedump-0.1.tar.bz2 | 66 | - http://halobates.de/firewire/firedump-0.1.tar.bz2 |
@@ -92,11 +88,11 @@ Step-by-step instructions for using firescope with early OHCI initialization: | |||
92 | 88 | ||
93 | 1) Verify that your hardware is supported: | 89 | 1) Verify that your hardware is supported: |
94 | 90 | ||
95 | Load the ohci1394 or the fw-ohci module and check your kernel logs. | 91 | Load the firewire-ohci module and check your kernel logs. |
96 | You should see a line similar to | 92 | You should see a line similar to |
97 | 93 | ||
98 | ohci1394: fw-host0: OHCI-1394 1.1 (PCI): IRQ=[18] MMIO=[fe9ff800-fe9fffff] | 94 | firewire_ohci 0000:15:00.1: added OHCI v1.0 device as card 2, 4 IR + 4 IT |
99 | ... Max Packet=[2048] IR/IT contexts=[4/8] | 95 | ... contexts, quirks 0x11 |
100 | 96 | ||
101 | when loading the driver. If you have no supported controller, many PCI, | 97 | when loading the driver. If you have no supported controller, many PCI, |
102 | CardBus and even some Express cards which are fully compliant to OHCI-1394 | 98 | CardBus and even some Express cards which are fully compliant to OHCI-1394 |
@@ -105,6 +101,9 @@ Step-by-step instructions for using firescope with early OHCI initialization: | |||
105 | compliant, they are based on TI PCILynx chips and require drivers for Win- | 101 | compliant, they are based on TI PCILynx chips and require drivers for Win- |
106 | dows operating systems. | 102 | dows operating systems. |
107 | 103 | ||
104 | The mentioned kernel log message contains ">4 GB phys DMA" in case of | ||
105 | OHCI-1394 controllers which support accesses above this limit. | ||
106 | |||
108 | 2) Establish a working FireWire cable connection: | 107 | 2) Establish a working FireWire cable connection: |
109 | 108 | ||
110 | Any FireWire cable, as long at it provides electrically and mechanically | 109 | Any FireWire cable, as long at it provides electrically and mechanically |
@@ -113,20 +112,18 @@ Step-by-step instructions for using firescope with early OHCI initialization: | |||
113 | 112 | ||
114 | If an driver is running on both machines you should see a line like | 113 | If an driver is running on both machines you should see a line like |
115 | 114 | ||
116 | ieee1394: Node added: ID:BUS[0-01:1023] GUID[0090270001b84bba] | 115 | firewire_core 0000:15:00.1: created device fw1: GUID 00061b0020105917, S400 |
117 | 116 | ||
118 | on both machines in the kernel log when the cable is plugged in | 117 | on both machines in the kernel log when the cable is plugged in |
119 | and connects the two machines. | 118 | and connects the two machines. |
120 | 119 | ||
121 | 3) Test physical DMA using firescope: | 120 | 3) Test physical DMA using firescope: |
122 | 121 | ||
123 | On the debug host, | 122 | On the debug host, make sure that /dev/fw* is accessible, |
124 | - load the raw1394 module, | ||
125 | - make sure that /dev/raw1394 is accessible, | ||
126 | then start firescope: | 123 | then start firescope: |
127 | 124 | ||
128 | $ firescope | 125 | $ firescope |
129 | Port 0 (ohci1394) opened, 2 nodes detected | 126 | Port 0 (/dev/fw1) opened, 2 nodes detected |
130 | 127 | ||
131 | FireScope | 128 | FireScope |
132 | --------- | 129 | --------- |
diff --git a/Documentation/device-mapper/cache-policies.txt b/Documentation/device-mapper/cache-policies.txt index df52a849957f..66c2774c0c64 100644 --- a/Documentation/device-mapper/cache-policies.txt +++ b/Documentation/device-mapper/cache-policies.txt | |||
@@ -40,8 +40,11 @@ on hit count on entry. The policy aims to take different cache miss | |||
40 | costs into account and to adjust to varying load patterns automatically. | 40 | costs into account and to adjust to varying load patterns automatically. |
41 | 41 | ||
42 | Message and constructor argument pairs are: | 42 | Message and constructor argument pairs are: |
43 | 'sequential_threshold <#nr_sequential_ios>' and | 43 | 'sequential_threshold <#nr_sequential_ios>' |
44 | 'random_threshold <#nr_random_ios>'. | 44 | 'random_threshold <#nr_random_ios>' |
45 | 'read_promote_adjustment <value>' | ||
46 | 'write_promote_adjustment <value>' | ||
47 | 'discard_promote_adjustment <value>' | ||
45 | 48 | ||
46 | The sequential threshold indicates the number of contiguous I/Os | 49 | The sequential threshold indicates the number of contiguous I/Os |
47 | required before a stream is treated as sequential. The random threshold | 50 | required before a stream is treated as sequential. The random threshold |
@@ -55,6 +58,15 @@ since spindles tend to have good bandwidth. The io_tracker counts | |||
55 | contiguous I/Os to try to spot when the io is in one of these sequential | 58 | contiguous I/Os to try to spot when the io is in one of these sequential |
56 | modes. | 59 | modes. |
57 | 60 | ||
61 | Internally the mq policy maintains a promotion threshold variable. If | ||
62 | the hit count of a block not in the cache goes above this threshold it | ||
63 | gets promoted to the cache. The read, write and discard promote adjustment | ||
64 | tunables allow you to tweak the promotion threshold by adding a small | ||
65 | value based on the io type. They default to 4, 8 and 1 respectively. | ||
66 | If you're trying to quickly warm a new cache device you may wish to | ||
67 | reduce these to encourage promotion. Remember to switch them back to | ||
68 | their defaults after the cache fills though. | ||
69 | |||
58 | cleaner | 70 | cleaner |
59 | ------- | 71 | ------- |
60 | 72 | ||
diff --git a/Documentation/device-mapper/cache.txt b/Documentation/device-mapper/cache.txt index 719320b5ed3f..e6b72d355151 100644 --- a/Documentation/device-mapper/cache.txt +++ b/Documentation/device-mapper/cache.txt | |||
@@ -217,36 +217,43 @@ the characteristics of a specific policy, always request it by name. | |||
217 | Status | 217 | Status |
218 | ------ | 218 | ------ |
219 | 219 | ||
220 | <#used metadata blocks>/<#total metadata blocks> <#read hits> <#read misses> | 220 | <metadata block size> <#used metadata blocks>/<#total metadata blocks> |
221 | <#write hits> <#write misses> <#demotions> <#promotions> <#blocks in cache> | 221 | <cache block size> <#used cache blocks>/<#total cache blocks> |
222 | <#dirty> <#features> <features>* <#core args> <core args>* <#policy args> | 222 | <#read hits> <#read misses> <#write hits> <#write misses> |
223 | <policy args>* | 223 | <#demotions> <#promotions> <#dirty> <#features> <features>* |
224 | 224 | <#core args> <core args>* <policy name> <#policy args> <policy args>* | |
225 | #used metadata blocks : Number of metadata blocks used | 225 | |
226 | #total metadata blocks : Total number of metadata blocks | 226 | metadata block size : Fixed block size for each metadata block in |
227 | #read hits : Number of times a READ bio has been mapped | 227 | sectors |
228 | #used metadata blocks : Number of metadata blocks used | ||
229 | #total metadata blocks : Total number of metadata blocks | ||
230 | cache block size : Configurable block size for the cache device | ||
231 | in sectors | ||
232 | #used cache blocks : Number of blocks resident in the cache | ||
233 | #total cache blocks : Total number of cache blocks | ||
234 | #read hits : Number of times a READ bio has been mapped | ||
228 | to the cache | 235 | to the cache |
229 | #read misses : Number of times a READ bio has been mapped | 236 | #read misses : Number of times a READ bio has been mapped |
230 | to the origin | 237 | to the origin |
231 | #write hits : Number of times a WRITE bio has been mapped | 238 | #write hits : Number of times a WRITE bio has been mapped |
232 | to the cache | 239 | to the cache |
233 | #write misses : Number of times a WRITE bio has been | 240 | #write misses : Number of times a WRITE bio has been |
234 | mapped to the origin | 241 | mapped to the origin |
235 | #demotions : Number of times a block has been removed | 242 | #demotions : Number of times a block has been removed |
236 | from the cache | 243 | from the cache |
237 | #promotions : Number of times a block has been moved to | 244 | #promotions : Number of times a block has been moved to |
238 | the cache | 245 | the cache |
239 | #blocks in cache : Number of blocks resident in the cache | 246 | #dirty : Number of blocks in the cache that differ |
240 | #dirty : Number of blocks in the cache that differ | ||
241 | from the origin | 247 | from the origin |
242 | #feature args : Number of feature args to follow | 248 | #feature args : Number of feature args to follow |
243 | feature args : 'writethrough' (optional) | 249 | feature args : 'writethrough' (optional) |
244 | #core args : Number of core arguments (must be even) | 250 | #core args : Number of core arguments (must be even) |
245 | core args : Key/value pairs for tuning the core | 251 | core args : Key/value pairs for tuning the core |
246 | e.g. migration_threshold | 252 | e.g. migration_threshold |
247 | #policy args : Number of policy arguments to follow (must be even) | 253 | policy name : Name of the policy |
248 | policy args : Key/value pairs | 254 | #policy args : Number of policy arguments to follow (must be even) |
249 | e.g. 'sequential_threshold 1024 | 255 | policy args : Key/value pairs |
256 | e.g. sequential_threshold | ||
250 | 257 | ||
251 | Messages | 258 | Messages |
252 | -------- | 259 | -------- |
diff --git a/Documentation/device-mapper/thin-provisioning.txt b/Documentation/device-mapper/thin-provisioning.txt index 50c44cf79b0e..8a7a3d46e0da 100644 --- a/Documentation/device-mapper/thin-provisioning.txt +++ b/Documentation/device-mapper/thin-provisioning.txt | |||
@@ -235,6 +235,8 @@ i) Constructor | |||
235 | read_only: Don't allow any changes to be made to the pool | 235 | read_only: Don't allow any changes to be made to the pool |
236 | metadata. | 236 | metadata. |
237 | 237 | ||
238 | error_if_no_space: Error IOs, instead of queueing, if no space. | ||
239 | |||
238 | Data block size must be between 64KB (128 sectors) and 1GB | 240 | Data block size must be between 64KB (128 sectors) and 1GB |
239 | (2097152 sectors) inclusive. | 241 | (2097152 sectors) inclusive. |
240 | 242 | ||
@@ -276,6 +278,11 @@ ii) Status | |||
276 | contain the string 'Fail'. The userspace recovery tools | 278 | contain the string 'Fail'. The userspace recovery tools |
277 | should then be used. | 279 | should then be used. |
278 | 280 | ||
281 | error_if_no_space|queue_if_no_space | ||
282 | If the pool runs out of data or metadata space, the pool will | ||
283 | either queue or error the IO destined to the data device. The | ||
284 | default is to queue the IO until more space is added. | ||
285 | |||
279 | iii) Messages | 286 | iii) Messages |
280 | 287 | ||
281 | create_thin <dev id> | 288 | create_thin <dev id> |
diff --git a/Documentation/devices.txt b/Documentation/devices.txt index 80b72419ffd8..10378cc48374 100644 --- a/Documentation/devices.txt +++ b/Documentation/devices.txt | |||
@@ -409,6 +409,7 @@ Your cooperation is appreciated. | |||
409 | 193 = /dev/d7s SPARC 7-segment display | 409 | 193 = /dev/d7s SPARC 7-segment display |
410 | 194 = /dev/zkshim Zero-Knowledge network shim control | 410 | 194 = /dev/zkshim Zero-Knowledge network shim control |
411 | 195 = /dev/elographics/e2201 Elographics touchscreen E271-2201 | 411 | 195 = /dev/elographics/e2201 Elographics touchscreen E271-2201 |
412 | 196 = /dev/vfio/vfio VFIO userspace driver interface | ||
412 | 198 = /dev/sexec Signed executable interface | 413 | 198 = /dev/sexec Signed executable interface |
413 | 199 = /dev/scanners/cuecat :CueCat barcode scanner | 414 | 199 = /dev/scanners/cuecat :CueCat barcode scanner |
414 | 200 = /dev/net/tun TAP/TUN network device | 415 | 200 = /dev/net/tun TAP/TUN network device |
diff --git a/Documentation/devicetree/bindings/ABI.txt b/Documentation/devicetree/bindings/ABI.txt new file mode 100644 index 000000000000..d25f8d379680 --- /dev/null +++ b/Documentation/devicetree/bindings/ABI.txt | |||
@@ -0,0 +1,39 @@ | |||
1 | |||
2 | Devicetree (DT) ABI | ||
3 | |||
4 | I. Regarding stable bindings/ABI, we quote from the 2013 ARM mini-summit | ||
5 | summary document: | ||
6 | |||
7 | "That still leaves the question of, what does a stable binding look | ||
8 | like? Certainly a stable binding means that a newer kernel will not | ||
9 | break on an older device tree, but that doesn't mean the binding is | ||
10 | frozen for all time. Grant said there are ways to change bindings that | ||
11 | don't result in breakage. For instance, if a new property is added, | ||
12 | then default to the previous behaviour if it is missing. If a binding | ||
13 | truly needs an incompatible change, then change the compatible string | ||
14 | at the same time. The driver can bind against both the old and the | ||
15 | new. These guidelines aren't new, but they desperately need to be | ||
16 | documented." | ||
17 | |||
18 | II. General binding rules | ||
19 | |||
20 | 1) Maintainers, don't let perfect be the enemy of good. Don't hold up a | ||
21 | binding because it isn't perfect. | ||
22 | |||
23 | 2) Use specific compatible strings so that if we need to add a feature (DMA) | ||
24 | in the future, we can create a new compatible string. See I. | ||
25 | |||
26 | 3) Bindings can be augmented, but the driver shouldn't break when given | ||
27 | the old binding. ie. add additional properties, but don't change the | ||
28 | meaning of an existing property. For drivers, default to the original | ||
29 | behaviour when a newly added property is missing. | ||
30 | |||
31 | 4) Don't submit bindings for staging or unstable. That will be decided by | ||
32 | the devicetree maintainers *after* discussion on the mailinglist. | ||
33 | |||
34 | III. Notes | ||
35 | |||
36 | 1) This document is intended as a general familiarization with the process as | ||
37 | decided at the 2013 Kernel Summit. When in doubt, the current word of the | ||
38 | devicetree maintainers overrules this document. In that situation, a patch | ||
39 | updating this document would be appreciated. | ||
diff --git a/Documentation/devicetree/bindings/arm/arm-boards b/Documentation/devicetree/bindings/arm/arm-boards index 5fac246a9530..3509707f9320 100644 --- a/Documentation/devicetree/bindings/arm/arm-boards +++ b/Documentation/devicetree/bindings/arm/arm-boards | |||
@@ -14,6 +14,9 @@ Required nodes: | |||
14 | - core-module: the root node to the Integrator platforms must have | 14 | - core-module: the root node to the Integrator platforms must have |
15 | a core-module with regs and the compatible string | 15 | a core-module with regs and the compatible string |
16 | "arm,core-module-integrator" | 16 | "arm,core-module-integrator" |
17 | - external-bus-interface: the root node to the Integrator platforms | ||
18 | must have an external bus interface with regs and the | ||
19 | compatible-string "arm,external-bus-interface" | ||
17 | 20 | ||
18 | Required properties for the core module: | 21 | Required properties for the core module: |
19 | - regs: the location and size of the core module registers, one | 22 | - regs: the location and size of the core module registers, one |
@@ -48,6 +51,11 @@ Required nodes: | |||
48 | reg = <0x10000000 0x200>; | 51 | reg = <0x10000000 0x200>; |
49 | }; | 52 | }; |
50 | 53 | ||
54 | ebi@12000000 { | ||
55 | compatible = "arm,external-bus-interface"; | ||
56 | reg = <0x12000000 0x100>; | ||
57 | }; | ||
58 | |||
51 | syscon { | 59 | syscon { |
52 | compatible = "arm,integrator-ap-syscon"; | 60 | compatible = "arm,integrator-ap-syscon"; |
53 | reg = <0x11000000 0x100>; | 61 | reg = <0x11000000 0x100>; |
diff --git a/Documentation/devicetree/bindings/arm/atmel-aic.txt b/Documentation/devicetree/bindings/arm/atmel-aic.txt index ad031211b5b8..2742e9cfd6b1 100644 --- a/Documentation/devicetree/bindings/arm/atmel-aic.txt +++ b/Documentation/devicetree/bindings/arm/atmel-aic.txt | |||
@@ -2,6 +2,7 @@ | |||
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: Should be "atmel,<chip>-aic" | 4 | - compatible: Should be "atmel,<chip>-aic" |
5 | <chip> can be "at91rm9200" or "sama5d3" | ||
5 | - interrupt-controller: Identifies the node as an interrupt controller. | 6 | - interrupt-controller: Identifies the node as an interrupt controller. |
6 | - interrupt-parent: For single AIC system, it is an empty property. | 7 | - interrupt-parent: For single AIC system, it is an empty property. |
7 | - #interrupt-cells: The number of cells to define the interrupts. It should be 3. | 8 | - #interrupt-cells: The number of cells to define the interrupts. It should be 3. |
diff --git a/Documentation/devicetree/bindings/arm/atmel-at91.txt b/Documentation/devicetree/bindings/arm/atmel-at91.txt index 1196290082d1..16f60b41c147 100644 --- a/Documentation/devicetree/bindings/arm/atmel-at91.txt +++ b/Documentation/devicetree/bindings/arm/atmel-at91.txt | |||
@@ -20,6 +20,10 @@ TC/TCLIB Timer required properties: | |||
20 | - interrupts: Should contain all interrupts for the TC block | 20 | - interrupts: Should contain all interrupts for the TC block |
21 | Note that you can specify several interrupt cells if the TC | 21 | Note that you can specify several interrupt cells if the TC |
22 | block has one interrupt per channel. | 22 | block has one interrupt per channel. |
23 | - clock-names: tuple listing input clock names. | ||
24 | Required elements: "t0_clk" | ||
25 | Optional elements: "t1_clk", "t2_clk" | ||
26 | - clocks: phandles to input clocks. | ||
23 | 27 | ||
24 | Examples: | 28 | Examples: |
25 | 29 | ||
@@ -28,6 +32,8 @@ One interrupt per TC block: | |||
28 | compatible = "atmel,at91rm9200-tcb"; | 32 | compatible = "atmel,at91rm9200-tcb"; |
29 | reg = <0xfff7c000 0x100>; | 33 | reg = <0xfff7c000 0x100>; |
30 | interrupts = <18 4>; | 34 | interrupts = <18 4>; |
35 | clocks = <&tcb0_clk>; | ||
36 | clock-names = "t0_clk"; | ||
31 | }; | 37 | }; |
32 | 38 | ||
33 | One interrupt per TC channel in a TC block: | 39 | One interrupt per TC channel in a TC block: |
@@ -35,6 +41,8 @@ One interrupt per TC channel in a TC block: | |||
35 | compatible = "atmel,at91rm9200-tcb"; | 41 | compatible = "atmel,at91rm9200-tcb"; |
36 | reg = <0xfffdc000 0x100>; | 42 | reg = <0xfffdc000 0x100>; |
37 | interrupts = <26 4 27 4 28 4>; | 43 | interrupts = <26 4 27 4 28 4>; |
44 | clocks = <&tcb1_clk>; | ||
45 | clock-names = "t0_clk"; | ||
38 | }; | 46 | }; |
39 | 47 | ||
40 | RSTC Reset Controller required properties: | 48 | RSTC Reset Controller required properties: |
@@ -50,7 +58,8 @@ Example: | |||
50 | }; | 58 | }; |
51 | 59 | ||
52 | RAMC SDRAM/DDR Controller required properties: | 60 | RAMC SDRAM/DDR Controller required properties: |
53 | - compatible: Should be "atmel,at91sam9260-sdramc", | 61 | - compatible: Should be "atmel,at91rm9200-sdramc", |
62 | "atmel,at91sam9260-sdramc", | ||
54 | "atmel,at91sam9g45-ddramc", | 63 | "atmel,at91sam9g45-ddramc", |
55 | - reg: Should contain registers location and length | 64 | - reg: Should contain registers location and length |
56 | For at91sam9263 and at91sam9g45 you must specify 2 entries. | 65 | For at91sam9263 and at91sam9g45 you must specify 2 entries. |
diff --git a/Documentation/devicetree/bindings/arm/bcm/kona-timer.txt b/Documentation/devicetree/bindings/arm/bcm/kona-timer.txt index 17d88b233d1b..39adf54b4388 100644 --- a/Documentation/devicetree/bindings/arm/bcm/kona-timer.txt +++ b/Documentation/devicetree/bindings/arm/bcm/kona-timer.txt | |||
@@ -8,13 +8,18 @@ Required properties: | |||
8 | - DEPRECATED: compatible : "bcm,kona-timer" | 8 | - DEPRECATED: compatible : "bcm,kona-timer" |
9 | - reg : Register range for the timer | 9 | - reg : Register range for the timer |
10 | - interrupts : interrupt for the timer | 10 | - interrupts : interrupt for the timer |
11 | - clocks: phandle + clock specifier pair of the external clock | ||
11 | - clock-frequency: frequency that the clock operates | 12 | - clock-frequency: frequency that the clock operates |
12 | 13 | ||
14 | Only one of clocks or clock-frequency should be specified. | ||
15 | |||
16 | Refer to clocks/clock-bindings.txt for generic clock consumer properties. | ||
17 | |||
13 | Example: | 18 | Example: |
14 | timer@35006000 { | 19 | timer@35006000 { |
15 | compatible = "brcm,kona-timer"; | 20 | compatible = "brcm,kona-timer"; |
16 | reg = <0x35006000 0x1000>; | 21 | reg = <0x35006000 0x1000>; |
17 | interrupts = <0x0 7 0x4>; | 22 | interrupts = <0x0 7 0x4>; |
18 | clock-frequency = <32768>; | 23 | clocks = <&hub_timer_clk>; |
19 | }; | 24 | }; |
20 | 25 | ||
diff --git a/Documentation/devicetree/bindings/arm/davinci/nand.txt b/Documentation/devicetree/bindings/arm/davinci/nand.txt deleted file mode 100644 index 3545ea704b50..000000000000 --- a/Documentation/devicetree/bindings/arm/davinci/nand.txt +++ /dev/null | |||
@@ -1,46 +0,0 @@ | |||
1 | * Texas Instruments Davinci NAND | ||
2 | |||
3 | This file provides information, what the device node for the | ||
4 | davinci nand interface contain. | ||
5 | |||
6 | Required properties: | ||
7 | - compatible: "ti,davinci-nand"; | ||
8 | - reg : contain 2 offset/length values: | ||
9 | - offset and length for the access window | ||
10 | - offset and length for accessing the aemif control registers | ||
11 | - ti,davinci-chipselect: Indicates on the davinci_nand driver which | ||
12 | chipselect is used for accessing the nand. | ||
13 | |||
14 | Recommended properties : | ||
15 | - ti,davinci-mask-ale: mask for ale | ||
16 | - ti,davinci-mask-cle: mask for cle | ||
17 | - ti,davinci-mask-chipsel: mask for chipselect | ||
18 | - ti,davinci-ecc-mode: ECC mode valid values for davinci driver: | ||
19 | - "none" | ||
20 | - "soft" | ||
21 | - "hw" | ||
22 | - ti,davinci-ecc-bits: used ECC bits, currently supported 1 or 4. | ||
23 | - ti,davinci-nand-buswidth: buswidth 8 or 16 | ||
24 | - ti,davinci-nand-use-bbt: use flash based bad block table support. | ||
25 | |||
26 | nand device bindings may contain additional sub-nodes describing | ||
27 | partitions of the address space. See partition.txt for more detail. | ||
28 | |||
29 | Example(da850 EVM ): | ||
30 | nand_cs3@62000000 { | ||
31 | compatible = "ti,davinci-nand"; | ||
32 | reg = <0x62000000 0x807ff | ||
33 | 0x68000000 0x8000>; | ||
34 | ti,davinci-chipselect = <1>; | ||
35 | ti,davinci-mask-ale = <0>; | ||
36 | ti,davinci-mask-cle = <0>; | ||
37 | ti,davinci-mask-chipsel = <0>; | ||
38 | ti,davinci-ecc-mode = "hw"; | ||
39 | ti,davinci-ecc-bits = <4>; | ||
40 | ti,davinci-nand-use-bbt; | ||
41 | |||
42 | partition@180000 { | ||
43 | label = "ubifs"; | ||
44 | reg = <0x180000 0x7e80000>; | ||
45 | }; | ||
46 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/firmware/tlm,trusted-foundations.txt b/Documentation/devicetree/bindings/arm/firmware/tlm,trusted-foundations.txt new file mode 100644 index 000000000000..780d0392a66b --- /dev/null +++ b/Documentation/devicetree/bindings/arm/firmware/tlm,trusted-foundations.txt | |||
@@ -0,0 +1,20 @@ | |||
1 | Trusted Foundations | ||
2 | ------------------- | ||
3 | |||
4 | Boards that use the Trusted Foundations secure monitor can signal its | ||
5 | presence by declaring a node compatible with "tlm,trusted-foundations" | ||
6 | under the /firmware/ node | ||
7 | |||
8 | Required properties: | ||
9 | - compatible: "tlm,trusted-foundations" | ||
10 | - tlm,version-major: major version number of Trusted Foundations firmware | ||
11 | - tlm,version-minor: minor version number of Trusted Foundations firmware | ||
12 | |||
13 | Example: | ||
14 | firmware { | ||
15 | trusted-foundations { | ||
16 | compatible = "tlm,trusted-foundations"; | ||
17 | tlm,version-major = <2>; | ||
18 | tlm,version-minor = <8>; | ||
19 | }; | ||
20 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/gic.txt b/Documentation/devicetree/bindings/arm/gic.txt index 3dfb0c0384f5..bae0d87a38b2 100644 --- a/Documentation/devicetree/bindings/arm/gic.txt +++ b/Documentation/devicetree/bindings/arm/gic.txt | |||
@@ -11,6 +11,7 @@ have PPIs or SGIs. | |||
11 | Main node required properties: | 11 | Main node required properties: |
12 | 12 | ||
13 | - compatible : should be one of: | 13 | - compatible : should be one of: |
14 | "arm,gic-400" | ||
14 | "arm,cortex-a15-gic" | 15 | "arm,cortex-a15-gic" |
15 | "arm,cortex-a9-gic" | 16 | "arm,cortex-a9-gic" |
16 | "arm,cortex-a7-gic" | 17 | "arm,cortex-a7-gic" |
diff --git a/Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt b/Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt new file mode 100644 index 000000000000..8c7a4653508d --- /dev/null +++ b/Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt | |||
@@ -0,0 +1,32 @@ | |||
1 | Hisilicon Platforms Device Tree Bindings | ||
2 | ---------------------------------------------------- | ||
3 | |||
4 | Hi4511 Board | ||
5 | Required root node properties: | ||
6 | - compatible = "hisilicon,hi3620-hi4511"; | ||
7 | |||
8 | Hisilicon system controller | ||
9 | |||
10 | Required properties: | ||
11 | - compatible : "hisilicon,sysctrl" | ||
12 | - reg : Register address and size | ||
13 | |||
14 | Optional properties: | ||
15 | - smp-offset : offset in sysctrl for notifying slave cpu booting | ||
16 | cpu 1, reg; | ||
17 | cpu 2, reg + 0x4; | ||
18 | cpu 3, reg + 0x8; | ||
19 | If reg value is not zero, cpun exit wfi and go | ||
20 | - resume-offset : offset in sysctrl for notifying cpu0 when resume | ||
21 | - reboot-offset : offset in sysctrl for system reboot | ||
22 | |||
23 | Example: | ||
24 | |||
25 | /* for Hi3620 */ | ||
26 | sysctrl: system-controller@fc802000 { | ||
27 | compatible = "hisilicon,sysctrl"; | ||
28 | reg = <0xfc802000 0x1000>; | ||
29 | smp-offset = <0x31c>; | ||
30 | resume-offset = <0x308>; | ||
31 | reboot-offset = <0x4>; | ||
32 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/l2cc.txt b/Documentation/devicetree/bindings/arm/l2cc.txt index c0c7626fd0ff..b513cb8196fe 100644 --- a/Documentation/devicetree/bindings/arm/l2cc.txt +++ b/Documentation/devicetree/bindings/arm/l2cc.txt | |||
@@ -7,20 +7,21 @@ The ARM L2 cache representation in the device tree should be done as follows: | |||
7 | Required properties: | 7 | Required properties: |
8 | 8 | ||
9 | - compatible : should be one of: | 9 | - compatible : should be one of: |
10 | "arm,pl310-cache" | 10 | "arm,pl310-cache" |
11 | "arm,l220-cache" | 11 | "arm,l220-cache" |
12 | "arm,l210-cache" | 12 | "arm,l210-cache" |
13 | "marvell,aurora-system-cache": Marvell Controller designed to be | 13 | "bcm,bcm11351-a2-pl310-cache": DEPRECATED by "brcm,bcm11351-a2-pl310-cache" |
14 | "brcm,bcm11351-a2-pl310-cache": For Broadcom bcm11351 chipset where an | ||
15 | offset needs to be added to the address before passing down to the L2 | ||
16 | cache controller | ||
17 | "marvell,aurora-system-cache": Marvell Controller designed to be | ||
14 | compatible with the ARM one, with system cache mode (meaning | 18 | compatible with the ARM one, with system cache mode (meaning |
15 | maintenance operations on L1 are broadcasted to the L2 and L2 | 19 | maintenance operations on L1 are broadcasted to the L2 and L2 |
16 | performs the same operation). | 20 | performs the same operation). |
17 | "marvell,"aurora-outer-cache: Marvell Controller designed to be | 21 | "marvell,aurora-outer-cache": Marvell Controller designed to be |
18 | compatible with the ARM one with outer cache mode. | 22 | compatible with the ARM one with outer cache mode. |
19 | "brcm,bcm11351-a2-pl310-cache": For Broadcom bcm11351 chipset where an | 23 | "marvell,tauros3-cache": Marvell Tauros3 cache controller, compatible |
20 | offset needs to be added to the address before passing down to the L2 | 24 | with arm,pl310-cache controller. |
21 | cache controller | ||
22 | "bcm,bcm11351-a2-pl310-cache": DEPRECATED by | ||
23 | "brcm,bcm11351-a2-pl310-cache" | ||
24 | - cache-unified : Specifies the cache is a unified cache. | 25 | - cache-unified : Specifies the cache is a unified cache. |
25 | - cache-level : Should be set to 2 for a level 2 cache. | 26 | - cache-level : Should be set to 2 for a level 2 cache. |
26 | - reg : Physical base address and size of cache controller's memory mapped | 27 | - reg : Physical base address and size of cache controller's memory mapped |
diff --git a/Documentation/devicetree/bindings/arm/marvell,berlin.txt b/Documentation/devicetree/bindings/arm/marvell,berlin.txt new file mode 100644 index 000000000000..737afa5f8148 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/marvell,berlin.txt | |||
@@ -0,0 +1,24 @@ | |||
1 | Marvell Berlin SoC Family Device Tree Bindings | ||
2 | --------------------------------------------------------------- | ||
3 | |||
4 | Boards with a SoC of the Marvell Berlin family, e.g. Armada 1500 | ||
5 | shall have the following properties: | ||
6 | |||
7 | * Required root node properties: | ||
8 | compatible: must contain "marvell,berlin" | ||
9 | |||
10 | In addition, the above compatible shall be extended with the specific | ||
11 | SoC and board used. Currently known SoC compatibles are: | ||
12 | "marvell,berlin2" for Marvell Armada 1500 (BG2, 88DE3100), | ||
13 | "marvell,berlin2cd" for Marvell Armada 1500-mini (BG2CD, 88DE3005) | ||
14 | "marvell,berlin2ct" for Marvell Armada ? (BG2CT, 88DE????) | ||
15 | "marvell,berlin3" for Marvell Armada ? (BG3, 88DE????) | ||
16 | |||
17 | * Example: | ||
18 | |||
19 | / { | ||
20 | model = "Sony NSZ-GS7"; | ||
21 | compatible = "sony,nsz-gs7", "marvell,berlin2", "marvell,berlin"; | ||
22 | |||
23 | ... | ||
24 | } | ||
diff --git a/Documentation/devicetree/bindings/arm/moxart.txt b/Documentation/devicetree/bindings/arm/moxart.txt new file mode 100644 index 000000000000..11087edb0658 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/moxart.txt | |||
@@ -0,0 +1,12 @@ | |||
1 | MOXA ART device tree bindings | ||
2 | |||
3 | Boards with the MOXA ART SoC shall have the following properties: | ||
4 | |||
5 | Required root node property: | ||
6 | |||
7 | compatible = "moxa,moxart"; | ||
8 | |||
9 | Boards: | ||
10 | |||
11 | - UC-7112-LX: embedded computer | ||
12 | compatible = "moxa,moxart-uc-7112-lx", "moxa,moxart" | ||
diff --git a/Documentation/devicetree/bindings/arm/omap/omap.txt b/Documentation/devicetree/bindings/arm/omap/omap.txt index 808c1543b0f8..34dc40cffdfd 100644 --- a/Documentation/devicetree/bindings/arm/omap/omap.txt +++ b/Documentation/devicetree/bindings/arm/omap/omap.txt | |||
@@ -31,6 +31,59 @@ spinlock@1 { | |||
31 | ti,hwmods = "spinlock"; | 31 | ti,hwmods = "spinlock"; |
32 | }; | 32 | }; |
33 | 33 | ||
34 | SoC Type (optional): | ||
35 | |||
36 | - General Purpose devices | ||
37 | compatible = "ti,gp" | ||
38 | - High Security devices | ||
39 | compatible = "ti,hs" | ||
40 | |||
41 | SoC Families: | ||
42 | |||
43 | - OMAP2 generic - defaults to OMAP2420 | ||
44 | compatible = "ti,omap2" | ||
45 | - OMAP3 generic - defaults to OMAP3430 | ||
46 | compatible = "ti,omap3" | ||
47 | - OMAP4 generic - defaults to OMAP4430 | ||
48 | compatible = "ti,omap4" | ||
49 | - OMAP5 generic - defaults to OMAP5430 | ||
50 | compatible = "ti,omap5" | ||
51 | - DRA7 generic - defaults to DRA742 | ||
52 | compatible = "ti,dra7" | ||
53 | - AM43x generic - defaults to AM4372 | ||
54 | compatible = "ti,am43" | ||
55 | |||
56 | SoCs: | ||
57 | |||
58 | - OMAP2420 | ||
59 | compatible = "ti,omap2420", "ti,omap2" | ||
60 | - OMAP2430 | ||
61 | compatible = "ti,omap2430", "ti,omap2" | ||
62 | |||
63 | - OMAP3430 | ||
64 | compatible = "ti,omap3430", "ti,omap3" | ||
65 | - AM3517 | ||
66 | compatible = "ti,am3517", "ti,omap3" | ||
67 | - OMAP3630 | ||
68 | compatible = "ti,omap36xx", "ti,omap3" | ||
69 | - AM33xx | ||
70 | compatible = "ti,am33xx", "ti,omap3" | ||
71 | |||
72 | - OMAP4430 | ||
73 | compatible = "ti,omap4430", "ti,omap4" | ||
74 | - OMAP4460 | ||
75 | compatible = "ti,omap4460", "ti,omap4" | ||
76 | |||
77 | - OMAP5430 | ||
78 | compatible = "ti,omap5430", "ti,omap5" | ||
79 | - OMAP5432 | ||
80 | compatible = "ti,omap5432", "ti,omap5" | ||
81 | |||
82 | - DRA742 | ||
83 | compatible = "ti,dra7xx", "ti,dra7" | ||
84 | |||
85 | - AM4372 | ||
86 | compatible = "ti,am4372", "ti,am43" | ||
34 | 87 | ||
35 | Boards: | 88 | Boards: |
36 | 89 | ||
diff --git a/Documentation/devicetree/bindings/arm/samsung/sysreg.txt b/Documentation/devicetree/bindings/arm/samsung/sysreg.txt index 5039c0a12f55..0ab3251a6ec2 100644 --- a/Documentation/devicetree/bindings/arm/samsung/sysreg.txt +++ b/Documentation/devicetree/bindings/arm/samsung/sysreg.txt | |||
@@ -1,7 +1,12 @@ | |||
1 | SAMSUNG S5P/Exynos SoC series System Registers (SYSREG) | 1 | SAMSUNG S5P/Exynos SoC series System Registers (SYSREG) |
2 | 2 | ||
3 | Properties: | 3 | Properties: |
4 | - name : should be 'sysreg'; | ||
5 | - compatible : should contain "samsung,<chip name>-sysreg", "syscon"; | 4 | - compatible : should contain "samsung,<chip name>-sysreg", "syscon"; |
6 | For Exynos4 SoC series it should be "samsung,exynos4-sysreg", "syscon"; | 5 | For Exynos4 SoC series it should be "samsung,exynos4-sysreg", "syscon"; |
7 | - reg : offset and length of the register set. | 6 | - reg : offset and length of the register set. |
7 | |||
8 | Example: | ||
9 | syscon@10010000 { | ||
10 | compatible = "samsung,exynos4-sysreg", "syscon"; | ||
11 | reg = <0x10010000 0x400>; | ||
12 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/tegra.txt b/Documentation/devicetree/bindings/arm/tegra.txt index ed9c85334436..558ed4b4ef39 100644 --- a/Documentation/devicetree/bindings/arm/tegra.txt +++ b/Documentation/devicetree/bindings/arm/tegra.txt | |||
@@ -32,3 +32,8 @@ board-specific compatible values: | |||
32 | nvidia,whistler | 32 | nvidia,whistler |
33 | toradex,colibri_t20-512 | 33 | toradex,colibri_t20-512 |
34 | toradex,iris | 34 | toradex,iris |
35 | |||
36 | Trusted Foundations | ||
37 | ------------------------------------------- | ||
38 | Tegra supports the Trusted Foundation secure monitor. See the | ||
39 | "tlm,trusted-foundations" binding's documentation for more details. | ||
diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt index 1608a54e90e1..68ac65f82a1c 100644 --- a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt +++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt | |||
@@ -9,6 +9,7 @@ Required properties: | |||
9 | - compatible : Should contain "nvidia,tegra<chip>-pmc". | 9 | - compatible : Should contain "nvidia,tegra<chip>-pmc". |
10 | - reg : Offset and length of the register set for the device | 10 | - reg : Offset and length of the register set for the device |
11 | - clocks : Must contain an entry for each entry in clock-names. | 11 | - clocks : Must contain an entry for each entry in clock-names. |
12 | See ../clocks/clock-bindings.txt for details. | ||
12 | - clock-names : Must include the following entries: | 13 | - clock-names : Must include the following entries: |
13 | "pclk" (The Tegra clock of that name), | 14 | "pclk" (The Tegra clock of that name), |
14 | "clk32k_in" (The 32KHz clock input to Tegra). | 15 | "clk32k_in" (The 32KHz clock input to Tegra). |
diff --git a/Documentation/devicetree/bindings/arm/versatile-fpga-irq.txt b/Documentation/devicetree/bindings/arm/versatile-fpga-irq.txt index 9989eda755d9..c9cf605bb995 100644 --- a/Documentation/devicetree/bindings/arm/versatile-fpga-irq.txt +++ b/Documentation/devicetree/bindings/arm/versatile-fpga-irq.txt | |||
@@ -29,3 +29,8 @@ pic: pic@14000000 { | |||
29 | clear-mask = <0xffffffff>; | 29 | clear-mask = <0xffffffff>; |
30 | valid-mask = <0x003fffff>; | 30 | valid-mask = <0x003fffff>; |
31 | }; | 31 | }; |
32 | |||
33 | Optional properties: | ||
34 | - interrupts: if the FPGA IRQ controller is cascaded, i.e. if its IRQ | ||
35 | output is simply connected to the input of another IRQ controller, | ||
36 | then the parent IRQ shall be specified in this property. | ||
diff --git a/Documentation/devicetree/bindings/ata/marvell.txt b/Documentation/devicetree/bindings/ata/marvell.txt index b5cdd20cde9c..1c8351604d38 100644 --- a/Documentation/devicetree/bindings/ata/marvell.txt +++ b/Documentation/devicetree/bindings/ata/marvell.txt | |||
@@ -1,7 +1,7 @@ | |||
1 | * Marvell Orion SATA | 1 | * Marvell Orion SATA |
2 | 2 | ||
3 | Required Properties: | 3 | Required Properties: |
4 | - compatibility : "marvell,orion-sata" | 4 | - compatibility : "marvell,orion-sata" or "marvell,armada-370-sata" |
5 | - reg : Address range of controller | 5 | - reg : Address range of controller |
6 | - interrupts : Interrupt controller is using | 6 | - interrupts : Interrupt controller is using |
7 | - nr-ports : Number of SATA ports in use. | 7 | - nr-ports : Number of SATA ports in use. |
diff --git a/Documentation/devicetree/bindings/ata/sata_rcar.txt b/Documentation/devicetree/bindings/ata/sata_rcar.txt new file mode 100644 index 000000000000..1e6111333fa8 --- /dev/null +++ b/Documentation/devicetree/bindings/ata/sata_rcar.txt | |||
@@ -0,0 +1,18 @@ | |||
1 | * Renesas R-Car SATA | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : should contain one of the following: | ||
5 | - "renesas,sata-r8a7779" for R-Car H1 | ||
6 | - "renesas,sata-r8a7790" for R-Car H2 | ||
7 | - "renesas,sata-r8a7791" for R-Car M2 | ||
8 | - reg : address and length of the SATA registers; | ||
9 | - interrupts : must consist of one interrupt specifier. | ||
10 | |||
11 | Example: | ||
12 | |||
13 | sata: sata@fc600000 { | ||
14 | compatible = "renesas,sata-r8a7779"; | ||
15 | reg = <0xfc600000 0x2000>; | ||
16 | interrupt-parent = <&gic>; | ||
17 | interrupts = <0 100 IRQ_TYPE_LEVEL_HIGH>; | ||
18 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/at91-clock.txt b/Documentation/devicetree/bindings/clock/at91-clock.txt new file mode 100644 index 000000000000..cd5e23912888 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/at91-clock.txt | |||
@@ -0,0 +1,339 @@ | |||
1 | Device Tree Clock bindings for arch-at91 | ||
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 | "atmel,at91rm9200-pmc" or | ||
10 | "atmel,at91sam9g45-pmc" or | ||
11 | "atmel,at91sam9n12-pmc" or | ||
12 | "atmel,at91sam9x5-pmc" or | ||
13 | "atmel,sama5d3-pmc": | ||
14 | at91 PMC (Power Management Controller) | ||
15 | All at91 specific clocks (clocks defined below) must be child | ||
16 | node of the PMC node. | ||
17 | |||
18 | "atmel,at91rm9200-clk-main": | ||
19 | at91 main oscillator | ||
20 | |||
21 | "atmel,at91rm9200-clk-master" or | ||
22 | "atmel,at91sam9x5-clk-master": | ||
23 | at91 master clock | ||
24 | |||
25 | "atmel,at91sam9x5-clk-peripheral" or | ||
26 | "atmel,at91rm9200-clk-peripheral": | ||
27 | at91 peripheral clocks | ||
28 | |||
29 | "atmel,at91rm9200-clk-pll" or | ||
30 | "atmel,at91sam9g45-clk-pll" or | ||
31 | "atmel,at91sam9g20-clk-pllb" or | ||
32 | "atmel,sama5d3-clk-pll": | ||
33 | at91 pll clocks | ||
34 | |||
35 | "atmel,at91sam9x5-clk-plldiv": | ||
36 | at91 plla divisor | ||
37 | |||
38 | "atmel,at91rm9200-clk-programmable" or | ||
39 | "atmel,at91sam9g45-clk-programmable" or | ||
40 | "atmel,at91sam9x5-clk-programmable": | ||
41 | at91 programmable clocks | ||
42 | |||
43 | "atmel,at91sam9x5-clk-smd": | ||
44 | at91 SMD (Soft Modem) clock | ||
45 | |||
46 | "atmel,at91rm9200-clk-system": | ||
47 | at91 system clocks | ||
48 | |||
49 | "atmel,at91rm9200-clk-usb" or | ||
50 | "atmel,at91sam9x5-clk-usb" or | ||
51 | "atmel,at91sam9n12-clk-usb": | ||
52 | at91 usb clock | ||
53 | |||
54 | "atmel,at91sam9x5-clk-utmi": | ||
55 | at91 utmi clock | ||
56 | |||
57 | Required properties for PMC node: | ||
58 | - reg : defines the IO memory reserved for the PMC. | ||
59 | - #size-cells : shall be 0 (reg is used to encode clk id). | ||
60 | - #address-cells : shall be 1 (reg is used to encode clk id). | ||
61 | - interrupts : shall be set to PMC interrupt line. | ||
62 | - interrupt-controller : tell that the PMC is an interrupt controller. | ||
63 | - #interrupt-cells : must be set to 1. The first cell encodes the interrupt id, | ||
64 | and reflect the bit position in the PMC_ER/DR/SR registers. | ||
65 | You can use the dt macros defined in dt-bindings/clk/at91.h. | ||
66 | 0 (AT91_PMC_MOSCS) -> main oscillator ready | ||
67 | 1 (AT91_PMC_LOCKA) -> PLL A ready | ||
68 | 2 (AT91_PMC_LOCKB) -> PLL B ready | ||
69 | 3 (AT91_PMC_MCKRDY) -> master clock ready | ||
70 | 6 (AT91_PMC_LOCKU) -> UTMI PLL clock ready | ||
71 | 8 .. 15 (AT91_PMC_PCKRDY(id)) -> programmable clock ready | ||
72 | 16 (AT91_PMC_MOSCSELS) -> main oscillator selected | ||
73 | 17 (AT91_PMC_MOSCRCS) -> RC main oscillator stabilized | ||
74 | 18 (AT91_PMC_CFDEV) -> clock failure detected | ||
75 | |||
76 | For example: | ||
77 | pmc: pmc@fffffc00 { | ||
78 | compatible = "atmel,sama5d3-pmc"; | ||
79 | interrupts = <1 4 7>; | ||
80 | interrupt-controller; | ||
81 | #interrupt-cells = <2>; | ||
82 | #size-cells = <0>; | ||
83 | #address-cells = <1>; | ||
84 | |||
85 | /* put at91 clocks here */ | ||
86 | }; | ||
87 | |||
88 | Required properties for main clock: | ||
89 | - interrupt-parent : must reference the PMC node. | ||
90 | - interrupts : shall be set to "<0>". | ||
91 | - #clock-cells : from common clock binding; shall be set to 0. | ||
92 | - clocks (optional if clock-frequency is provided) : shall be the slow clock | ||
93 | phandle. This clock is used to calculate the main clock rate if | ||
94 | "clock-frequency" is not provided. | ||
95 | - clock-frequency : the main oscillator frequency.Prefer the use of | ||
96 | "clock-frequency" over automatic clock rate calculation. | ||
97 | |||
98 | For example: | ||
99 | main: mainck { | ||
100 | compatible = "atmel,at91rm9200-clk-main"; | ||
101 | interrupt-parent = <&pmc>; | ||
102 | interrupts = <0>; | ||
103 | #clock-cells = <0>; | ||
104 | clocks = <&ck32k>; | ||
105 | clock-frequency = <18432000>; | ||
106 | }; | ||
107 | |||
108 | Required properties for master clock: | ||
109 | - interrupt-parent : must reference the PMC node. | ||
110 | - interrupts : shall be set to "<3>". | ||
111 | - #clock-cells : from common clock binding; shall be set to 0. | ||
112 | - clocks : shall be the master clock sources (see atmel datasheet) phandles. | ||
113 | e.g. "<&ck32k>, <&main>, <&plla>, <&pllb>". | ||
114 | - atmel,clk-output-range : minimum and maximum clock frequency (two u32 | ||
115 | fields). | ||
116 | e.g. output = <0 133000000>; <=> 0 to 133MHz. | ||
117 | - atmel,clk-divisors : master clock divisors table (four u32 fields). | ||
118 | 0 <=> reserved value. | ||
119 | e.g. divisors = <1 2 4 6>; | ||
120 | - atmel,master-clk-have-div3-pres : some SoC use the reserved value 7 in the | ||
121 | PRES field as CLOCK_DIV3 (e.g sam9x5). | ||
122 | |||
123 | For example: | ||
124 | mck: mck { | ||
125 | compatible = "atmel,at91rm9200-clk-master"; | ||
126 | interrupt-parent = <&pmc>; | ||
127 | interrupts = <3>; | ||
128 | #clock-cells = <0>; | ||
129 | atmel,clk-output-range = <0 133000000>; | ||
130 | atmel,clk-divisors = <1 2 4 0>; | ||
131 | }; | ||
132 | |||
133 | Required properties for peripheral clocks: | ||
134 | - #size-cells : shall be 0 (reg is used to encode clk id). | ||
135 | - #address-cells : shall be 1 (reg is used to encode clk id). | ||
136 | - clocks : shall be the master clock phandle. | ||
137 | e.g. clocks = <&mck>; | ||
138 | - name: device tree node describing a specific system clock. | ||
139 | * #clock-cells : from common clock binding; shall be set to 0. | ||
140 | * reg: peripheral id. See Atmel's datasheets to get a full | ||
141 | list of peripheral ids. | ||
142 | * atmel,clk-output-range : minimum and maximum clock frequency | ||
143 | (two u32 fields). Only valid on at91sam9x5-clk-peripheral | ||
144 | compatible IPs. | ||
145 | |||
146 | For example: | ||
147 | periph: periphck { | ||
148 | compatible = "atmel,at91sam9x5-clk-peripheral"; | ||
149 | #size-cells = <0>; | ||
150 | #address-cells = <1>; | ||
151 | clocks = <&mck>; | ||
152 | |||
153 | ssc0_clk { | ||
154 | #clock-cells = <0>; | ||
155 | reg = <2>; | ||
156 | atmel,clk-output-range = <0 133000000>; | ||
157 | }; | ||
158 | |||
159 | usart0_clk { | ||
160 | #clock-cells = <0>; | ||
161 | reg = <3>; | ||
162 | atmel,clk-output-range = <0 66000000>; | ||
163 | }; | ||
164 | }; | ||
165 | |||
166 | |||
167 | Required properties for pll clocks: | ||
168 | - interrupt-parent : must reference the PMC node. | ||
169 | - interrupts : shall be set to "<1>". | ||
170 | - #clock-cells : from common clock binding; shall be set to 0. | ||
171 | - clocks : shall be the main clock phandle. | ||
172 | - reg : pll id. | ||
173 | 0 -> PLL A | ||
174 | 1 -> PLL B | ||
175 | - atmel,clk-input-range : minimum and maximum source clock frequency (two u32 | ||
176 | fields). | ||
177 | e.g. input = <1 32000000>; <=> 1 to 32MHz. | ||
178 | - #atmel,pll-clk-output-range-cells : number of cells reserved for pll output | ||
179 | range description. Sould be set to 2, 3 | ||
180 | or 4. | ||
181 | * 1st and 2nd cells represent the frequency range (min-max). | ||
182 | * 3rd cell is optional and represents the OUT field value for the given | ||
183 | range. | ||
184 | * 4th cell is optional and represents the ICPLL field (PLLICPR | ||
185 | register) | ||
186 | - atmel,pll-clk-output-ranges : pll output frequency ranges + optional parameter | ||
187 | depending on #atmel,pll-output-range-cells | ||
188 | property value. | ||
189 | |||
190 | For example: | ||
191 | plla: pllack { | ||
192 | compatible = "atmel,at91sam9g45-clk-pll"; | ||
193 | interrupt-parent = <&pmc>; | ||
194 | interrupts = <1>; | ||
195 | #clock-cells = <0>; | ||
196 | clocks = <&main>; | ||
197 | reg = <0>; | ||
198 | atmel,clk-input-range = <2000000 32000000>; | ||
199 | #atmel,pll-clk-output-range-cells = <4>; | ||
200 | atmel,pll-clk-output-ranges = <74500000 800000000 0 0 | ||
201 | 69500000 750000000 1 0 | ||
202 | 64500000 700000000 2 0 | ||
203 | 59500000 650000000 3 0 | ||
204 | 54500000 600000000 0 1 | ||
205 | 49500000 550000000 1 1 | ||
206 | 44500000 500000000 2 1 | ||
207 | 40000000 450000000 3 1>; | ||
208 | }; | ||
209 | |||
210 | Required properties for plldiv clocks (plldiv = pll / 2): | ||
211 | - #clock-cells : from common clock binding; shall be set to 0. | ||
212 | - clocks : shall be the plla clock phandle. | ||
213 | |||
214 | The pll divisor is equal to 2 and cannot be changed. | ||
215 | |||
216 | For example: | ||
217 | plladiv: plladivck { | ||
218 | compatible = "atmel,at91sam9x5-clk-plldiv"; | ||
219 | #clock-cells = <0>; | ||
220 | clocks = <&plla>; | ||
221 | }; | ||
222 | |||
223 | Required properties for programmable clocks: | ||
224 | - interrupt-parent : must reference the PMC node. | ||
225 | - #size-cells : shall be 0 (reg is used to encode clk id). | ||
226 | - #address-cells : shall be 1 (reg is used to encode clk id). | ||
227 | - clocks : shall be the programmable clock source phandles. | ||
228 | e.g. clocks = <&clk32k>, <&main>, <&plla>, <&pllb>; | ||
229 | - name: device tree node describing a specific prog clock. | ||
230 | * #clock-cells : from common clock binding; shall be set to 0. | ||
231 | * reg : programmable clock id (register offset from PCKx | ||
232 | register). | ||
233 | * interrupts : shall be set to "<(8 + id)>". | ||
234 | |||
235 | For example: | ||
236 | prog: progck { | ||
237 | compatible = "atmel,at91sam9g45-clk-programmable"; | ||
238 | #size-cells = <0>; | ||
239 | #address-cells = <1>; | ||
240 | interrupt-parent = <&pmc>; | ||
241 | clocks = <&clk32k>, <&main>, <&plladiv>, <&utmi>, <&mck>; | ||
242 | |||
243 | prog0 { | ||
244 | #clock-cells = <0>; | ||
245 | reg = <0>; | ||
246 | interrupts = <8>; | ||
247 | }; | ||
248 | |||
249 | prog1 { | ||
250 | #clock-cells = <0>; | ||
251 | reg = <1>; | ||
252 | interrupts = <9>; | ||
253 | }; | ||
254 | }; | ||
255 | |||
256 | |||
257 | Required properties for smd clock: | ||
258 | - #clock-cells : from common clock binding; shall be set to 0. | ||
259 | - clocks : shall be the smd clock source phandles. | ||
260 | e.g. clocks = <&plladiv>, <&utmi>; | ||
261 | |||
262 | For example: | ||
263 | smd: smdck { | ||
264 | compatible = "atmel,at91sam9x5-clk-smd"; | ||
265 | #clock-cells = <0>; | ||
266 | clocks = <&plladiv>, <&utmi>; | ||
267 | }; | ||
268 | |||
269 | Required properties for system clocks: | ||
270 | - #size-cells : shall be 0 (reg is used to encode clk id). | ||
271 | - #address-cells : shall be 1 (reg is used to encode clk id). | ||
272 | - name: device tree node describing a specific system clock. | ||
273 | * #clock-cells : from common clock binding; shall be set to 0. | ||
274 | * reg: system clock id (bit position in SCER/SCDR/SCSR registers). | ||
275 | See Atmel's datasheet to get a full list of system clock ids. | ||
276 | |||
277 | For example: | ||
278 | system: systemck { | ||
279 | compatible = "atmel,at91rm9200-clk-system"; | ||
280 | #address-cells = <1>; | ||
281 | #size-cells = <0>; | ||
282 | |||
283 | ddrck { | ||
284 | #clock-cells = <0>; | ||
285 | reg = <2>; | ||
286 | clocks = <&mck>; | ||
287 | }; | ||
288 | |||
289 | uhpck { | ||
290 | #clock-cells = <0>; | ||
291 | reg = <6>; | ||
292 | clocks = <&usb>; | ||
293 | }; | ||
294 | |||
295 | udpck { | ||
296 | #clock-cells = <0>; | ||
297 | reg = <7>; | ||
298 | clocks = <&usb>; | ||
299 | }; | ||
300 | }; | ||
301 | |||
302 | |||
303 | Required properties for usb clock: | ||
304 | - #clock-cells : from common clock binding; shall be set to 0. | ||
305 | - clocks : shall be the smd clock source phandles. | ||
306 | e.g. clocks = <&pllb>; | ||
307 | - atmel,clk-divisors (only available for "atmel,at91rm9200-clk-usb"): | ||
308 | usb clock divisor table. | ||
309 | e.g. divisors = <1 2 4 0>; | ||
310 | |||
311 | For example: | ||
312 | usb: usbck { | ||
313 | compatible = "atmel,at91sam9x5-clk-usb"; | ||
314 | #clock-cells = <0>; | ||
315 | clocks = <&plladiv>, <&utmi>; | ||
316 | }; | ||
317 | |||
318 | usb: usbck { | ||
319 | compatible = "atmel,at91rm9200-clk-usb"; | ||
320 | #clock-cells = <0>; | ||
321 | clocks = <&pllb>; | ||
322 | atmel,clk-divisors = <1 2 4 0>; | ||
323 | }; | ||
324 | |||
325 | |||
326 | Required properties for utmi clock: | ||
327 | - interrupt-parent : must reference the PMC node. | ||
328 | - interrupts : shall be set to "<AT91_PMC_LOCKU IRQ_TYPE_LEVEL_HIGH>". | ||
329 | - #clock-cells : from common clock binding; shall be set to 0. | ||
330 | - clocks : shall be the main clock source phandle. | ||
331 | |||
332 | For example: | ||
333 | utmi: utmick { | ||
334 | compatible = "atmel,at91sam9x5-clk-utmi"; | ||
335 | interrupt-parent = <&pmc>; | ||
336 | interrupts = <AT91_PMC_LOCKU IRQ_TYPE_LEVEL_HIGH>; | ||
337 | #clock-cells = <0>; | ||
338 | clocks = <&main>; | ||
339 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/bcm-kona-clock.txt b/Documentation/devicetree/bindings/clock/bcm-kona-clock.txt new file mode 100644 index 000000000000..56d1f4961075 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/bcm-kona-clock.txt | |||
@@ -0,0 +1,93 @@ | |||
1 | Broadcom Kona Family Clocks | ||
2 | |||
3 | This binding is associated with Broadcom SoCs having "Kona" style | ||
4 | clock control units (CCUs). A CCU is a clock provider that manages | ||
5 | a set of clock signals. Each CCU is represented by a node in the | ||
6 | device tree. | ||
7 | |||
8 | This binding uses the common clock binding: | ||
9 | Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
10 | |||
11 | Required properties: | ||
12 | - compatible | ||
13 | Shall have one of the following values: | ||
14 | - "brcm,bcm11351-root-ccu" | ||
15 | - "brcm,bcm11351-aon-ccu" | ||
16 | - "brcm,bcm11351-hub-ccu" | ||
17 | - "brcm,bcm11351-master-ccu" | ||
18 | - "brcm,bcm11351-slave-ccu" | ||
19 | - reg | ||
20 | Shall define the base and range of the address space | ||
21 | containing clock control registers | ||
22 | - #clock-cells | ||
23 | Shall have value <1>. The permitted clock-specifier values | ||
24 | are defined below. | ||
25 | - clock-output-names | ||
26 | Shall be an ordered list of strings defining the names of | ||
27 | the clocks provided by the CCU. | ||
28 | |||
29 | |||
30 | BCM281XX family SoCs use Kona CCUs. The following table defines | ||
31 | the set of CCUs and clock specifiers for BCM281XX clocks. When | ||
32 | a clock consumer references a clocks, its symbolic specifier | ||
33 | (rather than its numeric index value) should be used. These | ||
34 | specifiers are defined in "include/dt-bindings/clock/bcm281xx.h". | ||
35 | |||
36 | CCU Clock Type Index Specifier | ||
37 | --- ----- ---- ----- --------- | ||
38 | root frac_1m peri 0 BCM281XX_ROOT_CCU_FRAC_1M | ||
39 | |||
40 | aon hub_timer peri 0 BCM281XX_AON_CCU_HUB_TIMER | ||
41 | aon pmu_bsc peri 1 BCM281XX_AON_CCU_PMU_BSC | ||
42 | aon pmu_bsc_var peri 2 BCM281XX_AON_CCU_PMU_BSC_VAR | ||
43 | |||
44 | hub tmon_1m peri 0 BCM281XX_HUB_CCU_TMON_1M | ||
45 | |||
46 | master sdio1 peri 0 BCM281XX_MASTER_CCU_SDIO1 | ||
47 | master sdio2 peri 1 BCM281XX_MASTER_CCU_SDIO2 | ||
48 | master sdio3 peri 2 BCM281XX_MASTER_CCU_SDIO3 | ||
49 | master sdio4 peri 3 BCM281XX_MASTER_CCU_SDIO4 | ||
50 | master dmac peri 4 BCM281XX_MASTER_CCU_DMAC | ||
51 | master usb_ic peri 5 BCM281XX_MASTER_CCU_USB_IC | ||
52 | master hsic2_48m peri 6 BCM281XX_MASTER_CCU_HSIC_48M | ||
53 | master hsic2_12m peri 7 BCM281XX_MASTER_CCU_HSIC_12M | ||
54 | |||
55 | slave uartb peri 0 BCM281XX_SLAVE_CCU_UARTB | ||
56 | slave uartb2 peri 1 BCM281XX_SLAVE_CCU_UARTB2 | ||
57 | slave uartb3 peri 2 BCM281XX_SLAVE_CCU_UARTB3 | ||
58 | slave uartb4 peri 3 BCM281XX_SLAVE_CCU_UARTB4 | ||
59 | slave ssp0 peri 4 BCM281XX_SLAVE_CCU_SSP0 | ||
60 | slave ssp2 peri 5 BCM281XX_SLAVE_CCU_SSP2 | ||
61 | slave bsc1 peri 6 BCM281XX_SLAVE_CCU_BSC1 | ||
62 | slave bsc2 peri 7 BCM281XX_SLAVE_CCU_BSC2 | ||
63 | slave bsc3 peri 8 BCM281XX_SLAVE_CCU_BSC3 | ||
64 | slave pwm peri 9 BCM281XX_SLAVE_CCU_PWM | ||
65 | |||
66 | |||
67 | Device tree example: | ||
68 | |||
69 | slave_ccu: slave_ccu { | ||
70 | compatible = "brcm,bcm11351-slave-ccu"; | ||
71 | reg = <0x3e011000 0x0f00>; | ||
72 | #clock-cells = <1>; | ||
73 | clock-output-names = "uartb", | ||
74 | "uartb2", | ||
75 | "uartb3", | ||
76 | "uartb4"; | ||
77 | }; | ||
78 | |||
79 | ref_crystal_clk: ref_crystal { | ||
80 | #clock-cells = <0>; | ||
81 | compatible = "fixed-clock"; | ||
82 | clock-frequency = <26000000>; | ||
83 | }; | ||
84 | |||
85 | uart@3e002000 { | ||
86 | compatible = "brcm,bcm11351-dw-apb-uart", "snps,dw-apb-uart"; | ||
87 | status = "disabled"; | ||
88 | reg = <0x3e002000 0x1000>; | ||
89 | clocks = <&slave_ccu BCM281XX_SLAVE_CCU_UARTB3>; | ||
90 | interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>; | ||
91 | reg-shift = <2>; | ||
92 | reg-io-width = <4>; | ||
93 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/clk-exynos-audss.txt b/Documentation/devicetree/bindings/clock/clk-exynos-audss.txt index 75e2e1999f87..180e8835569e 100644 --- a/Documentation/devicetree/bindings/clock/clk-exynos-audss.txt +++ b/Documentation/devicetree/bindings/clock/clk-exynos-audss.txt | |||
@@ -8,12 +8,29 @@ Required Properties: | |||
8 | 8 | ||
9 | - compatible: should be one of the following: | 9 | - compatible: should be one of the following: |
10 | - "samsung,exynos4210-audss-clock" - controller compatible with all Exynos4 SoCs. | 10 | - "samsung,exynos4210-audss-clock" - controller compatible with all Exynos4 SoCs. |
11 | - "samsung,exynos5250-audss-clock" - controller compatible with all Exynos5 SoCs. | 11 | - "samsung,exynos5250-audss-clock" - controller compatible with Exynos5250 |
12 | 12 | SoCs. | |
13 | - "samsung,exynos5420-audss-clock" - controller compatible with Exynos5420 | ||
14 | SoCs. | ||
13 | - reg: physical base address and length of the controller's register set. | 15 | - reg: physical base address and length of the controller's register set. |
14 | 16 | ||
15 | - #clock-cells: should be 1. | 17 | - #clock-cells: should be 1. |
16 | 18 | ||
19 | - clocks: | ||
20 | - pll_ref: Fixed rate PLL reference clock, parent of mout_audss. "fin_pll" | ||
21 | is used if not specified. | ||
22 | - pll_in: Input PLL to the AudioSS block, parent of mout_audss. "fout_epll" | ||
23 | is used if not specified. | ||
24 | - cdclk: External i2s clock, parent of mout_i2s. "cdclk0" is used if not | ||
25 | specified. | ||
26 | - sclk_audio: Audio bus clock, parent of mout_i2s. "sclk_audio0" is used if | ||
27 | not specified. | ||
28 | - sclk_pcm_in: PCM clock, parent of sclk_pcm. "sclk_pcm0" is used if not | ||
29 | specified. | ||
30 | |||
31 | - clock-names: Aliases for the above clocks. They should be "pll_ref", | ||
32 | "pll_in", "cdclk", "sclk_audio", and "sclk_pcm_in" respectively. | ||
33 | |||
17 | The following is the list of clocks generated by the controller. Each clock is | 34 | The following is the list of clocks generated by the controller. Each clock is |
18 | assigned an identifier and client nodes use this identifier to specify the | 35 | assigned an identifier and client nodes use this identifier to specify the |
19 | clock which they consume. Some of the clocks are available only on a particular | 36 | clock which they consume. Some of the clocks are available only on a particular |
@@ -34,16 +51,30 @@ i2s_bus 6 | |||
34 | sclk_i2s 7 | 51 | sclk_i2s 7 |
35 | pcm_bus 8 | 52 | pcm_bus 8 |
36 | sclk_pcm 9 | 53 | sclk_pcm 9 |
54 | adma 10 Exynos5420 | ||
55 | |||
56 | Example 1: An example of a clock controller node using the default input | ||
57 | clock names is listed below. | ||
58 | |||
59 | clock_audss: audss-clock-controller@3810000 { | ||
60 | compatible = "samsung,exynos5250-audss-clock"; | ||
61 | reg = <0x03810000 0x0C>; | ||
62 | #clock-cells = <1>; | ||
63 | }; | ||
37 | 64 | ||
38 | Example 1: An example of a clock controller node is listed below. | 65 | Example 2: An example of a clock controller node with the input clocks |
66 | specified. | ||
39 | 67 | ||
40 | clock_audss: audss-clock-controller@3810000 { | 68 | clock_audss: audss-clock-controller@3810000 { |
41 | compatible = "samsung,exynos5250-audss-clock"; | 69 | compatible = "samsung,exynos5250-audss-clock"; |
42 | reg = <0x03810000 0x0C>; | 70 | reg = <0x03810000 0x0C>; |
43 | #clock-cells = <1>; | 71 | #clock-cells = <1>; |
72 | clocks = <&clock 1>, <&clock 7>, <&clock 138>, <&clock 160>, | ||
73 | <&ext_i2s_clk>; | ||
74 | clock-names = "pll_ref", "pll_in", "sclk_audio", "sclk_pcm_in", "cdclk"; | ||
44 | }; | 75 | }; |
45 | 76 | ||
46 | Example 2: I2S controller node that consumes the clock generated by the clock | 77 | Example 3: I2S controller node that consumes the clock generated by the clock |
47 | controller. Refer to the standard clock bindings for information | 78 | controller. Refer to the standard clock bindings for information |
48 | about 'clocks' and 'clock-names' property. | 79 | about 'clocks' and 'clock-names' property. |
49 | 80 | ||
diff --git a/Documentation/devicetree/bindings/clock/clock-bindings.txt b/Documentation/devicetree/bindings/clock/clock-bindings.txt index eb65d417f8c4..7c52c29d99fa 100644 --- a/Documentation/devicetree/bindings/clock/clock-bindings.txt +++ b/Documentation/devicetree/bindings/clock/clock-bindings.txt | |||
@@ -5,7 +5,7 @@ Sources of clock signal can be represented by any node in the device | |||
5 | tree. Those nodes are designated as clock providers. Clock consumer | 5 | tree. Those nodes are designated as clock providers. Clock consumer |
6 | nodes use a phandle and clock specifier pair to connect clock provider | 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 | 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 | 8 | specifier is an array of zero, one or more cells identifying the clock |
9 | output on a device. The length of a clock specifier is defined by the | 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. | 10 | value of a #clock-cells property in the clock provider node. |
11 | 11 | ||
diff --git a/Documentation/devicetree/bindings/clock/corenet-clock.txt b/Documentation/devicetree/bindings/clock/corenet-clock.txt new file mode 100644 index 000000000000..24711af48e30 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/corenet-clock.txt | |||
@@ -0,0 +1,134 @@ | |||
1 | * Clock Block on Freescale CoreNet Platforms | ||
2 | |||
3 | Freescale CoreNet chips take primary clocking input from the external | ||
4 | SYSCLK signal. The SYSCLK input (frequency) is multiplied using | ||
5 | multiple phase locked loops (PLL) to create a variety of frequencies | ||
6 | which can then be passed to a variety of internal logic, including | ||
7 | cores and peripheral IP blocks. | ||
8 | Please refer to the Reference Manual for details. | ||
9 | |||
10 | 1. Clock Block Binding | ||
11 | |||
12 | Required properties: | ||
13 | - compatible: Should contain a specific clock block compatible string | ||
14 | and a single chassis clock compatible string. | ||
15 | Clock block strings include, but not limited to, one of the: | ||
16 | * "fsl,p2041-clockgen" | ||
17 | * "fsl,p3041-clockgen" | ||
18 | * "fsl,p4080-clockgen" | ||
19 | * "fsl,p5020-clockgen" | ||
20 | * "fsl,p5040-clockgen" | ||
21 | * "fsl,t4240-clockgen" | ||
22 | * "fsl,b4420-clockgen" | ||
23 | * "fsl,b4860-clockgen" | ||
24 | Chassis clock strings include: | ||
25 | * "fsl,qoriq-clockgen-1.0": for chassis 1.0 clocks | ||
26 | * "fsl,qoriq-clockgen-2.0": for chassis 2.0 clocks | ||
27 | - reg: Describes the address of the device's resources within the | ||
28 | address space defined by its parent bus, and resource zero | ||
29 | represents the clock register set | ||
30 | - clock-frequency: Input system clock frequency | ||
31 | |||
32 | Recommended properties: | ||
33 | - ranges: Allows valid translation between child's address space and | ||
34 | parent's. Must be present if the device has sub-nodes. | ||
35 | - #address-cells: Specifies the number of cells used to represent | ||
36 | physical base addresses. Must be present if the device has | ||
37 | sub-nodes and set to 1 if present | ||
38 | - #size-cells: Specifies the number of cells used to represent | ||
39 | the size of an address. Must be present if the device has | ||
40 | sub-nodes and set to 1 if present | ||
41 | |||
42 | 2. Clock Provider/Consumer Binding | ||
43 | |||
44 | Most of the bindings are from the common clock binding[1]. | ||
45 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
46 | |||
47 | Required properties: | ||
48 | - compatible : Should include one of the following: | ||
49 | * "fsl,qoriq-core-pll-1.0" for core PLL clocks (v1.0) | ||
50 | * "fsl,qoriq-core-pll-2.0" for core PLL clocks (v2.0) | ||
51 | * "fsl,qoriq-core-mux-1.0" for core mux clocks (v1.0) | ||
52 | * "fsl,qoriq-core-mux-2.0" for core mux clocks (v2.0) | ||
53 | * "fsl,qoriq-sysclk-1.0": for input system clock (v1.0). | ||
54 | It takes parent's clock-frequency as its clock. | ||
55 | * "fsl,qoriq-sysclk-2.0": for input system clock (v2.0). | ||
56 | It takes parent's clock-frequency as its clock. | ||
57 | - #clock-cells: From common clock binding. The number of cells in a | ||
58 | clock-specifier. Should be <0> for "fsl,qoriq-sysclk-[1,2].0" | ||
59 | clocks, or <1> for "fsl,qoriq-core-pll-[1,2].0" clocks. | ||
60 | For "fsl,qoriq-core-pll-[1,2].0" clocks, the single | ||
61 | clock-specifier cell may take the following values: | ||
62 | * 0 - equal to the PLL frequency | ||
63 | * 1 - equal to the PLL frequency divided by 2 | ||
64 | * 2 - equal to the PLL frequency divided by 4 | ||
65 | |||
66 | Recommended properties: | ||
67 | - clocks: Should be the phandle of input parent clock | ||
68 | - clock-names: From common clock binding, indicates the clock name | ||
69 | - clock-output-names: From common clock binding, indicates the names of | ||
70 | output clocks | ||
71 | - reg: Should be the offset and length of clock block base address. | ||
72 | The length should be 4. | ||
73 | |||
74 | Example for clock block and clock provider: | ||
75 | / { | ||
76 | clockgen: global-utilities@e1000 { | ||
77 | compatible = "fsl,p5020-clockgen", "fsl,qoriq-clockgen-1.0"; | ||
78 | ranges = <0x0 0xe1000 0x1000>; | ||
79 | clock-frequency = <133333333>; | ||
80 | reg = <0xe1000 0x1000>; | ||
81 | #address-cells = <1>; | ||
82 | #size-cells = <1>; | ||
83 | |||
84 | sysclk: sysclk { | ||
85 | #clock-cells = <0>; | ||
86 | compatible = "fsl,qoriq-sysclk-1.0"; | ||
87 | clock-output-names = "sysclk"; | ||
88 | } | ||
89 | |||
90 | pll0: pll0@800 { | ||
91 | #clock-cells = <1>; | ||
92 | reg = <0x800 0x4>; | ||
93 | compatible = "fsl,qoriq-core-pll-1.0"; | ||
94 | clocks = <&sysclk>; | ||
95 | clock-output-names = "pll0", "pll0-div2"; | ||
96 | }; | ||
97 | |||
98 | pll1: pll1@820 { | ||
99 | #clock-cells = <1>; | ||
100 | reg = <0x820 0x4>; | ||
101 | compatible = "fsl,qoriq-core-pll-1.0"; | ||
102 | clocks = <&sysclk>; | ||
103 | clock-output-names = "pll1", "pll1-div2"; | ||
104 | }; | ||
105 | |||
106 | mux0: mux0@0 { | ||
107 | #clock-cells = <0>; | ||
108 | reg = <0x0 0x4>; | ||
109 | compatible = "fsl,qoriq-core-mux-1.0"; | ||
110 | clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>; | ||
111 | clock-names = "pll0", "pll0-div2", "pll1", "pll1-div2"; | ||
112 | clock-output-names = "cmux0"; | ||
113 | }; | ||
114 | |||
115 | mux1: mux1@20 { | ||
116 | #clock-cells = <0>; | ||
117 | reg = <0x20 0x4>; | ||
118 | compatible = "fsl,qoriq-core-mux-1.0"; | ||
119 | clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>; | ||
120 | clock-names = "pll0", "pll0-div2", "pll1", "pll1-div2"; | ||
121 | clock-output-names = "cmux1"; | ||
122 | }; | ||
123 | }; | ||
124 | } | ||
125 | |||
126 | Example for clock consumer: | ||
127 | |||
128 | / { | ||
129 | cpu0: PowerPC,e5500@0 { | ||
130 | ... | ||
131 | clocks = <&mux0>; | ||
132 | ... | ||
133 | }; | ||
134 | } | ||
diff --git a/Documentation/devicetree/bindings/clock/emev2-clock.txt b/Documentation/devicetree/bindings/clock/emev2-clock.txt new file mode 100644 index 000000000000..60bbb1a8c69a --- /dev/null +++ b/Documentation/devicetree/bindings/clock/emev2-clock.txt | |||
@@ -0,0 +1,98 @@ | |||
1 | Device tree Clock bindings for Renesas EMMA Mobile EV2 | ||
2 | |||
3 | This binding uses the common clock binding. | ||
4 | |||
5 | * SMU | ||
6 | System Management Unit described in user's manual R19UH0037EJ1000_SMU. | ||
7 | This is not a clock provider, but clocks under SMU depend on it. | ||
8 | |||
9 | Required properties: | ||
10 | - compatible: Should be "renesas,emev2-smu" | ||
11 | - reg: Address and Size of SMU registers | ||
12 | |||
13 | * SMU_CLKDIV | ||
14 | Function block with an input mux and a divider, which corresponds to | ||
15 | "Serial clock generator" in fig."Clock System Overview" of the manual, | ||
16 | and "xxx frequency division setting register" (XXXCLKDIV) registers. | ||
17 | This makes internal (neither input nor output) clock that is provided | ||
18 | to input of xxxGCLK block. | ||
19 | |||
20 | Required properties: | ||
21 | - compatible: Should be "renesas,emev2-smu-clkdiv" | ||
22 | - reg: Byte offset from SMU base and Bit position in the register | ||
23 | - clocks: Parent clocks. Input clocks as described in clock-bindings.txt | ||
24 | - #clock-cells: Should be <0> | ||
25 | |||
26 | * SMU_GCLK | ||
27 | Clock gating node shown as "Clock stop processing block" in the | ||
28 | fig."Clock System Overview" of the manual. | ||
29 | Registers are "xxx clock gate control register" (XXXGCLKCTRL). | ||
30 | |||
31 | Required properties: | ||
32 | - compatible: Should be "renesas,emev2-smu-gclk" | ||
33 | - reg: Byte offset from SMU base and Bit position in the register | ||
34 | - clocks: Input clock as described in clock-bindings.txt | ||
35 | - #clock-cells: Should be <0> | ||
36 | |||
37 | Example of provider: | ||
38 | |||
39 | usia_u0_sclkdiv: usia_u0_sclkdiv { | ||
40 | compatible = "renesas,emev2-smu-clkdiv"; | ||
41 | reg = <0x610 0>; | ||
42 | clocks = <&pll3_fo>, <&pll4_fo>, <&pll1_fo>, <&osc1_fo>; | ||
43 | #clock-cells = <0>; | ||
44 | }; | ||
45 | |||
46 | usia_u0_sclk: usia_u0_sclk { | ||
47 | compatible = "renesas,emev2-smu-gclk"; | ||
48 | reg = <0x4a0 1>; | ||
49 | clocks = <&usia_u0_sclkdiv>; | ||
50 | #clock-cells = <0>; | ||
51 | }; | ||
52 | |||
53 | Example of consumer: | ||
54 | |||
55 | uart@e1020000 { | ||
56 | compatible = "renesas,em-uart"; | ||
57 | reg = <0xe1020000 0x38>; | ||
58 | interrupts = <0 8 0>; | ||
59 | clocks = <&usia_u0_sclk>; | ||
60 | clock-names = "sclk"; | ||
61 | }; | ||
62 | |||
63 | Example of clock-tree description: | ||
64 | |||
65 | This describes a clock path in the clock tree | ||
66 | c32ki -> pll3_fo -> usia_u0_sclkdiv -> usia_u0_sclk | ||
67 | |||
68 | smu@e0110000 { | ||
69 | compatible = "renesas,emev2-smu"; | ||
70 | reg = <0xe0110000 0x10000>; | ||
71 | #address-cells = <2>; | ||
72 | #size-cells = <0>; | ||
73 | |||
74 | c32ki: c32ki { | ||
75 | compatible = "fixed-clock"; | ||
76 | clock-frequency = <32768>; | ||
77 | #clock-cells = <0>; | ||
78 | }; | ||
79 | pll3_fo: pll3_fo { | ||
80 | compatible = "fixed-factor-clock"; | ||
81 | clocks = <&c32ki>; | ||
82 | clock-div = <1>; | ||
83 | clock-mult = <7000>; | ||
84 | #clock-cells = <0>; | ||
85 | }; | ||
86 | usia_u0_sclkdiv: usia_u0_sclkdiv { | ||
87 | compatible = "renesas,emev2-smu-clkdiv"; | ||
88 | reg = <0x610 0>; | ||
89 | clocks = <&pll3_fo>; | ||
90 | #clock-cells = <0>; | ||
91 | }; | ||
92 | usia_u0_sclk: usia_u0_sclk { | ||
93 | compatible = "renesas,emev2-smu-gclk"; | ||
94 | reg = <0x4a0 1>; | ||
95 | clocks = <&usia_u0_sclkdiv>; | ||
96 | #clock-cells = <0>; | ||
97 | }; | ||
98 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/exynos5250-clock.txt b/Documentation/devicetree/bindings/clock/exynos5250-clock.txt index 0f2f920e8734..72ce617dea82 100644 --- a/Documentation/devicetree/bindings/clock/exynos5250-clock.txt +++ b/Documentation/devicetree/bindings/clock/exynos5250-clock.txt | |||
@@ -62,6 +62,7 @@ clock which they consume. | |||
62 | div_i2s1 157 | 62 | div_i2s1 157 |
63 | div_i2s2 158 | 63 | div_i2s2 158 |
64 | sclk_hdmiphy 159 | 64 | sclk_hdmiphy 159 |
65 | div_pcm0 160 | ||
65 | 66 | ||
66 | 67 | ||
67 | [Peripheral Clock Gates] | 68 | [Peripheral Clock Gates] |
diff --git a/Documentation/devicetree/bindings/clock/fixed-clock.txt b/Documentation/devicetree/bindings/clock/fixed-clock.txt index 0b1fe7824093..48ea0ad8ad46 100644 --- a/Documentation/devicetree/bindings/clock/fixed-clock.txt +++ b/Documentation/devicetree/bindings/clock/fixed-clock.txt | |||
@@ -10,6 +10,8 @@ Required properties: | |||
10 | - clock-frequency : frequency of clock in Hz. Should be a single cell. | 10 | - clock-frequency : frequency of clock in Hz. Should be a single cell. |
11 | 11 | ||
12 | Optional properties: | 12 | Optional properties: |
13 | - clock-accuracy : accuracy of clock in ppb (parts per billion). | ||
14 | Should be a single cell. | ||
13 | - gpios : From common gpio binding; gpio connection to clock enable pin. | 15 | - gpios : From common gpio binding; gpio connection to clock enable pin. |
14 | - clock-output-names : From common clock binding. | 16 | - clock-output-names : From common clock binding. |
15 | 17 | ||
@@ -18,4 +20,5 @@ Example: | |||
18 | compatible = "fixed-clock"; | 20 | compatible = "fixed-clock"; |
19 | #clock-cells = <0>; | 21 | #clock-cells = <0>; |
20 | clock-frequency = <1000000000>; | 22 | clock-frequency = <1000000000>; |
23 | clock-accuracy = <100>; | ||
21 | }; | 24 | }; |
diff --git a/Documentation/devicetree/bindings/clock/fixed-factor-clock.txt b/Documentation/devicetree/bindings/clock/fixed-factor-clock.txt index 5757f9abfc26..1bae8527eb9b 100644 --- a/Documentation/devicetree/bindings/clock/fixed-factor-clock.txt +++ b/Documentation/devicetree/bindings/clock/fixed-factor-clock.txt | |||
@@ -19,6 +19,6 @@ Example: | |||
19 | compatible = "fixed-factor-clock"; | 19 | compatible = "fixed-factor-clock"; |
20 | clocks = <&parentclk>; | 20 | clocks = <&parentclk>; |
21 | #clock-cells = <0>; | 21 | #clock-cells = <0>; |
22 | div = <2>; | 22 | clock-div = <2>; |
23 | mult = <1>; | 23 | clock-mult = <1>; |
24 | }; | 24 | }; |
diff --git a/Documentation/devicetree/bindings/clock/hi3620-clock.txt b/Documentation/devicetree/bindings/clock/hi3620-clock.txt new file mode 100644 index 000000000000..4b71ab41be53 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/hi3620-clock.txt | |||
@@ -0,0 +1,19 @@ | |||
1 | * Hisilicon Hi3620 Clock Controller | ||
2 | |||
3 | The Hi3620 clock controller generates and supplies clock to various | ||
4 | controllers within the Hi3620 SoC. | ||
5 | |||
6 | Required Properties: | ||
7 | |||
8 | - compatible: should be one of the following. | ||
9 | - "hisilicon,hi3620-clock" - controller compatible with Hi3620 SoC. | ||
10 | |||
11 | - reg: physical base address of the controller and length of memory mapped | ||
12 | region. | ||
13 | |||
14 | - #clock-cells: should be 1. | ||
15 | |||
16 | Each clock is assigned an identifier and client nodes use this identifier | ||
17 | to specify the clock which they consume. | ||
18 | |||
19 | All these identifier could be found in <dt-bindings/clock/hi3620-clock.h>. | ||
diff --git a/Documentation/devicetree/bindings/clock/imx35-clock.txt b/Documentation/devicetree/bindings/clock/imx35-clock.txt new file mode 100644 index 000000000000..a70356452a82 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/imx35-clock.txt | |||
@@ -0,0 +1,113 @@ | |||
1 | * Clock bindings for Freescale i.MX35 | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be "fsl,imx35-ccm" | ||
5 | - reg: Address and length of the register set | ||
6 | - interrupts: Should contain CCM interrupt | ||
7 | - #clock-cells: Should be <1> | ||
8 | |||
9 | The clock consumer should specify the desired clock by having the clock | ||
10 | ID in its "clocks" phandle cell. The following is a full list of i.MX35 | ||
11 | clocks and IDs. | ||
12 | |||
13 | Clock ID | ||
14 | --------------------------- | ||
15 | ckih 0 | ||
16 | mpll 1 | ||
17 | ppll 2 | ||
18 | mpll_075 3 | ||
19 | arm 4 | ||
20 | hsp 5 | ||
21 | hsp_div 6 | ||
22 | hsp_sel 7 | ||
23 | ahb 8 | ||
24 | ipg 9 | ||
25 | arm_per_div 10 | ||
26 | ahb_per_div 11 | ||
27 | ipg_per 12 | ||
28 | uart_sel 13 | ||
29 | uart_div 14 | ||
30 | esdhc_sel 15 | ||
31 | esdhc1_div 16 | ||
32 | esdhc2_div 17 | ||
33 | esdhc3_div 18 | ||
34 | spdif_sel 19 | ||
35 | spdif_div_pre 20 | ||
36 | spdif_div_post 21 | ||
37 | ssi_sel 22 | ||
38 | ssi1_div_pre 23 | ||
39 | ssi1_div_post 24 | ||
40 | ssi2_div_pre 25 | ||
41 | ssi2_div_post 26 | ||
42 | usb_sel 27 | ||
43 | usb_div 28 | ||
44 | nfc_div 29 | ||
45 | asrc_gate 30 | ||
46 | pata_gate 31 | ||
47 | audmux_gate 32 | ||
48 | can1_gate 33 | ||
49 | can2_gate 34 | ||
50 | cspi1_gate 35 | ||
51 | cspi2_gate 36 | ||
52 | ect_gate 37 | ||
53 | edio_gate 38 | ||
54 | emi_gate 39 | ||
55 | epit1_gate 40 | ||
56 | epit2_gate 41 | ||
57 | esai_gate 42 | ||
58 | esdhc1_gate 43 | ||
59 | esdhc2_gate 44 | ||
60 | esdhc3_gate 45 | ||
61 | fec_gate 46 | ||
62 | gpio1_gate 47 | ||
63 | gpio2_gate 48 | ||
64 | gpio3_gate 49 | ||
65 | gpt_gate 50 | ||
66 | i2c1_gate 51 | ||
67 | i2c2_gate 52 | ||
68 | i2c3_gate 53 | ||
69 | iomuxc_gate 54 | ||
70 | ipu_gate 55 | ||
71 | kpp_gate 56 | ||
72 | mlb_gate 57 | ||
73 | mshc_gate 58 | ||
74 | owire_gate 59 | ||
75 | pwm_gate 60 | ||
76 | rngc_gate 61 | ||
77 | rtc_gate 62 | ||
78 | rtic_gate 63 | ||
79 | scc_gate 64 | ||
80 | sdma_gate 65 | ||
81 | spba_gate 66 | ||
82 | spdif_gate 67 | ||
83 | ssi1_gate 68 | ||
84 | ssi2_gate 69 | ||
85 | uart1_gate 70 | ||
86 | uart2_gate 71 | ||
87 | uart3_gate 72 | ||
88 | usbotg_gate 73 | ||
89 | wdog_gate 74 | ||
90 | max_gate 75 | ||
91 | admux_gate 76 | ||
92 | csi_gate 77 | ||
93 | csi_div 78 | ||
94 | csi_sel 79 | ||
95 | iim_gate 80 | ||
96 | gpu2d_gate 81 | ||
97 | |||
98 | Examples: | ||
99 | |||
100 | clks: ccm@53f80000 { | ||
101 | compatible = "fsl,imx35-ccm"; | ||
102 | reg = <0x53f80000 0x4000>; | ||
103 | interrupts = <31>; | ||
104 | #clock-cells = <1>; | ||
105 | }; | ||
106 | |||
107 | esdhc1: esdhc@53fb4000 { | ||
108 | compatible = "fsl,imx35-esdhc"; | ||
109 | reg = <0x53fb4000 0x4000>; | ||
110 | interrupts = <7>; | ||
111 | clocks = <&clks 9>, <&clks 8>, <&clks 43>; | ||
112 | clock-names = "ipg", "ahb", "per"; | ||
113 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/imx5-clock.txt b/Documentation/devicetree/bindings/clock/imx5-clock.txt index 4c029a8739d3..cadc4d29ada6 100644 --- a/Documentation/devicetree/bindings/clock/imx5-clock.txt +++ b/Documentation/devicetree/bindings/clock/imx5-clock.txt | |||
@@ -7,197 +7,8 @@ Required properties: | |||
7 | - #clock-cells: Should be <1> | 7 | - #clock-cells: Should be <1> |
8 | 8 | ||
9 | The clock consumer should specify the desired clock by having the clock | 9 | The clock consumer should specify the desired clock by having the clock |
10 | ID in its "clocks" phandle cell. The following is a full list of i.MX5 | 10 | ID in its "clocks" phandle cell. See include/dt-bindings/clock/imx5-clock.h |
11 | clocks and IDs. | 11 | for the full list of i.MX5 clock IDs. |
12 | |||
13 | Clock ID | ||
14 | --------------------------- | ||
15 | dummy 0 | ||
16 | ckil 1 | ||
17 | osc 2 | ||
18 | ckih1 3 | ||
19 | ckih2 4 | ||
20 | ahb 5 | ||
21 | ipg 6 | ||
22 | axi_a 7 | ||
23 | axi_b 8 | ||
24 | uart_pred 9 | ||
25 | uart_root 10 | ||
26 | esdhc_a_pred 11 | ||
27 | esdhc_b_pred 12 | ||
28 | esdhc_c_s 13 | ||
29 | esdhc_d_s 14 | ||
30 | emi_sel 15 | ||
31 | emi_slow_podf 16 | ||
32 | nfc_podf 17 | ||
33 | ecspi_pred 18 | ||
34 | ecspi_podf 19 | ||
35 | usboh3_pred 20 | ||
36 | usboh3_podf 21 | ||
37 | usb_phy_pred 22 | ||
38 | usb_phy_podf 23 | ||
39 | cpu_podf 24 | ||
40 | di_pred 25 | ||
41 | tve_s 27 | ||
42 | uart1_ipg_gate 28 | ||
43 | uart1_per_gate 29 | ||
44 | uart2_ipg_gate 30 | ||
45 | uart2_per_gate 31 | ||
46 | uart3_ipg_gate 32 | ||
47 | uart3_per_gate 33 | ||
48 | i2c1_gate 34 | ||
49 | i2c2_gate 35 | ||
50 | gpt_ipg_gate 36 | ||
51 | pwm1_ipg_gate 37 | ||
52 | pwm1_hf_gate 38 | ||
53 | pwm2_ipg_gate 39 | ||
54 | pwm2_hf_gate 40 | ||
55 | gpt_hf_gate 41 | ||
56 | fec_gate 42 | ||
57 | usboh3_per_gate 43 | ||
58 | esdhc1_ipg_gate 44 | ||
59 | esdhc2_ipg_gate 45 | ||
60 | esdhc3_ipg_gate 46 | ||
61 | esdhc4_ipg_gate 47 | ||
62 | ssi1_ipg_gate 48 | ||
63 | ssi2_ipg_gate 49 | ||
64 | ssi3_ipg_gate 50 | ||
65 | ecspi1_ipg_gate 51 | ||
66 | ecspi1_per_gate 52 | ||
67 | ecspi2_ipg_gate 53 | ||
68 | ecspi2_per_gate 54 | ||
69 | cspi_ipg_gate 55 | ||
70 | sdma_gate 56 | ||
71 | emi_slow_gate 57 | ||
72 | ipu_s 58 | ||
73 | ipu_gate 59 | ||
74 | nfc_gate 60 | ||
75 | ipu_di1_gate 61 | ||
76 | vpu_s 62 | ||
77 | vpu_gate 63 | ||
78 | vpu_reference_gate 64 | ||
79 | uart4_ipg_gate 65 | ||
80 | uart4_per_gate 66 | ||
81 | uart5_ipg_gate 67 | ||
82 | uart5_per_gate 68 | ||
83 | tve_gate 69 | ||
84 | tve_pred 70 | ||
85 | esdhc1_per_gate 71 | ||
86 | esdhc2_per_gate 72 | ||
87 | esdhc3_per_gate 73 | ||
88 | esdhc4_per_gate 74 | ||
89 | usb_phy_gate 75 | ||
90 | hsi2c_gate 76 | ||
91 | mipi_hsc1_gate 77 | ||
92 | mipi_hsc2_gate 78 | ||
93 | mipi_esc_gate 79 | ||
94 | mipi_hsp_gate 80 | ||
95 | ldb_di1_div_3_5 81 | ||
96 | ldb_di1_div 82 | ||
97 | ldb_di0_div_3_5 83 | ||
98 | ldb_di0_div 84 | ||
99 | ldb_di1_gate 85 | ||
100 | can2_serial_gate 86 | ||
101 | can2_ipg_gate 87 | ||
102 | i2c3_gate 88 | ||
103 | lp_apm 89 | ||
104 | periph_apm 90 | ||
105 | main_bus 91 | ||
106 | ahb_max 92 | ||
107 | aips_tz1 93 | ||
108 | aips_tz2 94 | ||
109 | tmax1 95 | ||
110 | tmax2 96 | ||
111 | tmax3 97 | ||
112 | spba 98 | ||
113 | uart_sel 99 | ||
114 | esdhc_a_sel 100 | ||
115 | esdhc_b_sel 101 | ||
116 | esdhc_a_podf 102 | ||
117 | esdhc_b_podf 103 | ||
118 | ecspi_sel 104 | ||
119 | usboh3_sel 105 | ||
120 | usb_phy_sel 106 | ||
121 | iim_gate 107 | ||
122 | usboh3_gate 108 | ||
123 | emi_fast_gate 109 | ||
124 | ipu_di0_gate 110 | ||
125 | gpc_dvfs 111 | ||
126 | pll1_sw 112 | ||
127 | pll2_sw 113 | ||
128 | pll3_sw 114 | ||
129 | ipu_di0_sel 115 | ||
130 | ipu_di1_sel 116 | ||
131 | tve_ext_sel 117 | ||
132 | mx51_mipi 118 | ||
133 | pll4_sw 119 | ||
134 | ldb_di1_sel 120 | ||
135 | di_pll4_podf 121 | ||
136 | ldb_di0_sel 122 | ||
137 | ldb_di0_gate 123 | ||
138 | usb_phy1_gate 124 | ||
139 | usb_phy2_gate 125 | ||
140 | per_lp_apm 126 | ||
141 | per_pred1 127 | ||
142 | per_pred2 128 | ||
143 | per_podf 129 | ||
144 | per_root 130 | ||
145 | ssi_apm 131 | ||
146 | ssi1_root_sel 132 | ||
147 | ssi2_root_sel 133 | ||
148 | ssi3_root_sel 134 | ||
149 | ssi_ext1_sel 135 | ||
150 | ssi_ext2_sel 136 | ||
151 | ssi_ext1_com_sel 137 | ||
152 | ssi_ext2_com_sel 138 | ||
153 | ssi1_root_pred 139 | ||
154 | ssi1_root_podf 140 | ||
155 | ssi2_root_pred 141 | ||
156 | ssi2_root_podf 142 | ||
157 | ssi_ext1_pred 143 | ||
158 | ssi_ext1_podf 144 | ||
159 | ssi_ext2_pred 145 | ||
160 | ssi_ext2_podf 146 | ||
161 | ssi1_root_gate 147 | ||
162 | ssi2_root_gate 148 | ||
163 | ssi3_root_gate 149 | ||
164 | ssi_ext1_gate 150 | ||
165 | ssi_ext2_gate 151 | ||
166 | epit1_ipg_gate 152 | ||
167 | epit1_hf_gate 153 | ||
168 | epit2_ipg_gate 154 | ||
169 | epit2_hf_gate 155 | ||
170 | can_sel 156 | ||
171 | can1_serial_gate 157 | ||
172 | can1_ipg_gate 158 | ||
173 | owire_gate 159 | ||
174 | gpu3d_s 160 | ||
175 | gpu2d_s 161 | ||
176 | gpu3d_gate 162 | ||
177 | gpu2d_gate 163 | ||
178 | garb_gate 164 | ||
179 | cko1_sel 165 | ||
180 | cko1_podf 166 | ||
181 | cko1 167 | ||
182 | cko2_sel 168 | ||
183 | cko2_podf 169 | ||
184 | cko2 170 | ||
185 | srtc_gate 171 | ||
186 | pata_gate 172 | ||
187 | sata_gate 173 | ||
188 | spdif_xtal_sel 174 | ||
189 | spdif0_sel 175 | ||
190 | spdif1_sel 176 | ||
191 | spdif0_pred 177 | ||
192 | spdif0_podf 178 | ||
193 | spdif1_pred 179 | ||
194 | spdif1_podf 180 | ||
195 | spdif0_com_sel 181 | ||
196 | spdif1_com_sel 182 | ||
197 | spdif0_gate 183 | ||
198 | spdif1_gate 184 | ||
199 | spdif_ipg_gate 185 | ||
200 | ocram 186 | ||
201 | 12 | ||
202 | Examples (for mx53): | 13 | Examples (for mx53): |
203 | 14 | ||
@@ -212,7 +23,7 @@ can1: can@53fc8000 { | |||
212 | compatible = "fsl,imx53-flexcan", "fsl,p1010-flexcan"; | 23 | compatible = "fsl,imx53-flexcan", "fsl,p1010-flexcan"; |
213 | reg = <0x53fc8000 0x4000>; | 24 | reg = <0x53fc8000 0x4000>; |
214 | interrupts = <82>; | 25 | interrupts = <82>; |
215 | clocks = <&clks 158>, <&clks 157>; | 26 | clocks = <&clks IMX5_CLK_CAN1_IPG_GATE>, <&clks IMX5_CLK_CAN1_SERIAL_GATE>; |
216 | clock-names = "ipg", "per"; | 27 | clock-names = "ipg", "per"; |
217 | status = "disabled"; | 28 | status = "disabled"; |
218 | }; | 29 | }; |
diff --git a/Documentation/devicetree/bindings/clock/keystone-pll.txt b/Documentation/devicetree/bindings/clock/keystone-pll.txt index 12bd72605a31..225990f79b7c 100644 --- a/Documentation/devicetree/bindings/clock/keystone-pll.txt +++ b/Documentation/devicetree/bindings/clock/keystone-pll.txt | |||
@@ -17,13 +17,14 @@ Required properties: | |||
17 | - reg - pll control0 and pll multipler registers | 17 | - reg - pll control0 and pll multipler registers |
18 | - reg-names : control and multiplier. The multiplier is applicable only for | 18 | - reg-names : control and multiplier. The multiplier is applicable only for |
19 | main pll clock | 19 | main pll clock |
20 | - fixed-postdiv : fixed post divider value | 20 | - fixed-postdiv : fixed post divider value. If absent, use clkod register bits |
21 | for postdiv | ||
21 | 22 | ||
22 | Example: | 23 | Example: |
23 | mainpllclk: mainpllclk@2310110 { | 24 | mainpllclk: mainpllclk@2310110 { |
24 | #clock-cells = <0>; | 25 | #clock-cells = <0>; |
25 | compatible = "ti,keystone,main-pll-clock"; | 26 | compatible = "ti,keystone,main-pll-clock"; |
26 | clocks = <&refclkmain>; | 27 | clocks = <&refclksys>; |
27 | reg = <0x02620350 4>, <0x02310110 4>; | 28 | reg = <0x02620350 4>, <0x02310110 4>; |
28 | reg-names = "control", "multiplier"; | 29 | reg-names = "control", "multiplier"; |
29 | fixed-postdiv = <2>; | 30 | fixed-postdiv = <2>; |
@@ -32,11 +33,10 @@ Example: | |||
32 | papllclk: papllclk@2620358 { | 33 | papllclk: papllclk@2620358 { |
33 | #clock-cells = <0>; | 34 | #clock-cells = <0>; |
34 | compatible = "ti,keystone,pll-clock"; | 35 | compatible = "ti,keystone,pll-clock"; |
35 | clocks = <&refclkmain>; | 36 | clocks = <&refclkpass>; |
36 | clock-output-names = "pa-pll-clk"; | 37 | clock-output-names = "pa-pll-clk"; |
37 | reg = <0x02620358 4>; | 38 | reg = <0x02620358 4>; |
38 | reg-names = "control"; | 39 | reg-names = "control"; |
39 | fixed-postdiv = <6>; | ||
40 | }; | 40 | }; |
41 | 41 | ||
42 | Required properties: | 42 | Required properties: |
diff --git a/Documentation/devicetree/bindings/clock/maxim,max77686.txt b/Documentation/devicetree/bindings/clock/maxim,max77686.txt new file mode 100644 index 000000000000..96ce71bbd745 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/maxim,max77686.txt | |||
@@ -0,0 +1,38 @@ | |||
1 | Binding for Maxim MAX77686 32k clock generator block | ||
2 | |||
3 | This is a part of device tree bindings of MAX77686 multi-function device. | ||
4 | More information can be found in bindings/mfd/max77686.txt file. | ||
5 | |||
6 | The MAX77686 contains three 32.768khz clock outputs that can be controlled | ||
7 | (gated/ungated) over I2C. | ||
8 | |||
9 | Following properties should be presend in main device node of the MFD chip. | ||
10 | |||
11 | Required properties: | ||
12 | - #clock-cells: simple one-cell clock specifier format is used, where the | ||
13 | only cell is used as an index of the clock inside the provider. Following | ||
14 | indices are allowed: | ||
15 | - 0: 32khz_ap clock, | ||
16 | - 1: 32khz_cp clock, | ||
17 | - 2: 32khz_pmic clock. | ||
18 | |||
19 | Example: Node of the MFD chip | ||
20 | |||
21 | max77686: max77686@09 { | ||
22 | compatible = "maxim,max77686"; | ||
23 | interrupt-parent = <&wakeup_eint>; | ||
24 | interrupts = <26 0>; | ||
25 | reg = <0x09>; | ||
26 | #clock-cells = <1>; | ||
27 | |||
28 | /* ... */ | ||
29 | }; | ||
30 | |||
31 | Example: Clock consumer node | ||
32 | |||
33 | foo@0 { | ||
34 | compatible = "bar,foo"; | ||
35 | /* ... */ | ||
36 | clock-names = "my-clock"; | ||
37 | clocks = <&max77686 2>; | ||
38 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/nvidia,tegra114-car.txt b/Documentation/devicetree/bindings/clock/nvidia,tegra114-car.txt index 0c80c2677104..9acea9d93160 100644 --- a/Documentation/devicetree/bindings/clock/nvidia,tegra114-car.txt +++ b/Documentation/devicetree/bindings/clock/nvidia,tegra114-car.txt | |||
@@ -15,6 +15,9 @@ Required properties : | |||
15 | In clock consumers, this cell represents the clock ID exposed by the | 15 | In clock consumers, this cell represents the clock ID exposed by the |
16 | CAR. The assignments may be found in header file | 16 | CAR. The assignments may be found in header file |
17 | <dt-bindings/clock/tegra114-car.h>. | 17 | <dt-bindings/clock/tegra114-car.h>. |
18 | - #reset-cells : Should be 1. | ||
19 | In clock consumers, this cell represents the bit number in the CAR's | ||
20 | array of CLK_RST_CONTROLLER_RST_DEVICES_* registers. | ||
18 | 21 | ||
19 | Example SoC include file: | 22 | Example SoC include file: |
20 | 23 | ||
@@ -23,6 +26,7 @@ Example SoC include file: | |||
23 | compatible = "nvidia,tegra114-car"; | 26 | compatible = "nvidia,tegra114-car"; |
24 | reg = <0x60006000 0x1000>; | 27 | reg = <0x60006000 0x1000>; |
25 | #clock-cells = <1>; | 28 | #clock-cells = <1>; |
29 | #reset-cells = <1>; | ||
26 | }; | 30 | }; |
27 | 31 | ||
28 | usb@c5004000 { | 32 | usb@c5004000 { |
diff --git a/Documentation/devicetree/bindings/clock/nvidia,tegra124-car.txt b/Documentation/devicetree/bindings/clock/nvidia,tegra124-car.txt new file mode 100644 index 000000000000..ded5d6212c84 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/nvidia,tegra124-car.txt | |||
@@ -0,0 +1,63 @@ | |||
1 | NVIDIA Tegra124 Clock And Reset Controller | ||
2 | |||
3 | This binding uses the common clock binding: | ||
4 | Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
5 | |||
6 | The CAR (Clock And Reset) Controller on Tegra is the HW module responsible | ||
7 | for muxing and gating Tegra's clocks, and setting their rates. | ||
8 | |||
9 | Required properties : | ||
10 | - compatible : Should be "nvidia,tegra124-car" | ||
11 | - reg : Should contain CAR registers location and length | ||
12 | - clocks : Should contain phandle and clock specifiers for two clocks: | ||
13 | the 32 KHz "32k_in", and the board-specific oscillator "osc". | ||
14 | - #clock-cells : Should be 1. | ||
15 | In clock consumers, this cell represents the clock ID exposed by the | ||
16 | CAR. The assignments may be found in header file | ||
17 | <dt-bindings/clock/tegra124-car.h>. | ||
18 | - #reset-cells : Should be 1. | ||
19 | In clock consumers, this cell represents the bit number in the CAR's | ||
20 | array of CLK_RST_CONTROLLER_RST_DEVICES_* registers. | ||
21 | |||
22 | Example SoC include file: | ||
23 | |||
24 | / { | ||
25 | tegra_car: clock { | ||
26 | compatible = "nvidia,tegra124-car"; | ||
27 | reg = <0x60006000 0x1000>; | ||
28 | #clock-cells = <1>; | ||
29 | #reset-cells = <1>; | ||
30 | }; | ||
31 | |||
32 | usb@c5004000 { | ||
33 | clocks = <&tegra_car TEGRA124_CLK_USB2>; | ||
34 | }; | ||
35 | }; | ||
36 | |||
37 | Example board file: | ||
38 | |||
39 | / { | ||
40 | clocks { | ||
41 | compatible = "simple-bus"; | ||
42 | #address-cells = <1>; | ||
43 | #size-cells = <0>; | ||
44 | |||
45 | osc: clock@0 { | ||
46 | compatible = "fixed-clock"; | ||
47 | reg = <0>; | ||
48 | #clock-cells = <0>; | ||
49 | clock-frequency = <112400000>; | ||
50 | }; | ||
51 | |||
52 | clk_32k: clock@1 { | ||
53 | compatible = "fixed-clock"; | ||
54 | reg = <1>; | ||
55 | #clock-cells = <0>; | ||
56 | clock-frequency = <32768>; | ||
57 | }; | ||
58 | }; | ||
59 | |||
60 | &tegra_car { | ||
61 | clocks = <&clk_32k> <&osc>; | ||
62 | }; | ||
63 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/nvidia,tegra20-car.txt b/Documentation/devicetree/bindings/clock/nvidia,tegra20-car.txt index fcfed5bf73fb..6c5901b503d0 100644 --- a/Documentation/devicetree/bindings/clock/nvidia,tegra20-car.txt +++ b/Documentation/devicetree/bindings/clock/nvidia,tegra20-car.txt | |||
@@ -15,6 +15,9 @@ Required properties : | |||
15 | In clock consumers, this cell represents the clock ID exposed by the | 15 | In clock consumers, this cell represents the clock ID exposed by the |
16 | CAR. The assignments may be found in header file | 16 | CAR. The assignments may be found in header file |
17 | <dt-bindings/clock/tegra20-car.h>. | 17 | <dt-bindings/clock/tegra20-car.h>. |
18 | - #reset-cells : Should be 1. | ||
19 | In clock consumers, this cell represents the bit number in the CAR's | ||
20 | array of CLK_RST_CONTROLLER_RST_DEVICES_* registers. | ||
18 | 21 | ||
19 | Example SoC include file: | 22 | Example SoC include file: |
20 | 23 | ||
@@ -23,6 +26,7 @@ Example SoC include file: | |||
23 | compatible = "nvidia,tegra20-car"; | 26 | compatible = "nvidia,tegra20-car"; |
24 | reg = <0x60006000 0x1000>; | 27 | reg = <0x60006000 0x1000>; |
25 | #clock-cells = <1>; | 28 | #clock-cells = <1>; |
29 | #reset-cells = <1>; | ||
26 | }; | 30 | }; |
27 | 31 | ||
28 | usb@c5004000 { | 32 | usb@c5004000 { |
diff --git a/Documentation/devicetree/bindings/clock/nvidia,tegra30-car.txt b/Documentation/devicetree/bindings/clock/nvidia,tegra30-car.txt index 0f714081e986..63618cde12df 100644 --- a/Documentation/devicetree/bindings/clock/nvidia,tegra30-car.txt +++ b/Documentation/devicetree/bindings/clock/nvidia,tegra30-car.txt | |||
@@ -15,6 +15,9 @@ Required properties : | |||
15 | In clock consumers, this cell represents the clock ID exposed by the | 15 | In clock consumers, this cell represents the clock ID exposed by the |
16 | CAR. The assignments may be found in header file | 16 | CAR. The assignments may be found in header file |
17 | <dt-bindings/clock/tegra30-car.h>. | 17 | <dt-bindings/clock/tegra30-car.h>. |
18 | - #reset-cells : Should be 1. | ||
19 | In clock consumers, this cell represents the bit number in the CAR's | ||
20 | array of CLK_RST_CONTROLLER_RST_DEVICES_* registers. | ||
18 | 21 | ||
19 | Example SoC include file: | 22 | Example SoC include file: |
20 | 23 | ||
@@ -23,6 +26,7 @@ Example SoC include file: | |||
23 | compatible = "nvidia,tegra30-car"; | 26 | compatible = "nvidia,tegra30-car"; |
24 | reg = <0x60006000 0x1000>; | 27 | reg = <0x60006000 0x1000>; |
25 | #clock-cells = <1>; | 28 | #clock-cells = <1>; |
29 | #reset-cells = <1>; | ||
26 | }; | 30 | }; |
27 | 31 | ||
28 | usb@c5004000 { | 32 | usb@c5004000 { |
diff --git a/Documentation/devicetree/bindings/clock/qcom,gcc.txt b/Documentation/devicetree/bindings/clock/qcom,gcc.txt new file mode 100644 index 000000000000..767401f42871 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/qcom,gcc.txt | |||
@@ -0,0 +1,21 @@ | |||
1 | Qualcomm Global Clock & Reset Controller Binding | ||
2 | ------------------------------------------------ | ||
3 | |||
4 | Required properties : | ||
5 | - compatible : shall contain only one of the following: | ||
6 | |||
7 | "qcom,gcc-msm8660" | ||
8 | "qcom,gcc-msm8960" | ||
9 | "qcom,gcc-msm8974" | ||
10 | |||
11 | - reg : shall contain base register location and length | ||
12 | - #clock-cells : shall contain 1 | ||
13 | - #reset-cells : shall contain 1 | ||
14 | |||
15 | Example: | ||
16 | clock-controller@900000 { | ||
17 | compatible = "qcom,gcc-msm8960"; | ||
18 | reg = <0x900000 0x4000>; | ||
19 | #clock-cells = <1>; | ||
20 | #reset-cells = <1>; | ||
21 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/qcom,mmcc.txt b/Documentation/devicetree/bindings/clock/qcom,mmcc.txt new file mode 100644 index 000000000000..d572e9964c54 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/qcom,mmcc.txt | |||
@@ -0,0 +1,21 @@ | |||
1 | Qualcomm Multimedia Clock & Reset Controller Binding | ||
2 | ---------------------------------------------------- | ||
3 | |||
4 | Required properties : | ||
5 | - compatible : shall contain only one of the following: | ||
6 | |||
7 | "qcom,mmcc-msm8660" | ||
8 | "qcom,mmcc-msm8960" | ||
9 | "qcom,mmcc-msm8974" | ||
10 | |||
11 | - reg : shall contain base register location and length | ||
12 | - #clock-cells : shall contain 1 | ||
13 | - #reset-cells : shall contain 1 | ||
14 | |||
15 | Example: | ||
16 | clock-controller@4000000 { | ||
17 | compatible = "qcom,mmcc-msm8960"; | ||
18 | reg = <0x4000000 0x1000>; | ||
19 | #clock-cells = <1>; | ||
20 | #reset-cells = <1>; | ||
21 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/renesas,cpg-div6-clocks.txt b/Documentation/devicetree/bindings/clock/renesas,cpg-div6-clocks.txt new file mode 100644 index 000000000000..952e373178d2 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/renesas,cpg-div6-clocks.txt | |||
@@ -0,0 +1,28 @@ | |||
1 | * Renesas CPG DIV6 Clock | ||
2 | |||
3 | The CPG DIV6 clocks are variable factor clocks provided by the Clock Pulse | ||
4 | Generator (CPG). They clock input is divided by a configurable factor from 1 | ||
5 | to 64. | ||
6 | |||
7 | Required Properties: | ||
8 | |||
9 | - compatible: Must be one of the following | ||
10 | - "renesas,r8a7790-div6-clock" for R8A7790 (R-Car H2) DIV6 clocks | ||
11 | - "renesas,r8a7791-div6-clock" for R8A7791 (R-Car M2) DIV6 clocks | ||
12 | - "renesas,cpg-div6-clock" for generic DIV6 clocks | ||
13 | - reg: Base address and length of the memory resource used by the DIV6 clock | ||
14 | - clocks: Reference to the parent clock | ||
15 | - #clock-cells: Must be 0 | ||
16 | - clock-output-names: The name of the clock as a free-form string | ||
17 | |||
18 | |||
19 | Example | ||
20 | ------- | ||
21 | |||
22 | sd2_clk: sd2_clk@e6150078 { | ||
23 | compatible = "renesas,r8a7790-div6-clock", "renesas,cpg-div6-clock"; | ||
24 | reg = <0 0xe6150078 0 4>; | ||
25 | clocks = <&pll1_div2_clk>; | ||
26 | #clock-cells = <0>; | ||
27 | clock-output-names = "sd2"; | ||
28 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt b/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt new file mode 100644 index 000000000000..a6a352c2771e --- /dev/null +++ b/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt | |||
@@ -0,0 +1,51 @@ | |||
1 | * Renesas CPG Module Stop (MSTP) Clocks | ||
2 | |||
3 | The CPG can gate SoC device clocks. The gates are organized in groups of up to | ||
4 | 32 gates. | ||
5 | |||
6 | This device tree binding describes a single 32 gate clocks group per node. | ||
7 | Clocks are referenced by user nodes by the MSTP node phandle and the clock | ||
8 | index in the group, from 0 to 31. | ||
9 | |||
10 | Required Properties: | ||
11 | |||
12 | - compatible: Must be one of the following | ||
13 | - "renesas,r8a7790-mstp-clocks" for R8A7790 (R-Car H2) MSTP gate clocks | ||
14 | - "renesas,r8a7791-mstp-clocks" for R8A7791 (R-Car M2) MSTP gate clocks | ||
15 | - "renesas,cpg-mstp-clock" for generic MSTP gate clocks | ||
16 | - reg: Base address and length of the I/O mapped registers used by the MSTP | ||
17 | clocks. The first register is the clock control register and is mandatory. | ||
18 | The second register is the clock status register and is optional when not | ||
19 | implemented in hardware. | ||
20 | - clocks: Reference to the parent clocks, one per output clock. The parents | ||
21 | must appear in the same order as the output clocks. | ||
22 | - #clock-cells: Must be 1 | ||
23 | - clock-output-names: The name of the clocks as free-form strings | ||
24 | - renesas,indices: Indices of the gate clocks into the group (0 to 31) | ||
25 | |||
26 | The clocks, clock-output-names and renesas,indices properties contain one | ||
27 | entry per gate clock. The MSTP groups are sparsely populated. Unimplemented | ||
28 | gate clocks must not be declared. | ||
29 | |||
30 | |||
31 | Example | ||
32 | ------- | ||
33 | |||
34 | #include <dt-bindings/clock/r8a7790-clock.h> | ||
35 | |||
36 | mstp3_clks: mstp3_clks@e615013c { | ||
37 | compatible = "renesas,r8a7790-mstp-clocks", "renesas,cpg-mstp-clocks"; | ||
38 | reg = <0 0xe615013c 0 4>, <0 0xe6150048 0 4>; | ||
39 | clocks = <&cp_clk>, <&mmc1_clk>, <&sd3_clk>, <&sd2_clk>, | ||
40 | <&cpg_clocks R8A7790_CLK_SD1>, <&cpg_clocks R8A7790_CLK_SD0>, | ||
41 | <&mmc0_clk>; | ||
42 | #clock-cells = <1>; | ||
43 | clock-output-names = | ||
44 | "tpu0", "mmcif1", "sdhi3", "sdhi2", | ||
45 | "sdhi1", "sdhi0", "mmcif0"; | ||
46 | renesas,clock-indices = < | ||
47 | R8A7790_CLK_TPU0 R8A7790_CLK_MMCIF1 R8A7790_CLK_SDHI3 | ||
48 | R8A7790_CLK_SDHI2 R8A7790_CLK_SDHI1 R8A7790_CLK_SDHI0 | ||
49 | R8A7790_CLK_MMCIF0 | ||
50 | >; | ||
51 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/renesas,rcar-gen2-cpg-clocks.txt b/Documentation/devicetree/bindings/clock/renesas,rcar-gen2-cpg-clocks.txt new file mode 100644 index 000000000000..7b41c2fe54db --- /dev/null +++ b/Documentation/devicetree/bindings/clock/renesas,rcar-gen2-cpg-clocks.txt | |||
@@ -0,0 +1,32 @@ | |||
1 | * Renesas R-Car Gen2 Clock Pulse Generator (CPG) | ||
2 | |||
3 | The CPG generates core clocks for the R-Car Gen2 SoCs. It includes three PLLs | ||
4 | and several fixed ratio dividers. | ||
5 | |||
6 | Required Properties: | ||
7 | |||
8 | - compatible: Must be one of | ||
9 | - "renesas,r8a7790-cpg-clocks" for the r8a7790 CPG | ||
10 | - "renesas,r8a7791-cpg-clocks" for the r8a7791 CPG | ||
11 | - "renesas,rcar-gen2-cpg-clocks" for the generic R-Car Gen2 CPG | ||
12 | |||
13 | - reg: Base address and length of the memory resource used by the CPG | ||
14 | |||
15 | - clocks: Reference to the parent clock | ||
16 | - #clock-cells: Must be 1 | ||
17 | - clock-output-names: The names of the clocks. Supported clocks are "main", | ||
18 | "pll0", "pll1", "pll3", "lb", "qspi", "sdh", "sd0", "sd1" and "z" | ||
19 | |||
20 | |||
21 | Example | ||
22 | ------- | ||
23 | |||
24 | cpg_clocks: cpg_clocks@e6150000 { | ||
25 | compatible = "renesas,r8a7790-cpg-clocks", | ||
26 | "renesas,rcar-gen2-cpg-clocks"; | ||
27 | reg = <0 0xe6150000 0 0x1000>; | ||
28 | clocks = <&extal_clk>; | ||
29 | #clock-cells = <1>; | ||
30 | clock-output-names = "main", "pll0, "pll1", "pll3", | ||
31 | "lb", "qspi", "sdh", "sd0", "sd1", "z"; | ||
32 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/silabs,si570.txt b/Documentation/devicetree/bindings/clock/silabs,si570.txt new file mode 100644 index 000000000000..c09f21e1d98f --- /dev/null +++ b/Documentation/devicetree/bindings/clock/silabs,si570.txt | |||
@@ -0,0 +1,39 @@ | |||
1 | Binding for Silicon Labs 570, 571, 598 and 599 programmable | ||
2 | I2C clock generators. | ||
3 | |||
4 | Reference | ||
5 | This binding uses the common clock binding[1]. Details about the devices can be | ||
6 | found in the data sheets[2][3]. | ||
7 | |||
8 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
9 | [2] Si570/571 Data Sheet | ||
10 | http://www.silabs.com/Support%20Documents/TechnicalDocs/si570.pdf | ||
11 | [3] Si598/599 Data Sheet | ||
12 | http://www.silabs.com/Support%20Documents/TechnicalDocs/si598-99.pdf | ||
13 | |||
14 | Required properties: | ||
15 | - compatible: Shall be one of "silabs,si570", "silabs,si571", | ||
16 | "silabs,si598", "silabs,si599" | ||
17 | - reg: I2C device address. | ||
18 | - #clock-cells: From common clock bindings: Shall be 0. | ||
19 | - factory-fout: Factory set default frequency. This frequency is part specific. | ||
20 | The correct frequency for the part used has to be provided in | ||
21 | order to generate the correct output frequencies. For more | ||
22 | details, please refer to the data sheet. | ||
23 | - temperature-stability: Temperature stability of the device in PPM. Should be | ||
24 | one of: 7, 20, 50 or 100. | ||
25 | |||
26 | Optional properties: | ||
27 | - clock-output-names: From common clock bindings. Recommended to be "si570". | ||
28 | - clock-frequency: Output frequency to generate. This defines the output | ||
29 | frequency set during boot. It can be reprogrammed during | ||
30 | runtime through the common clock framework. | ||
31 | |||
32 | Example: | ||
33 | si570: clock-generator@5d { | ||
34 | #clock-cells = <0>; | ||
35 | compatible = "silabs,si570"; | ||
36 | temperature-stability = <50>; | ||
37 | reg = <0x5d>; | ||
38 | factory-fout = <156250000>; | ||
39 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/sunxi.txt b/Documentation/devicetree/bindings/clock/sunxi.txt index 91a748fed13d..c2cb7621ad2d 100644 --- a/Documentation/devicetree/bindings/clock/sunxi.txt +++ b/Documentation/devicetree/bindings/clock/sunxi.txt | |||
@@ -7,8 +7,10 @@ This binding uses the common clock binding[1]. | |||
7 | Required properties: | 7 | Required properties: |
8 | - compatible : shall be one of the following: | 8 | - compatible : shall be one of the following: |
9 | "allwinner,sun4i-osc-clk" - for a gatable oscillator | 9 | "allwinner,sun4i-osc-clk" - for a gatable oscillator |
10 | "allwinner,sun4i-pll1-clk" - for the main PLL clock | 10 | "allwinner,sun4i-pll1-clk" - for the main PLL clock and PLL4 |
11 | "allwinner,sun6i-a31-pll1-clk" - for the main PLL clock on A31 | 11 | "allwinner,sun6i-a31-pll1-clk" - for the main PLL clock on A31 |
12 | "allwinner,sun4i-pll5-clk" - for the PLL5 clock | ||
13 | "allwinner,sun4i-pll6-clk" - for the PLL6 clock | ||
12 | "allwinner,sun4i-cpu-clk" - for the CPU multiplexer clock | 14 | "allwinner,sun4i-cpu-clk" - for the CPU multiplexer clock |
13 | "allwinner,sun4i-axi-clk" - for the AXI clock | 15 | "allwinner,sun4i-axi-clk" - for the AXI clock |
14 | "allwinner,sun4i-axi-gates-clk" - for the AXI gates | 16 | "allwinner,sun4i-axi-gates-clk" - for the AXI gates |
@@ -33,10 +35,14 @@ Required properties: | |||
33 | "allwinner,sun7i-a20-apb1-gates-clk" - for the APB1 gates on A20 | 35 | "allwinner,sun7i-a20-apb1-gates-clk" - for the APB1 gates on A20 |
34 | "allwinner,sun6i-a31-apb2-div-clk" - for the APB2 gates on A31 | 36 | "allwinner,sun6i-a31-apb2-div-clk" - for the APB2 gates on A31 |
35 | "allwinner,sun6i-a31-apb2-gates-clk" - for the APB2 gates on A31 | 37 | "allwinner,sun6i-a31-apb2-gates-clk" - for the APB2 gates on A31 |
38 | "allwinner,sun4i-mod0-clk" - for the module 0 family of clocks | ||
39 | "allwinner,sun7i-a20-out-clk" - for the external output clocks | ||
36 | 40 | ||
37 | Required properties for all clocks: | 41 | Required properties for all clocks: |
38 | - reg : shall be the control register address for the clock. | 42 | - reg : shall be the control register address for the clock. |
39 | - clocks : shall be the input parent clock(s) phandle for the clock | 43 | - clocks : shall be the input parent clock(s) phandle for the clock. For |
44 | multiplexed clocks, the list order must match the hardware | ||
45 | programming order. | ||
40 | - #clock-cells : from common clock binding; shall be set to 0 except for | 46 | - #clock-cells : from common clock binding; shall be set to 0 except for |
41 | "allwinner,*-gates-clk" where it shall be set to 1 | 47 | "allwinner,*-gates-clk" where it shall be set to 1 |
42 | 48 | ||
diff --git a/Documentation/devicetree/bindings/clock/ti/apll.txt b/Documentation/devicetree/bindings/clock/ti/apll.txt new file mode 100644 index 000000000000..7faf5a68b3be --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/apll.txt | |||
@@ -0,0 +1,31 @@ | |||
1 | Binding for Texas Instruments APLL clock. | ||
2 | |||
3 | Binding status: Unstable - ABI compatibility may be broken in the future | ||
4 | |||
5 | This binding uses the common clock binding[1]. It assumes a | ||
6 | register-mapped APLL with usually two selectable input clocks | ||
7 | (reference clock and bypass clock), with analog phase locked | ||
8 | loop logic for multiplying the input clock to a desired output | ||
9 | clock. This clock also typically supports different operation | ||
10 | modes (locked, low power stop etc.) APLL mostly behaves like | ||
11 | a subtype of a DPLL [2], although a simplified one at that. | ||
12 | |||
13 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
14 | [2] Documentation/devicetree/bindings/clock/ti/dpll.txt | ||
15 | |||
16 | Required properties: | ||
17 | - compatible : shall be "ti,dra7-apll-clock" | ||
18 | - #clock-cells : from common clock binding; shall be set to 0. | ||
19 | - clocks : link phandles of parent clocks (clk-ref and clk-bypass) | ||
20 | - reg : address and length of the register set for controlling the APLL. | ||
21 | It contains the information of registers in the following order: | ||
22 | "control" - contains the control register base address | ||
23 | "idlest" - contains the idlest register base address | ||
24 | |||
25 | Examples: | ||
26 | apll_pcie_ck: apll_pcie_ck@4a008200 { | ||
27 | #clock-cells = <0>; | ||
28 | clocks = <&apll_pcie_in_clk_mux>, <&dpll_pcie_ref_ck>; | ||
29 | reg = <0x4a00821c 0x4>, <0x4a008220 0x4>; | ||
30 | compatible = "ti,dra7-apll-clock"; | ||
31 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/ti/autoidle.txt b/Documentation/devicetree/bindings/clock/ti/autoidle.txt new file mode 100644 index 000000000000..7c735dde9fe9 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/autoidle.txt | |||
@@ -0,0 +1,39 @@ | |||
1 | Binding for Texas Instruments autoidle clock. | ||
2 | |||
3 | Binding status: Unstable - ABI compatibility may be broken in the future | ||
4 | |||
5 | This binding uses the common clock binding[1]. It assumes a register mapped | ||
6 | clock which can be put to idle automatically by hardware based on the usage | ||
7 | and a configuration bit setting. Autoidle clock is never an individual | ||
8 | clock, it is always a derivative of some basic clock like a gate, divider, | ||
9 | or fixed-factor. | ||
10 | |||
11 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
12 | |||
13 | Required properties: | ||
14 | - reg : offset for the register controlling the autoidle | ||
15 | - ti,autoidle-shift : bit shift of the autoidle enable bit | ||
16 | - ti,invert-autoidle-bit : autoidle is enabled by setting the bit to 0 | ||
17 | |||
18 | Examples: | ||
19 | dpll_core_m4_ck: dpll_core_m4_ck { | ||
20 | #clock-cells = <0>; | ||
21 | compatible = "ti,divider-clock"; | ||
22 | clocks = <&dpll_core_x2_ck>; | ||
23 | ti,max-div = <31>; | ||
24 | ti,autoidle-shift = <8>; | ||
25 | reg = <0x2d38>; | ||
26 | ti,index-starts-at-one; | ||
27 | ti,invert-autoidle-bit; | ||
28 | }; | ||
29 | |||
30 | dpll_usb_clkdcoldo_ck: dpll_usb_clkdcoldo_ck { | ||
31 | #clock-cells = <0>; | ||
32 | compatible = "ti,fixed-factor-clock"; | ||
33 | clocks = <&dpll_usb_ck>; | ||
34 | ti,clock-div = <1>; | ||
35 | ti,autoidle-shift = <8>; | ||
36 | reg = <0x01b4>; | ||
37 | ti,clock-mult = <1>; | ||
38 | ti,invert-autoidle-bit; | ||
39 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/ti/clockdomain.txt b/Documentation/devicetree/bindings/clock/ti/clockdomain.txt new file mode 100644 index 000000000000..cb76b3f2b341 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/clockdomain.txt | |||
@@ -0,0 +1,24 @@ | |||
1 | Binding for Texas Instruments clockdomain. | ||
2 | |||
3 | Binding status: Unstable - ABI compatibility may be broken in the future | ||
4 | |||
5 | This binding uses the common clock binding[1] in consumer role. | ||
6 | Every clock on TI SoC belongs to one clockdomain, but software | ||
7 | only needs this information for specific clocks which require | ||
8 | their parent clockdomain to be controlled when the clock is | ||
9 | enabled/disabled. This binding doesn't define a new clock | ||
10 | binding type, it is used to group existing clock nodes under | ||
11 | hardware hierarchy. | ||
12 | |||
13 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
14 | |||
15 | Required properties: | ||
16 | - compatible : shall be "ti,clockdomain" | ||
17 | - #clock-cells : from common clock binding; shall be set to 0. | ||
18 | - clocks : link phandles of clocks within this domain | ||
19 | |||
20 | Examples: | ||
21 | dss_clkdm: dss_clkdm { | ||
22 | compatible = "ti,clockdomain"; | ||
23 | clocks = <&dss1_alwon_fck_3430es2>, <&dss_ick_3430es2>; | ||
24 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/ti/composite.txt b/Documentation/devicetree/bindings/clock/ti/composite.txt new file mode 100644 index 000000000000..5f43c4706b09 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/composite.txt | |||
@@ -0,0 +1,54 @@ | |||
1 | Binding for TI composite clock. | ||
2 | |||
3 | Binding status: Unstable - ABI compatibility may be broken in the future | ||
4 | |||
5 | This binding uses the common clock binding[1]. It assumes a | ||
6 | register-mapped composite clock with multiple different sub-types; | ||
7 | |||
8 | a multiplexer clock with multiple input clock signals or parents, one | ||
9 | of which can be selected as output, this behaves exactly as [2] | ||
10 | |||
11 | an adjustable clock rate divider, this behaves exactly as [3] | ||
12 | |||
13 | a gating function which can be used to enable and disable the output | ||
14 | clock, this behaves exactly as [4] | ||
15 | |||
16 | The binding must provide a list of the component clocks that shall be | ||
17 | merged to this clock. The component clocks shall be of one of the | ||
18 | "ti,*composite*-clock" types. | ||
19 | |||
20 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
21 | [2] Documentation/devicetree/bindings/clock/ti/mux.txt | ||
22 | [3] Documentation/devicetree/bindings/clock/ti/divider.txt | ||
23 | [4] Documentation/devicetree/bindings/clock/ti/gate.txt | ||
24 | |||
25 | Required properties: | ||
26 | - compatible : shall be: "ti,composite-clock" | ||
27 | - clocks : link phandles of component clocks | ||
28 | - #clock-cells : from common clock binding; shall be set to 0. | ||
29 | |||
30 | Examples: | ||
31 | |||
32 | usb_l4_gate_ick: usb_l4_gate_ick { | ||
33 | #clock-cells = <0>; | ||
34 | compatible = "ti,composite-interface-clock"; | ||
35 | clocks = <&l4_ick>; | ||
36 | ti,bit-shift = <5>; | ||
37 | reg = <0x0a10>; | ||
38 | }; | ||
39 | |||
40 | usb_l4_div_ick: usb_l4_div_ick { | ||
41 | #clock-cells = <0>; | ||
42 | compatible = "ti,composite-divider-clock"; | ||
43 | clocks = <&l4_ick>; | ||
44 | ti,bit-shift = <4>; | ||
45 | ti,max-div = <1>; | ||
46 | reg = <0x0a40>; | ||
47 | ti,index-starts-at-one; | ||
48 | }; | ||
49 | |||
50 | usb_l4_ick: usb_l4_ick { | ||
51 | #clock-cells = <0>; | ||
52 | compatible = "ti,composite-clock"; | ||
53 | clocks = <&usb_l4_gate_ick>, <&usb_l4_div_ick>; | ||
54 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/ti/divider.txt b/Documentation/devicetree/bindings/clock/ti/divider.txt new file mode 100644 index 000000000000..35a6f5c7e5c2 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/divider.txt | |||
@@ -0,0 +1,114 @@ | |||
1 | Binding for TI divider clock | ||
2 | |||
3 | Binding status: Unstable - ABI compatibility may be broken in the future | ||
4 | |||
5 | This binding uses the common clock binding[1]. It assumes a | ||
6 | register-mapped adjustable clock rate divider that does not gate and has | ||
7 | only one input clock or parent. By default the value programmed into | ||
8 | the register is one less than the actual divisor value. E.g: | ||
9 | |||
10 | register value actual divisor value | ||
11 | 0 1 | ||
12 | 1 2 | ||
13 | 2 3 | ||
14 | |||
15 | This assumption may be modified by the following optional properties: | ||
16 | |||
17 | ti,index-starts-at-one - valid divisor values start at 1, not the default | ||
18 | of 0. E.g: | ||
19 | register value actual divisor value | ||
20 | 1 1 | ||
21 | 2 2 | ||
22 | 3 3 | ||
23 | |||
24 | ti,index-power-of-two - valid divisor values are powers of two. E.g: | ||
25 | register value actual divisor value | ||
26 | 0 1 | ||
27 | 1 2 | ||
28 | 2 4 | ||
29 | |||
30 | Additionally an array of valid dividers may be supplied like so: | ||
31 | |||
32 | ti,dividers = <4>, <8>, <0>, <16>; | ||
33 | |||
34 | Which will map the resulting values to a divisor table by their index: | ||
35 | register value actual divisor value | ||
36 | 0 4 | ||
37 | 1 8 | ||
38 | 2 <invalid divisor, skipped> | ||
39 | 3 16 | ||
40 | |||
41 | Any zero value in this array means the corresponding bit-value is invalid | ||
42 | and must not be used. | ||
43 | |||
44 | The binding must also provide the register to control the divider and | ||
45 | unless the divider array is provided, min and max dividers. Optionally | ||
46 | the number of bits to shift that mask, if necessary. If the shift value | ||
47 | is missing it is the same as supplying a zero shift. | ||
48 | |||
49 | This binding can also optionally provide support to the hardware autoidle | ||
50 | feature, see [2]. | ||
51 | |||
52 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
53 | [2] Documentation/devicetree/bindings/clock/ti/autoidle.txt | ||
54 | |||
55 | Required properties: | ||
56 | - compatible : shall be "ti,divider-clock" or "ti,composite-divider-clock". | ||
57 | - #clock-cells : from common clock binding; shall be set to 0. | ||
58 | - clocks : link to phandle of parent clock | ||
59 | - reg : offset for register controlling adjustable divider | ||
60 | |||
61 | Optional properties: | ||
62 | - clock-output-names : from common clock binding. | ||
63 | - ti,dividers : array of integers defining divisors | ||
64 | - ti,bit-shift : number of bits to shift the divider value, defaults to 0 | ||
65 | - ti,min-div : min divisor for dividing the input clock rate, only | ||
66 | needed if the first divisor is offset from the default value (1) | ||
67 | - ti,max-div : max divisor for dividing the input clock rate, only needed | ||
68 | if ti,dividers is not defined. | ||
69 | - ti,index-starts-at-one : valid divisor programming starts at 1, not zero, | ||
70 | only valid if ti,dividers is not defined. | ||
71 | - ti,index-power-of-two : valid divisor programming must be a power of two, | ||
72 | only valid if ti,dividers is not defined. | ||
73 | - ti,autoidle-shift : bit shift of the autoidle enable bit for the clock, | ||
74 | see [2] | ||
75 | - ti,invert-autoidle-bit : autoidle is enabled by setting the bit to 0, | ||
76 | see [2] | ||
77 | - ti,set-rate-parent : clk_set_rate is propagated to parent | ||
78 | |||
79 | Examples: | ||
80 | dpll_usb_m2_ck: dpll_usb_m2_ck@4a008190 { | ||
81 | #clock-cells = <0>; | ||
82 | compatible = "ti,divider-clock"; | ||
83 | clocks = <&dpll_usb_ck>; | ||
84 | ti,max-div = <127>; | ||
85 | reg = <0x190>; | ||
86 | ti,index-starts-at-one; | ||
87 | }; | ||
88 | |||
89 | aess_fclk: aess_fclk@4a004528 { | ||
90 | #clock-cells = <0>; | ||
91 | compatible = "ti,divider-clock"; | ||
92 | clocks = <&abe_clk>; | ||
93 | ti,bit-shift = <24>; | ||
94 | reg = <0x528>; | ||
95 | ti,max-div = <2>; | ||
96 | }; | ||
97 | |||
98 | dpll_core_m3x2_div_ck: dpll_core_m3x2_div_ck { | ||
99 | #clock-cells = <0>; | ||
100 | compatible = "ti,composite-divider-clock"; | ||
101 | clocks = <&dpll_core_x2_ck>; | ||
102 | ti,max-div = <31>; | ||
103 | reg = <0x0134>; | ||
104 | ti,index-starts-at-one; | ||
105 | }; | ||
106 | |||
107 | ssi_ssr_div_fck_3430es2: ssi_ssr_div_fck_3430es2 { | ||
108 | #clock-cells = <0>; | ||
109 | compatible = "ti,composite-divider-clock"; | ||
110 | clocks = <&corex2_fck>; | ||
111 | ti,bit-shift = <8>; | ||
112 | reg = <0x0a40>; | ||
113 | ti,dividers = <0>, <1>, <2>, <3>, <4>, <0>, <6>, <0>, <8>; | ||
114 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/ti/dpll.txt b/Documentation/devicetree/bindings/clock/ti/dpll.txt new file mode 100644 index 000000000000..30bfdb7c9f18 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/dpll.txt | |||
@@ -0,0 +1,75 @@ | |||
1 | Binding for Texas Instruments DPLL clock. | ||
2 | |||
3 | Binding status: Unstable - ABI compatibility may be broken in the future | ||
4 | |||
5 | This binding uses the common clock binding[1]. It assumes a | ||
6 | register-mapped DPLL with usually two selectable input clocks | ||
7 | (reference clock and bypass clock), with digital phase locked | ||
8 | loop logic for multiplying the input clock to a desired output | ||
9 | clock. This clock also typically supports different operation | ||
10 | modes (locked, low power stop etc.) This binding has several | ||
11 | sub-types, which effectively result in slightly different setup | ||
12 | for the actual DPLL clock. | ||
13 | |||
14 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
15 | |||
16 | Required properties: | ||
17 | - compatible : shall be one of: | ||
18 | "ti,omap3-dpll-clock", | ||
19 | "ti,omap3-dpll-core-clock", | ||
20 | "ti,omap3-dpll-per-clock", | ||
21 | "ti,omap3-dpll-per-j-type-clock", | ||
22 | "ti,omap4-dpll-clock", | ||
23 | "ti,omap4-dpll-x2-clock", | ||
24 | "ti,omap4-dpll-core-clock", | ||
25 | "ti,omap4-dpll-m4xen-clock", | ||
26 | "ti,omap4-dpll-j-type-clock", | ||
27 | "ti,am3-dpll-no-gate-clock", | ||
28 | "ti,am3-dpll-j-type-clock", | ||
29 | "ti,am3-dpll-no-gate-j-type-clock", | ||
30 | "ti,am3-dpll-clock", | ||
31 | "ti,am3-dpll-core-clock", | ||
32 | "ti,am3-dpll-x2-clock", | ||
33 | |||
34 | - #clock-cells : from common clock binding; shall be set to 0. | ||
35 | - clocks : link phandles of parent clocks, first entry lists reference clock | ||
36 | and second entry bypass clock | ||
37 | - reg : offsets for the register set for controlling the DPLL. | ||
38 | Registers are listed in following order: | ||
39 | "control" - contains the control register base address | ||
40 | "idlest" - contains the idle status register base address | ||
41 | "mult-div1" - contains the multiplier / divider register base address | ||
42 | "autoidle" - contains the autoidle register base address (optional) | ||
43 | ti,am3-* dpll types do not have autoidle register | ||
44 | |||
45 | Optional properties: | ||
46 | - DPLL mode setting - defining any one or more of the following overrides | ||
47 | default setting. | ||
48 | - ti,low-power-stop : DPLL supports low power stop mode, gating output | ||
49 | - ti,low-power-bypass : DPLL output matches rate of parent bypass clock | ||
50 | - ti,lock : DPLL locks in programmed rate | ||
51 | |||
52 | Examples: | ||
53 | dpll_core_ck: dpll_core_ck@44e00490 { | ||
54 | #clock-cells = <0>; | ||
55 | compatible = "ti,omap4-dpll-core-clock"; | ||
56 | clocks = <&sys_clkin_ck>, <&sys_clkin_ck>; | ||
57 | reg = <0x490>, <0x45c>, <0x488>, <0x468>; | ||
58 | }; | ||
59 | |||
60 | dpll2_ck: dpll2_ck@48004004 { | ||
61 | #clock-cells = <0>; | ||
62 | compatible = "ti,omap3-dpll-clock"; | ||
63 | clocks = <&sys_ck>, <&dpll2_fck>; | ||
64 | ti,low-power-stop; | ||
65 | ti,low-power-bypass; | ||
66 | ti,lock; | ||
67 | reg = <0x4>, <0x24>, <0x34>, <0x40>; | ||
68 | }; | ||
69 | |||
70 | dpll_core_ck: dpll_core_ck@44e00490 { | ||
71 | #clock-cells = <0>; | ||
72 | compatible = "ti,am3-dpll-core-clock"; | ||
73 | clocks = <&sys_clkin_ck>, <&sys_clkin_ck>; | ||
74 | reg = <0x90>, <0x5c>, <0x68>; | ||
75 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/ti/fixed-factor-clock.txt b/Documentation/devicetree/bindings/clock/ti/fixed-factor-clock.txt new file mode 100644 index 000000000000..662b36d53bf0 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/fixed-factor-clock.txt | |||
@@ -0,0 +1,43 @@ | |||
1 | Binding for TI fixed factor rate clock sources. | ||
2 | |||
3 | Binding status: Unstable - ABI compatibility may be broken in the future | ||
4 | |||
5 | This binding uses the common clock binding[1], and also uses the autoidle | ||
6 | support from TI autoidle clock [2]. | ||
7 | |||
8 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
9 | [2] Documentation/devicetree/bindings/clock/ti/autoidle.txt | ||
10 | |||
11 | Required properties: | ||
12 | - compatible : shall be "ti,fixed-factor-clock". | ||
13 | - #clock-cells : from common clock binding; shall be set to 0. | ||
14 | - ti,clock-div: fixed divider. | ||
15 | - ti,clock-mult: fixed multiplier. | ||
16 | - clocks: parent clock. | ||
17 | |||
18 | Optional properties: | ||
19 | - ti,autoidle-shift: bit shift of the autoidle enable bit for the clock, | ||
20 | see [2] | ||
21 | - reg: offset for the autoidle register of this clock, see [2] | ||
22 | - ti,invert-autoidle-bit: autoidle is enabled by setting the bit to 0, see [2] | ||
23 | - ti,set-rate-parent: clk_set_rate is propagated to parent | ||
24 | |||
25 | Example: | ||
26 | clock { | ||
27 | compatible = "ti,fixed-factor-clock"; | ||
28 | clocks = <&parentclk>; | ||
29 | #clock-cells = <0>; | ||
30 | ti,clock-div = <2>; | ||
31 | ti,clock-mult = <1>; | ||
32 | }; | ||
33 | |||
34 | dpll_usb_clkdcoldo_ck: dpll_usb_clkdcoldo_ck { | ||
35 | #clock-cells = <0>; | ||
36 | compatible = "ti,fixed-factor-clock"; | ||
37 | clocks = <&dpll_usb_ck>; | ||
38 | ti,clock-div = <1>; | ||
39 | ti,autoidle-shift = <8>; | ||
40 | reg = <0x01b4>; | ||
41 | ti,clock-mult = <1>; | ||
42 | ti,invert-autoidle-bit; | ||
43 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/ti/gate.txt b/Documentation/devicetree/bindings/clock/ti/gate.txt new file mode 100644 index 000000000000..125281aaa4ca --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/gate.txt | |||
@@ -0,0 +1,85 @@ | |||
1 | Binding for Texas Instruments gate clock. | ||
2 | |||
3 | Binding status: Unstable - ABI compatibility may be broken in the future | ||
4 | |||
5 | This binding uses the common clock binding[1]. This clock is | ||
6 | quite much similar to the basic gate-clock [2], however, | ||
7 | it supports a number of additional features. If no register | ||
8 | is provided for this clock, the code assumes that a clockdomain | ||
9 | will be controlled instead and the corresponding hw-ops for | ||
10 | that is used. | ||
11 | |||
12 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
13 | [2] Documentation/devicetree/bindings/clock/gate-clock.txt | ||
14 | [3] Documentation/devicetree/bindings/clock/ti/clockdomain.txt | ||
15 | |||
16 | Required properties: | ||
17 | - compatible : shall be one of: | ||
18 | "ti,gate-clock" - basic gate clock | ||
19 | "ti,wait-gate-clock" - gate clock which waits until clock is active before | ||
20 | returning from clk_enable() | ||
21 | "ti,dss-gate-clock" - gate clock with DSS specific hardware handling | ||
22 | "ti,am35xx-gate-clock" - gate clock with AM35xx specific hardware handling | ||
23 | "ti,clkdm-gate-clock" - clockdomain gate clock, which derives its functional | ||
24 | clock directly from a clockdomain, see [3] how | ||
25 | to map clockdomains properly | ||
26 | "ti,hsdiv-gate-clock" - gate clock with OMAP36xx specific hardware handling, | ||
27 | required for a hardware errata | ||
28 | - #clock-cells : from common clock binding; shall be set to 0 | ||
29 | - clocks : link to phandle of parent clock | ||
30 | - reg : offset for register controlling adjustable gate, not needed for | ||
31 | ti,clkdm-gate-clock type | ||
32 | |||
33 | Optional properties: | ||
34 | - ti,bit-shift : bit shift for programming the clock gate, invalid for | ||
35 | ti,clkdm-gate-clock type | ||
36 | - ti,set-bit-to-disable : inverts default gate programming. Setting the bit | ||
37 | gates the clock and clearing the bit ungates the clock. | ||
38 | |||
39 | Examples: | ||
40 | mmchs2_fck: mmchs2_fck@48004a00 { | ||
41 | #clock-cells = <0>; | ||
42 | compatible = "ti,gate-clock"; | ||
43 | clocks = <&core_96m_fck>; | ||
44 | reg = <0x48004a00 0x4>; | ||
45 | ti,bit-shift = <25>; | ||
46 | }; | ||
47 | |||
48 | uart4_fck_am35xx: uart4_fck_am35xx { | ||
49 | #clock-cells = <0>; | ||
50 | compatible = "ti,wait-gate-clock"; | ||
51 | clocks = <&core_48m_fck>; | ||
52 | reg = <0x0a00>; | ||
53 | ti,bit-shift = <23>; | ||
54 | }; | ||
55 | |||
56 | dss1_alwon_fck_3430es2: dss1_alwon_fck_3430es2@48004e00 { | ||
57 | #clock-cells = <0>; | ||
58 | compatible = "ti,dss-gate-clock"; | ||
59 | clocks = <&dpll4_m4x2_ck>; | ||
60 | reg = <0x48004e00 0x4>; | ||
61 | ti,bit-shift = <0>; | ||
62 | }; | ||
63 | |||
64 | emac_ick: emac_ick@4800259c { | ||
65 | #clock-cells = <0>; | ||
66 | compatible = "ti,am35xx-gate-clock"; | ||
67 | clocks = <&ipss_ick>; | ||
68 | reg = <0x4800259c 0x4>; | ||
69 | ti,bit-shift = <1>; | ||
70 | }; | ||
71 | |||
72 | emu_src_ck: emu_src_ck { | ||
73 | #clock-cells = <0>; | ||
74 | compatible = "ti,clkdm-gate-clock"; | ||
75 | clocks = <&emu_src_mux_ck>; | ||
76 | }; | ||
77 | |||
78 | dpll4_m2x2_ck: dpll4_m2x2_ck@48004d00 { | ||
79 | #clock-cells = <0>; | ||
80 | compatible = "ti,hsdiv-gate-clock"; | ||
81 | clocks = <&dpll4_m2x2_mul_ck>; | ||
82 | ti,bit-shift = <0x1b>; | ||
83 | reg = <0x48004d00 0x4>; | ||
84 | ti,set-bit-to-disable; | ||
85 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/ti/interface.txt b/Documentation/devicetree/bindings/clock/ti/interface.txt new file mode 100644 index 000000000000..064e8caccac3 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/interface.txt | |||
@@ -0,0 +1,54 @@ | |||
1 | Binding for Texas Instruments interface clock. | ||
2 | |||
3 | Binding status: Unstable - ABI compatibility may be broken in the future | ||
4 | |||
5 | This binding uses the common clock binding[1]. This clock is | ||
6 | quite much similar to the basic gate-clock [2], however, | ||
7 | it supports a number of additional features, including | ||
8 | companion clock finding (match corresponding functional gate | ||
9 | clock) and hardware autoidle enable / disable. | ||
10 | |||
11 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
12 | [2] Documentation/devicetree/bindings/clock/gate-clock.txt | ||
13 | |||
14 | Required properties: | ||
15 | - compatible : shall be one of: | ||
16 | "ti,omap3-interface-clock" - basic OMAP3 interface clock | ||
17 | "ti,omap3-no-wait-interface-clock" - interface clock which has no hardware | ||
18 | capability for waiting clock to be ready | ||
19 | "ti,omap3-hsotgusb-interface-clock" - interface clock with USB specific HW | ||
20 | handling | ||
21 | "ti,omap3-dss-interface-clock" - interface clock with DSS specific HW handling | ||
22 | "ti,omap3-ssi-interface-clock" - interface clock with SSI specific HW handling | ||
23 | "ti,am35xx-interface-clock" - interface clock with AM35xx specific HW handling | ||
24 | - #clock-cells : from common clock binding; shall be set to 0 | ||
25 | - clocks : link to phandle of parent clock | ||
26 | - reg : base address for the control register | ||
27 | |||
28 | Optional properties: | ||
29 | - ti,bit-shift : bit shift for the bit enabling/disabling the clock (default 0) | ||
30 | |||
31 | Examples: | ||
32 | aes1_ick: aes1_ick@48004a14 { | ||
33 | #clock-cells = <0>; | ||
34 | compatible = "ti,omap3-interface-clock"; | ||
35 | clocks = <&security_l4_ick2>; | ||
36 | reg = <0x48004a14 0x4>; | ||
37 | ti,bit-shift = <3>; | ||
38 | }; | ||
39 | |||
40 | cam_ick: cam_ick@48004f10 { | ||
41 | #clock-cells = <0>; | ||
42 | compatible = "ti,omap3-no-wait-interface-clock"; | ||
43 | clocks = <&l4_ick>; | ||
44 | reg = <0x48004f10 0x4>; | ||
45 | ti,bit-shift = <0>; | ||
46 | }; | ||
47 | |||
48 | ssi_ick_3430es2: ssi_ick_3430es2@48004a10 { | ||
49 | #clock-cells = <0>; | ||
50 | compatible = "ti,omap3-ssi-interface-clock"; | ||
51 | clocks = <&ssi_l4_ick>; | ||
52 | reg = <0x48004a10 0x4>; | ||
53 | ti,bit-shift = <0>; | ||
54 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/ti/mux.txt b/Documentation/devicetree/bindings/clock/ti/mux.txt new file mode 100644 index 000000000000..2d0d170f8001 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/mux.txt | |||
@@ -0,0 +1,76 @@ | |||
1 | Binding for TI mux clock. | ||
2 | |||
3 | Binding status: Unstable - ABI compatibility may be broken in the future | ||
4 | |||
5 | This binding uses the common clock binding[1]. It assumes a | ||
6 | register-mapped multiplexer with multiple input clock signals or | ||
7 | parents, one of which can be selected as output. This clock does not | ||
8 | gate or adjust the parent rate via a divider or multiplier. | ||
9 | |||
10 | By default the "clocks" property lists the parents in the same order | ||
11 | as they are programmed into the regster. E.g: | ||
12 | |||
13 | clocks = <&foo_clock>, <&bar_clock>, <&baz_clock>; | ||
14 | |||
15 | results in programming the register as follows: | ||
16 | |||
17 | register value selected parent clock | ||
18 | 0 foo_clock | ||
19 | 1 bar_clock | ||
20 | 2 baz_clock | ||
21 | |||
22 | Some clock controller IPs do not allow a value of zero to be programmed | ||
23 | into the register, instead indexing begins at 1. The optional property | ||
24 | "index-starts-at-one" modified the scheme as follows: | ||
25 | |||
26 | register value selected clock parent | ||
27 | 1 foo_clock | ||
28 | 2 bar_clock | ||
29 | 3 baz_clock | ||
30 | |||
31 | The binding must provide the register to control the mux. Optionally | ||
32 | the number of bits to shift the control field in the register can be | ||
33 | supplied. If the shift value is missing it is the same as supplying | ||
34 | a zero shift. | ||
35 | |||
36 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
37 | |||
38 | Required properties: | ||
39 | - compatible : shall be "ti,mux-clock" or "ti,composite-mux-clock". | ||
40 | - #clock-cells : from common clock binding; shall be set to 0. | ||
41 | - clocks : link phandles of parent clocks | ||
42 | - reg : register offset for register controlling adjustable mux | ||
43 | |||
44 | Optional properties: | ||
45 | - ti,bit-shift : number of bits to shift the bit-mask, defaults to | ||
46 | 0 if not present | ||
47 | - ti,index-starts-at-one : valid input select programming starts at 1, not | ||
48 | zero | ||
49 | - ti,set-rate-parent : clk_set_rate is propagated to parent clock, | ||
50 | not supported by the composite-mux-clock subtype | ||
51 | |||
52 | Examples: | ||
53 | |||
54 | sys_clkin_ck: sys_clkin_ck@4a306110 { | ||
55 | #clock-cells = <0>; | ||
56 | compatible = "ti,mux-clock"; | ||
57 | clocks = <&virt_12000000_ck>, <&virt_13000000_ck>, <&virt_16800000_ck>, <&virt_19200000_ck>, <&virt_26000000_ck>, <&virt_27000000_ck>, <&virt_38400000_ck>; | ||
58 | reg = <0x0110>; | ||
59 | ti,index-starts-at-one; | ||
60 | }; | ||
61 | |||
62 | abe_dpll_bypass_clk_mux_ck: abe_dpll_bypass_clk_mux_ck@4a306108 { | ||
63 | #clock-cells = <0>; | ||
64 | compatible = "ti,mux-clock"; | ||
65 | clocks = <&sys_clkin_ck>, <&sys_32k_ck>; | ||
66 | ti,bit-shift = <24>; | ||
67 | reg = <0x0108>; | ||
68 | }; | ||
69 | |||
70 | mcbsp5_mux_fck: mcbsp5_mux_fck { | ||
71 | #clock-cells = <0>; | ||
72 | compatible = "ti,composite-mux-clock"; | ||
73 | clocks = <&core_96m_fck>, <&mcbsp_clks>; | ||
74 | ti,bit-shift = <4>; | ||
75 | reg = <0x02d8>; | ||
76 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/zynq-7000.txt b/Documentation/devicetree/bindings/clock/zynq-7000.txt index d99af878f5d7..17b4a94916d6 100644 --- a/Documentation/devicetree/bindings/clock/zynq-7000.txt +++ b/Documentation/devicetree/bindings/clock/zynq-7000.txt | |||
@@ -22,6 +22,10 @@ Required properties: | |||
22 | Optional properties: | 22 | Optional properties: |
23 | - clocks : as described in the clock bindings | 23 | - clocks : as described in the clock bindings |
24 | - clock-names : as described in the clock bindings | 24 | - clock-names : as described in the clock bindings |
25 | - fclk-enable : Bit mask to enable FCLKs statically at boot time. | ||
26 | Bit [0..3] correspond to FCLK0..FCLK3. The corresponding | ||
27 | FCLK will only be enabled if it is actually running at | ||
28 | boot time. | ||
25 | 29 | ||
26 | Clock inputs: | 30 | Clock inputs: |
27 | The following strings are optional parameters to the 'clock-names' property in | 31 | The following strings are optional parameters to the 'clock-names' property in |
diff --git a/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt b/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt index 051f764bedb8..f055515d2b62 100644 --- a/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt +++ b/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt | |||
@@ -15,6 +15,10 @@ Optional properties: | |||
15 | - clock-latency: Specify the possible maximum transition latency for clock, | 15 | - clock-latency: Specify the possible maximum transition latency for clock, |
16 | in unit of nanoseconds. | 16 | in unit of nanoseconds. |
17 | - voltage-tolerance: Specify the CPU voltage tolerance in percentage. | 17 | - voltage-tolerance: Specify the CPU voltage tolerance in percentage. |
18 | - #cooling-cells: | ||
19 | - cooling-min-level: | ||
20 | - cooling-max-level: | ||
21 | Please refer to Documentation/devicetree/bindings/thermal/thermal.txt. | ||
18 | 22 | ||
19 | Examples: | 23 | Examples: |
20 | 24 | ||
@@ -33,6 +37,9 @@ cpus { | |||
33 | 198000 850000 | 37 | 198000 850000 |
34 | >; | 38 | >; |
35 | clock-latency = <61036>; /* two CLK32 periods */ | 39 | clock-latency = <61036>; /* two CLK32 periods */ |
40 | #cooling-cells = <2>; | ||
41 | cooling-min-level = <0>; | ||
42 | cooling-max-level = <2>; | ||
36 | }; | 43 | }; |
37 | 44 | ||
38 | cpu@1 { | 45 | cpu@1 { |
diff --git a/Documentation/devicetree/bindings/crypto/atmel-crypto.txt b/Documentation/devicetree/bindings/crypto/atmel-crypto.txt new file mode 100644 index 000000000000..f2aab3dc2b52 --- /dev/null +++ b/Documentation/devicetree/bindings/crypto/atmel-crypto.txt | |||
@@ -0,0 +1,68 @@ | |||
1 | * Atmel HW cryptographic accelerators | ||
2 | |||
3 | These are the HW cryptographic accelerators found on some Atmel products. | ||
4 | |||
5 | * Advanced Encryption Standard (AES) | ||
6 | |||
7 | Required properties: | ||
8 | - compatible : Should be "atmel,at91sam9g46-aes". | ||
9 | - reg: Should contain AES registers location and length. | ||
10 | - interrupts: Should contain the IRQ line for the AES. | ||
11 | - dmas: List of two DMA specifiers as described in | ||
12 | atmel-dma.txt and dma.txt files. | ||
13 | - dma-names: Contains one identifier string for each DMA specifier | ||
14 | in the dmas property. | ||
15 | |||
16 | Example: | ||
17 | aes@f8038000 { | ||
18 | compatible = "atmel,at91sam9g46-aes"; | ||
19 | reg = <0xf8038000 0x100>; | ||
20 | interrupts = <43 4 0>; | ||
21 | dmas = <&dma1 2 18>, | ||
22 | <&dma1 2 19>; | ||
23 | dma-names = "tx", "rx"; | ||
24 | |||
25 | * Triple Data Encryption Standard (Triple DES) | ||
26 | |||
27 | Required properties: | ||
28 | - compatible : Should be "atmel,at91sam9g46-tdes". | ||
29 | - reg: Should contain TDES registers location and length. | ||
30 | - interrupts: Should contain the IRQ line for the TDES. | ||
31 | |||
32 | Optional properties: | ||
33 | - dmas: List of two DMA specifiers as described in | ||
34 | atmel-dma.txt and dma.txt files. | ||
35 | - dma-names: Contains one identifier string for each DMA specifier | ||
36 | in the dmas property. | ||
37 | |||
38 | Example: | ||
39 | tdes@f803c000 { | ||
40 | compatible = "atmel,at91sam9g46-tdes"; | ||
41 | reg = <0xf803c000 0x100>; | ||
42 | interrupts = <44 4 0>; | ||
43 | dmas = <&dma1 2 20>, | ||
44 | <&dma1 2 21>; | ||
45 | dma-names = "tx", "rx"; | ||
46 | }; | ||
47 | |||
48 | * Secure Hash Algorithm (SHA) | ||
49 | |||
50 | Required properties: | ||
51 | - compatible : Should be "atmel,at91sam9g46-sha". | ||
52 | - reg: Should contain SHA registers location and length. | ||
53 | - interrupts: Should contain the IRQ line for the SHA. | ||
54 | |||
55 | Optional properties: | ||
56 | - dmas: One DMA specifiers as described in | ||
57 | atmel-dma.txt and dma.txt files. | ||
58 | - dma-names: Contains one identifier string for each DMA specifier | ||
59 | in the dmas property. Only one "tx" string needed. | ||
60 | |||
61 | Example: | ||
62 | sha@f8034000 { | ||
63 | compatible = "atmel,at91sam9g46-sha"; | ||
64 | reg = <0xf8034000 0x100>; | ||
65 | interrupts = <42 4 0>; | ||
66 | dmas = <&dma1 2 17>; | ||
67 | dma-names = "tx"; | ||
68 | }; | ||
diff --git a/Documentation/devicetree/bindings/crypto/fsl-dcp.txt b/Documentation/devicetree/bindings/crypto/fsl-dcp.txt new file mode 100644 index 000000000000..6949e50f1f16 --- /dev/null +++ b/Documentation/devicetree/bindings/crypto/fsl-dcp.txt | |||
@@ -0,0 +1,17 @@ | |||
1 | Freescale DCP (Data Co-Processor) found on i.MX23/i.MX28 . | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : Should be "fsl,<soc>-dcp" | ||
5 | - reg : Should contain MXS DCP registers location and length | ||
6 | - interrupts : Should contain MXS DCP interrupt numbers, VMI IRQ and DCP IRQ | ||
7 | must be supplied, optionally Secure IRQ can be present, but | ||
8 | is currently not implemented and not used. | ||
9 | |||
10 | Example: | ||
11 | |||
12 | dcp@80028000 { | ||
13 | compatible = "fsl,imx28-dcp", "fsl,imx23-dcp"; | ||
14 | reg = <0x80028000 0x2000>; | ||
15 | interrupts = <52 53>; | ||
16 | status = "okay"; | ||
17 | }; | ||
diff --git a/Documentation/devicetree/bindings/dma/bcm2835-dma.txt b/Documentation/devicetree/bindings/dma/bcm2835-dma.txt new file mode 100644 index 000000000000..1396078d15ac --- /dev/null +++ b/Documentation/devicetree/bindings/dma/bcm2835-dma.txt | |||
@@ -0,0 +1,57 @@ | |||
1 | * BCM2835 DMA controller | ||
2 | |||
3 | The BCM2835 DMA controller has 16 channels in total. | ||
4 | Only the lower 13 channels have an associated IRQ. | ||
5 | Some arbitrary channels are used by the firmware | ||
6 | (1,3,6,7 in the current firmware version). | ||
7 | The channels 0,2 and 3 have special functionality | ||
8 | and should not be used by the driver. | ||
9 | |||
10 | Required properties: | ||
11 | - compatible: Should be "brcm,bcm2835-dma". | ||
12 | - reg: Should contain DMA registers location and length. | ||
13 | - interrupts: Should contain the DMA interrupts associated | ||
14 | to the DMA channels in ascending order. | ||
15 | - #dma-cells: Must be <1>, the cell in the dmas property of the | ||
16 | client device represents the DREQ number. | ||
17 | - brcm,dma-channel-mask: Bit mask representing the channels | ||
18 | not used by the firmware in ascending order, | ||
19 | i.e. first channel corresponds to LSB. | ||
20 | |||
21 | Example: | ||
22 | |||
23 | dma: dma@7e007000 { | ||
24 | compatible = "brcm,bcm2835-dma"; | ||
25 | reg = <0x7e007000 0xf00>; | ||
26 | interrupts = <1 16>, | ||
27 | <1 17>, | ||
28 | <1 18>, | ||
29 | <1 19>, | ||
30 | <1 20>, | ||
31 | <1 21>, | ||
32 | <1 22>, | ||
33 | <1 23>, | ||
34 | <1 24>, | ||
35 | <1 25>, | ||
36 | <1 26>, | ||
37 | <1 27>, | ||
38 | <1 28>; | ||
39 | |||
40 | #dma-cells = <1>; | ||
41 | brcm,dma-channel-mask = <0x7f35>; | ||
42 | }; | ||
43 | |||
44 | DMA clients connected to the BCM2835 DMA controller must use the format | ||
45 | described in the dma.txt file, using a two-cell specifier for each channel. | ||
46 | |||
47 | Example: | ||
48 | |||
49 | bcm2835_i2s: i2s@7e203000 { | ||
50 | compatible = "brcm,bcm2835-i2s"; | ||
51 | reg = < 0x7e203000 0x20>, | ||
52 | < 0x7e101098 0x02>; | ||
53 | |||
54 | dmas = <&dma 2>, | ||
55 | <&dma 3>; | ||
56 | dma-names = "tx", "rx"; | ||
57 | }; | ||
diff --git a/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt b/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt index 4fa814d38321..68b83ecc3850 100644 --- a/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt +++ b/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt | |||
@@ -42,6 +42,7 @@ The full ID of peripheral types can be found below. | |||
42 | 19 IPU Memory | 42 | 19 IPU Memory |
43 | 20 ASRC | 43 | 20 ASRC |
44 | 21 ESAI | 44 | 21 ESAI |
45 | 22 SSI Dual FIFO (needs firmware ver >= 2) | ||
45 | 46 | ||
46 | The third cell specifies the transfer priority as below. | 47 | The third cell specifies the transfer priority as below. |
47 | 48 | ||
diff --git a/Documentation/devicetree/bindings/dma/moxa,moxart-dma.txt b/Documentation/devicetree/bindings/dma/moxa,moxart-dma.txt new file mode 100644 index 000000000000..8a9f3559335b --- /dev/null +++ b/Documentation/devicetree/bindings/dma/moxa,moxart-dma.txt | |||
@@ -0,0 +1,45 @@ | |||
1 | MOXA ART DMA Controller | ||
2 | |||
3 | See dma.txt first | ||
4 | |||
5 | Required properties: | ||
6 | |||
7 | - compatible : Must be "moxa,moxart-dma" | ||
8 | - reg : Should contain registers location and length | ||
9 | - interrupts : Should contain an interrupt-specifier for the sole | ||
10 | interrupt generated by the device | ||
11 | - #dma-cells : Should be 1, a single cell holding a line request number | ||
12 | |||
13 | Example: | ||
14 | |||
15 | dma: dma@90500000 { | ||
16 | compatible = "moxa,moxart-dma"; | ||
17 | reg = <0x90500080 0x40>; | ||
18 | interrupts = <24 0>; | ||
19 | #dma-cells = <1>; | ||
20 | }; | ||
21 | |||
22 | |||
23 | Clients: | ||
24 | |||
25 | DMA clients connected to the MOXA ART DMA controller must use the format | ||
26 | described in the dma.txt file, using a two-cell specifier for each channel: | ||
27 | a phandle plus one integer cells. | ||
28 | The two cells in order are: | ||
29 | |||
30 | 1. A phandle pointing to the DMA controller. | ||
31 | 2. Peripheral identifier for the hardware handshaking interface. | ||
32 | |||
33 | Example: | ||
34 | Use specific request line passing from dma | ||
35 | For example, MMC request line is 5 | ||
36 | |||
37 | sdhci: sdhci@98e00000 { | ||
38 | compatible = "moxa,moxart-sdhci"; | ||
39 | reg = <0x98e00000 0x5C>; | ||
40 | interrupts = <5 0>; | ||
41 | clocks = <&clk_apb>; | ||
42 | dmas = <&dma 5>, | ||
43 | <&dma 5>; | ||
44 | dma-names = "tx", "rx"; | ||
45 | }; | ||
diff --git a/Documentation/devicetree/bindings/dma/ste-dma40.txt b/Documentation/devicetree/bindings/dma/ste-dma40.txt index a8c21c256baa..1f5729f10621 100644 --- a/Documentation/devicetree/bindings/dma/ste-dma40.txt +++ b/Documentation/devicetree/bindings/dma/ste-dma40.txt | |||
@@ -50,6 +50,9 @@ Each dmas request consists of 4 cells: | |||
50 | 0x00000008: Use fixed channel: | 50 | 0x00000008: Use fixed channel: |
51 | Use automatic channel selection when unset | 51 | Use automatic channel selection when unset |
52 | Use DMA request line number when set | 52 | Use DMA request line number when set |
53 | 0x00000010: Set channel as high priority: | ||
54 | Normal priority when unset | ||
55 | High priority when set | ||
53 | 56 | ||
54 | Example: | 57 | Example: |
55 | 58 | ||
diff --git a/Documentation/devicetree/bindings/dma/tegra20-apbdma.txt b/Documentation/devicetree/bindings/dma/tegra20-apbdma.txt index 90fa7da525b8..c6908e7c42cc 100644 --- a/Documentation/devicetree/bindings/dma/tegra20-apbdma.txt +++ b/Documentation/devicetree/bindings/dma/tegra20-apbdma.txt | |||
@@ -5,6 +5,16 @@ Required properties: | |||
5 | - reg: Should contain DMA registers location and length. This shuld include | 5 | - reg: Should contain DMA registers location and length. This shuld include |
6 | all of the per-channel registers. | 6 | all of the per-channel registers. |
7 | - interrupts: Should contain all of the per-channel DMA interrupts. | 7 | - interrupts: Should contain all of the per-channel DMA interrupts. |
8 | - clocks: Must contain one entry, for the module clock. | ||
9 | See ../clocks/clock-bindings.txt for details. | ||
10 | - resets : Must contain an entry for each entry in reset-names. | ||
11 | See ../reset/reset.txt for details. | ||
12 | - reset-names : Must include the following entries: | ||
13 | - dma | ||
14 | - #dma-cells : Must be <1>. This dictates the length of DMA specifiers in | ||
15 | client nodes' dmas properties. The specifier represents the DMA request | ||
16 | select value for the peripheral. For more details, consult the Tegra TRM's | ||
17 | documentation of the APB DMA channel control register REQ_SEL field. | ||
8 | 18 | ||
9 | Examples: | 19 | Examples: |
10 | 20 | ||
@@ -27,4 +37,8 @@ apbdma: dma@6000a000 { | |||
27 | 0 149 0x04 | 37 | 0 149 0x04 |
28 | 0 150 0x04 | 38 | 0 150 0x04 |
29 | 0 151 0x04 >; | 39 | 0 151 0x04 >; |
40 | clocks = <&tegra_car 34>; | ||
41 | resets = <&tegra_car 34>; | ||
42 | reset-names = "dma"; | ||
43 | #dma-cells = <1>; | ||
30 | }; | 44 | }; |
diff --git a/Documentation/devicetree/bindings/extcon/extcon-palmas.txt b/Documentation/devicetree/bindings/extcon/extcon-palmas.txt index 7dab6a8f4a0e..45414bbcd945 100644 --- a/Documentation/devicetree/bindings/extcon/extcon-palmas.txt +++ b/Documentation/devicetree/bindings/extcon/extcon-palmas.txt | |||
@@ -2,7 +2,11 @@ EXTCON FOR PALMAS/TWL CHIPS | |||
2 | 2 | ||
3 | PALMAS USB COMPARATOR | 3 | PALMAS USB COMPARATOR |
4 | Required Properties: | 4 | Required Properties: |
5 | - compatible : Should be "ti,palmas-usb" or "ti,twl6035-usb" | 5 | - compatible: should contain one of: |
6 | * "ti,palmas-usb-vid". | ||
7 | * "ti,twl6035-usb-vid". | ||
8 | * "ti,palmas-usb" (DEPRECATED - use "ti,palmas-usb-vid"). | ||
9 | * "ti,twl6035-usb" (DEPRECATED - use "ti,twl6035-usb-vid"). | ||
6 | 10 | ||
7 | Optional Properties: | 11 | Optional Properties: |
8 | - ti,wakeup : To enable the wakeup comparator in probe | 12 | - ti,wakeup : To enable the wakeup comparator in probe |
diff --git a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt new file mode 100644 index 000000000000..a2e839d6e338 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt | |||
@@ -0,0 +1,41 @@ | |||
1 | Davinci GPIO controller bindings | ||
2 | |||
3 | Required Properties: | ||
4 | - compatible: should be "ti,dm6441-gpio" | ||
5 | |||
6 | - reg: Physical base address of the controller and the size of memory mapped | ||
7 | registers. | ||
8 | |||
9 | - gpio-controller : Marks the device node as a gpio controller. | ||
10 | |||
11 | - interrupt-parent: phandle of the parent interrupt controller. | ||
12 | |||
13 | - interrupts: Array of GPIO interrupt number. Only banked or unbanked IRQs are | ||
14 | supported at a time. | ||
15 | |||
16 | - ti,ngpio: The number of GPIO pins supported. | ||
17 | |||
18 | - ti,davinci-gpio-unbanked: The number of GPIOs that have an individual interrupt | ||
19 | line to processor. | ||
20 | |||
21 | The GPIO controller also acts as an interrupt controller. It uses the default | ||
22 | two cells specifier as described in Documentation/devicetree/bindings/ | ||
23 | interrupt-controller/interrupts.txt. | ||
24 | |||
25 | Example: | ||
26 | |||
27 | gpio: gpio@1e26000 { | ||
28 | compatible = "ti,dm6441-gpio"; | ||
29 | gpio-controller; | ||
30 | reg = <0x226000 0x1000>; | ||
31 | interrupt-parent = <&intc>; | ||
32 | interrupts = <42 IRQ_TYPE_EDGE_BOTH 43 IRQ_TYPE_EDGE_BOTH | ||
33 | 44 IRQ_TYPE_EDGE_BOTH 45 IRQ_TYPE_EDGE_BOTH | ||
34 | 46 IRQ_TYPE_EDGE_BOTH 47 IRQ_TYPE_EDGE_BOTH | ||
35 | 48 IRQ_TYPE_EDGE_BOTH 49 IRQ_TYPE_EDGE_BOTH | ||
36 | 50 IRQ_TYPE_EDGE_BOTH>; | ||
37 | ti,ngpio = <144>; | ||
38 | ti,davinci-gpio-unbanked = <0>; | ||
39 | interrupt-controller; | ||
40 | #interrupt-cells = <2>; | ||
41 | }; | ||
diff --git a/Documentation/devicetree/bindings/gpio/gpio-lp3943.txt b/Documentation/devicetree/bindings/gpio/gpio-lp3943.txt new file mode 100644 index 000000000000..80fcb7d70e13 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio-lp3943.txt | |||
@@ -0,0 +1,37 @@ | |||
1 | TI/National Semiconductor LP3943 GPIO controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "ti,lp3943-gpio" | ||
5 | - gpio-controller: Marks the device node as a GPIO controller. | ||
6 | - #gpio-cells: Should be 2. See gpio.txt in this directory for a | ||
7 | description of the cells format. | ||
8 | |||
9 | Example: | ||
10 | Simple LED controls with LP3943 GPIO controller | ||
11 | |||
12 | &i2c4 { | ||
13 | lp3943@60 { | ||
14 | compatible = "ti,lp3943"; | ||
15 | reg = <0x60>; | ||
16 | |||
17 | gpioex: gpio { | ||
18 | compatible = "ti,lp3943-gpio"; | ||
19 | gpio-controller; | ||
20 | #gpio-cells = <2>; | ||
21 | }; | ||
22 | }; | ||
23 | }; | ||
24 | |||
25 | leds { | ||
26 | compatible = "gpio-leds"; | ||
27 | indicator1 { | ||
28 | label = "indi1"; | ||
29 | gpios = <&gpioex 9 GPIO_ACTIVE_LOW>; | ||
30 | }; | ||
31 | |||
32 | indicator2 { | ||
33 | label = "indi2"; | ||
34 | gpios = <&gpioex 10 GPIO_ACTIVE_LOW>; | ||
35 | default-state = "off"; | ||
36 | }; | ||
37 | }; | ||
diff --git a/Documentation/devicetree/bindings/gpio/gpio-mcp23s08.txt b/Documentation/devicetree/bindings/gpio/gpio-mcp23s08.txt index daa30174bcc1..3ddc7ccfe5f3 100644 --- a/Documentation/devicetree/bindings/gpio/gpio-mcp23s08.txt +++ b/Documentation/devicetree/bindings/gpio/gpio-mcp23s08.txt | |||
@@ -38,12 +38,38 @@ Required device specific properties (only for SPI chips): | |||
38 | removed. | 38 | removed. |
39 | - spi-max-frequency = The maximum frequency this chip is able to handle | 39 | - spi-max-frequency = The maximum frequency this chip is able to handle |
40 | 40 | ||
41 | Example I2C: | 41 | Optional properties: |
42 | - #interrupt-cells : Should be two. | ||
43 | - first cell is the pin number | ||
44 | - second cell is used to specify flags. | ||
45 | - interrupt-controller: Marks the device node as a interrupt controller. | ||
46 | NOTE: The interrupt functionality is only supported for i2c versions of the | ||
47 | chips. The spi chips can also do the interrupts, but this is not supported by | ||
48 | the linux driver yet. | ||
49 | |||
50 | Optional device specific properties: | ||
51 | - microchip,irq-mirror: Sets the mirror flag in the IOCON register. Devices | ||
52 | with two interrupt outputs (these are the devices ending with 17 and | ||
53 | those that have 16 IOs) have two IO banks: IO 0-7 form bank 1 and | ||
54 | IO 8-15 are bank 2. These chips have two different interrupt outputs: | ||
55 | One for bank 1 and another for bank 2. If irq-mirror is set, both | ||
56 | interrupts are generated regardless of the bank that an input change | ||
57 | occured on. If it is not set, the interrupt are only generated for the | ||
58 | bank they belong to. | ||
59 | On devices with only one interrupt output this property is useless. | ||
60 | |||
61 | Example I2C (with interrupt): | ||
42 | gpiom1: gpio@20 { | 62 | gpiom1: gpio@20 { |
43 | compatible = "microchip,mcp23017"; | 63 | compatible = "microchip,mcp23017"; |
44 | gpio-controller; | 64 | gpio-controller; |
45 | #gpio-cells = <2>; | 65 | #gpio-cells = <2>; |
46 | reg = <0x20>; | 66 | reg = <0x20>; |
67 | |||
68 | interrupt-parent = <&gpio1>; | ||
69 | interrupts = <17 IRQ_TYPE_LEVEL_LOW>; | ||
70 | interrupt-controller; | ||
71 | #interrupt-cells=<2>; | ||
72 | microchip,irq-mirror; | ||
47 | }; | 73 | }; |
48 | 74 | ||
49 | Example SPI: | 75 | Example SPI: |
diff --git a/Documentation/devicetree/bindings/gpio/moxa,moxart-gpio.txt b/Documentation/devicetree/bindings/gpio/moxa,moxart-gpio.txt new file mode 100644 index 000000000000..f8e8f185a3db --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/moxa,moxart-gpio.txt | |||
@@ -0,0 +1,19 @@ | |||
1 | MOXA ART GPIO Controller | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - #gpio-cells : Should be 2, The first cell is the pin number, | ||
6 | the second cell is used to specify polarity: | ||
7 | 0 = active high | ||
8 | 1 = active low | ||
9 | - compatible : Must be "moxa,moxart-gpio" | ||
10 | - reg : Should contain registers location and length | ||
11 | |||
12 | Example: | ||
13 | |||
14 | gpio: gpio@98700000 { | ||
15 | gpio-controller; | ||
16 | #gpio-cells = <2>; | ||
17 | compatible = "moxa,moxart-gpio"; | ||
18 | reg = <0x98700000 0xC>; | ||
19 | }; | ||
diff --git a/Documentation/devicetree/bindings/gpio/renesas,gpio-rcar.txt b/Documentation/devicetree/bindings/gpio/renesas,gpio-rcar.txt index 8655df9440d5..f61cef74a212 100644 --- a/Documentation/devicetree/bindings/gpio/renesas,gpio-rcar.txt +++ b/Documentation/devicetree/bindings/gpio/renesas,gpio-rcar.txt | |||
@@ -2,10 +2,11 @@ | |||
2 | 2 | ||
3 | Required Properties: | 3 | Required Properties: |
4 | 4 | ||
5 | - compatible: should be one of the following. | 5 | - compatible: should contain one of the following. |
6 | - "renesas,gpio-r8a7778": for R8A7778 (R-Mobile M1) compatible GPIO controller. | 6 | - "renesas,gpio-r8a7778": for R8A7778 (R-Mobile M1) compatible GPIO controller. |
7 | - "renesas,gpio-r8a7779": for R8A7779 (R-Car H1) compatible GPIO controller. | 7 | - "renesas,gpio-r8a7779": for R8A7779 (R-Car H1) compatible GPIO controller. |
8 | - "renesas,gpio-r8a7790": for R8A7790 (R-Car H2) compatible GPIO controller. | 8 | - "renesas,gpio-r8a7790": for R8A7790 (R-Car H2) compatible GPIO controller. |
9 | - "renesas,gpio-r8a7791": for R8A7791 (R-Car M2) compatible GPIO controller. | ||
9 | - "renesas,gpio-rcar": for generic R-Car GPIO controller. | 10 | - "renesas,gpio-rcar": for generic R-Car GPIO controller. |
10 | 11 | ||
11 | - reg: Base address and length of each memory resource used by the GPIO | 12 | - reg: Base address and length of each memory resource used by the GPIO |
diff --git a/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt b/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt index b4fa934ae3a2..efaeec8961b6 100644 --- a/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt +++ b/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt | |||
@@ -9,6 +9,12 @@ Required properties: | |||
9 | - #size-cells: The number of cells used to represent the size of an address | 9 | - #size-cells: The number of cells used to represent the size of an address |
10 | range in the host1x address space. Should be 1. | 10 | range in the host1x address space. Should be 1. |
11 | - ranges: The mapping of the host1x address space to the CPU address space. | 11 | - ranges: The mapping of the host1x address space to the CPU address space. |
12 | - clocks: Must contain one entry, for the module clock. | ||
13 | See ../clocks/clock-bindings.txt for details. | ||
14 | - resets: Must contain an entry for each entry in reset-names. | ||
15 | See ../reset/reset.txt for details. | ||
16 | - reset-names: Must include the following entries: | ||
17 | - host1x | ||
12 | 18 | ||
13 | The host1x top-level node defines a number of children, each representing one | 19 | The host1x top-level node defines a number of children, each representing one |
14 | of the following host1x client modules: | 20 | of the following host1x client modules: |
@@ -19,6 +25,12 @@ of the following host1x client modules: | |||
19 | - compatible: "nvidia,tegra<chip>-mpe" | 25 | - compatible: "nvidia,tegra<chip>-mpe" |
20 | - reg: Physical base address and length of the controller's registers. | 26 | - reg: Physical base address and length of the controller's registers. |
21 | - interrupts: The interrupt outputs from the controller. | 27 | - interrupts: The interrupt outputs from the controller. |
28 | - clocks: Must contain one entry, for the module clock. | ||
29 | See ../clocks/clock-bindings.txt for details. | ||
30 | - resets: Must contain an entry for each entry in reset-names. | ||
31 | See ../reset/reset.txt for details. | ||
32 | - reset-names: Must include the following entries: | ||
33 | - mpe | ||
22 | 34 | ||
23 | - vi: video input | 35 | - vi: video input |
24 | 36 | ||
@@ -26,6 +38,12 @@ of the following host1x client modules: | |||
26 | - compatible: "nvidia,tegra<chip>-vi" | 38 | - compatible: "nvidia,tegra<chip>-vi" |
27 | - reg: Physical base address and length of the controller's registers. | 39 | - reg: Physical base address and length of the controller's registers. |
28 | - interrupts: The interrupt outputs from the controller. | 40 | - interrupts: The interrupt outputs from the controller. |
41 | - clocks: Must contain one entry, for the module clock. | ||
42 | See ../clocks/clock-bindings.txt for details. | ||
43 | - resets: Must contain an entry for each entry in reset-names. | ||
44 | See ../reset/reset.txt for details. | ||
45 | - reset-names: Must include the following entries: | ||
46 | - vi | ||
29 | 47 | ||
30 | - epp: encoder pre-processor | 48 | - epp: encoder pre-processor |
31 | 49 | ||
@@ -33,6 +51,12 @@ of the following host1x client modules: | |||
33 | - compatible: "nvidia,tegra<chip>-epp" | 51 | - compatible: "nvidia,tegra<chip>-epp" |
34 | - reg: Physical base address and length of the controller's registers. | 52 | - reg: Physical base address and length of the controller's registers. |
35 | - interrupts: The interrupt outputs from the controller. | 53 | - interrupts: The interrupt outputs from the controller. |
54 | - clocks: Must contain one entry, for the module clock. | ||
55 | See ../clocks/clock-bindings.txt for details. | ||
56 | - resets: Must contain an entry for each entry in reset-names. | ||
57 | See ../reset/reset.txt for details. | ||
58 | - reset-names: Must include the following entries: | ||
59 | - epp | ||
36 | 60 | ||
37 | - isp: image signal processor | 61 | - isp: image signal processor |
38 | 62 | ||
@@ -40,6 +64,12 @@ of the following host1x client modules: | |||
40 | - compatible: "nvidia,tegra<chip>-isp" | 64 | - compatible: "nvidia,tegra<chip>-isp" |
41 | - reg: Physical base address and length of the controller's registers. | 65 | - reg: Physical base address and length of the controller's registers. |
42 | - interrupts: The interrupt outputs from the controller. | 66 | - interrupts: The interrupt outputs from the controller. |
67 | - clocks: Must contain one entry, for the module clock. | ||
68 | See ../clocks/clock-bindings.txt for details. | ||
69 | - resets: Must contain an entry for each entry in reset-names. | ||
70 | See ../reset/reset.txt for details. | ||
71 | - reset-names: Must include the following entries: | ||
72 | - isp | ||
43 | 73 | ||
44 | - gr2d: 2D graphics engine | 74 | - gr2d: 2D graphics engine |
45 | 75 | ||
@@ -47,12 +77,30 @@ of the following host1x client modules: | |||
47 | - compatible: "nvidia,tegra<chip>-gr2d" | 77 | - compatible: "nvidia,tegra<chip>-gr2d" |
48 | - reg: Physical base address and length of the controller's registers. | 78 | - reg: Physical base address and length of the controller's registers. |
49 | - interrupts: The interrupt outputs from the controller. | 79 | - interrupts: The interrupt outputs from the controller. |
80 | - clocks: Must contain one entry, for the module clock. | ||
81 | See ../clocks/clock-bindings.txt for details. | ||
82 | - resets: Must contain an entry for each entry in reset-names. | ||
83 | See ../reset/reset.txt for details. | ||
84 | - reset-names: Must include the following entries: | ||
85 | - 2d | ||
50 | 86 | ||
51 | - gr3d: 3D graphics engine | 87 | - gr3d: 3D graphics engine |
52 | 88 | ||
53 | Required properties: | 89 | Required properties: |
54 | - compatible: "nvidia,tegra<chip>-gr3d" | 90 | - compatible: "nvidia,tegra<chip>-gr3d" |
55 | - reg: Physical base address and length of the controller's registers. | 91 | - reg: Physical base address and length of the controller's registers. |
92 | - clocks: Must contain an entry for each entry in clock-names. | ||
93 | See ../clocks/clock-bindings.txt for details. | ||
94 | - clock-names: Must include the following entries: | ||
95 | (This property may be omitted if the only clock in the list is "3d") | ||
96 | - 3d | ||
97 | This MUST be the first entry. | ||
98 | - 3d2 (Only required on SoCs with two 3D clocks) | ||
99 | - resets: Must contain an entry for each entry in reset-names. | ||
100 | See ../reset/reset.txt for details. | ||
101 | - reset-names: Must include the following entries: | ||
102 | - 3d | ||
103 | - 3d2 (Only required on SoCs with two 3D clocks) | ||
56 | 104 | ||
57 | - dc: display controller | 105 | - dc: display controller |
58 | 106 | ||
@@ -60,6 +108,19 @@ of the following host1x client modules: | |||
60 | - compatible: "nvidia,tegra<chip>-dc" | 108 | - compatible: "nvidia,tegra<chip>-dc" |
61 | - reg: Physical base address and length of the controller's registers. | 109 | - reg: Physical base address and length of the controller's registers. |
62 | - interrupts: The interrupt outputs from the controller. | 110 | - interrupts: The interrupt outputs from the controller. |
111 | - clocks: Must contain an entry for each entry in clock-names. | ||
112 | See ../clocks/clock-bindings.txt for details. | ||
113 | - clock-names: Must include the following entries: | ||
114 | - dc | ||
115 | This MUST be the first entry. | ||
116 | - parent | ||
117 | - resets: Must contain an entry for each entry in reset-names. | ||
118 | See ../reset/reset.txt for details. | ||
119 | - reset-names: Must include the following entries: | ||
120 | - dc | ||
121 | - nvidia,head: The number of the display controller head. This is used to | ||
122 | setup the various types of output to receive video data from the given | ||
123 | head. | ||
63 | 124 | ||
64 | Each display controller node has a child node, named "rgb", that represents | 125 | Each display controller node has a child node, named "rgb", that represents |
65 | the RGB output associated with the controller. It can take the following | 126 | the RGB output associated with the controller. It can take the following |
@@ -67,6 +128,7 @@ of the following host1x client modules: | |||
67 | - nvidia,ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing | 128 | - nvidia,ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing |
68 | - nvidia,hpd-gpio: specifies a GPIO used for hotplug detection | 129 | - nvidia,hpd-gpio: specifies a GPIO used for hotplug detection |
69 | - nvidia,edid: supplies a binary EDID blob | 130 | - nvidia,edid: supplies a binary EDID blob |
131 | - nvidia,panel: phandle of a display panel | ||
70 | 132 | ||
71 | - hdmi: High Definition Multimedia Interface | 133 | - hdmi: High Definition Multimedia Interface |
72 | 134 | ||
@@ -76,11 +138,22 @@ of the following host1x client modules: | |||
76 | - interrupts: The interrupt outputs from the controller. | 138 | - interrupts: The interrupt outputs from the controller. |
77 | - vdd-supply: regulator for supply voltage | 139 | - vdd-supply: regulator for supply voltage |
78 | - pll-supply: regulator for PLL | 140 | - pll-supply: regulator for PLL |
141 | - clocks: Must contain an entry for each entry in clock-names. | ||
142 | See ../clocks/clock-bindings.txt for details. | ||
143 | - clock-names: Must include the following entries: | ||
144 | - hdmi | ||
145 | This MUST be the first entry. | ||
146 | - parent | ||
147 | - resets: Must contain an entry for each entry in reset-names. | ||
148 | See ../reset/reset.txt for details. | ||
149 | - reset-names: Must include the following entries: | ||
150 | - hdmi | ||
79 | 151 | ||
80 | Optional properties: | 152 | Optional properties: |
81 | - nvidia,ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing | 153 | - nvidia,ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing |
82 | - nvidia,hpd-gpio: specifies a GPIO used for hotplug detection | 154 | - nvidia,hpd-gpio: specifies a GPIO used for hotplug detection |
83 | - nvidia,edid: supplies a binary EDID blob | 155 | - nvidia,edid: supplies a binary EDID blob |
156 | - nvidia,panel: phandle of a display panel | ||
84 | 157 | ||
85 | - tvo: TV encoder output | 158 | - tvo: TV encoder output |
86 | 159 | ||
@@ -88,12 +161,34 @@ of the following host1x client modules: | |||
88 | - compatible: "nvidia,tegra<chip>-tvo" | 161 | - compatible: "nvidia,tegra<chip>-tvo" |
89 | - reg: Physical base address and length of the controller's registers. | 162 | - reg: Physical base address and length of the controller's registers. |
90 | - interrupts: The interrupt outputs from the controller. | 163 | - interrupts: The interrupt outputs from the controller. |
164 | - clocks: Must contain one entry, for the module clock. | ||
165 | See ../clocks/clock-bindings.txt for details. | ||
91 | 166 | ||
92 | - dsi: display serial interface | 167 | - dsi: display serial interface |
93 | 168 | ||
94 | Required properties: | 169 | Required properties: |
95 | - compatible: "nvidia,tegra<chip>-dsi" | 170 | - compatible: "nvidia,tegra<chip>-dsi" |
96 | - reg: Physical base address and length of the controller's registers. | 171 | - reg: Physical base address and length of the controller's registers. |
172 | - clocks: Must contain an entry for each entry in clock-names. | ||
173 | See ../clocks/clock-bindings.txt for details. | ||
174 | - clock-names: Must include the following entries: | ||
175 | - dsi | ||
176 | This MUST be the first entry. | ||
177 | - lp | ||
178 | - parent | ||
179 | - resets: Must contain an entry for each entry in reset-names. | ||
180 | See ../reset/reset.txt for details. | ||
181 | - reset-names: Must include the following entries: | ||
182 | - dsi | ||
183 | - nvidia,mipi-calibrate: Should contain a phandle and a specifier specifying | ||
184 | which pads are used by this DSI output and need to be calibrated. See also | ||
185 | ../mipi/nvidia,tegra114-mipi.txt. | ||
186 | |||
187 | Optional properties: | ||
188 | - nvidia,ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing | ||
189 | - nvidia,hpd-gpio: specifies a GPIO used for hotplug detection | ||
190 | - nvidia,edid: supplies a binary EDID blob | ||
191 | - nvidia,panel: phandle of a display panel | ||
97 | 192 | ||
98 | Example: | 193 | Example: |
99 | 194 | ||
@@ -105,6 +200,9 @@ Example: | |||
105 | reg = <0x50000000 0x00024000>; | 200 | reg = <0x50000000 0x00024000>; |
106 | interrupts = <0 65 0x04 /* mpcore syncpt */ | 201 | interrupts = <0 65 0x04 /* mpcore syncpt */ |
107 | 0 67 0x04>; /* mpcore general */ | 202 | 0 67 0x04>; /* mpcore general */ |
203 | clocks = <&tegra_car TEGRA20_CLK_HOST1X>; | ||
204 | resets = <&tegra_car 28>; | ||
205 | reset-names = "host1x"; | ||
108 | 206 | ||
109 | #address-cells = <1>; | 207 | #address-cells = <1>; |
110 | #size-cells = <1>; | 208 | #size-cells = <1>; |
@@ -115,41 +213,64 @@ Example: | |||
115 | compatible = "nvidia,tegra20-mpe"; | 213 | compatible = "nvidia,tegra20-mpe"; |
116 | reg = <0x54040000 0x00040000>; | 214 | reg = <0x54040000 0x00040000>; |
117 | interrupts = <0 68 0x04>; | 215 | interrupts = <0 68 0x04>; |
216 | clocks = <&tegra_car TEGRA20_CLK_MPE>; | ||
217 | resets = <&tegra_car 60>; | ||
218 | reset-names = "mpe"; | ||
118 | }; | 219 | }; |
119 | 220 | ||
120 | vi { | 221 | vi { |
121 | compatible = "nvidia,tegra20-vi"; | 222 | compatible = "nvidia,tegra20-vi"; |
122 | reg = <0x54080000 0x00040000>; | 223 | reg = <0x54080000 0x00040000>; |
123 | interrupts = <0 69 0x04>; | 224 | interrupts = <0 69 0x04>; |
225 | clocks = <&tegra_car TEGRA20_CLK_VI>; | ||
226 | resets = <&tegra_car 100>; | ||
227 | reset-names = "vi"; | ||
124 | }; | 228 | }; |
125 | 229 | ||
126 | epp { | 230 | epp { |
127 | compatible = "nvidia,tegra20-epp"; | 231 | compatible = "nvidia,tegra20-epp"; |
128 | reg = <0x540c0000 0x00040000>; | 232 | reg = <0x540c0000 0x00040000>; |
129 | interrupts = <0 70 0x04>; | 233 | interrupts = <0 70 0x04>; |
234 | clocks = <&tegra_car TEGRA20_CLK_EPP>; | ||
235 | resets = <&tegra_car 19>; | ||
236 | reset-names = "epp"; | ||
130 | }; | 237 | }; |
131 | 238 | ||
132 | isp { | 239 | isp { |
133 | compatible = "nvidia,tegra20-isp"; | 240 | compatible = "nvidia,tegra20-isp"; |
134 | reg = <0x54100000 0x00040000>; | 241 | reg = <0x54100000 0x00040000>; |
135 | interrupts = <0 71 0x04>; | 242 | interrupts = <0 71 0x04>; |
243 | clocks = <&tegra_car TEGRA20_CLK_ISP>; | ||
244 | resets = <&tegra_car 23>; | ||
245 | reset-names = "isp"; | ||
136 | }; | 246 | }; |
137 | 247 | ||
138 | gr2d { | 248 | gr2d { |
139 | compatible = "nvidia,tegra20-gr2d"; | 249 | compatible = "nvidia,tegra20-gr2d"; |
140 | reg = <0x54140000 0x00040000>; | 250 | reg = <0x54140000 0x00040000>; |
141 | interrupts = <0 72 0x04>; | 251 | interrupts = <0 72 0x04>; |
252 | clocks = <&tegra_car TEGRA20_CLK_GR2D>; | ||
253 | resets = <&tegra_car 21>; | ||
254 | reset-names = "2d"; | ||
142 | }; | 255 | }; |
143 | 256 | ||
144 | gr3d { | 257 | gr3d { |
145 | compatible = "nvidia,tegra20-gr3d"; | 258 | compatible = "nvidia,tegra20-gr3d"; |
146 | reg = <0x54180000 0x00040000>; | 259 | reg = <0x54180000 0x00040000>; |
260 | clocks = <&tegra_car TEGRA20_CLK_GR3D>; | ||
261 | resets = <&tegra_car 24>; | ||
262 | reset-names = "3d"; | ||
147 | }; | 263 | }; |
148 | 264 | ||
149 | dc@54200000 { | 265 | dc@54200000 { |
150 | compatible = "nvidia,tegra20-dc"; | 266 | compatible = "nvidia,tegra20-dc"; |
151 | reg = <0x54200000 0x00040000>; | 267 | reg = <0x54200000 0x00040000>; |
152 | interrupts = <0 73 0x04>; | 268 | interrupts = <0 73 0x04>; |
269 | clocks = <&tegra_car TEGRA20_CLK_DISP1>, | ||
270 | <&tegra_car TEGRA20_CLK_PLL_P>; | ||
271 | clock-names = "dc", "parent"; | ||
272 | resets = <&tegra_car 27>; | ||
273 | reset-names = "dc"; | ||
153 | 274 | ||
154 | rgb { | 275 | rgb { |
155 | status = "disabled"; | 276 | status = "disabled"; |
@@ -160,6 +281,11 @@ Example: | |||
160 | compatible = "nvidia,tegra20-dc"; | 281 | compatible = "nvidia,tegra20-dc"; |
161 | reg = <0x54240000 0x00040000>; | 282 | reg = <0x54240000 0x00040000>; |
162 | interrupts = <0 74 0x04>; | 283 | interrupts = <0 74 0x04>; |
284 | clocks = <&tegra_car TEGRA20_CLK_DISP2>, | ||
285 | <&tegra_car TEGRA20_CLK_PLL_P>; | ||
286 | clock-names = "dc", "parent"; | ||
287 | resets = <&tegra_car 26>; | ||
288 | reset-names = "dc"; | ||
163 | 289 | ||
164 | rgb { | 290 | rgb { |
165 | status = "disabled"; | 291 | status = "disabled"; |
@@ -170,6 +296,11 @@ Example: | |||
170 | compatible = "nvidia,tegra20-hdmi"; | 296 | compatible = "nvidia,tegra20-hdmi"; |
171 | reg = <0x54280000 0x00040000>; | 297 | reg = <0x54280000 0x00040000>; |
172 | interrupts = <0 75 0x04>; | 298 | interrupts = <0 75 0x04>; |
299 | clocks = <&tegra_car TEGRA20_CLK_HDMI>, | ||
300 | <&tegra_car TEGRA20_CLK_PLL_D_OUT0>; | ||
301 | clock-names = "hdmi", "parent"; | ||
302 | resets = <&tegra_car 51>; | ||
303 | reset-names = "hdmi"; | ||
173 | status = "disabled"; | 304 | status = "disabled"; |
174 | }; | 305 | }; |
175 | 306 | ||
@@ -177,12 +308,18 @@ Example: | |||
177 | compatible = "nvidia,tegra20-tvo"; | 308 | compatible = "nvidia,tegra20-tvo"; |
178 | reg = <0x542c0000 0x00040000>; | 309 | reg = <0x542c0000 0x00040000>; |
179 | interrupts = <0 76 0x04>; | 310 | interrupts = <0 76 0x04>; |
311 | clocks = <&tegra_car TEGRA20_CLK_TVO>; | ||
180 | status = "disabled"; | 312 | status = "disabled"; |
181 | }; | 313 | }; |
182 | 314 | ||
183 | dsi { | 315 | dsi { |
184 | compatible = "nvidia,tegra20-dsi"; | 316 | compatible = "nvidia,tegra20-dsi"; |
185 | reg = <0x54300000 0x00040000>; | 317 | reg = <0x54300000 0x00040000>; |
318 | clocks = <&tegra_car TEGRA20_CLK_DSI>, | ||
319 | <&tegra_car TEGRA20_CLK_PLL_D_OUT0>; | ||
320 | clock-names = "dsi", "parent"; | ||
321 | resets = <&tegra_car 48>; | ||
322 | reset-names = "dsi"; | ||
186 | status = "disabled"; | 323 | status = "disabled"; |
187 | }; | 324 | }; |
188 | }; | 325 | }; |
diff --git a/Documentation/devicetree/bindings/i2c/i2c-at91.txt b/Documentation/devicetree/bindings/i2c/i2c-at91.txt index b689a0d9441c..4fade84bea16 100644 --- a/Documentation/devicetree/bindings/i2c/i2c-at91.txt +++ b/Documentation/devicetree/bindings/i2c/i2c-at91.txt | |||
@@ -9,6 +9,7 @@ Required properties : | |||
9 | - interrupts: interrupt number to the cpu. | 9 | - interrupts: interrupt number to the cpu. |
10 | - #address-cells = <1>; | 10 | - #address-cells = <1>; |
11 | - #size-cells = <0>; | 11 | - #size-cells = <0>; |
12 | - clocks: phandles to input clocks. | ||
12 | 13 | ||
13 | Optional properties: | 14 | Optional properties: |
14 | - Child nodes conforming to i2c bus binding | 15 | - Child nodes conforming to i2c bus binding |
@@ -21,6 +22,7 @@ i2c0: i2c@fff84000 { | |||
21 | interrupts = <12 4 6>; | 22 | interrupts = <12 4 6>; |
22 | #address-cells = <1>; | 23 | #address-cells = <1>; |
23 | #size-cells = <0>; | 24 | #size-cells = <0>; |
25 | clocks = <&twi0_clk>; | ||
24 | 26 | ||
25 | 24c512@50 { | 27 | 24c512@50 { |
26 | compatible = "24c512"; | 28 | compatible = "24c512"; |
diff --git a/Documentation/devicetree/bindings/i2c/i2c-mux-pca954x.txt b/Documentation/devicetree/bindings/i2c/i2c-mux-pca954x.txt new file mode 100644 index 000000000000..34a3fb6f8488 --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/i2c-mux-pca954x.txt | |||
@@ -0,0 +1,50 @@ | |||
1 | * NXP PCA954x I2C bus switch | ||
2 | |||
3 | Required Properties: | ||
4 | |||
5 | - compatible: Must contain one of the following. | ||
6 | "nxp,pca9540", "nxp,pca9542", "nxp,pca9543", "nxp,pca9544", | ||
7 | "nxp,pca9545", "nxp,pca9546", "nxp,pca9547", "nxp,pca9548" | ||
8 | |||
9 | - reg: The I2C address of the device. | ||
10 | |||
11 | The following required properties are defined externally: | ||
12 | |||
13 | - Standard I2C mux properties. See i2c-mux.txt in this directory. | ||
14 | - I2C child bus nodes. See i2c-mux.txt in this directory. | ||
15 | |||
16 | Optional Properties: | ||
17 | |||
18 | - reset-gpios: Reference to the GPIO connected to the reset input. | ||
19 | |||
20 | |||
21 | Example: | ||
22 | |||
23 | i2c-switch@74 { | ||
24 | compatible = "nxp,pca9548"; | ||
25 | #address-cells = <1>; | ||
26 | #size-cells = <0>; | ||
27 | reg = <0x74>; | ||
28 | |||
29 | i2c@2 { | ||
30 | #address-cells = <1>; | ||
31 | #size-cells = <0>; | ||
32 | reg = <2>; | ||
33 | |||
34 | eeprom@54 { | ||
35 | compatible = "at,24c08"; | ||
36 | reg = <0x54>; | ||
37 | }; | ||
38 | }; | ||
39 | |||
40 | i2c@4 { | ||
41 | #address-cells = <1>; | ||
42 | #size-cells = <0>; | ||
43 | reg = <4>; | ||
44 | |||
45 | rtc@51 { | ||
46 | compatible = "nxp,pcf8563"; | ||
47 | reg = <0x51>; | ||
48 | }; | ||
49 | }; | ||
50 | }; | ||
diff --git a/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt b/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt index 82e8f6f17179..582b4652a82a 100644 --- a/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt +++ b/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt | |||
@@ -5,7 +5,11 @@ Required properties : | |||
5 | 5 | ||
6 | - reg : Offset and length of the register set for the device | 6 | - reg : Offset and length of the register set for the device |
7 | - compatible : Should be "marvell,mv64xxx-i2c" or "allwinner,sun4i-i2c" | 7 | - compatible : Should be "marvell,mv64xxx-i2c" or "allwinner,sun4i-i2c" |
8 | or "marvell,mv78230-i2c" | 8 | or "marvell,mv78230-i2c" or "marvell,mv78230-a0-i2c" |
9 | Note: Only use "marvell,mv78230-a0-i2c" for a very rare, | ||
10 | initial version of the SoC which had broken offload | ||
11 | support. Linux auto-detects this and sets it | ||
12 | appropriately. | ||
9 | - interrupts : The interrupt number | 13 | - interrupts : The interrupt number |
10 | 14 | ||
11 | Optional properties : | 15 | Optional properties : |
diff --git a/Documentation/devicetree/bindings/i2c/i2c-riic.txt b/Documentation/devicetree/bindings/i2c/i2c-riic.txt new file mode 100644 index 000000000000..0bcc4716c319 --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/i2c-riic.txt | |||
@@ -0,0 +1,29 @@ | |||
1 | Device tree configuration for Renesas RIIC driver | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "renesas,riic-<soctype>". "renesas,riic-rz" as fallback | ||
5 | - reg : address start and address range size of device | ||
6 | - interrupts : 8 interrupts (TEI, RI, TI, SPI, STI, NAKI, ALI, TMOI) | ||
7 | - clock-frequency : frequency of bus clock in Hz | ||
8 | - #address-cells : should be <1> | ||
9 | - #size-cells : should be <0> | ||
10 | |||
11 | Pinctrl properties might be needed, too. See there. | ||
12 | |||
13 | Example: | ||
14 | |||
15 | i2c0: i2c@fcfee000 { | ||
16 | compatible = "renesas,riic-r7s72100", "renesas,riic-rz"; | ||
17 | reg = <0xfcfee000 0x44>; | ||
18 | interrupts = <0 157 IRQ_TYPE_LEVEL_HIGH>, | ||
19 | <0 158 IRQ_TYPE_EDGE_RISING>, | ||
20 | <0 159 IRQ_TYPE_EDGE_RISING>, | ||
21 | <0 160 IRQ_TYPE_LEVEL_HIGH>, | ||
22 | <0 161 IRQ_TYPE_LEVEL_HIGH>, | ||
23 | <0 162 IRQ_TYPE_LEVEL_HIGH>, | ||
24 | <0 163 IRQ_TYPE_LEVEL_HIGH>, | ||
25 | <0 164 IRQ_TYPE_LEVEL_HIGH>; | ||
26 | clock-frequency = <100000>; | ||
27 | #address-cells = <1>; | ||
28 | #size-cells = <0>; | ||
29 | }; | ||
diff --git a/Documentation/devicetree/bindings/i2c/i2c-s3c2410.txt b/Documentation/devicetree/bindings/i2c/i2c-s3c2410.txt index 296eb4536129..278de8e64bbf 100644 --- a/Documentation/devicetree/bindings/i2c/i2c-s3c2410.txt +++ b/Documentation/devicetree/bindings/i2c/i2c-s3c2410.txt | |||
@@ -10,6 +10,8 @@ Required properties: | |||
10 | inside HDMIPHY block found on several samsung SoCs | 10 | inside HDMIPHY block found on several samsung SoCs |
11 | (d) "samsung, exynos5440-i2c", for s3c2440-like i2c used | 11 | (d) "samsung, exynos5440-i2c", for s3c2440-like i2c used |
12 | on EXYNOS5440 which does not need GPIO configuration. | 12 | on EXYNOS5440 which does not need GPIO configuration. |
13 | (e) "samsung, exynos5-sata-phy-i2c", for s3c2440-like i2c used as | ||
14 | a host to SATA PHY controller on an internal bus. | ||
13 | - reg: physical base address of the controller and length of memory mapped | 15 | - reg: physical base address of the controller and length of memory mapped |
14 | region. | 16 | region. |
15 | - interrupts: interrupt number to the cpu. | 17 | - interrupts: interrupt number to the cpu. |
diff --git a/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt b/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt index ef77cc7a0e46..87507e9ce6db 100644 --- a/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt +++ b/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt | |||
@@ -39,12 +39,23 @@ Required properties: | |||
39 | - interrupts: Should contain I2C controller interrupts. | 39 | - interrupts: Should contain I2C controller interrupts. |
40 | - address-cells: Address cells for I2C device address. | 40 | - address-cells: Address cells for I2C device address. |
41 | - size-cells: Size of the I2C device address. | 41 | - size-cells: Size of the I2C device address. |
42 | - clocks: Clock ID as per | 42 | - clocks: Must contain an entry for each entry in clock-names. |
43 | Documentation/devicetree/bindings/clock/tegra<chip-id>.txt | 43 | See ../clocks/clock-bindings.txt for details. |
44 | for I2C controller. | 44 | - clock-names: Must include the following entries: |
45 | - clock-names: Name of the clock: | 45 | Tegra20/Tegra30: |
46 | Tegra20/Tegra30 I2C controller: "div-clk and "fast-clk". | 46 | - div-clk |
47 | Tegra114 I2C controller: "div-clk". | 47 | - fast-clk |
48 | Tegra114: | ||
49 | - div-clk | ||
50 | - resets: Must contain an entry for each entry in reset-names. | ||
51 | See ../reset/reset.txt for details. | ||
52 | - reset-names: Must include the following entries: | ||
53 | - i2c | ||
54 | - dmas: Must contain an entry for each entry in clock-names. | ||
55 | See ../dma/dma.txt for details. | ||
56 | - dma-names: Must include the following entries: | ||
57 | - rx | ||
58 | - tx | ||
48 | 59 | ||
49 | Example: | 60 | Example: |
50 | 61 | ||
@@ -56,5 +67,9 @@ Example: | |||
56 | #size-cells = <0>; | 67 | #size-cells = <0>; |
57 | clocks = <&tegra_car 12>, <&tegra_car 124>; | 68 | clocks = <&tegra_car 12>, <&tegra_car 124>; |
58 | clock-names = "div-clk", "fast-clk"; | 69 | clock-names = "div-clk", "fast-clk"; |
70 | resets = <&tegra_car 12>; | ||
71 | reset-names = "i2c"; | ||
72 | dmas = <&apbdma 16>, <&apbdma 16>; | ||
73 | dma-names = "rx", "tx"; | ||
59 | status = "disabled"; | 74 | status = "disabled"; |
60 | }; | 75 | }; |
diff --git a/Documentation/devicetree/bindings/i2c/trivial-devices.txt b/Documentation/devicetree/bindings/i2c/trivial-devices.txt index b1cb3415e6f1..1a1ac2e560e9 100644 --- a/Documentation/devicetree/bindings/i2c/trivial-devices.txt +++ b/Documentation/devicetree/bindings/i2c/trivial-devices.txt | |||
@@ -16,6 +16,7 @@ adt7461 +/-1C TDM Extended Temp Range I.C | |||
16 | at,24c08 i2c serial eeprom (24cxx) | 16 | at,24c08 i2c serial eeprom (24cxx) |
17 | atmel,24c02 i2c serial eeprom (24cxx) | 17 | atmel,24c02 i2c serial eeprom (24cxx) |
18 | atmel,at97sc3204t i2c trusted platform module (TPM) | 18 | atmel,at97sc3204t i2c trusted platform module (TPM) |
19 | capella,cm32181 CM32181: Ambient Light Sensor | ||
19 | catalyst,24c32 i2c serial eeprom | 20 | catalyst,24c32 i2c serial eeprom |
20 | dallas,ds1307 64 x 8, Serial, I2C Real-Time Clock | 21 | dallas,ds1307 64 x 8, Serial, I2C Real-Time Clock |
21 | dallas,ds1338 I2C RTC with 56-Byte NV RAM | 22 | dallas,ds1338 I2C RTC with 56-Byte NV RAM |
@@ -39,6 +40,7 @@ fsl,sgtl5000 SGTL5000: Ultra Low-Power Audio Codec | |||
39 | gmt,g751 G751: Digital Temperature Sensor and Thermal Watchdog with Two-Wire Interface | 40 | gmt,g751 G751: Digital Temperature Sensor and Thermal Watchdog with Two-Wire Interface |
40 | infineon,slb9635tt Infineon SLB9635 (Soft-) I2C TPM (old protocol, max 100khz) | 41 | infineon,slb9635tt Infineon SLB9635 (Soft-) I2C TPM (old protocol, max 100khz) |
41 | infineon,slb9645tt Infineon SLB9645 I2C TPM (new protocol, max 400khz) | 42 | infineon,slb9645tt Infineon SLB9645 I2C TPM (new protocol, max 400khz) |
43 | isl,isl12057 Intersil ISL12057 I2C RTC Chip | ||
42 | maxim,ds1050 5 Bit Programmable, Pulse-Width Modulator | 44 | maxim,ds1050 5 Bit Programmable, Pulse-Width Modulator |
43 | maxim,max1237 Low-Power, 4-/12-Channel, 2-Wire Serial, 12-Bit ADCs | 45 | maxim,max1237 Low-Power, 4-/12-Channel, 2-Wire Serial, 12-Bit ADCs |
44 | maxim,max6625 9-Bit/12-Bit Temperature Sensors with I²C-Compatible Serial Interface | 46 | maxim,max6625 9-Bit/12-Bit Temperature Sensors with I²C-Compatible Serial Interface |
diff --git a/Documentation/devicetree/bindings/iio/humidity/dht11.txt b/Documentation/devicetree/bindings/iio/humidity/dht11.txt new file mode 100644 index 000000000000..ecc24c199fd6 --- /dev/null +++ b/Documentation/devicetree/bindings/iio/humidity/dht11.txt | |||
@@ -0,0 +1,14 @@ | |||
1 | * DHT11 humidity/temperature sensor (and compatibles like DHT22) | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be "dht11" | ||
5 | - gpios: Should specify the GPIO connected to the sensor's data | ||
6 | line, see "gpios property" in | ||
7 | Documentation/devicetree/bindings/gpio/gpio.txt. | ||
8 | |||
9 | Example: | ||
10 | |||
11 | humidity_sensor { | ||
12 | compatible = "dht11"; | ||
13 | gpios = <&gpio0 6 0>; | ||
14 | } | ||
diff --git a/Documentation/devicetree/bindings/iio/light/tsl2563.txt b/Documentation/devicetree/bindings/iio/light/tsl2563.txt new file mode 100644 index 000000000000..f91e809e736e --- /dev/null +++ b/Documentation/devicetree/bindings/iio/light/tsl2563.txt | |||
@@ -0,0 +1,19 @@ | |||
1 | * AMS TAOS TSL2563 ambient light sensor | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible : should be "amstaos,tsl2563" | ||
6 | - reg : the I2C address of the sensor | ||
7 | |||
8 | Optional properties: | ||
9 | |||
10 | - amstaos,cover-comp-gain : integer used as multiplier for gain | ||
11 | compensation (default = 1) | ||
12 | |||
13 | Example: | ||
14 | |||
15 | tsl2563@29 { | ||
16 | compatible = "amstaos,tsl2563"; | ||
17 | reg = <0x29>; | ||
18 | amstaos,cover-comp-gain = <16>; | ||
19 | }; | ||
diff --git a/Documentation/devicetree/bindings/iio/magnetometer/hmc5843.txt b/Documentation/devicetree/bindings/iio/magnetometer/hmc5843.txt new file mode 100644 index 000000000000..90d5f34db04e --- /dev/null +++ b/Documentation/devicetree/bindings/iio/magnetometer/hmc5843.txt | |||
@@ -0,0 +1,17 @@ | |||
1 | * Honeywell HMC5843 magnetometer sensor | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible : should be "honeywell,hmc5843" | ||
6 | - reg : the I2C address of the magnetometer - typically 0x1e | ||
7 | |||
8 | Optional properties: | ||
9 | |||
10 | - gpios : should be device tree identifier of the magnetometer DRDY pin | ||
11 | |||
12 | Example: | ||
13 | |||
14 | hmc5843@1e { | ||
15 | compatible = "honeywell,hmc5843" | ||
16 | reg = <0x1e>; | ||
17 | }; | ||
diff --git a/Documentation/devicetree/bindings/input/gpio-beeper.txt b/Documentation/devicetree/bindings/input/gpio-beeper.txt new file mode 100644 index 000000000000..a5086e37fce6 --- /dev/null +++ b/Documentation/devicetree/bindings/input/gpio-beeper.txt | |||
@@ -0,0 +1,13 @@ | |||
1 | * GPIO beeper device tree bindings | ||
2 | |||
3 | Register a beeper connected to GPIO pin. | ||
4 | |||
5 | Required properties: | ||
6 | - compatible: Should be "gpio-beeper". | ||
7 | - gpios: From common gpio binding; gpio connection to beeper enable pin. | ||
8 | |||
9 | Example: | ||
10 | beeper: beeper { | ||
11 | compatible = "gpio-beeper"; | ||
12 | gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>; | ||
13 | }; | ||
diff --git a/Documentation/devicetree/bindings/input/nvidia,tegra20-kbc.txt b/Documentation/devicetree/bindings/input/nvidia,tegra20-kbc.txt index 2995fae7ee47..0382b8bd69c6 100644 --- a/Documentation/devicetree/bindings/input/nvidia,tegra20-kbc.txt +++ b/Documentation/devicetree/bindings/input/nvidia,tegra20-kbc.txt | |||
@@ -13,6 +13,12 @@ Required properties: | |||
13 | array of pin numbers which is used as column. | 13 | array of pin numbers which is used as column. |
14 | - linux,keymap: The keymap for keys as described in the binding document | 14 | - linux,keymap: The keymap for keys as described in the binding document |
15 | devicetree/bindings/input/matrix-keymap.txt. | 15 | devicetree/bindings/input/matrix-keymap.txt. |
16 | - clocks: Must contain one entry, for the module clock. | ||
17 | See ../clocks/clock-bindings.txt for details. | ||
18 | - resets: Must contain an entry for each entry in reset-names. | ||
19 | See ../reset/reset.txt for details. | ||
20 | - reset-names: Must include the following entries: | ||
21 | - kbc | ||
16 | 22 | ||
17 | Optional properties, in addition to those specified by the shared | 23 | Optional properties, in addition to those specified by the shared |
18 | matrix-keyboard bindings: | 24 | matrix-keyboard bindings: |
@@ -31,6 +37,9 @@ keyboard: keyboard { | |||
31 | compatible = "nvidia,tegra20-kbc"; | 37 | compatible = "nvidia,tegra20-kbc"; |
32 | reg = <0x7000e200 0x100>; | 38 | reg = <0x7000e200 0x100>; |
33 | interrupts = <0 85 0x04>; | 39 | interrupts = <0 85 0x04>; |
40 | clocks = <&tegra_car 36>; | ||
41 | resets = <&tegra_car 36>; | ||
42 | reset-names = "kbc"; | ||
34 | nvidia,ghost-filter; | 43 | nvidia,ghost-filter; |
35 | nvidia,debounce-delay-ms = <640>; | 44 | nvidia,debounce-delay-ms = <640>; |
36 | nvidia,kbc-row-pins = <0 1 2>; /* pin 0, 1, 2 as rows */ | 45 | nvidia,kbc-row-pins = <0 1 2>; /* pin 0, 1, 2 as rows */ |
diff --git a/Documentation/devicetree/bindings/input/touchscreen/tsc2007.txt b/Documentation/devicetree/bindings/input/touchscreen/tsc2007.txt new file mode 100644 index 000000000000..ec365e172236 --- /dev/null +++ b/Documentation/devicetree/bindings/input/touchscreen/tsc2007.txt | |||
@@ -0,0 +1,41 @@ | |||
1 | * Texas Instruments tsc2007 touchscreen controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: must be "ti,tsc2007". | ||
5 | - reg: I2C address of the chip. | ||
6 | - ti,x-plate-ohms: X-plate resistance in ohms. | ||
7 | |||
8 | Optional properties: | ||
9 | - gpios: the interrupt gpio the chip is connected to (trough the penirq pin). | ||
10 | The penirq pin goes to low when the panel is touched. | ||
11 | (see GPIO binding[1] for more details). | ||
12 | - interrupt-parent: the phandle for the gpio controller | ||
13 | (see interrupt binding[0]). | ||
14 | - interrupts: (gpio) interrupt to which the chip is connected | ||
15 | (see interrupt binding[0]). | ||
16 | - ti,max-rt: maximum pressure. | ||
17 | - ti,fuzzx: specifies the absolute input fuzz x value. | ||
18 | If set, it will permit noise in the data up to +- the value given to the fuzz | ||
19 | parameter, that is used to filter noise from the event stream. | ||
20 | - ti,fuzzy: specifies the absolute input fuzz y value. | ||
21 | - ti,fuzzz: specifies the absolute input fuzz z value. | ||
22 | - ti,poll-period: how much time to wait (in milliseconds) before reading again the | ||
23 | values from the tsc2007. | ||
24 | |||
25 | [0]: Documentation/devicetree/bindings/interrupt-controller/interrupts.txt | ||
26 | [1]: Documentation/devicetree/bindings/gpio/gpio.txt | ||
27 | |||
28 | Example: | ||
29 | &i2c1 { | ||
30 | /* ... */ | ||
31 | tsc2007@49 { | ||
32 | compatible = "ti,tsc2007"; | ||
33 | reg = <0x49>; | ||
34 | interrupt-parent = <&gpio4>; | ||
35 | interrupts = <0x0 0x8>; | ||
36 | gpios = <&gpio4 0 0>; | ||
37 | ti,x-plate-ohms = <180>; | ||
38 | }; | ||
39 | |||
40 | /* ... */ | ||
41 | }; | ||
diff --git a/Documentation/devicetree/bindings/input/twl4030-keypad.txt b/Documentation/devicetree/bindings/input/twl4030-keypad.txt new file mode 100644 index 000000000000..e4be2f76a717 --- /dev/null +++ b/Documentation/devicetree/bindings/input/twl4030-keypad.txt | |||
@@ -0,0 +1,27 @@ | |||
1 | * TWL4030's Keypad Controller device tree bindings | ||
2 | |||
3 | TWL4030's Keypad controller is used to interface a SoC with a matrix-type | ||
4 | keypad device. The keypad controller supports multiple row and column lines. | ||
5 | A key can be placed at each intersection of a unique row and a unique column. | ||
6 | The keypad controller can sense a key-press and key-release and report the | ||
7 | event using a interrupt to the cpu. | ||
8 | |||
9 | This binding is based on the matrix-keymap binding with the following | ||
10 | changes: | ||
11 | |||
12 | * keypad,num-rows and keypad,num-columns are required. | ||
13 | |||
14 | Required SoC Specific Properties: | ||
15 | - compatible: should be one of the following | ||
16 | - "ti,twl4030-keypad": For controllers compatible with twl4030 keypad | ||
17 | controller. | ||
18 | - interrupt: should be one of the following | ||
19 | - <1>: For controllers compatible with twl4030 keypad controller. | ||
20 | |||
21 | Example: | ||
22 | twl_keypad: keypad { | ||
23 | compatible = "ti,twl4030-keypad"; | ||
24 | interrupts = <1>; | ||
25 | keypad,num-rows = <8>; | ||
26 | keypad,num-columns = <8>; | ||
27 | }; | ||
diff --git a/Documentation/devicetree/bindings/input/twl4030-pwrbutton.txt b/Documentation/devicetree/bindings/input/twl4030-pwrbutton.txt new file mode 100644 index 000000000000..c864a46cddcf --- /dev/null +++ b/Documentation/devicetree/bindings/input/twl4030-pwrbutton.txt | |||
@@ -0,0 +1,21 @@ | |||
1 | Texas Instruments TWL family (twl4030) pwrbutton module | ||
2 | |||
3 | This module is part of the TWL4030. For more details about the whole | ||
4 | chip see Documentation/devicetree/bindings/mfd/twl-familly.txt. | ||
5 | |||
6 | This module provides a simple power button event via an Interrupt. | ||
7 | |||
8 | Required properties: | ||
9 | - compatible: should be one of the following | ||
10 | - "ti,twl4030-pwrbutton": For controllers compatible with twl4030 | ||
11 | - interrupts: should be one of the following | ||
12 | - <8>: For controllers compatible with twl4030 | ||
13 | |||
14 | Example: | ||
15 | |||
16 | &twl { | ||
17 | twl_pwrbutton: pwrbutton { | ||
18 | compatible = "ti,twl4030-pwrbutton"; | ||
19 | interrupts = <8>; | ||
20 | }; | ||
21 | }; | ||
diff --git a/Documentation/devicetree/bindings/interrupt-controller/allwinner,sun4i-ic.txt b/Documentation/devicetree/bindings/interrupt-controller/allwinner,sun4i-ic.txt index 3d3b2b91e333..32cec4b26cd0 100644 --- a/Documentation/devicetree/bindings/interrupt-controller/allwinner,sun4i-ic.txt +++ b/Documentation/devicetree/bindings/interrupt-controller/allwinner,sun4i-ic.txt | |||
@@ -14,5 +14,5 @@ intc: interrupt-controller { | |||
14 | compatible = "allwinner,sun4i-ic"; | 14 | compatible = "allwinner,sun4i-ic"; |
15 | reg = <0x01c20400 0x400>; | 15 | reg = <0x01c20400 0x400>; |
16 | interrupt-controller; | 16 | interrupt-controller; |
17 | #interrupt-cells = <2>; | 17 | #interrupt-cells = <1>; |
18 | }; | 18 | }; |
diff --git a/Documentation/devicetree/bindings/interrupt-controller/snps,dw-apb-ictl.txt b/Documentation/devicetree/bindings/interrupt-controller/snps,dw-apb-ictl.txt new file mode 100644 index 000000000000..492911744ca3 --- /dev/null +++ b/Documentation/devicetree/bindings/interrupt-controller/snps,dw-apb-ictl.txt | |||
@@ -0,0 +1,32 @@ | |||
1 | Synopsys DesignWare APB interrupt controller (dw_apb_ictl) | ||
2 | |||
3 | Synopsys DesignWare provides interrupt controller IP for APB known as | ||
4 | dw_apb_ictl. The IP is used as secondary interrupt controller in some SoCs with | ||
5 | APB bus, e.g. Marvell Armada 1500. | ||
6 | |||
7 | Required properties: | ||
8 | - compatible: shall be "snps,dw-apb-ictl" | ||
9 | - reg: physical base address of the controller and length of memory mapped | ||
10 | region starting with ENABLE_LOW register | ||
11 | - interrupt-controller: identifies the node as an interrupt controller | ||
12 | - #interrupt-cells: number of cells to encode an interrupt-specifier, shall be 1 | ||
13 | - interrupts: interrupt reference to primary interrupt controller | ||
14 | - interrupt-parent: (optional) reference specific primary interrupt controller | ||
15 | |||
16 | The interrupt sources map to the corresponding bits in the interrupt | ||
17 | registers, i.e. | ||
18 | - 0 maps to bit 0 of low interrupts, | ||
19 | - 1 maps to bit 1 of low interrupts, | ||
20 | - 32 maps to bit 0 of high interrupts, | ||
21 | - 33 maps to bit 1 of high interrupts, | ||
22 | - (optional) fast interrupts start at 64. | ||
23 | |||
24 | Example: | ||
25 | aic: interrupt-controller@3000 { | ||
26 | compatible = "snps,dw-apb-ictl"; | ||
27 | reg = <0x3000 0xc00>; | ||
28 | interrupt-controller; | ||
29 | #interrupt-cells = <1>; | ||
30 | interrupt-parent = <&gic>; | ||
31 | interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>; | ||
32 | }; | ||
diff --git a/Documentation/devicetree/bindings/leds/tca6507.txt b/Documentation/devicetree/bindings/leds/tca6507.txt index 80ff3dfb1f32..d7221b84987c 100644 --- a/Documentation/devicetree/bindings/leds/tca6507.txt +++ b/Documentation/devicetree/bindings/leds/tca6507.txt | |||
@@ -2,6 +2,13 @@ LEDs connected to tca6507 | |||
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : should be : "ti,tca6507". | 4 | - compatible : should be : "ti,tca6507". |
5 | - #address-cells: must be 1 | ||
6 | - #size-cells: must be 0 | ||
7 | - reg: typically 0x45. | ||
8 | |||
9 | Optional properties: | ||
10 | - gpio-controller: allows lines to be used as output-only GPIOs. | ||
11 | - #gpio-cells: if present, must be 0. | ||
5 | 12 | ||
6 | Each led is represented as a sub-node of the ti,tca6507 device. | 13 | Each led is represented as a sub-node of the ti,tca6507 device. |
7 | 14 | ||
@@ -10,6 +17,7 @@ LED sub-node properties: | |||
10 | - reg : number of LED line (could be from 0 to 6) | 17 | - reg : number of LED line (could be from 0 to 6) |
11 | - linux,default-trigger : (optional) | 18 | - linux,default-trigger : (optional) |
12 | see Documentation/devicetree/bindings/leds/common.txt | 19 | see Documentation/devicetree/bindings/leds/common.txt |
20 | - compatible: either "led" (the default) or "gpio". | ||
13 | 21 | ||
14 | Examples: | 22 | Examples: |
15 | 23 | ||
@@ -19,6 +27,9 @@ tca6507@45 { | |||
19 | #size-cells = <0>; | 27 | #size-cells = <0>; |
20 | reg = <0x45>; | 28 | reg = <0x45>; |
21 | 29 | ||
30 | gpio-controller; | ||
31 | #gpio-cells = <2>; | ||
32 | |||
22 | led0: red-aux@0 { | 33 | led0: red-aux@0 { |
23 | label = "red:aux"; | 34 | label = "red:aux"; |
24 | reg = <0x0>; | 35 | reg = <0x0>; |
@@ -29,5 +40,10 @@ tca6507@45 { | |||
29 | reg = <0x5>; | 40 | reg = <0x5>; |
30 | linux,default-trigger = "default-on"; | 41 | linux,default-trigger = "default-on"; |
31 | }; | 42 | }; |
43 | |||
44 | wifi-reset@6 { | ||
45 | reg = <0x6>; | ||
46 | compatible = "gpio"; | ||
47 | }; | ||
32 | }; | 48 | }; |
33 | 49 | ||
diff --git a/Documentation/devicetree/bindings/marvell.txt b/Documentation/devicetree/bindings/marvell.txt index f7a0da6b4022..ea2b16ced49b 100644 --- a/Documentation/devicetree/bindings/marvell.txt +++ b/Documentation/devicetree/bindings/marvell.txt | |||
@@ -79,7 +79,6 @@ prefixed with the string "marvell,", for Marvell Technology Group Ltd. | |||
79 | Required properties: | 79 | Required properties: |
80 | - #address-cells : Should be <1> | 80 | - #address-cells : Should be <1> |
81 | - #size-cells : Should be <0> | 81 | - #size-cells : Should be <0> |
82 | - device_type : Should be "mdio" | ||
83 | - compatible : Should be "marvell,mv64360-mdio" | 82 | - compatible : Should be "marvell,mv64360-mdio" |
84 | 83 | ||
85 | Example: | 84 | Example: |
@@ -87,7 +86,6 @@ prefixed with the string "marvell,", for Marvell Technology Group Ltd. | |||
87 | mdio { | 86 | mdio { |
88 | #address-cells = <1>; | 87 | #address-cells = <1>; |
89 | #size-cells = <0>; | 88 | #size-cells = <0>; |
90 | device_type = "mdio"; | ||
91 | compatible = "marvell,mv64360-mdio"; | 89 | compatible = "marvell,mv64360-mdio"; |
92 | 90 | ||
93 | ethernet-phy@0 { | 91 | ethernet-phy@0 { |
@@ -132,7 +130,6 @@ prefixed with the string "marvell,", for Marvell Technology Group Ltd. | |||
132 | Ethernet port node | 130 | Ethernet port node |
133 | 131 | ||
134 | Required properties: | 132 | Required properties: |
135 | - device_type : Should be "network". | ||
136 | - compatible : Should be "marvell,mv64360-eth". | 133 | - compatible : Should be "marvell,mv64360-eth". |
137 | - reg : Should be <0>, <1>, or <2>, according to which registers | 134 | - reg : Should be <0>, <1>, or <2>, according to which registers |
138 | within the silicon block the device uses. | 135 | within the silicon block the device uses. |
@@ -145,7 +142,6 @@ prefixed with the string "marvell,", for Marvell Technology Group Ltd. | |||
145 | 142 | ||
146 | Example Discovery Ethernet port node: | 143 | Example Discovery Ethernet port node: |
147 | ethernet@0 { | 144 | ethernet@0 { |
148 | device_type = "network"; | ||
149 | compatible = "marvell,mv64360-eth"; | 145 | compatible = "marvell,mv64360-eth"; |
150 | reg = <0>; | 146 | reg = <0>; |
151 | interrupts = <32>; | 147 | interrupts = <32>; |
@@ -159,7 +155,6 @@ prefixed with the string "marvell,", for Marvell Technology Group Ltd. | |||
159 | c) Marvell Discovery PHY nodes | 155 | c) Marvell Discovery PHY nodes |
160 | 156 | ||
161 | Required properties: | 157 | Required properties: |
162 | - device_type : Should be "ethernet-phy" | ||
163 | - interrupts : <a> where a is the interrupt number for this phy. | 158 | - interrupts : <a> where a is the interrupt number for this phy. |
164 | - interrupt-parent : the phandle for the interrupt controller that | 159 | - interrupt-parent : the phandle for the interrupt controller that |
165 | services interrupts for this device. | 160 | services interrupts for this device. |
@@ -167,7 +162,6 @@ prefixed with the string "marvell,", for Marvell Technology Group Ltd. | |||
167 | 162 | ||
168 | Example Discovery PHY node: | 163 | Example Discovery PHY node: |
169 | ethernet-phy@1 { | 164 | ethernet-phy@1 { |
170 | device_type = "ethernet-phy"; | ||
171 | compatible = "broadcom,bcm5421"; | 165 | compatible = "broadcom,bcm5421"; |
172 | interrupts = <76>; /* GPP 12 */ | 166 | interrupts = <76>; /* GPP 12 */ |
173 | interrupt-parent = <&PIC>; | 167 | interrupt-parent = <&PIC>; |
@@ -271,7 +265,6 @@ prefixed with the string "marvell,", for Marvell Technology Group Ltd. | |||
271 | serial port. | 265 | serial port. |
272 | 266 | ||
273 | Required properties: | 267 | Required properties: |
274 | - device_type : "serial" | ||
275 | - compatible : "marvell,mv64360-mpsc" | 268 | - compatible : "marvell,mv64360-mpsc" |
276 | - reg : Offset and length of the register set for this device | 269 | - reg : Offset and length of the register set for this device |
277 | - sdma : the phandle for the SDMA node used by this port | 270 | - sdma : the phandle for the SDMA node used by this port |
@@ -288,7 +281,6 @@ prefixed with the string "marvell,", for Marvell Technology Group Ltd. | |||
288 | 281 | ||
289 | Example Discovery MPSCINTR node: | 282 | Example Discovery MPSCINTR node: |
290 | mpsc@8000 { | 283 | mpsc@8000 { |
291 | device_type = "serial"; | ||
292 | compatible = "marvell,mv64360-mpsc"; | 284 | compatible = "marvell,mv64360-mpsc"; |
293 | reg = <0x8000 0x38>; | 285 | reg = <0x8000 0x38>; |
294 | virtual-reg = <0xf1008000>; | 286 | virtual-reg = <0xf1008000>; |
diff --git a/Documentation/devicetree/bindings/mfd/as3722.txt b/Documentation/devicetree/bindings/mfd/as3722.txt index fc2191ecfd6b..8edcb9bd873b 100644 --- a/Documentation/devicetree/bindings/mfd/as3722.txt +++ b/Documentation/devicetree/bindings/mfd/as3722.txt | |||
@@ -112,6 +112,15 @@ Following are properties of regulator subnode. | |||
112 | ams,enable-tracking: Enable tracking with SD1, only supported | 112 | ams,enable-tracking: Enable tracking with SD1, only supported |
113 | by LDO3. | 113 | by LDO3. |
114 | 114 | ||
115 | Power-off: | ||
116 | ========= | ||
117 | AS3722 supports the system power off by turning off all its rail. This | ||
118 | is provided through pm_power_off. | ||
119 | The device node should have the following properties to enable this | ||
120 | functionality | ||
121 | ams,system-power-controller: Boolean, to enable the power off functionality | ||
122 | through this device. | ||
123 | |||
115 | Example: | 124 | Example: |
116 | -------- | 125 | -------- |
117 | #include <dt-bindings/mfd/as3722.h> | 126 | #include <dt-bindings/mfd/as3722.h> |
@@ -120,6 +129,8 @@ ams3722 { | |||
120 | compatible = "ams,as3722"; | 129 | compatible = "ams,as3722"; |
121 | reg = <0x48>; | 130 | reg = <0x48>; |
122 | 131 | ||
132 | ams,system-power-controller; | ||
133 | |||
123 | interrupt-parent = <&intc>; | 134 | interrupt-parent = <&intc>; |
124 | interrupt-controller; | 135 | interrupt-controller; |
125 | #interrupt-cells = <2>; | 136 | #interrupt-cells = <2>; |
diff --git a/Documentation/devicetree/bindings/mfd/cros-ec.txt b/Documentation/devicetree/bindings/mfd/cros-ec.txt index 5f229c5f6da9..8009c3d87f33 100644 --- a/Documentation/devicetree/bindings/mfd/cros-ec.txt +++ b/Documentation/devicetree/bindings/mfd/cros-ec.txt | |||
@@ -17,6 +17,15 @@ Required properties (SPI): | |||
17 | - compatible: "google,cros-ec-spi" | 17 | - compatible: "google,cros-ec-spi" |
18 | - reg: SPI chip select | 18 | - reg: SPI chip select |
19 | 19 | ||
20 | Optional properties (SPI): | ||
21 | - google,cros-ec-spi-msg-delay: Some implementations of the EC require some | ||
22 | additional processing time in order to accept new transactions. If the delay | ||
23 | between transactions is not long enough the EC may not be able to respond | ||
24 | properly to subsequent transactions and cause them to hang. This property | ||
25 | specifies the delay, in usecs, introduced between transactions to account | ||
26 | for the time required by the EC to get back into a state in which new data | ||
27 | can be accepted. | ||
28 | |||
20 | Required properties (LPC): | 29 | Required properties (LPC): |
21 | - compatible: "google,cros-ec-lpc" | 30 | - compatible: "google,cros-ec-lpc" |
22 | - reg: List of (IO address, size) pairs defining the interface uses | 31 | - reg: List of (IO address, size) pairs defining the interface uses |
diff --git a/Documentation/devicetree/bindings/mfd/lp3943.txt b/Documentation/devicetree/bindings/mfd/lp3943.txt new file mode 100644 index 000000000000..e8591d6b11b4 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/lp3943.txt | |||
@@ -0,0 +1,33 @@ | |||
1 | TI/National Semiconductor LP3943 MFD driver | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "ti,lp3943" | ||
5 | - reg: I2C slave address. From 0x60 to 0x67. | ||
6 | |||
7 | LP3943 consists of two sub-devices, lp3943-gpio and lp3943-pwm. | ||
8 | |||
9 | For the LP3943 GPIO properties please refer to: | ||
10 | Documentation/devicetree/bindings/gpio/gpio-lp3943.txt | ||
11 | |||
12 | For the LP3943 PWM properties please refer to: | ||
13 | Documentation/devicetree/bindings/pwm/pwm-lp3943.txt | ||
14 | |||
15 | Example: | ||
16 | |||
17 | lp3943@60 { | ||
18 | compatible = "ti,lp3943"; | ||
19 | reg = <0x60>; | ||
20 | |||
21 | gpioex: gpio { | ||
22 | compatible = "ti,lp3943-gpio"; | ||
23 | gpio-controller; | ||
24 | #gpio-cells = <2>; | ||
25 | }; | ||
26 | |||
27 | pwm3943: pwm { | ||
28 | compatible = "ti,lp3943-pwm"; | ||
29 | #pwm-cells = <2>; | ||
30 | ti,pwm0 = <8 9 10>; | ||
31 | ti,pwm1 = <15>; | ||
32 | }; | ||
33 | }; | ||
diff --git a/Documentation/devicetree/bindings/mfd/max77686.txt b/Documentation/devicetree/bindings/mfd/max77686.txt index c6a3469d3436..678f3cf0b8f0 100644 --- a/Documentation/devicetree/bindings/mfd/max77686.txt +++ b/Documentation/devicetree/bindings/mfd/max77686.txt | |||
@@ -7,6 +7,9 @@ different i2c slave address,presently for which we are statically creating i2c | |||
7 | client while probing.This document describes the binding for mfd device and | 7 | client while probing.This document describes the binding for mfd device and |
8 | PMIC submodule. | 8 | PMIC submodule. |
9 | 9 | ||
10 | Binding for the built-in 32k clock generator block is defined separately | ||
11 | in bindings/clk/maxim,max77686.txt file. | ||
12 | |||
10 | Required properties: | 13 | Required properties: |
11 | - compatible : Must be "maxim,max77686"; | 14 | - compatible : Must be "maxim,max77686"; |
12 | - reg : Specifies the i2c slave address of PMIC block. | 15 | - reg : Specifies the i2c slave address of PMIC block. |
diff --git a/Documentation/devicetree/bindings/mfd/s2mps11.txt b/Documentation/devicetree/bindings/mfd/s2mps11.txt index 78a840d7510d..15ee89c3cc7b 100644 --- a/Documentation/devicetree/bindings/mfd/s2mps11.txt +++ b/Documentation/devicetree/bindings/mfd/s2mps11.txt | |||
@@ -60,7 +60,7 @@ as per the datasheet of s2mps11. | |||
60 | 60 | ||
61 | - LDOn | 61 | - LDOn |
62 | - valid values for n are 1 to 38 | 62 | - valid values for n are 1 to 38 |
63 | - Example: LDO0, LD01, LDO28 | 63 | - Example: LDO1, LD02, LDO28 |
64 | - BUCKn | 64 | - BUCKn |
65 | - valid values for n are 1 to 10. | 65 | - valid values for n are 1 to 10. |
66 | - Example: BUCK1, BUCK2, BUCK9 | 66 | - Example: BUCK1, BUCK2, BUCK9 |
diff --git a/Documentation/devicetree/bindings/mfd/tps65910.txt b/Documentation/devicetree/bindings/mfd/tps65910.txt index 2e3304888ffc..b4bd98af1cc7 100644 --- a/Documentation/devicetree/bindings/mfd/tps65910.txt +++ b/Documentation/devicetree/bindings/mfd/tps65910.txt | |||
@@ -21,7 +21,7 @@ Required properties: | |||
21 | 21 | ||
22 | The valid regulator-compatible values are: | 22 | The valid regulator-compatible values are: |
23 | tps65910: vrtc, vio, vdd1, vdd2, vdd3, vdig1, vdig2, vpll, vdac, vaux1, | 23 | tps65910: vrtc, vio, vdd1, vdd2, vdd3, vdig1, vdig2, vpll, vdac, vaux1, |
24 | vaux2, vaux33, vmmc | 24 | vaux2, vaux33, vmmc, vbb |
25 | tps65911: vrtc, vio, vdd1, vdd3, vddctrl, ldo1, ldo2, ldo3, ldo4, ldo5, | 25 | tps65911: vrtc, vio, vdd1, vdd3, vddctrl, ldo1, ldo2, ldo3, ldo4, ldo5, |
26 | ldo6, ldo7, ldo8 | 26 | ldo6, ldo7, ldo8 |
27 | 27 | ||
@@ -38,7 +38,7 @@ Required properties: | |||
38 | vcc4-supply: VAUX1 and VAUX2 input. | 38 | vcc4-supply: VAUX1 and VAUX2 input. |
39 | vcc5-supply: VPLL and VDAC input. | 39 | vcc5-supply: VPLL and VDAC input. |
40 | vcc6-supply: VDIG1 and VDIG2 input. | 40 | vcc6-supply: VDIG1 and VDIG2 input. |
41 | vcc7-supply: VRTC input. | 41 | vcc7-supply: VRTC and VBB input. |
42 | vccio-supply: VIO input. | 42 | vccio-supply: VIO input. |
43 | tps65911: | 43 | tps65911: |
44 | vcc1-supply: VDD1 input. | 44 | vcc1-supply: VDD1 input. |
diff --git a/Documentation/devicetree/bindings/mipi/dsi/mipi-dsi-bus.txt b/Documentation/devicetree/bindings/mipi/dsi/mipi-dsi-bus.txt new file mode 100644 index 000000000000..973c27273772 --- /dev/null +++ b/Documentation/devicetree/bindings/mipi/dsi/mipi-dsi-bus.txt | |||
@@ -0,0 +1,98 @@ | |||
1 | MIPI DSI (Display Serial Interface) busses | ||
2 | ========================================== | ||
3 | |||
4 | The MIPI Display Serial Interface specifies a serial bus and a protocol for | ||
5 | communication between a host and up to four peripherals. This document will | ||
6 | define the syntax used to represent a DSI bus in a device tree. | ||
7 | |||
8 | This document describes DSI bus-specific properties only or defines existing | ||
9 | standard properties in the context of the DSI bus. | ||
10 | |||
11 | Each DSI host provides a DSI bus. The DSI host controller's node contains a | ||
12 | set of properties that characterize the bus. Child nodes describe individual | ||
13 | peripherals on that bus. | ||
14 | |||
15 | The following assumes that only a single peripheral is connected to a DSI | ||
16 | host. Experience shows that this is true for the large majority of setups. | ||
17 | |||
18 | DSI host | ||
19 | -------- | ||
20 | |||
21 | In addition to the standard properties and those defined by the parent bus of | ||
22 | a DSI host, the following properties apply to a node representing a DSI host. | ||
23 | |||
24 | Required properties: | ||
25 | - #address-cells: The number of cells required to represent an address on the | ||
26 | bus. DSI peripherals are addressed using a 2-bit virtual channel number, so | ||
27 | a maximum of 4 devices can be addressed on a single bus. Hence the value of | ||
28 | this property should be 1. | ||
29 | - #size-cells: Should be 0. There are cases where it makes sense to use a | ||
30 | different value here. See below. | ||
31 | |||
32 | DSI peripheral | ||
33 | -------------- | ||
34 | |||
35 | Peripherals are represented as child nodes of the DSI host's node. Properties | ||
36 | described here apply to all DSI peripherals, but individual bindings may want | ||
37 | to define additional, device-specific properties. | ||
38 | |||
39 | Required properties: | ||
40 | - reg: The virtual channel number of a DSI peripheral. Must be in the range | ||
41 | from 0 to 3. | ||
42 | |||
43 | Some DSI peripherals respond to more than a single virtual channel. In that | ||
44 | case two alternative representations can be chosen: | ||
45 | - The reg property can take multiple entries, one for each virtual channel | ||
46 | that the peripheral responds to. | ||
47 | - If the virtual channels that a peripheral responds to are consecutive, the | ||
48 | #size-cells can be set to 1. The first cell of each entry in the reg | ||
49 | property is the number of the first virtual channel and the second cell is | ||
50 | the number of consecutive virtual channels. | ||
51 | |||
52 | Example | ||
53 | ------- | ||
54 | |||
55 | dsi-host { | ||
56 | ... | ||
57 | |||
58 | #address-cells = <1>; | ||
59 | #size-cells = <0>; | ||
60 | |||
61 | /* peripheral responds to virtual channel 0 */ | ||
62 | peripheral@0 { | ||
63 | compatible = "..."; | ||
64 | reg = <0>; | ||
65 | }; | ||
66 | |||
67 | ... | ||
68 | }; | ||
69 | |||
70 | dsi-host { | ||
71 | ... | ||
72 | |||
73 | #address-cells = <1>; | ||
74 | #size-cells = <0>; | ||
75 | |||
76 | /* peripheral responds to virtual channels 0 and 2 */ | ||
77 | peripheral@0 { | ||
78 | compatible = "..."; | ||
79 | reg = <0, 2>; | ||
80 | }; | ||
81 | |||
82 | ... | ||
83 | }; | ||
84 | |||
85 | dsi-host { | ||
86 | ... | ||
87 | |||
88 | #address-cells = <1>; | ||
89 | #size-cells = <1>; | ||
90 | |||
91 | /* peripheral responds to virtual channels 1, 2 and 3 */ | ||
92 | peripheral@1 { | ||
93 | compatible = "..."; | ||
94 | reg = <1 3>; | ||
95 | }; | ||
96 | |||
97 | ... | ||
98 | }; | ||
diff --git a/Documentation/devicetree/bindings/mipi/nvidia,tegra114-mipi.txt b/Documentation/devicetree/bindings/mipi/nvidia,tegra114-mipi.txt new file mode 100644 index 000000000000..e4a25cedc5cf --- /dev/null +++ b/Documentation/devicetree/bindings/mipi/nvidia,tegra114-mipi.txt | |||
@@ -0,0 +1,41 @@ | |||
1 | NVIDIA Tegra MIPI pad calibration controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "nvidia,tegra<chip>-mipi" | ||
5 | - reg: Physical base address and length of the controller's registers. | ||
6 | - clocks: Must contain an entry for each entry in clock-names. | ||
7 | See ../clocks/clock-bindings.txt for details. | ||
8 | - clock-names: Must include the following entries: | ||
9 | - mipi-cal | ||
10 | - #nvidia,mipi-calibrate-cells: Should be 1. The cell is a bitmask of the pads | ||
11 | that need to be calibrated for a given device. | ||
12 | |||
13 | User nodes need to contain an nvidia,mipi-calibrate property that has a | ||
14 | phandle to refer to the calibration controller node and a bitmask of the pads | ||
15 | that need to be calibrated. | ||
16 | |||
17 | Example: | ||
18 | |||
19 | mipi: mipi@700e3000 { | ||
20 | compatible = "nvidia,tegra114-mipi"; | ||
21 | reg = <0x700e3000 0x100>; | ||
22 | clocks = <&tegra_car TEGRA114_CLK_MIPI_CAL>; | ||
23 | clock-names = "mipi-cal"; | ||
24 | #nvidia,mipi-calibrate-cells = <1>; | ||
25 | }; | ||
26 | |||
27 | ... | ||
28 | |||
29 | host1x@50000000 { | ||
30 | ... | ||
31 | |||
32 | dsi@54300000 { | ||
33 | ... | ||
34 | |||
35 | nvidia,mipi-calibrate = <&mipi 0x060>; | ||
36 | |||
37 | ... | ||
38 | }; | ||
39 | |||
40 | ... | ||
41 | }; | ||
diff --git a/Documentation/devicetree/bindings/misc/atmel-ssc.txt b/Documentation/devicetree/bindings/misc/atmel-ssc.txt index a45ae08c8ed1..60960b2755f4 100644 --- a/Documentation/devicetree/bindings/misc/atmel-ssc.txt +++ b/Documentation/devicetree/bindings/misc/atmel-ssc.txt | |||
@@ -6,6 +6,9 @@ Required properties: | |||
6 | - atmel,at91sam9g45-ssc: support dma transfer | 6 | - atmel,at91sam9g45-ssc: support dma transfer |
7 | - reg: Should contain SSC registers location and length | 7 | - reg: Should contain SSC registers location and length |
8 | - interrupts: Should contain SSC interrupt | 8 | - interrupts: Should contain SSC interrupt |
9 | - clock-names: tuple listing input clock names. | ||
10 | Required elements: "pclk" | ||
11 | - clocks: phandles to input clocks. | ||
9 | 12 | ||
10 | 13 | ||
11 | Required properties for devices compatible with "atmel,at91sam9g45-ssc": | 14 | Required properties for devices compatible with "atmel,at91sam9g45-ssc": |
@@ -20,6 +23,8 @@ ssc0: ssc@fffbc000 { | |||
20 | compatible = "atmel,at91rm9200-ssc"; | 23 | compatible = "atmel,at91rm9200-ssc"; |
21 | reg = <0xfffbc000 0x4000>; | 24 | reg = <0xfffbc000 0x4000>; |
22 | interrupts = <14 4 5>; | 25 | interrupts = <14 4 5>; |
26 | clocks = <&ssc0_clk>; | ||
27 | clock-names = "pclk"; | ||
23 | }; | 28 | }; |
24 | 29 | ||
25 | - DMA transfer: | 30 | - DMA transfer: |
diff --git a/Documentation/devicetree/bindings/misc/bmp085.txt b/Documentation/devicetree/bindings/misc/bmp085.txt index 91dfda2e4e11..d7a6deb6b21e 100644 --- a/Documentation/devicetree/bindings/misc/bmp085.txt +++ b/Documentation/devicetree/bindings/misc/bmp085.txt | |||
@@ -8,6 +8,8 @@ Optional properties: | |||
8 | - temp-measurement-period: temperature measurement period (milliseconds) | 8 | - temp-measurement-period: temperature measurement period (milliseconds) |
9 | - default-oversampling: default oversampling value to be used at startup, | 9 | - default-oversampling: default oversampling value to be used at startup, |
10 | value range is 0-3 with rising sensitivity. | 10 | value range is 0-3 with rising sensitivity. |
11 | - interrupt-parent: should be the phandle for the interrupt controller | ||
12 | - interrupts: interrupt mapping for IRQ | ||
11 | 13 | ||
12 | Example: | 14 | Example: |
13 | 15 | ||
@@ -17,4 +19,6 @@ pressure@77 { | |||
17 | chip-id = <10>; | 19 | chip-id = <10>; |
18 | temp-measurement-period = <100>; | 20 | temp-measurement-period = <100>; |
19 | default-oversampling = <2>; | 21 | default-oversampling = <2>; |
22 | interrupt-parent = <&gpio0>; | ||
23 | interrupts = <25 IRQ_TYPE_EDGE_RISING>; | ||
20 | }; | 24 | }; |
diff --git a/Documentation/devicetree/bindings/mmc/arasan,sdhci.txt b/Documentation/devicetree/bindings/mmc/arasan,sdhci.txt new file mode 100644 index 000000000000..98ee2abbe138 --- /dev/null +++ b/Documentation/devicetree/bindings/mmc/arasan,sdhci.txt | |||
@@ -0,0 +1,27 @@ | |||
1 | Device Tree Bindings for the Arasan SDHCI Controller | ||
2 | |||
3 | The bindings follow the mmc[1], clock[2] and interrupt[3] bindings. Only | ||
4 | deviations are documented here. | ||
5 | |||
6 | [1] Documentation/devicetree/bindings/mmc/mmc.txt | ||
7 | [2] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
8 | [3] Documentation/devicetree/bindings/interrupt-controller/interrupts.txt | ||
9 | |||
10 | Required Properties: | ||
11 | - compatible: Compatibility string. Must be 'arasan,sdhci-8.9a' | ||
12 | - reg: From mmc bindings: Register location and length. | ||
13 | - clocks: From clock bindings: Handles to clock inputs. | ||
14 | - clock-names: From clock bindings: Tuple including "clk_xin" and "clk_ahb" | ||
15 | - interrupts: Interrupt specifier | ||
16 | - interrupt-parent: Phandle for the interrupt controller that services | ||
17 | interrupts for this device. | ||
18 | |||
19 | Example: | ||
20 | sdhci@e0100000 { | ||
21 | compatible = "arasan,sdhci-8.9a"; | ||
22 | reg = <0xe0100000 0x1000>; | ||
23 | clock-names = "clk_xin", "clk_ahb"; | ||
24 | clocks = <&clkc 21>, <&clkc 32>; | ||
25 | interrupt-parent = <&gic>; | ||
26 | interrupts = <0 24 4>; | ||
27 | } ; | ||
diff --git a/Documentation/devicetree/bindings/mmc/exynos-dw-mshc.txt b/Documentation/devicetree/bindings/mmc/exynos-dw-mshc.txt index c67b975c8906..532b1d440abc 100644 --- a/Documentation/devicetree/bindings/mmc/exynos-dw-mshc.txt +++ b/Documentation/devicetree/bindings/mmc/exynos-dw-mshc.txt | |||
@@ -16,6 +16,8 @@ Required Properties: | |||
16 | specific extensions. | 16 | specific extensions. |
17 | - "samsung,exynos5250-dw-mshc": for controllers with Samsung Exynos5250 | 17 | - "samsung,exynos5250-dw-mshc": for controllers with Samsung Exynos5250 |
18 | specific extensions. | 18 | specific extensions. |
19 | - "samsung,exynos5420-dw-mshc": for controllers with Samsung Exynos5420 | ||
20 | specific extensions. | ||
19 | 21 | ||
20 | * samsung,dw-mshc-ciu-div: Specifies the divider value for the card interface | 22 | * samsung,dw-mshc-ciu-div: Specifies the divider value for the card interface |
21 | unit (ciu) clock. This property is applicable only for Exynos5 SoC's and | 23 | unit (ciu) clock. This property is applicable only for Exynos5 SoC's and |
diff --git a/Documentation/devicetree/bindings/mmc/k3-dw-mshc.txt b/Documentation/devicetree/bindings/mmc/k3-dw-mshc.txt new file mode 100644 index 000000000000..b8653ea97957 --- /dev/null +++ b/Documentation/devicetree/bindings/mmc/k3-dw-mshc.txt | |||
@@ -0,0 +1,46 @@ | |||
1 | * Hisilicon specific extensions to the Synopsys Designware Mobile | ||
2 | Storage Host Controller | ||
3 | |||
4 | Read synopsys-dw-mshc.txt for more details | ||
5 | |||
6 | The Synopsys designware mobile storage host controller is used to interface | ||
7 | a SoC with storage medium such as eMMC or SD/MMC cards. This file documents | ||
8 | differences between the core Synopsys dw mshc controller properties described | ||
9 | by synopsys-dw-mshc.txt and the properties used by the Hisilicon specific | ||
10 | extensions to the Synopsys Designware Mobile Storage Host Controller. | ||
11 | |||
12 | Required Properties: | ||
13 | |||
14 | * compatible: should be one of the following. | ||
15 | - "hisilicon,hi4511-dw-mshc": for controllers with hi4511 specific extentions. | ||
16 | |||
17 | Example: | ||
18 | |||
19 | /* for Hi3620 */ | ||
20 | |||
21 | /* SoC portion */ | ||
22 | dwmmc_0: dwmmc0@fcd03000 { | ||
23 | compatible = "hisilicon,hi4511-dw-mshc"; | ||
24 | reg = <0xfcd03000 0x1000>; | ||
25 | interrupts = <0 16 4>; | ||
26 | #address-cells = <1>; | ||
27 | #size-cells = <0>; | ||
28 | clocks = <&mmc_clock HI3620_SD_CIUCLK>, <&clock HI3620_DDRC_PER_CLK>; | ||
29 | clock-names = "ciu", "biu"; | ||
30 | }; | ||
31 | |||
32 | /* Board portion */ | ||
33 | dwmmc0@fcd03000 { | ||
34 | num-slots = <1>; | ||
35 | vmmc-supply = <&ldo12>; | ||
36 | fifo-depth = <0x100>; | ||
37 | supports-highspeed; | ||
38 | pinctrl-names = "default"; | ||
39 | pinctrl-0 = <&sd_pmx_pins &sd_cfg_func1 &sd_cfg_func2>; | ||
40 | slot@0 { | ||
41 | reg = <0>; | ||
42 | bus-width = <4>; | ||
43 | disable-wp; | ||
44 | cd-gpios = <&gpio10 3 0>; | ||
45 | }; | ||
46 | }; | ||
diff --git a/Documentation/devicetree/bindings/mmc/kona-sdhci.txt b/Documentation/devicetree/bindings/mmc/kona-sdhci.txt index 789fb07a426d..aaba2483b4ff 100644 --- a/Documentation/devicetree/bindings/mmc/kona-sdhci.txt +++ b/Documentation/devicetree/bindings/mmc/kona-sdhci.txt | |||
@@ -6,12 +6,16 @@ and the properties present in the bcm281xx SDHCI | |||
6 | Required properties: | 6 | Required properties: |
7 | - compatible : Should be "brcm,kona-sdhci" | 7 | - compatible : Should be "brcm,kona-sdhci" |
8 | - DEPRECATED: compatible : Should be "bcm,kona-sdhci" | 8 | - DEPRECATED: compatible : Should be "bcm,kona-sdhci" |
9 | - clocks: phandle + clock specifier pair of the external clock | ||
10 | |||
11 | Refer to clocks/clock-bindings.txt for generic clock consumer properties. | ||
9 | 12 | ||
10 | Example: | 13 | Example: |
11 | 14 | ||
12 | sdio2: sdio@0x3f1a0000 { | 15 | sdio2: sdio@0x3f1a0000 { |
13 | compatible = "brcm,kona-sdhci"; | 16 | compatible = "brcm,kona-sdhci"; |
14 | reg = <0x3f1a0000 0x10000>; | 17 | reg = <0x3f1a0000 0x10000>; |
18 | clocks = <&sdio3_clk>; | ||
15 | interrupts = <0x0 74 0x4>; | 19 | interrupts = <0x0 74 0x4>; |
16 | }; | 20 | }; |
17 | 21 | ||
diff --git a/Documentation/devicetree/bindings/mmc/nvidia,tegra20-sdhci.txt b/Documentation/devicetree/bindings/mmc/nvidia,tegra20-sdhci.txt index c6d7b11db9eb..f357c16ea815 100644 --- a/Documentation/devicetree/bindings/mmc/nvidia,tegra20-sdhci.txt +++ b/Documentation/devicetree/bindings/mmc/nvidia,tegra20-sdhci.txt | |||
@@ -8,6 +8,12 @@ by mmc.txt and the properties used by the sdhci-tegra driver. | |||
8 | 8 | ||
9 | Required properties: | 9 | Required properties: |
10 | - compatible : Should be "nvidia,<chip>-sdhci" | 10 | - compatible : Should be "nvidia,<chip>-sdhci" |
11 | - clocks : Must contain one entry, for the module clock. | ||
12 | See ../clocks/clock-bindings.txt for details. | ||
13 | - resets : Must contain an entry for each entry in reset-names. | ||
14 | See ../reset/reset.txt for details. | ||
15 | - reset-names : Must include the following entries: | ||
16 | - sdhci | ||
11 | 17 | ||
12 | Optional properties: | 18 | Optional properties: |
13 | - power-gpios : Specify GPIOs for power control | 19 | - power-gpios : Specify GPIOs for power control |
@@ -18,6 +24,9 @@ sdhci@c8000200 { | |||
18 | compatible = "nvidia,tegra20-sdhci"; | 24 | compatible = "nvidia,tegra20-sdhci"; |
19 | reg = <0xc8000200 0x200>; | 25 | reg = <0xc8000200 0x200>; |
20 | interrupts = <47>; | 26 | interrupts = <47>; |
27 | clocks = <&tegra_car 14>; | ||
28 | resets = <&tegra_car 14>; | ||
29 | reset-names = "sdhci"; | ||
21 | cd-gpios = <&gpio 69 0>; /* gpio PI5 */ | 30 | cd-gpios = <&gpio 69 0>; /* gpio PI5 */ |
22 | wp-gpios = <&gpio 57 0>; /* gpio PH1 */ | 31 | wp-gpios = <&gpio 57 0>; /* gpio PH1 */ |
23 | power-gpios = <&gpio 155 0>; /* gpio PT3 */ | 32 | power-gpios = <&gpio 155 0>; /* gpio PT3 */ |
diff --git a/Documentation/devicetree/bindings/mtd/davinci-nand.txt b/Documentation/devicetree/bindings/mtd/davinci-nand.txt new file mode 100644 index 000000000000..cfb18abe6001 --- /dev/null +++ b/Documentation/devicetree/bindings/mtd/davinci-nand.txt | |||
@@ -0,0 +1,94 @@ | |||
1 | Device tree bindings for Texas instruments Davinci/Keystone NAND controller | ||
2 | |||
3 | This file provides information, what the device node for the davinci/keystone | ||
4 | NAND interface contains. | ||
5 | |||
6 | Documentation: | ||
7 | Davinci DM646x - http://www.ti.com/lit/ug/sprueq7c/sprueq7c.pdf | ||
8 | Kestone - http://www.ti.com/lit/ug/sprugz3a/sprugz3a.pdf | ||
9 | |||
10 | Required properties: | ||
11 | |||
12 | - compatible: "ti,davinci-nand" | ||
13 | "ti,keystone-nand" | ||
14 | |||
15 | - reg: Contains 2 offset/length values: | ||
16 | - offset and length for the access window. | ||
17 | - offset and length for accessing the AEMIF | ||
18 | control registers. | ||
19 | |||
20 | - ti,davinci-chipselect: number of chipselect. Indicates on the | ||
21 | davinci_nand driver which chipselect is used | ||
22 | for accessing the nand. | ||
23 | Can be in the range [0-3]. | ||
24 | |||
25 | Recommended properties : | ||
26 | |||
27 | - ti,davinci-mask-ale: mask for ALE. Needed for executing address | ||
28 | phase. These offset will be added to the base | ||
29 | address for the chip select space the NAND Flash | ||
30 | device is connected to. | ||
31 | If not set equal to 0x08. | ||
32 | |||
33 | - ti,davinci-mask-cle: mask for CLE. Needed for executing command | ||
34 | phase. These offset will be added to the base | ||
35 | address for the chip select space the NAND Flash | ||
36 | device is connected to. | ||
37 | If not set equal to 0x10. | ||
38 | |||
39 | - ti,davinci-mask-chipsel: mask for chipselect address. Needed to mask | ||
40 | addresses for given chipselect. | ||
41 | |||
42 | - nand-ecc-mode: operation mode of the NAND ecc mode. ECC mode | ||
43 | valid values for davinci driver: | ||
44 | - "none" | ||
45 | - "soft" | ||
46 | - "hw" | ||
47 | |||
48 | - ti,davinci-ecc-bits: used ECC bits, currently supported 1 or 4. | ||
49 | |||
50 | - nand-bus-width: buswidth 8 or 16. If not present 8. | ||
51 | |||
52 | - nand-on-flash-bbt: use flash based bad block table support. OOB | ||
53 | identifier is saved in OOB area. If not present | ||
54 | false. | ||
55 | |||
56 | Deprecated properties: | ||
57 | |||
58 | - ti,davinci-ecc-mode: operation mode of the NAND ecc mode. ECC mode | ||
59 | valid values for davinci driver: | ||
60 | - "none" | ||
61 | - "soft" | ||
62 | - "hw" | ||
63 | |||
64 | - ti,davinci-nand-buswidth: buswidth 8 or 16. If not present 8. | ||
65 | |||
66 | - ti,davinci-nand-use-bbt: use flash based bad block table support. OOB | ||
67 | identifier is saved in OOB area. If not present | ||
68 | false. | ||
69 | |||
70 | Nand device bindings may contain additional sub-nodes describing partitions of | ||
71 | the address space. See partition.txt for more detail. The NAND Flash timing | ||
72 | values must be programmed in the chip select’s node of AEMIF | ||
73 | memory-controller (see Documentation/devicetree/bindings/memory-controllers/ | ||
74 | davinci-aemif.txt). | ||
75 | |||
76 | Example(da850 EVM ): | ||
77 | |||
78 | nand_cs3@62000000 { | ||
79 | compatible = "ti,davinci-nand"; | ||
80 | reg = <0x62000000 0x807ff | ||
81 | 0x68000000 0x8000>; | ||
82 | ti,davinci-chipselect = <1>; | ||
83 | ti,davinci-mask-ale = <0>; | ||
84 | ti,davinci-mask-cle = <0>; | ||
85 | ti,davinci-mask-chipsel = <0>; | ||
86 | nand-ecc-mode = "hw"; | ||
87 | ti,davinci-ecc-bits = <4>; | ||
88 | nand-on-flash-bbt; | ||
89 | |||
90 | partition@180000 { | ||
91 | label = "ubifs"; | ||
92 | reg = <0x180000 0x7e80000>; | ||
93 | }; | ||
94 | }; | ||
diff --git a/Documentation/devicetree/bindings/mtd/gpmi-nand.txt b/Documentation/devicetree/bindings/mtd/gpmi-nand.txt index 551b2a179d01..458d59634688 100644 --- a/Documentation/devicetree/bindings/mtd/gpmi-nand.txt +++ b/Documentation/devicetree/bindings/mtd/gpmi-nand.txt | |||
@@ -17,6 +17,14 @@ Required properties: | |||
17 | Optional properties: | 17 | Optional properties: |
18 | - nand-on-flash-bbt: boolean to enable on flash bbt option if not | 18 | - nand-on-flash-bbt: boolean to enable on flash bbt option if not |
19 | present false | 19 | present false |
20 | - fsl,use-minimum-ecc: Protect this NAND flash with the minimum ECC | ||
21 | strength required. The required ECC strength is | ||
22 | automatically discoverable for some flash | ||
23 | (e.g., according to the ONFI standard). | ||
24 | However, note that if this strength is not | ||
25 | discoverable or this property is not enabled, | ||
26 | the software may chooses an implementation-defined | ||
27 | ECC scheme. | ||
20 | 28 | ||
21 | The device tree may optionally contain sub-nodes describing partitions of the | 29 | The device tree may optionally contain sub-nodes describing partitions of the |
22 | address space. See partition.txt for more detail. | 30 | address space. See partition.txt for more detail. |
diff --git a/Documentation/devicetree/bindings/mtd/pxa3xx-nand.txt b/Documentation/devicetree/bindings/mtd/pxa3xx-nand.txt index f1421e2bbab7..86e0a5601ff5 100644 --- a/Documentation/devicetree/bindings/mtd/pxa3xx-nand.txt +++ b/Documentation/devicetree/bindings/mtd/pxa3xx-nand.txt | |||
@@ -2,7 +2,9 @@ PXA3xx NAND DT bindings | |||
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | 4 | ||
5 | - compatible: Should be "marvell,pxa3xx-nand" | 5 | - compatible: Should be set to one of the following: |
6 | marvell,pxa3xx-nand | ||
7 | marvell,armada370-nand | ||
6 | - reg: The register base for the controller | 8 | - reg: The register base for the controller |
7 | - interrupts: The interrupt to map | 9 | - interrupts: The interrupt to map |
8 | - #address-cells: Set to <1> if the node includes partitions | 10 | - #address-cells: Set to <1> if the node includes partitions |
@@ -13,6 +15,8 @@ Optional properties: | |||
13 | - marvell,nand-keep-config: Set to keep the NAND controller config as set | 15 | - marvell,nand-keep-config: Set to keep the NAND controller config as set |
14 | by the bootloader | 16 | by the bootloader |
15 | - num-cs: Number of chipselect lines to usw | 17 | - num-cs: Number of chipselect lines to usw |
18 | - nand-on-flash-bbt: boolean to enable on flash bbt option if | ||
19 | not present false | ||
16 | 20 | ||
17 | Example: | 21 | Example: |
18 | 22 | ||
diff --git a/Documentation/devicetree/bindings/net/allwinner,sun7i-a20-gmac.txt b/Documentation/devicetree/bindings/net/allwinner,sun7i-a20-gmac.txt new file mode 100644 index 000000000000..ea4d752389a2 --- /dev/null +++ b/Documentation/devicetree/bindings/net/allwinner,sun7i-a20-gmac.txt | |||
@@ -0,0 +1,27 @@ | |||
1 | * Allwinner GMAC ethernet controller | ||
2 | |||
3 | This device is a platform glue layer for stmmac. | ||
4 | Please see stmmac.txt for the other unchanged properties. | ||
5 | |||
6 | Required properties: | ||
7 | - compatible: Should be "allwinner,sun7i-a20-gmac" | ||
8 | - clocks: Should contain the GMAC main clock, and tx clock | ||
9 | The tx clock type should be "allwinner,sun7i-a20-gmac-clk" | ||
10 | - clock-names: Should contain the clock names "stmmaceth", | ||
11 | and "allwinner_gmac_tx" | ||
12 | |||
13 | Optional properties: | ||
14 | - phy-supply: phandle to a regulator if the PHY needs one | ||
15 | |||
16 | Examples: | ||
17 | |||
18 | gmac: ethernet@01c50000 { | ||
19 | compatible = "allwinner,sun7i-a20-gmac"; | ||
20 | reg = <0x01c50000 0x10000>, | ||
21 | <0x01c20164 0x4>; | ||
22 | interrupts = <0 85 1>; | ||
23 | interrupt-names = "macirq"; | ||
24 | clocks = <&ahb_gates 49>, <&gmac_tx>; | ||
25 | clock-names = "stmmaceth", "allwinner_gmac_tx"; | ||
26 | phy-mode = "mii"; | ||
27 | }; | ||
diff --git a/Documentation/devicetree/bindings/net/can/microchip,mcp251x.txt b/Documentation/devicetree/bindings/net/can/microchip,mcp251x.txt new file mode 100644 index 000000000000..ee3723beb701 --- /dev/null +++ b/Documentation/devicetree/bindings/net/can/microchip,mcp251x.txt | |||
@@ -0,0 +1,25 @@ | |||
1 | * Microchip MCP251X stand-alone CAN controller device tree bindings | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be one of the following: | ||
5 | - "microchip,mcp2510" for MCP2510. | ||
6 | - "microchip,mcp2515" for MCP2515. | ||
7 | - reg: SPI chip select. | ||
8 | - clocks: The clock feeding the CAN controller. | ||
9 | - interrupt-parent: The parent interrupt controller. | ||
10 | - interrupts: Should contain IRQ line for the CAN controller. | ||
11 | |||
12 | Optional properties: | ||
13 | - vdd-supply: Regulator that powers the CAN controller. | ||
14 | - xceiver-supply: Regulator that powers the CAN transceiver. | ||
15 | |||
16 | Example: | ||
17 | can0: can@1 { | ||
18 | compatible = "microchip,mcp2515"; | ||
19 | reg = <1>; | ||
20 | clocks = <&clk24m>; | ||
21 | interrupt-parent = <&gpio4>; | ||
22 | interrupts = <13 0x2>; | ||
23 | vdd-supply = <®5v0>; | ||
24 | xceiver-supply = <®5v0>; | ||
25 | }; | ||
diff --git a/Documentation/devicetree/bindings/net/davinci_emac.txt b/Documentation/devicetree/bindings/net/davinci_emac.txt index bad381faf036..6e356d15154a 100644 --- a/Documentation/devicetree/bindings/net/davinci_emac.txt +++ b/Documentation/devicetree/bindings/net/davinci_emac.txt | |||
@@ -10,10 +10,6 @@ Required properties: | |||
10 | - ti,davinci-ctrl-mod-reg-offset: offset to control module register | 10 | - ti,davinci-ctrl-mod-reg-offset: offset to control module register |
11 | - ti,davinci-ctrl-ram-offset: offset to control module ram | 11 | - ti,davinci-ctrl-ram-offset: offset to control module ram |
12 | - ti,davinci-ctrl-ram-size: size of 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: | 13 | - interrupts: interrupt mapping for the davinci emac interrupts sources: |
18 | 4 sources: <Receive Threshold Interrupt | 14 | 4 sources: <Receive Threshold Interrupt |
19 | Receive Interrupt | 15 | Receive Interrupt |
@@ -21,7 +17,11 @@ Required properties: | |||
21 | Miscellaneous Interrupt> | 17 | Miscellaneous Interrupt> |
22 | 18 | ||
23 | Optional properties: | 19 | Optional properties: |
20 | - phy-handle: Contains a phandle to an Ethernet PHY. | ||
21 | If absent, davinci_emac driver defaults to 100/FULL. | ||
24 | - local-mac-address : 6 bytes, mac address | 22 | - local-mac-address : 6 bytes, mac address |
23 | - ti,davinci-rmii-en: 1 byte, 1 means use RMII | ||
24 | - ti,davinci-no-bd-ram: boolean, does EMAC have BD RAM? | ||
25 | 25 | ||
26 | Example (enbw_cmc board): | 26 | Example (enbw_cmc board): |
27 | eth0: emac@1e20000 { | 27 | eth0: emac@1e20000 { |
diff --git a/Documentation/devicetree/bindings/net/macb.txt b/Documentation/devicetree/bindings/net/macb.txt index 4ff65047bb9a..70af2ec12b09 100644 --- a/Documentation/devicetree/bindings/net/macb.txt +++ b/Documentation/devicetree/bindings/net/macb.txt | |||
@@ -10,6 +10,10 @@ Required properties: | |||
10 | - interrupts: Should contain macb interrupt | 10 | - interrupts: Should contain macb interrupt |
11 | - phy-mode: String, operation mode of the PHY interface. | 11 | - phy-mode: String, operation mode of the PHY interface. |
12 | Supported values are: "mii", "rmii", "gmii", "rgmii". | 12 | Supported values are: "mii", "rmii", "gmii", "rgmii". |
13 | - clock-names: Tuple listing input clock names. | ||
14 | Required elements: 'pclk', 'hclk' | ||
15 | Optional elements: 'tx_clk' | ||
16 | - clocks: Phandles to input clocks. | ||
13 | 17 | ||
14 | Optional properties: | 18 | Optional properties: |
15 | - local-mac-address: 6 bytes, mac address | 19 | - local-mac-address: 6 bytes, mac address |
@@ -22,4 +26,6 @@ Examples: | |||
22 | interrupts = <21>; | 26 | interrupts = <21>; |
23 | phy-mode = "rmii"; | 27 | phy-mode = "rmii"; |
24 | local-mac-address = [3a 0e 03 04 05 06]; | 28 | local-mac-address = [3a 0e 03 04 05 06]; |
29 | clock-names = "pclk", "hclk", "tx_clk"; | ||
30 | clocks = <&clkc 30>, <&clkc 30>, <&clkc 13>; | ||
25 | }; | 31 | }; |
diff --git a/Documentation/devicetree/bindings/net/marvell-orion-net.txt b/Documentation/devicetree/bindings/net/marvell-orion-net.txt index a73b79f227e1..c233b6114242 100644 --- a/Documentation/devicetree/bindings/net/marvell-orion-net.txt +++ b/Documentation/devicetree/bindings/net/marvell-orion-net.txt | |||
@@ -32,7 +32,6 @@ Optional controller properties: | |||
32 | * Ethernet port node | 32 | * Ethernet port node |
33 | 33 | ||
34 | Required port properties: | 34 | Required port properties: |
35 | - device_type: shall be "network". | ||
36 | - compatible: shall be one of "marvell,orion-eth-port", | 35 | - compatible: shall be one of "marvell,orion-eth-port", |
37 | "marvell,kirkwood-eth-port". | 36 | "marvell,kirkwood-eth-port". |
38 | - reg: port number relative to ethernet controller, shall be 0, 1, or 2. | 37 | - reg: port number relative to ethernet controller, shall be 0, 1, or 2. |
@@ -61,7 +60,6 @@ or | |||
61 | mdio-bus { | 60 | mdio-bus { |
62 | ... | 61 | ... |
63 | ethphy: ethernet-phy@8 { | 62 | ethphy: ethernet-phy@8 { |
64 | device_type = "ethernet-phy"; | ||
65 | ... | 63 | ... |
66 | }; | 64 | }; |
67 | }; | 65 | }; |
@@ -75,7 +73,6 @@ eth: ethernet-controller@72000 { | |||
75 | marvell,tx-checksum-limit = <1600>; | 73 | marvell,tx-checksum-limit = <1600>; |
76 | 74 | ||
77 | ethernet@0 { | 75 | ethernet@0 { |
78 | device_type = "network"; | ||
79 | compatible = "marvell,orion-eth-port"; | 76 | compatible = "marvell,orion-eth-port"; |
80 | reg = <0>; | 77 | reg = <0>; |
81 | interrupts = <29>; | 78 | interrupts = <29>; |
diff --git a/Documentation/devicetree/bindings/net/phy.txt b/Documentation/devicetree/bindings/net/phy.txt index 7cd18fbfcf71..58307d0931c8 100644 --- a/Documentation/devicetree/bindings/net/phy.txt +++ b/Documentation/devicetree/bindings/net/phy.txt | |||
@@ -2,7 +2,6 @@ PHY nodes | |||
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | 4 | ||
5 | - device_type : Should be "ethernet-phy" | ||
6 | - interrupts : <a b> where a is the interrupt number and b is a | 5 | - interrupts : <a b> where a is the interrupt number and b is a |
7 | field that represents an encoding of the sense and level | 6 | field that represents an encoding of the sense and level |
8 | information for the interrupt. This should be encoded based on | 7 | information for the interrupt. This should be encoded based on |
@@ -11,8 +10,6 @@ Required properties: | |||
11 | - interrupt-parent : the phandle for the interrupt controller that | 10 | - interrupt-parent : the phandle for the interrupt controller that |
12 | services interrupts for this device. | 11 | services interrupts for this device. |
13 | - reg : The ID number for the phy, usually a small integer | 12 | - reg : The ID number for the phy, usually a small integer |
14 | - linux,phandle : phandle for this node; likely referenced by an | ||
15 | ethernet controller node. | ||
16 | 13 | ||
17 | Optional Properties: | 14 | Optional Properties: |
18 | 15 | ||
@@ -22,14 +19,13 @@ Optional Properties: | |||
22 | specifications. If neither of these are specified, the default is to | 19 | specifications. If neither of these are specified, the default is to |
23 | assume clause 22. The compatible list may also contain other | 20 | assume clause 22. The compatible list may also contain other |
24 | elements. | 21 | elements. |
22 | - max-speed: Maximum PHY supported speed (10, 100, 1000...) | ||
25 | 23 | ||
26 | Example: | 24 | Example: |
27 | 25 | ||
28 | ethernet-phy@0 { | 26 | ethernet-phy@0 { |
29 | compatible = "ethernet-phy-ieee802.3-c22"; | 27 | compatible = "ethernet-phy-ieee802.3-c22"; |
30 | linux,phandle = <2452000>; | ||
31 | interrupt-parent = <40000>; | 28 | interrupt-parent = <40000>; |
32 | interrupts = <35 1>; | 29 | interrupts = <35 1>; |
33 | reg = <0>; | 30 | reg = <0>; |
34 | device_type = "ethernet-phy"; | ||
35 | }; | 31 | }; |
diff --git a/Documentation/devicetree/bindings/net/stmmac.txt b/Documentation/devicetree/bindings/net/stmmac.txt index eba0e5e59ebe..9d92d42140f2 100644 --- a/Documentation/devicetree/bindings/net/stmmac.txt +++ b/Documentation/devicetree/bindings/net/stmmac.txt | |||
@@ -12,7 +12,6 @@ Required properties: | |||
12 | property | 12 | property |
13 | - phy-mode: String, operation mode of the PHY interface. | 13 | - phy-mode: String, operation mode of the PHY interface. |
14 | Supported values are: "mii", "rmii", "gmii", "rgmii". | 14 | Supported values are: "mii", "rmii", "gmii", "rgmii". |
15 | - snps,phy-addr phy address to connect to. | ||
16 | - snps,reset-gpio gpio number for phy reset. | 15 | - snps,reset-gpio gpio number for phy reset. |
17 | - snps,reset-active-low boolean flag to indicate if phy reset is active low. | 16 | - snps,reset-active-low boolean flag to indicate if phy reset is active low. |
18 | - snps,reset-delays-us is triplet of delays | 17 | - snps,reset-delays-us is triplet of delays |
@@ -30,6 +29,11 @@ Required properties: | |||
30 | 29 | ||
31 | Optional properties: | 30 | Optional properties: |
32 | - mac-address: 6 bytes, mac address | 31 | - mac-address: 6 bytes, mac address |
32 | - resets: Should contain a phandle to the STMMAC reset signal, if any | ||
33 | - reset-names: Should contain the reset signal name "stmmaceth", if a | ||
34 | reset phandle is given | ||
35 | - max-frame-size: Maximum Transfer Unit (IEEE defined MTU), rather | ||
36 | than the maximum frame size. | ||
33 | 37 | ||
34 | Examples: | 38 | Examples: |
35 | 39 | ||
@@ -40,5 +44,6 @@ Examples: | |||
40 | interrupts = <24 23>; | 44 | interrupts = <24 23>; |
41 | interrupt-names = "macirq", "eth_wake_irq"; | 45 | interrupt-names = "macirq", "eth_wake_irq"; |
42 | mac-address = [000000000000]; /* Filled in by U-Boot */ | 46 | mac-address = [000000000000]; /* Filled in by U-Boot */ |
47 | max-frame-size = <3800>; | ||
43 | phy-mode = "gmii"; | 48 | phy-mode = "gmii"; |
44 | }; | 49 | }; |
diff --git a/Documentation/devicetree/bindings/nvec/nvidia,nvec.txt b/Documentation/devicetree/bindings/nvec/nvidia,nvec.txt index 5aeee53ff9f4..5ae601e7f51f 100644 --- a/Documentation/devicetree/bindings/nvec/nvidia,nvec.txt +++ b/Documentation/devicetree/bindings/nvec/nvidia,nvec.txt | |||
@@ -7,3 +7,15 @@ Required properties: | |||
7 | - clock-frequency : the frequency of the i2c bus | 7 | - clock-frequency : the frequency of the i2c bus |
8 | - gpios : the gpio used for ec request | 8 | - gpios : the gpio used for ec request |
9 | - slave-addr: the i2c address of the slave controller | 9 | - slave-addr: the i2c address of the slave controller |
10 | - clocks : Must contain an entry for each entry in clock-names. | ||
11 | See ../clocks/clock-bindings.txt for details. | ||
12 | - clock-names : Must include the following entries: | ||
13 | Tegra20/Tegra30: | ||
14 | - div-clk | ||
15 | - fast-clk | ||
16 | Tegra114: | ||
17 | - div-clk | ||
18 | - resets : Must contain an entry for each entry in reset-names. | ||
19 | See ../reset/reset.txt for details. | ||
20 | - reset-names : Must include the following entries: | ||
21 | - i2c | ||
diff --git a/Documentation/devicetree/bindings/panel/auo,b101aw03.txt b/Documentation/devicetree/bindings/panel/auo,b101aw03.txt new file mode 100644 index 000000000000..72e088a4fb3a --- /dev/null +++ b/Documentation/devicetree/bindings/panel/auo,b101aw03.txt | |||
@@ -0,0 +1,7 @@ | |||
1 | AU Optronics Corporation 10.1" WSVGA TFT LCD panel | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: should be "auo,b101aw03" | ||
5 | |||
6 | This binding is compatible with the simple-panel binding, which is specified | ||
7 | in simple-panel.txt in this directory. | ||
diff --git a/Documentation/devicetree/bindings/panel/chunghwa,claa101wa01a.txt b/Documentation/devicetree/bindings/panel/chunghwa,claa101wa01a.txt new file mode 100644 index 000000000000..f24614e4d5ec --- /dev/null +++ b/Documentation/devicetree/bindings/panel/chunghwa,claa101wa01a.txt | |||
@@ -0,0 +1,7 @@ | |||
1 | Chunghwa Picture Tubes Ltd. 10.1" WXGA TFT LCD panel | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: should be "chunghwa,claa101wa01a" | ||
5 | |||
6 | This binding is compatible with the simple-panel binding, which is specified | ||
7 | in simple-panel.txt in this directory. | ||
diff --git a/Documentation/devicetree/bindings/panel/chunghwa,claa101wb03.txt b/Documentation/devicetree/bindings/panel/chunghwa,claa101wb03.txt new file mode 100644 index 000000000000..0ab2c05a4c22 --- /dev/null +++ b/Documentation/devicetree/bindings/panel/chunghwa,claa101wb03.txt | |||
@@ -0,0 +1,7 @@ | |||
1 | Chunghwa Picture Tubes Ltd. 10.1" WXGA TFT LCD panel | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: should be "chunghwa,claa101wb03" | ||
5 | |||
6 | This binding is compatible with the simple-panel binding, which is specified | ||
7 | in simple-panel.txt in this directory. | ||
diff --git a/Documentation/devicetree/bindings/panel/panasonic,vvx10f004b00.txt b/Documentation/devicetree/bindings/panel/panasonic,vvx10f004b00.txt new file mode 100644 index 000000000000..d328b0341bf4 --- /dev/null +++ b/Documentation/devicetree/bindings/panel/panasonic,vvx10f004b00.txt | |||
@@ -0,0 +1,7 @@ | |||
1 | Panasonic Corporation 10.1" WUXGA TFT LCD panel | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: should be "panasonic,vvx10f004b00" | ||
5 | |||
6 | This binding is compatible with the simple-panel binding, which is specified | ||
7 | in simple-panel.txt in this directory. | ||
diff --git a/Documentation/devicetree/bindings/panel/samsung,ltn101nt05.txt b/Documentation/devicetree/bindings/panel/samsung,ltn101nt05.txt new file mode 100644 index 000000000000..ef522c6bb85f --- /dev/null +++ b/Documentation/devicetree/bindings/panel/samsung,ltn101nt05.txt | |||
@@ -0,0 +1,7 @@ | |||
1 | Samsung Electronics 10.1" WSVGA TFT LCD panel | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: should be "samsung,ltn101nt05" | ||
5 | |||
6 | This binding is compatible with the simple-panel binding, which is specified | ||
7 | in simple-panel.txt in this directory. | ||
diff --git a/Documentation/devicetree/bindings/panel/simple-panel.txt b/Documentation/devicetree/bindings/panel/simple-panel.txt new file mode 100644 index 000000000000..1341bbf4aa3d --- /dev/null +++ b/Documentation/devicetree/bindings/panel/simple-panel.txt | |||
@@ -0,0 +1,21 @@ | |||
1 | Simple display panel | ||
2 | |||
3 | Required properties: | ||
4 | - power-supply: regulator to provide the supply voltage | ||
5 | |||
6 | Optional properties: | ||
7 | - ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing | ||
8 | - enable-gpios: GPIO pin to enable or disable the panel | ||
9 | - backlight: phandle of the backlight device attached to the panel | ||
10 | |||
11 | Example: | ||
12 | |||
13 | panel: panel { | ||
14 | compatible = "cptt,claa101wb01"; | ||
15 | ddc-i2c-bus = <&panelddc>; | ||
16 | |||
17 | power-supply = <&vdd_pnl_reg>; | ||
18 | enable-gpios = <&gpio 90 0>; | ||
19 | |||
20 | backlight = <&backlight>; | ||
21 | }; | ||
diff --git a/Documentation/devicetree/bindings/pci/designware-pcie.txt b/Documentation/devicetree/bindings/pci/designware-pcie.txt index d5d26d443693..d6fae13ff062 100644 --- a/Documentation/devicetree/bindings/pci/designware-pcie.txt +++ b/Documentation/devicetree/bindings/pci/designware-pcie.txt | |||
@@ -19,6 +19,8 @@ Required properties: | |||
19 | to define the mapping of the PCIe interface to interrupt | 19 | to define the mapping of the PCIe interface to interrupt |
20 | numbers. | 20 | numbers. |
21 | - num-lanes: number of lanes to use | 21 | - num-lanes: number of lanes to use |
22 | |||
23 | Optional properties: | ||
22 | - reset-gpio: gpio pin number of power good signal | 24 | - reset-gpio: gpio pin number of power good signal |
23 | 25 | ||
24 | Optional properties for fsl,imx6q-pcie | 26 | Optional properties for fsl,imx6q-pcie |
diff --git a/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt b/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt index 6b7510775c50..24cee06915c9 100644 --- a/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt +++ b/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt | |||
@@ -42,14 +42,19 @@ Required properties: | |||
42 | - 0xc2000000: prefetchable memory region | 42 | - 0xc2000000: prefetchable memory region |
43 | Please refer to the standard PCI bus binding document for a more detailed | 43 | Please refer to the standard PCI bus binding document for a more detailed |
44 | explanation. | 44 | explanation. |
45 | - clocks: List of clock inputs of the controller. Must contain an entry for | 45 | - clocks: Must contain an entry for each entry in clock-names. |
46 | each entry in the clock-names property. | 46 | See ../clocks/clock-bindings.txt for details. |
47 | - clock-names: Must include the following entries: | 47 | - clock-names: Must include the following entries: |
48 | "pex": The Tegra clock of that name | 48 | - pex |
49 | "afi": The Tegra clock of that name | 49 | - afi |
50 | "pcie_xclk": The Tegra clock of that name | 50 | - pll_e |
51 | "pll_e": The Tegra clock of that name | 51 | - cml (not required for Tegra20) |
52 | "cml": The Tegra clock of that name (not required for Tegra20) | 52 | - resets: Must contain an entry for each entry in reset-names. |
53 | See ../reset/reset.txt for details. | ||
54 | - reset-names: Must include the following entries: | ||
55 | - pex | ||
56 | - afi | ||
57 | - pcie_x | ||
53 | 58 | ||
54 | Root ports are defined as subnodes of the PCIe controller node. | 59 | Root ports are defined as subnodes of the PCIe controller node. |
55 | 60 | ||
@@ -91,9 +96,10 @@ SoC DTSI: | |||
91 | 0x82000000 0 0xa0000000 0xa0000000 0 0x10000000 /* non-prefetchable memory */ | 96 | 0x82000000 0 0xa0000000 0xa0000000 0 0x10000000 /* non-prefetchable memory */ |
92 | 0xc2000000 0 0xb0000000 0xb0000000 0 0x10000000>; /* prefetchable memory */ | 97 | 0xc2000000 0 0xb0000000 0xb0000000 0 0x10000000>; /* prefetchable memory */ |
93 | 98 | ||
94 | clocks = <&tegra_car 70>, <&tegra_car 72>, <&tegra_car 74>, | 99 | clocks = <&tegra_car 70>, <&tegra_car 72>, <&tegra_car 118>; |
95 | <&tegra_car 118>; | 100 | clock-names = "pex", "afi", "pll_e"; |
96 | clock-names = "pex", "afi", "pcie_xclk", "pll_e"; | 101 | resets = <&tegra_car 70>, <&tegra_car 72>, <&tegra_car 74>; |
102 | reset-names = "pex", "afi", "pcie_x"; | ||
97 | status = "disabled"; | 103 | status = "disabled"; |
98 | 104 | ||
99 | pci@1,0 { | 105 | pci@1,0 { |
diff --git a/Documentation/devicetree/bindings/phy/bcm-phy.txt b/Documentation/devicetree/bindings/phy/bcm-phy.txt new file mode 100644 index 000000000000..3dc8b3d2ffbb --- /dev/null +++ b/Documentation/devicetree/bindings/phy/bcm-phy.txt | |||
@@ -0,0 +1,15 @@ | |||
1 | BROADCOM KONA USB2 PHY | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: brcm,kona-usb2-phy | ||
5 | - reg: offset and length of the PHY registers | ||
6 | - #phy-cells: must be 0 | ||
7 | Refer to phy/phy-bindings.txt for the generic PHY binding properties | ||
8 | |||
9 | Example: | ||
10 | |||
11 | usbphy: usb-phy@3f130000 { | ||
12 | compatible = "brcm,kona-usb2-phy"; | ||
13 | reg = <0x3f130000 0x28>; | ||
14 | #phy-cells = <0>; | ||
15 | }; | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/brcm,capri-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/brcm,capri-pinctrl.txt new file mode 100644 index 000000000000..9e9e9ef9f852 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/brcm,capri-pinctrl.txt | |||
@@ -0,0 +1,461 @@ | |||
1 | Broadcom Capri Pin Controller | ||
2 | |||
3 | This is a pin controller for the Broadcom BCM281xx SoC family, which includes | ||
4 | BCM11130, BCM11140, BCM11351, BCM28145, and BCM28155 SoCs. | ||
5 | |||
6 | === Pin Controller Node === | ||
7 | |||
8 | Required Properties: | ||
9 | |||
10 | - compatible: Must be "brcm,capri-pinctrl". | ||
11 | - reg: Base address of the PAD Controller register block and the size | ||
12 | of the block. | ||
13 | |||
14 | For example, the following is the bare minimum node: | ||
15 | |||
16 | pinctrl@35004800 { | ||
17 | compatible = "brcm,capri-pinctrl"; | ||
18 | reg = <0x35004800 0x430>; | ||
19 | }; | ||
20 | |||
21 | As a pin controller device, in addition to the required properties, this node | ||
22 | should also contain the pin configuration nodes that client devices reference, | ||
23 | if any. | ||
24 | |||
25 | === Pin Configuration Node === | ||
26 | |||
27 | Each pin configuration node is a sub-node of the pin controller node and is a | ||
28 | container of an arbitrary number of subnodes, called pin group nodes in this | ||
29 | document. | ||
30 | |||
31 | Please refer to the pinctrl-bindings.txt in this directory for details of the | ||
32 | common pinctrl bindings used by client devices, including the definition of a | ||
33 | "pin configuration node". | ||
34 | |||
35 | === Pin Group Node === | ||
36 | |||
37 | A pin group node specifies the desired pin mux and/or pin configuration for an | ||
38 | arbitrary number of pins. The name of the pin group node is optional and not | ||
39 | used. | ||
40 | |||
41 | A pin group node only affects the properties specified in the node, and has no | ||
42 | effect on any properties that are omitted. | ||
43 | |||
44 | The pin group node accepts a subset of the generic pin config properties. For | ||
45 | details generic pin config properties, please refer to pinctrl-bindings.txt | ||
46 | and <include/linux/pinctrl/pinconfig-generic.h>. | ||
47 | |||
48 | Each pin controlled by this pin controller belong to one of three types: | ||
49 | Standard, I2C, and HDMI. Each type accepts a different set of pin config | ||
50 | properties. A list of pins and their types is provided below. | ||
51 | |||
52 | Required Properties (applicable to all pins): | ||
53 | |||
54 | - pins: Multiple strings. Specifies the name(s) of one or more pins to | ||
55 | be configured by this node. | ||
56 | |||
57 | Optional Properties (for standard pins): | ||
58 | |||
59 | - function: String. Specifies the pin mux selection. Values | ||
60 | must be one of: "alt1", "alt2", "alt3", "alt4" | ||
61 | - input-schmitt-enable: No arguments. Enable schmitt-trigger mode. | ||
62 | - input-schmitt-disable: No arguments. Disable schmitt-trigger mode. | ||
63 | - bias-pull-up: No arguments. Pull up on pin. | ||
64 | - bias-pull-down: No arguments. Pull down on pin. | ||
65 | - bias-disable: No arguments. Disable pin bias. | ||
66 | - slew-rate: Integer. Meaning depends on configured pin mux: | ||
67 | *_SCL or *_SDA: | ||
68 | 0: Standard(100kbps)& Fast(400kbps) mode | ||
69 | 1: Highspeed (3.4Mbps) mode | ||
70 | IC_DM or IC_DP: | ||
71 | 0: normal slew rate | ||
72 | 1: fast slew rate | ||
73 | Otherwise: | ||
74 | 0: fast slew rate | ||
75 | 1: normal slew rate | ||
76 | - input-enable: No arguements. Enable input (does not affect | ||
77 | output.) | ||
78 | - input-disable: No arguements. Disable input (does not affect | ||
79 | output.) | ||
80 | - drive-strength: Integer. Drive strength in mA. Valid values are | ||
81 | 2, 4, 6, 8, 10, 12, 14, 16 mA. | ||
82 | |||
83 | Optional Properties (for I2C pins): | ||
84 | |||
85 | - function: String. Specifies the pin mux selection. Values | ||
86 | must be one of: "alt1", "alt2", "alt3", "alt4" | ||
87 | - bias-pull-up: Integer. Pull up strength in Ohm. There are 3 | ||
88 | pull-up resisitors (1.2k, 1.8k, 2.7k) available | ||
89 | in parallel for I2C pins, so the valid values | ||
90 | are: 568, 720, 831, 1080, 1200, 1800, 2700 Ohm. | ||
91 | - bias-disable: No arguments. Disable pin bias. | ||
92 | - slew-rate: Integer. Meaning depends on configured pin mux: | ||
93 | *_SCL or *_SDA: | ||
94 | 0: Standard(100kbps)& Fast(400kbps) mode | ||
95 | 1: Highspeed (3.4Mbps) mode | ||
96 | IC_DM or IC_DP: | ||
97 | 0: normal slew rate | ||
98 | 1: fast slew rate | ||
99 | Otherwise: | ||
100 | 0: fast slew rate | ||
101 | 1: normal slew rate | ||
102 | - input-enable: No arguements. Enable input (does not affect | ||
103 | output.) | ||
104 | - input-disable: No arguements. Disable input (does not affect | ||
105 | output.) | ||
106 | |||
107 | Optional Properties (for HDMI pins): | ||
108 | |||
109 | - function: String. Specifies the pin mux selection. Values | ||
110 | must be one of: "alt1", "alt2", "alt3", "alt4" | ||
111 | - slew-rate: Integer. Controls slew rate. | ||
112 | 0: Standard(100kbps)& Fast(400kbps) mode | ||
113 | 1: Highspeed (3.4Mbps) mode | ||
114 | - input-enable: No arguements. Enable input (does not affect | ||
115 | output.) | ||
116 | - input-disable: No arguements. Disable input (does not affect | ||
117 | output.) | ||
118 | |||
119 | Example: | ||
120 | // pin controller node | ||
121 | pinctrl@35004800 { | ||
122 | compatible = "brcm,capri-pinctrl"; | ||
123 | reg = <0x35004800 0x430>; | ||
124 | |||
125 | // pin configuration node | ||
126 | dev_a_default: dev_a_active { | ||
127 | //group node defining 1 standard pin | ||
128 | grp_1 { | ||
129 | pins = "std_pin1"; | ||
130 | function = "alt1"; | ||
131 | input-schmitt-enable; | ||
132 | bias-disable; | ||
133 | slew-rate = <1>; | ||
134 | drive-strength = <4>; | ||
135 | }; | ||
136 | |||
137 | // group node defining 2 I2C pins | ||
138 | grp_2 { | ||
139 | pins = "i2c_pin1", "i2c_pin2"; | ||
140 | function = "alt2"; | ||
141 | bias-pull-up = <720>; | ||
142 | input-enable; | ||
143 | }; | ||
144 | |||
145 | // group node defining 2 HDMI pins | ||
146 | grp_3 { | ||
147 | pins = "hdmi_pin1", "hdmi_pin2"; | ||
148 | function = "alt3"; | ||
149 | slew-rate = <1>; | ||
150 | }; | ||
151 | |||
152 | // other pin group nodes | ||
153 | ... | ||
154 | }; | ||
155 | |||
156 | // other pin configuration nodes | ||
157 | ... | ||
158 | }; | ||
159 | |||
160 | In the example above, "dev_a_active" is a pin configuration node with a number | ||
161 | of sub-nodes. In the pin group node "grp_1", one pin, "std_pin1", is defined in | ||
162 | the "pins" property. Thus, the remaining properties in the "grp_1" node applies | ||
163 | only to this pin, including the following settings: | ||
164 | - setting pinmux to "alt1" | ||
165 | - enabling schmitt-trigger (hystersis) mode | ||
166 | - disabling pin bias | ||
167 | - setting the slew-rate to 1 | ||
168 | - setting the drive strength to 4 mA | ||
169 | Note that neither "input-enable" nor "input-disable" was specified - the pinctrl | ||
170 | subsystem will therefore leave this property unchanged from whatever state it | ||
171 | was in before applying these changes. | ||
172 | |||
173 | The "pins" property in the pin group node "grp_2" specifies two pins - | ||
174 | "i2c_pin1" and "i2c_pin2"; the remaining properties in this pin group node, | ||
175 | therefore, applies to both of these pins. The properties include: | ||
176 | - setting pinmux to "alt2" | ||
177 | - setting pull-up resistance to 720 Ohm (ie. enabling 1.2k and 1.8k resistors | ||
178 | in parallel) | ||
179 | - enabling both pins' input | ||
180 | "slew-rate" is not specified in this pin group node, so the slew-rate for these | ||
181 | pins are left as-is. | ||
182 | |||
183 | Finally, "grp_3" defines two HDMI pins. The following properties are applied to | ||
184 | both pins: | ||
185 | - setting pinmux to "alt3" | ||
186 | - setting slew-rate to 1; for HDMI pins, this corresponds to the 3.4 Mbps | ||
187 | Highspeed mode | ||
188 | The input is neither enabled or disabled, and is left untouched. | ||
189 | |||
190 | === Pin Names and Type === | ||
191 | |||
192 | The following are valid pin names and their pin types: | ||
193 | |||
194 | "adcsync", Standard | ||
195 | "bat_rm", Standard | ||
196 | "bsc1_scl", I2C | ||
197 | "bsc1_sda", I2C | ||
198 | "bsc2_scl", I2C | ||
199 | "bsc2_sda", I2C | ||
200 | "classgpwr", Standard | ||
201 | "clk_cx8", Standard | ||
202 | "clkout_0", Standard | ||
203 | "clkout_1", Standard | ||
204 | "clkout_2", Standard | ||
205 | "clkout_3", Standard | ||
206 | "clkreq_in_0", Standard | ||
207 | "clkreq_in_1", Standard | ||
208 | "cws_sys_req1", Standard | ||
209 | "cws_sys_req2", Standard | ||
210 | "cws_sys_req3", Standard | ||
211 | "digmic1_clk", Standard | ||
212 | "digmic1_dq", Standard | ||
213 | "digmic2_clk", Standard | ||
214 | "digmic2_dq", Standard | ||
215 | "gpen13", Standard | ||
216 | "gpen14", Standard | ||
217 | "gpen15", Standard | ||
218 | "gpio00", Standard | ||
219 | "gpio01", Standard | ||
220 | "gpio02", Standard | ||
221 | "gpio03", Standard | ||
222 | "gpio04", Standard | ||
223 | "gpio05", Standard | ||
224 | "gpio06", Standard | ||
225 | "gpio07", Standard | ||
226 | "gpio08", Standard | ||
227 | "gpio09", Standard | ||
228 | "gpio10", Standard | ||
229 | "gpio11", Standard | ||
230 | "gpio12", Standard | ||
231 | "gpio13", Standard | ||
232 | "gpio14", Standard | ||
233 | "gps_pablank", Standard | ||
234 | "gps_tmark", Standard | ||
235 | "hdmi_scl", HDMI | ||
236 | "hdmi_sda", HDMI | ||
237 | "ic_dm", Standard | ||
238 | "ic_dp", Standard | ||
239 | "kp_col_ip_0", Standard | ||
240 | "kp_col_ip_1", Standard | ||
241 | "kp_col_ip_2", Standard | ||
242 | "kp_col_ip_3", Standard | ||
243 | "kp_row_op_0", Standard | ||
244 | "kp_row_op_1", Standard | ||
245 | "kp_row_op_2", Standard | ||
246 | "kp_row_op_3", Standard | ||
247 | "lcd_b_0", Standard | ||
248 | "lcd_b_1", Standard | ||
249 | "lcd_b_2", Standard | ||
250 | "lcd_b_3", Standard | ||
251 | "lcd_b_4", Standard | ||
252 | "lcd_b_5", Standard | ||
253 | "lcd_b_6", Standard | ||
254 | "lcd_b_7", Standard | ||
255 | "lcd_g_0", Standard | ||
256 | "lcd_g_1", Standard | ||
257 | "lcd_g_2", Standard | ||
258 | "lcd_g_3", Standard | ||
259 | "lcd_g_4", Standard | ||
260 | "lcd_g_5", Standard | ||
261 | "lcd_g_6", Standard | ||
262 | "lcd_g_7", Standard | ||
263 | "lcd_hsync", Standard | ||
264 | "lcd_oe", Standard | ||
265 | "lcd_pclk", Standard | ||
266 | "lcd_r_0", Standard | ||
267 | "lcd_r_1", Standard | ||
268 | "lcd_r_2", Standard | ||
269 | "lcd_r_3", Standard | ||
270 | "lcd_r_4", Standard | ||
271 | "lcd_r_5", Standard | ||
272 | "lcd_r_6", Standard | ||
273 | "lcd_r_7", Standard | ||
274 | "lcd_vsync", Standard | ||
275 | "mdmgpio0", Standard | ||
276 | "mdmgpio1", Standard | ||
277 | "mdmgpio2", Standard | ||
278 | "mdmgpio3", Standard | ||
279 | "mdmgpio4", Standard | ||
280 | "mdmgpio5", Standard | ||
281 | "mdmgpio6", Standard | ||
282 | "mdmgpio7", Standard | ||
283 | "mdmgpio8", Standard | ||
284 | "mphi_data_0", Standard | ||
285 | "mphi_data_1", Standard | ||
286 | "mphi_data_2", Standard | ||
287 | "mphi_data_3", Standard | ||
288 | "mphi_data_4", Standard | ||
289 | "mphi_data_5", Standard | ||
290 | "mphi_data_6", Standard | ||
291 | "mphi_data_7", Standard | ||
292 | "mphi_data_8", Standard | ||
293 | "mphi_data_9", Standard | ||
294 | "mphi_data_10", Standard | ||
295 | "mphi_data_11", Standard | ||
296 | "mphi_data_12", Standard | ||
297 | "mphi_data_13", Standard | ||
298 | "mphi_data_14", Standard | ||
299 | "mphi_data_15", Standard | ||
300 | "mphi_ha0", Standard | ||
301 | "mphi_hat0", Standard | ||
302 | "mphi_hat1", Standard | ||
303 | "mphi_hce0_n", Standard | ||
304 | "mphi_hce1_n", Standard | ||
305 | "mphi_hrd_n", Standard | ||
306 | "mphi_hwr_n", Standard | ||
307 | "mphi_run0", Standard | ||
308 | "mphi_run1", Standard | ||
309 | "mtx_scan_clk", Standard | ||
310 | "mtx_scan_data", Standard | ||
311 | "nand_ad_0", Standard | ||
312 | "nand_ad_1", Standard | ||
313 | "nand_ad_2", Standard | ||
314 | "nand_ad_3", Standard | ||
315 | "nand_ad_4", Standard | ||
316 | "nand_ad_5", Standard | ||
317 | "nand_ad_6", Standard | ||
318 | "nand_ad_7", Standard | ||
319 | "nand_ale", Standard | ||
320 | "nand_cen_0", Standard | ||
321 | "nand_cen_1", Standard | ||
322 | "nand_cle", Standard | ||
323 | "nand_oen", Standard | ||
324 | "nand_rdy_0", Standard | ||
325 | "nand_rdy_1", Standard | ||
326 | "nand_wen", Standard | ||
327 | "nand_wp", Standard | ||
328 | "pc1", Standard | ||
329 | "pc2", Standard | ||
330 | "pmu_int", Standard | ||
331 | "pmu_scl", I2C | ||
332 | "pmu_sda", I2C | ||
333 | "rfst2g_mtsloten3g", Standard | ||
334 | "rgmii_0_rx_ctl", Standard | ||
335 | "rgmii_0_rxc", Standard | ||
336 | "rgmii_0_rxd_0", Standard | ||
337 | "rgmii_0_rxd_1", Standard | ||
338 | "rgmii_0_rxd_2", Standard | ||
339 | "rgmii_0_rxd_3", Standard | ||
340 | "rgmii_0_tx_ctl", Standard | ||
341 | "rgmii_0_txc", Standard | ||
342 | "rgmii_0_txd_0", Standard | ||
343 | "rgmii_0_txd_1", Standard | ||
344 | "rgmii_0_txd_2", Standard | ||
345 | "rgmii_0_txd_3", Standard | ||
346 | "rgmii_1_rx_ctl", Standard | ||
347 | "rgmii_1_rxc", Standard | ||
348 | "rgmii_1_rxd_0", Standard | ||
349 | "rgmii_1_rxd_1", Standard | ||
350 | "rgmii_1_rxd_2", Standard | ||
351 | "rgmii_1_rxd_3", Standard | ||
352 | "rgmii_1_tx_ctl", Standard | ||
353 | "rgmii_1_txc", Standard | ||
354 | "rgmii_1_txd_0", Standard | ||
355 | "rgmii_1_txd_1", Standard | ||
356 | "rgmii_1_txd_2", Standard | ||
357 | "rgmii_1_txd_3", Standard | ||
358 | "rgmii_gpio_0", Standard | ||
359 | "rgmii_gpio_1", Standard | ||
360 | "rgmii_gpio_2", Standard | ||
361 | "rgmii_gpio_3", Standard | ||
362 | "rtxdata2g_txdata3g1", Standard | ||
363 | "rtxen2g_txdata3g2", Standard | ||
364 | "rxdata3g0", Standard | ||
365 | "rxdata3g1", Standard | ||
366 | "rxdata3g2", Standard | ||
367 | "sdio1_clk", Standard | ||
368 | "sdio1_cmd", Standard | ||
369 | "sdio1_data_0", Standard | ||
370 | "sdio1_data_1", Standard | ||
371 | "sdio1_data_2", Standard | ||
372 | "sdio1_data_3", Standard | ||
373 | "sdio4_clk", Standard | ||
374 | "sdio4_cmd", Standard | ||
375 | "sdio4_data_0", Standard | ||
376 | "sdio4_data_1", Standard | ||
377 | "sdio4_data_2", Standard | ||
378 | "sdio4_data_3", Standard | ||
379 | "sim_clk", Standard | ||
380 | "sim_data", Standard | ||
381 | "sim_det", Standard | ||
382 | "sim_resetn", Standard | ||
383 | "sim2_clk", Standard | ||
384 | "sim2_data", Standard | ||
385 | "sim2_det", Standard | ||
386 | "sim2_resetn", Standard | ||
387 | "sri_c", Standard | ||
388 | "sri_d", Standard | ||
389 | "sri_e", Standard | ||
390 | "ssp_extclk", Standard | ||
391 | "ssp0_clk", Standard | ||
392 | "ssp0_fs", Standard | ||
393 | "ssp0_rxd", Standard | ||
394 | "ssp0_txd", Standard | ||
395 | "ssp2_clk", Standard | ||
396 | "ssp2_fs_0", Standard | ||
397 | "ssp2_fs_1", Standard | ||
398 | "ssp2_fs_2", Standard | ||
399 | "ssp2_fs_3", Standard | ||
400 | "ssp2_rxd_0", Standard | ||
401 | "ssp2_rxd_1", Standard | ||
402 | "ssp2_txd_0", Standard | ||
403 | "ssp2_txd_1", Standard | ||
404 | "ssp3_clk", Standard | ||
405 | "ssp3_fs", Standard | ||
406 | "ssp3_rxd", Standard | ||
407 | "ssp3_txd", Standard | ||
408 | "ssp4_clk", Standard | ||
409 | "ssp4_fs", Standard | ||
410 | "ssp4_rxd", Standard | ||
411 | "ssp4_txd", Standard | ||
412 | "ssp5_clk", Standard | ||
413 | "ssp5_fs", Standard | ||
414 | "ssp5_rxd", Standard | ||
415 | "ssp5_txd", Standard | ||
416 | "ssp6_clk", Standard | ||
417 | "ssp6_fs", Standard | ||
418 | "ssp6_rxd", Standard | ||
419 | "ssp6_txd", Standard | ||
420 | "stat_1", Standard | ||
421 | "stat_2", Standard | ||
422 | "sysclken", Standard | ||
423 | "traceclk", Standard | ||
424 | "tracedt00", Standard | ||
425 | "tracedt01", Standard | ||
426 | "tracedt02", Standard | ||
427 | "tracedt03", Standard | ||
428 | "tracedt04", Standard | ||
429 | "tracedt05", Standard | ||
430 | "tracedt06", Standard | ||
431 | "tracedt07", Standard | ||
432 | "tracedt08", Standard | ||
433 | "tracedt09", Standard | ||
434 | "tracedt10", Standard | ||
435 | "tracedt11", Standard | ||
436 | "tracedt12", Standard | ||
437 | "tracedt13", Standard | ||
438 | "tracedt14", Standard | ||
439 | "tracedt15", Standard | ||
440 | "txdata3g0", Standard | ||
441 | "txpwrind", Standard | ||
442 | "uartb1_ucts", Standard | ||
443 | "uartb1_urts", Standard | ||
444 | "uartb1_urxd", Standard | ||
445 | "uartb1_utxd", Standard | ||
446 | "uartb2_urxd", Standard | ||
447 | "uartb2_utxd", Standard | ||
448 | "uartb3_ucts", Standard | ||
449 | "uartb3_urts", Standard | ||
450 | "uartb3_urxd", Standard | ||
451 | "uartb3_utxd", Standard | ||
452 | "uartb4_ucts", Standard | ||
453 | "uartb4_urts", Standard | ||
454 | "uartb4_urxd", Standard | ||
455 | "uartb4_utxd", Standard | ||
456 | "vc_cam1_scl", I2C | ||
457 | "vc_cam1_sda", I2C | ||
458 | "vc_cam2_scl", I2C | ||
459 | "vc_cam2_sda", I2C | ||
460 | "vc_cam3_scl", I2C | ||
461 | "vc_cam3_sda", I2C | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx25-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx25-pinctrl.txt new file mode 100644 index 000000000000..fd653bde18d5 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx25-pinctrl.txt | |||
@@ -0,0 +1,23 @@ | |||
1 | * Freescale IMX25 IOMUX Controller | ||
2 | |||
3 | Please refer to fsl,imx-pinctrl.txt in this directory for common binding part | ||
4 | and usage. | ||
5 | |||
6 | CONFIG bits definition: | ||
7 | PAD_CTL_HYS (1 << 8) | ||
8 | PAD_CTL_PKE (1 << 7) | ||
9 | PAD_CTL_PUE (1 << 6) | ||
10 | PAD_CTL_PUS_100K_DOWN (0 << 4) | ||
11 | PAD_CTL_PUS_47K_UP (1 << 4) | ||
12 | PAD_CTL_PUS_100K_UP (2 << 4) | ||
13 | PAD_CTL_PUS_22K_UP (3 << 4) | ||
14 | PAD_CTL_ODE_CMOS (0 << 3) | ||
15 | PAD_CTL_ODE_OPENDRAIN (1 << 3) | ||
16 | PAD_CTL_DSE_NOMINAL (0 << 1) | ||
17 | PAD_CTL_DSE_HIGH (1 << 1) | ||
18 | PAD_CTL_DSE_MAX (2 << 1) | ||
19 | PAD_CTL_SRE_FAST (1 << 0) | ||
20 | PAD_CTL_SRE_SLOW (0 << 0) | ||
21 | |||
22 | Refer to imx25-pinfunc.h in device tree source folder for all available | ||
23 | imx25 PIN_FUNC_ID. | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx27-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx27-pinctrl.txt index 353eca0efbf8..d1706ea82572 100644 --- a/Documentation/devicetree/bindings/pinctrl/fsl,imx27-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx27-pinctrl.txt | |||
@@ -52,12 +52,25 @@ Required properties for pin configuration node: | |||
52 | CONFIG can be 0 or 1, meaning Pullup disable/enable. | 52 | CONFIG can be 0 or 1, meaning Pullup disable/enable. |
53 | 53 | ||
54 | 54 | ||
55 | The iomux controller has gpio child nodes which are embedded in the iomux | ||
56 | control registers. They have to be defined as child nodes of the iomux device | ||
57 | node. If gpio subnodes are defined "#address-cells", "#size-cells" and "ranges" | ||
58 | properties for the iomux device node are required. | ||
55 | 59 | ||
56 | Example: | 60 | Example: |
57 | 61 | ||
58 | iomuxc: iomuxc@10015000 { | 62 | iomuxc: iomuxc@10015000 { |
59 | compatible = "fsl,imx27-iomuxc"; | 63 | compatible = "fsl,imx27-iomuxc"; |
60 | reg = <0x10015000 0x600>; | 64 | reg = <0x10015000 0x600>; |
65 | #address-cells = <1>; | ||
66 | #size-cells = <1>; | ||
67 | ranges; | ||
68 | |||
69 | gpio1: gpio@10015000 { | ||
70 | ... | ||
71 | }; | ||
72 | |||
73 | ... | ||
61 | 74 | ||
62 | uart { | 75 | uart { |
63 | pinctrl_uart1: uart-1 { | 76 | pinctrl_uart1: uart-1 { |
@@ -83,6 +96,15 @@ The above example using macros: | |||
83 | iomuxc: iomuxc@10015000 { | 96 | iomuxc: iomuxc@10015000 { |
84 | compatible = "fsl,imx27-iomuxc"; | 97 | compatible = "fsl,imx27-iomuxc"; |
85 | reg = <0x10015000 0x600>; | 98 | reg = <0x10015000 0x600>; |
99 | #address-cells = <1>; | ||
100 | #size-cells = <1>; | ||
101 | ranges; | ||
102 | |||
103 | gpio1: gpio@10015000 { | ||
104 | ... | ||
105 | }; | ||
106 | |||
107 | ... | ||
86 | 108 | ||
87 | uart { | 109 | uart { |
88 | pinctrl_uart1: uart-1 { | 110 | pinctrl_uart1: uart-1 { |
diff --git a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-pinmux.txt b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-pinmux.txt new file mode 100644 index 000000000000..6464bf769460 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-pinmux.txt | |||
@@ -0,0 +1,144 @@ | |||
1 | NVIDIA Tegra124 pinmux controller | ||
2 | |||
3 | The Tegra124 pinctrl binding is very similar to the Tegra20 and Tegra30 | ||
4 | pinctrl binding, as described in nvidia,tegra20-pinmux.txt and | ||
5 | nvidia,tegra30-pinmux.txt. In fact, this document assumes that binding as | ||
6 | a baseline, and only documents the differences between the two bindings. | ||
7 | |||
8 | Required properties: | ||
9 | - compatible: "nvidia,tegra124-pinmux" | ||
10 | - reg: Should contain a list of base address and size pairs for: | ||
11 | -- first entry - the drive strength and pad control registers. | ||
12 | -- second entry - the pinmux registers | ||
13 | |||
14 | Tegra124 adds the following optional properties for pin configuration subnodes. | ||
15 | The macros for options are defined in the | ||
16 | include/dt-binding/pinctrl/pinctrl-tegra.h. | ||
17 | - nvidia,enable-input: Integer. Enable the pin's input path. | ||
18 | enable :TEGRA_PIN_ENABLE0 and | ||
19 | disable or output only: TEGRA_PIN_DISABLE. | ||
20 | - nvidia,open-drain: Integer. | ||
21 | enable: TEGRA_PIN_ENABLE. | ||
22 | disable: TEGRA_PIN_DISABLE. | ||
23 | - nvidia,lock: Integer. Lock the pin configuration against further changes | ||
24 | until reset. | ||
25 | enable: TEGRA_PIN_ENABLE. | ||
26 | disable: TEGRA_PIN_DISABLE. | ||
27 | - nvidia,io-reset: Integer. Reset the IO path. | ||
28 | enable: TEGRA_PIN_ENABLE. | ||
29 | disable: TEGRA_PIN_DISABLE. | ||
30 | - nvidia,rcv-sel: Integer. Select VIL/VIH receivers. | ||
31 | normal: TEGRA_PIN_DISABLE | ||
32 | high: TEGRA_PIN_ENABLE | ||
33 | |||
34 | Please refer the Tegra TRM for complete details regarding which groups | ||
35 | support which functionality. | ||
36 | |||
37 | Valid values for pin and group names are: | ||
38 | |||
39 | per-pin mux groups: | ||
40 | |||
41 | These all support nvidia,function, nvidia,tristate, nvidia,pull, | ||
42 | nvidia,enable-input. Some support nvidia,lock nvidia,open-drain, | ||
43 | nvidia,io-reset and nvidia,rcv-sel. | ||
44 | |||
45 | ulpi_data0_po1, ulpi_data1_po2, ulpi_data2_po3, ulpi_data3_po4, | ||
46 | ulpi_data4_po5, ulpi_data5_po6, ulpi_data6_po7, ulpi_data7_po0, | ||
47 | ulpi_clk_py0, ulpi_dir_py1, ulpi_nxt_py2, ulpi_stp_py3, dap3_fs_pp0, | ||
48 | dap3_din_pp1, dap3_dout_pp2, dap3_sclk_pp3, pv0, pv1, sdmmc1_clk_pz0, | ||
49 | sdmmc1_cmd_pz1, sdmmc1_dat3_py4, sdmmc1_dat2_py5, sdmmc1_dat1_py6, | ||
50 | sdmmc1_dat0_py7, clk2_out_pw5, clk2_req_pcc5, hdmi_int_pn7, ddc_scl_pv4, | ||
51 | ddc_sda_pv5, uart2_rxd_pc3, uart2_txd_pc2, uart2_rts_n_pj6, | ||
52 | uart2_cts_n_pj5, uart3_txd_pw6, uart3_rxd_pw7, uart3_cts_n_pa1, | ||
53 | uart3_rts_n_pc0, pu0, pu1, pu2, pu3, pu4, pu5, pu6, gen1_i2c_scl_pc4, | ||
54 | gen1_i2c_sda_pc5, dap4_fs_pp4, dap4_din_pp5, dap4_dout_pp6, | ||
55 | dap4_sclk_pp7, clk3_out_pee0, clk3_req_pee1, pc7, pi5, pi7, pk0, pk1, | ||
56 | pj0, pj2, pk3, pk4, pk2, pi3, pi6, pg0, pg1, pg2, pg3, pg4, pg5, pg6, | ||
57 | pg7, ph0, ph1, ph2, ph3, ph4, ph5, ph6, ph7, pj7, pb0, pb1, pk7, pi0, | ||
58 | pi1, pi2, pi4, gen2_i2c_scl_pt5, gen2_i2c_sda_pt6, sdmmc4_clk_pcc4, | ||
59 | sdmmc4_cmd_pt7, sdmmc4_dat0_paa0, sdmmc4_dat1_paa1, sdmmc4_dat2_paa2, | ||
60 | sdmmc4_dat3_paa3, sdmmc4_dat4_paa4, sdmmc4_dat5_paa5, sdmmc4_dat6_paa6, | ||
61 | sdmmc4_dat7_paa7, cam_mclk_pcc0, pcc1, pbb0, cam_i2c_scl_pbb1, | ||
62 | cam_i2c_sda_pbb2, pbb3, pbb4, pbb5, pbb6, pbb7, pcc2, jtag_rtck, | ||
63 | pwr_i2c_scl_pz6, pwr_i2c_sda_pz7, kb_row0_pr0, kb_row1_pr1, kb_row2_pr2, | ||
64 | kb_row3_pr3, kb_row4_pr4, kb_row5_pr5, kb_row6_pr6, kb_row7_pr7, | ||
65 | kb_row8_ps0, kb_row9_ps1, kb_row10_ps2, kb_row11_ps3, kb_row12_ps4, | ||
66 | kb_row13_ps5, kb_row14_ps6, kb_row15_ps7, kb_col0_pq0, kb_col1_pq1, | ||
67 | kb_col2_pq2, kb_col3_pq3, kb_col4_pq4, kb_col5_pq5, kb_col6_pq6, | ||
68 | kb_col7_pq7, clk_32k_out_pa0, core_pwr_req, cpu_pwr_req, pwr_int_n, | ||
69 | clk_32k_in, owr, dap1_fs_pn0, dap1_din_pn1, dap1_dout_pn2, | ||
70 | dap1_sclk_pn3, dap_mclk1_req_pee2, dap_mclk1_pw4, spdif_in_pk6, | ||
71 | spdif_out_pk5, dap2_fs_pa2, dap2_din_pa4, dap2_dout_pa5, dap2_sclk_pa3, | ||
72 | dvfs_pwm_px0, gpio_x1_aud_px1, gpio_x3_aud_px3, dvfs_clk_px2, | ||
73 | gpio_x4_aud_px4, gpio_x5_aud_px5, gpio_x6_aud_px6, gpio_x7_aud_px7, | ||
74 | sdmmc3_clk_pa6, sdmmc3_cmd_pa7, sdmmc3_dat0_pb7, sdmmc3_dat1_pb6, | ||
75 | sdmmc3_dat2_pb5, sdmmc3_dat3_pb4, pex_l0_rst_n_pdd1, | ||
76 | pex_l0_clkreq_n_pdd2, pex_wake_n_pdd3, pex_l1_rst_n_pdd5, | ||
77 | pex_l1_clkreq_n_pdd6, hdmi_cec_pee3, sdmmc1_wp_n_pv3, | ||
78 | sdmmc3_cd_n_pv2, gpio_w2_aud_pw2, gpio_w3_aud_pw3, usb_vbus_en0_pn4, | ||
79 | usb_vbus_en1_pn5, sdmmc3_clk_lb_out_pee4, sdmmc3_clk_lb_in_pee5, | ||
80 | gmi_clk_lb, reset_out_n, kb_row16_pt0, kb_row17_pt1, usb_vbus_en2_pff1, | ||
81 | pff2, dp_hpd_pff0, | ||
82 | |||
83 | drive groups: | ||
84 | |||
85 | These all support nvidia,pull-down-strength, nvidia,pull-up-strength, | ||
86 | nvidia,slew-rate-rising, nvidia,slew-rate-falling. Most but not all | ||
87 | support nvidia,high-speed-mode, nvidia,schmitt, nvidia,low-power-mode | ||
88 | and nvidia,drive-type. | ||
89 | |||
90 | ao1, ao2, at1, at2, at3, at4, at5, cdev1, cdev2, dap1, dap2, dap3, dap4, | ||
91 | dbg, sdio3, spi, uaa, uab, uart2, uart3, sdio1, ddc, gma, gme, gmf, gmg, | ||
92 | gmh, owr, uda, gpv, dev3, cec, usb_vbus_en, ao3, ao0, hv0, sdio4, ao4. | ||
93 | |||
94 | Valid values for nvidia,functions are: | ||
95 | |||
96 | blink, cec, cldvfs, clk12, cpu, dap, dap1, dap2, dev3, displaya, | ||
97 | displaya_alt, displayb, dtv, extperiph1, extperiph2, extperiph3, | ||
98 | gmi, gmi_alt, hda, hsi, i2c1, i2c2, i2c3, i2c4, i2cpwr, i2s0, | ||
99 | i2s1, i2s2, i2s3, i2s4, irda, kbc, owr, pmi, pwm0, pwm1, pwm2, pwm3, | ||
100 | pwron, reset_out_n, rsvd1, rsvd2, rsvd3, rsvd4, sdmmc1, sdmmc2, sdmmc3, | ||
101 | sdmmc4, soc, spdif, spi1, spi2, spi3, spi4, spi5, spi6, trace, uarta, | ||
102 | uartb, uartc, uartd, ulpi, usb, vgp1, vgp2, vgp3, vgp4, vgp5, vgp6, | ||
103 | vi, vi_alt1, vi_alt3, vimclk2, vimclk2_alt, sata, ccla, pe0, pe, pe1, | ||
104 | dp, rtck, sys, clk tmds. | ||
105 | |||
106 | Example: | ||
107 | |||
108 | pinmux: pinmux { | ||
109 | compatible = "nvidia,tegra124-pinmux"; | ||
110 | reg = <0x70000868 0x164 /* Pad control registers */ | ||
111 | 0x70003000 0x434>; /* PinMux registers */ | ||
112 | }; | ||
113 | |||
114 | Example pinmux entries: | ||
115 | |||
116 | pinctrl { | ||
117 | sdmmc4_default: pinmux { | ||
118 | sdmmc4_clk_pcc4 { | ||
119 | nvidia,pins = "sdmmc4_clk_pcc4", | ||
120 | nvidia,function = "sdmmc4"; | ||
121 | nvidia,pull = <TEGRA_PIN_PULL_NONE>; | ||
122 | nvidia,tristate = <TEGRA_PIN_DISABLE>; | ||
123 | }; | ||
124 | |||
125 | sdmmc4_dat0_paa0 { | ||
126 | nvidia,pins = "sdmmc4_dat0_paa0", | ||
127 | "sdmmc4_dat1_paa1", | ||
128 | "sdmmc4_dat2_paa2", | ||
129 | "sdmmc4_dat3_paa3", | ||
130 | "sdmmc4_dat4_paa4", | ||
131 | "sdmmc4_dat5_paa5", | ||
132 | "sdmmc4_dat6_paa6", | ||
133 | "sdmmc4_dat7_paa7"; | ||
134 | nvidia,function = "sdmmc4"; | ||
135 | nvidia,pull = <TEGRA_PIN_PULL_UP>; | ||
136 | nvidia,tristate = <TEGRA_PIN_DISABLE>; | ||
137 | }; | ||
138 | }; | ||
139 | }; | ||
140 | |||
141 | sdhci@78000400 { | ||
142 | pinctrl-names = "default"; | ||
143 | pinctrl-0 = <&sdmmc4_default>; | ||
144 | }; | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt index 1958ca9f9e5c..4414163e76d2 100644 --- a/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt +++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt | |||
@@ -151,6 +151,8 @@ drive-push-pull - drive actively high and low | |||
151 | drive-open-drain - drive with open drain | 151 | drive-open-drain - drive with open drain |
152 | drive-open-source - drive with open source | 152 | drive-open-source - drive with open source |
153 | drive-strength - sink or source at most X mA | 153 | drive-strength - sink or source at most X mA |
154 | input-enable - enable input on pin (no effect on output) | ||
155 | input-disable - disable input on pin (no effect on output) | ||
154 | input-schmitt-enable - enable schmitt-trigger mode | 156 | input-schmitt-enable - enable schmitt-trigger mode |
155 | input-schmitt-disable - disable schmitt-trigger mode | 157 | input-schmitt-disable - disable schmitt-trigger mode |
156 | input-debounce - debounce mode with debound time X | 158 | input-debounce - debounce mode with debound time X |
@@ -158,6 +160,7 @@ low-power-enable - enable low power mode | |||
158 | low-power-disable - disable low power mode | 160 | low-power-disable - disable low power mode |
159 | output-low - set the pin to output mode with low level | 161 | output-low - set the pin to output mode with low level |
160 | output-high - set the pin to output mode with high level | 162 | output-high - set the pin to output mode with high level |
163 | slew-rate - set the slew rate | ||
161 | 164 | ||
162 | Some of the generic properties take arguments. For those that do, the | 165 | Some of the generic properties take arguments. For those that do, the |
163 | arguments are described below. | 166 | arguments are described below. |
diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt index 7069a0b84e3a..bc0dfdfdb148 100644 --- a/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt +++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt | |||
@@ -98,7 +98,7 @@ below for more information. | |||
98 | In case when one register changes more than one pin's mux the | 98 | In case when one register changes more than one pin's mux the |
99 | pinctrl-single,bits need to be used which takes three parameters: | 99 | pinctrl-single,bits need to be used which takes three parameters: |
100 | 100 | ||
101 | pinctrl-single,bits = <0xdc 0x18, 0xff>; | 101 | pinctrl-single,bits = <0xdc 0x18 0xff>; |
102 | 102 | ||
103 | Where 0xdc is the offset from the pinctrl register base address for the | 103 | Where 0xdc is the offset from the pinctrl register base address for the |
104 | device pinctrl register, 0x18 is the desired value, and 0xff is the sub mask to | 104 | device pinctrl register, 0x18 is the desired value, and 0xff is the sub mask to |
diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt new file mode 100644 index 000000000000..4c352be5dd61 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt | |||
@@ -0,0 +1,92 @@ | |||
1 | Qualcomm MSM8974 TLMM block | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "qcom,msm8x74-pinctrl" | ||
5 | - reg: Should be the base address and length of the TLMM block. | ||
6 | - interrupts: Should be the parent IRQ of the TLMM block. | ||
7 | - interrupt-controller: Marks the device node as an interrupt controller. | ||
8 | - #interrupt-cells: Should be two. | ||
9 | - gpio-controller: Marks the device node as a GPIO controller. | ||
10 | - #gpio-cells : Should be two. | ||
11 | The first cell is the gpio pin number and the | ||
12 | second cell is used for optional parameters. | ||
13 | |||
14 | Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for | ||
15 | a general description of GPIO and interrupt bindings. | ||
16 | |||
17 | Please refer to pinctrl-bindings.txt in this directory for details of the | ||
18 | common pinctrl bindings used by client devices, including the meaning of the | ||
19 | phrase "pin configuration node". | ||
20 | |||
21 | Qualcomm's pin configuration nodes act as a container for an abitrary number of | ||
22 | subnodes. Each of these subnodes represents some desired configuration for a | ||
23 | pin, a group, or a list of pins or groups. This configuration can include the | ||
24 | mux function to select on those pin(s)/group(s), and various pin configuration | ||
25 | parameters, such as pull-up, drive strength, etc. | ||
26 | |||
27 | The name of each subnode is not important; all subnodes should be enumerated | ||
28 | and processed purely based on their content. | ||
29 | |||
30 | Each subnode only affects those parameters that are explicitly listed. In | ||
31 | other words, a subnode that lists a mux function but no pin configuration | ||
32 | parameters implies no information about any pin configuration parameters. | ||
33 | Similarly, a pin subnode that describes a pullup parameter implies no | ||
34 | information about e.g. the mux function. | ||
35 | |||
36 | |||
37 | The following generic properties as defined in pinctrl-bindings.txt are valid | ||
38 | to specify in a pin configuration subnode: | ||
39 | pins, function, bias-disable, bias-pull-down, bias-pull,up, drive-strength. | ||
40 | |||
41 | Non-empty subnodes must specify the 'pins' property. | ||
42 | Note that not all properties are valid for all pins. | ||
43 | |||
44 | |||
45 | Valid values for qcom,pins are: | ||
46 | gpio0-gpio145 | ||
47 | Supports mux, bias and drive-strength | ||
48 | |||
49 | sdc1_clk, sdc1_cmd, sdc1_data, sdc2_clk, sdc2_cmd, sdc2_data | ||
50 | Supports bias and drive-strength | ||
51 | |||
52 | Valid values for qcom,function are: | ||
53 | blsp_i2c2, blsp_i2c6, blsp_i2c11, blsp_spi1, blsp_uart2, blsp_uart8, slimbus | ||
54 | |||
55 | (Note that this is not yet the complete list of functions) | ||
56 | |||
57 | |||
58 | |||
59 | Example: | ||
60 | |||
61 | msmgpio: pinctrl@fd510000 { | ||
62 | compatible = "qcom,msm8974-pinctrl"; | ||
63 | reg = <0xfd510000 0x4000>; | ||
64 | |||
65 | gpio-controller; | ||
66 | #gpio-cells = <2>; | ||
67 | interrupt-controller; | ||
68 | #interrupt-cells = <2>; | ||
69 | interrupts = <0 208 0>; | ||
70 | |||
71 | pinctrl-names = "default"; | ||
72 | pinctrl-0 = <&uart2_default>; | ||
73 | |||
74 | uart2_default: uart2_default { | ||
75 | mux { | ||
76 | qcom,pins = "gpio4", "gpio5"; | ||
77 | qcom,function = "blsp_uart2"; | ||
78 | }; | ||
79 | |||
80 | tx { | ||
81 | qcom,pins = "gpio4"; | ||
82 | drive-strength = <4>; | ||
83 | bias-disable; | ||
84 | }; | ||
85 | |||
86 | rx { | ||
87 | qcom,pins = "gpio5"; | ||
88 | drive-strength = <2>; | ||
89 | bias-pull-up; | ||
90 | }; | ||
91 | }; | ||
92 | }; | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt index d5dac7b843a9..35d2e1f186f0 100644 --- a/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt | |||
@@ -26,6 +26,11 @@ Optional properties: | |||
26 | - #gpio-range-cells: Mandatory when the PFC doesn't handle GPIO, forbidden | 26 | - #gpio-range-cells: Mandatory when the PFC doesn't handle GPIO, forbidden |
27 | otherwise. Should be 3. | 27 | otherwise. Should be 3. |
28 | 28 | ||
29 | - interrupts-extended: Specify the interrupts associated with external | ||
30 | IRQ pins. This property is mandatory when the PFC handles GPIOs and | ||
31 | forbidden otherwise. When specified, it must contain one interrupt per | ||
32 | external IRQ, sorted by external IRQ number. | ||
33 | |||
29 | The PFC node also acts as a container for pin configuration nodes. Please refer | 34 | The PFC node also acts as a container for pin configuration nodes. Please refer |
30 | to pinctrl-bindings.txt in this directory for the definition of the term "pin | 35 | to pinctrl-bindings.txt in this directory for the definition of the term "pin |
31 | configuration node" and for the common pinctrl bindings used by client devices. | 36 | configuration node" and for the common pinctrl bindings used by client devices. |
@@ -103,6 +108,15 @@ Example 1: SH73A0 (SH-Mobile AG5) pin controller node | |||
103 | <0xe605801c 0x1c>; | 108 | <0xe605801c 0x1c>; |
104 | gpio-controller; | 109 | gpio-controller; |
105 | #gpio-cells = <2>; | 110 | #gpio-cells = <2>; |
111 | interrupts-extended = | ||
112 | <&irqpin0 0 0>, <&irqpin0 1 0>, <&irqpin0 2 0>, <&irqpin0 3 0>, | ||
113 | <&irqpin0 4 0>, <&irqpin0 5 0>, <&irqpin0 6 0>, <&irqpin0 7 0>, | ||
114 | <&irqpin1 0 0>, <&irqpin1 1 0>, <&irqpin1 2 0>, <&irqpin1 3 0>, | ||
115 | <&irqpin1 4 0>, <&irqpin1 5 0>, <&irqpin1 6 0>, <&irqpin1 7 0>, | ||
116 | <&irqpin2 0 0>, <&irqpin2 1 0>, <&irqpin2 2 0>, <&irqpin2 3 0>, | ||
117 | <&irqpin2 4 0>, <&irqpin2 5 0>, <&irqpin2 6 0>, <&irqpin2 7 0>, | ||
118 | <&irqpin3 0 0>, <&irqpin3 1 0>, <&irqpin3 2 0>, <&irqpin3 3 0>, | ||
119 | <&irqpin3 4 0>, <&irqpin3 5 0>, <&irqpin3 6 0>, <&irqpin3 7 0>; | ||
106 | }; | 120 | }; |
107 | 121 | ||
108 | Example 2: A GPIO LED node that references a GPIO | 122 | Example 2: A GPIO LED node that references a GPIO |
diff --git a/Documentation/devicetree/bindings/power/isp1704.txt b/Documentation/devicetree/bindings/power/isp1704.txt new file mode 100644 index 000000000000..fa3596907967 --- /dev/null +++ b/Documentation/devicetree/bindings/power/isp1704.txt | |||
@@ -0,0 +1,17 @@ | |||
1 | Binding for NXP ISP1704 USB Charger Detection | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should contain one of the following: | ||
5 | * "nxp,isp1704" | ||
6 | - nxp,enable-gpio: Should contain a phandle + gpio-specifier | ||
7 | to the GPIO pin connected to the chip's enable pin. | ||
8 | - usb-phy: Should contain a phandle to the USB PHY | ||
9 | the ISP1704 is connected to. | ||
10 | |||
11 | Example: | ||
12 | |||
13 | isp1704 { | ||
14 | compatible = "nxp,isp1704"; | ||
15 | nxp,enable-gpio = <&gpio3 3 GPIO_ACTIVE_LOW>; | ||
16 | usb-phy = <&usb2_phy>; | ||
17 | }; | ||
diff --git a/Documentation/devicetree/bindings/power_supply/charger-manager.txt b/Documentation/devicetree/bindings/power_supply/charger-manager.txt new file mode 100644 index 000000000000..2b33750e3db2 --- /dev/null +++ b/Documentation/devicetree/bindings/power_supply/charger-manager.txt | |||
@@ -0,0 +1,81 @@ | |||
1 | charger-manager bindings | ||
2 | ~~~~~~~~~~~~~~~~~~~~~~~~ | ||
3 | |||
4 | Required properties : | ||
5 | - compatible : "charger-manager" | ||
6 | - <>-supply : for regulator consumer | ||
7 | - cm-num-chargers : number of chargers | ||
8 | - cm-chargers : name of chargers | ||
9 | - cm-fuel-gauge : name of battery fuel gauge | ||
10 | - subnode <regulator> : | ||
11 | - cm-regulator-name : name of charger regulator | ||
12 | - subnode <cable> : | ||
13 | - cm-cable-name : name of charger cable | ||
14 | - cm-cable-extcon : name of extcon dev | ||
15 | (optional) - cm-cable-min : minimum current of cable | ||
16 | (optional) - cm-cable-max : maximum current of cable | ||
17 | |||
18 | Optional properties : | ||
19 | - cm-name : charger manager's name (default : "battery") | ||
20 | - cm-poll-mode : polling mode (enum polling_modes) | ||
21 | - cm-poll-interval : polling interval | ||
22 | - cm-battery-stat : battery status (enum data_source) | ||
23 | - cm-fullbatt-* : data for full battery checking | ||
24 | - cm-thermal-zone : name of external thermometer's thermal zone | ||
25 | - cm-battery-* : threshold battery temperature for charging | ||
26 | -cold : critical cold temperature of battery for charging | ||
27 | -cold-in-minus : flag that cold temerature is in minus degree | ||
28 | -hot : critical hot temperature of battery for charging | ||
29 | -temp-diff : temperature difference to allow recharging | ||
30 | - cm-dis/charging-max = limits of charging duration | ||
31 | |||
32 | Example : | ||
33 | charger-manager@0 { | ||
34 | compatible = "charger-manager"; | ||
35 | chg-reg-supply = <&charger_regulator>; | ||
36 | |||
37 | cm-name = "battery"; | ||
38 | /* Always polling ON : 30s */ | ||
39 | cm-poll-mode = <1>; | ||
40 | cm-poll-interval = <30000>; | ||
41 | |||
42 | cm-fullbatt-vchkdrop-ms = <30000>; | ||
43 | cm-fullbatt-vchkdrop-volt = <150000>; | ||
44 | cm-fullbatt-soc = <100>; | ||
45 | |||
46 | cm-battery-stat = <3>; | ||
47 | |||
48 | cm-num-chargers = <3>; | ||
49 | cm-chargers = "charger0", "charger1", "charger2"; | ||
50 | |||
51 | cm-fuel-gauge = "fuelgauge0"; | ||
52 | |||
53 | cm-thermal-zone = "thermal_zone.1" | ||
54 | /* in deci centigrade */ | ||
55 | cm-battery-cold = <50>; | ||
56 | cm-battery-cold-in-minus; | ||
57 | cm-battery-hot = <800>; | ||
58 | cm-battery-temp-diff = <100>; | ||
59 | |||
60 | /* Allow charging for 5hr */ | ||
61 | cm-charging-max = <18000000>; | ||
62 | /* Allow discharging for 2hr */ | ||
63 | cm-discharging-max = <7200000>; | ||
64 | |||
65 | regulator@0 { | ||
66 | cm-regulator-name = "chg-reg"; | ||
67 | cable@0 { | ||
68 | cm-cable-name = "USB"; | ||
69 | cm-cable-extcon = "extcon-dev.0"; | ||
70 | cm-cable-min = <475000>; | ||
71 | cm-cable-max = <500000>; | ||
72 | }; | ||
73 | cable@1 { | ||
74 | cm-cable-name = "TA"; | ||
75 | cm-cable-extcon = "extcon-dev.0"; | ||
76 | cm-cable-min = <650000>; | ||
77 | cm-cable-max = <675000>; | ||
78 | }; | ||
79 | }; | ||
80 | |||
81 | }; | ||
diff --git a/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/network.txt b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/network.txt index 0e4269446580..29b28b8f9a89 100644 --- a/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/network.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/network.txt | |||
@@ -10,7 +10,6 @@ Currently defined compatibles: | |||
10 | Example: | 10 | Example: |
11 | 11 | ||
12 | ethernet@11300 { | 12 | ethernet@11300 { |
13 | device_type = "network"; | ||
14 | compatible = "fsl,mpc8272-fcc-enet", | 13 | compatible = "fsl,mpc8272-fcc-enet", |
15 | "fsl,cpm2-fcc-enet"; | 14 | "fsl,cpm2-fcc-enet"; |
16 | reg = <11300 20 8400 100 11390 1>; | 15 | reg = <11300 20 8400 100 11390 1>; |
@@ -33,7 +32,6 @@ fsl,mdc-pin : pin of port C controlling mdio clock | |||
33 | 32 | ||
34 | Example: | 33 | Example: |
35 | mdio@10d40 { | 34 | mdio@10d40 { |
36 | device_type = "mdio"; | ||
37 | compatible = "fsl,mpc8272ads-mdio-bitbang", | 35 | compatible = "fsl,mpc8272ads-mdio-bitbang", |
38 | "fsl,mpc8272-mdio-bitbang", | 36 | "fsl,mpc8272-mdio-bitbang", |
39 | "fsl,cpm2-mdio-bitbang"; | 37 | "fsl,cpm2-mdio-bitbang"; |
diff --git a/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/qe/pincfg.txt b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/qe/pincfg.txt index c5b43061db3a..ec6ee2e864a2 100644 --- a/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/qe/pincfg.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/qe/pincfg.txt | |||
@@ -1,8 +1,6 @@ | |||
1 | * Pin configuration nodes | 1 | * Pin configuration nodes |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - linux,phandle : phandle of this node; likely referenced by a QE | ||
5 | device. | ||
6 | - pio-map : array of pin configurations. Each pin is defined by 6 | 4 | - pio-map : array of pin configurations. Each pin is defined by 6 |
7 | integers. The six numbers are respectively: port, pin, dir, | 5 | integers. The six numbers are respectively: port, pin, dir, |
8 | open_drain, assignment, has_irq. | 6 | open_drain, assignment, has_irq. |
@@ -29,7 +27,6 @@ Required properties: | |||
29 | 27 | ||
30 | Example: | 28 | Example: |
31 | ucc_pin@01 { | 29 | ucc_pin@01 { |
32 | linux,phandle = <140001>; | ||
33 | pio-map = < | 30 | pio-map = < |
34 | /* port pin dir open_drain assignment has_irq */ | 31 | /* port pin dir open_drain assignment has_irq */ |
35 | 0 3 1 0 1 0 /* TxD0 */ | 32 | 0 3 1 0 1 0 /* TxD0 */ |
diff --git a/Documentation/devicetree/bindings/pwm/atmel-pwm.txt b/Documentation/devicetree/bindings/pwm/atmel-pwm.txt new file mode 100644 index 000000000000..02331b904d4e --- /dev/null +++ b/Documentation/devicetree/bindings/pwm/atmel-pwm.txt | |||
@@ -0,0 +1,33 @@ | |||
1 | Atmel PWM controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: should be one of: | ||
5 | - "atmel,at91sam9rl-pwm" | ||
6 | - "atmel,sama5d3-pwm" | ||
7 | - reg: physical base address and length of the controller's registers | ||
8 | - #pwm-cells: Should be 3. See pwm.txt in this directory for a | ||
9 | description of the cells format. | ||
10 | |||
11 | Example: | ||
12 | |||
13 | pwm0: pwm@f8034000 { | ||
14 | compatible = "atmel,at91sam9rl-pwm"; | ||
15 | reg = <0xf8034000 0x400>; | ||
16 | #pwm-cells = <3>; | ||
17 | }; | ||
18 | |||
19 | pwmleds { | ||
20 | compatible = "pwm-leds"; | ||
21 | |||
22 | d1 { | ||
23 | label = "d1"; | ||
24 | pwms = <&pwm0 3 5000 0> | ||
25 | max-brightness = <255>; | ||
26 | }; | ||
27 | |||
28 | d2 { | ||
29 | label = "d2"; | ||
30 | pwms = <&pwm0 1 5000 1> | ||
31 | max-brightness = <255>; | ||
32 | }; | ||
33 | }; | ||
diff --git a/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt b/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt index c3fc57af8772..c7ea9d4a988b 100644 --- a/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt +++ b/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt | |||
@@ -7,6 +7,12 @@ Required properties: | |||
7 | - reg: physical base address and length of the controller's registers | 7 | - reg: physical base address and length of the controller's registers |
8 | - #pwm-cells: should be 2. See pwm.txt in this directory for a description of | 8 | - #pwm-cells: should be 2. See pwm.txt in this directory for a description of |
9 | the cells format. | 9 | the cells format. |
10 | - clocks: Must contain one entry, for the module clock. | ||
11 | See ../clocks/clock-bindings.txt for details. | ||
12 | - resets: Must contain an entry for each entry in reset-names. | ||
13 | See ../reset/reset.txt for details. | ||
14 | - reset-names: Must include the following entries: | ||
15 | - pwm | ||
10 | 16 | ||
11 | Example: | 17 | Example: |
12 | 18 | ||
@@ -14,4 +20,7 @@ Example: | |||
14 | compatible = "nvidia,tegra20-pwm"; | 20 | compatible = "nvidia,tegra20-pwm"; |
15 | reg = <0x7000a000 0x100>; | 21 | reg = <0x7000a000 0x100>; |
16 | #pwm-cells = <2>; | 22 | #pwm-cells = <2>; |
23 | clocks = <&tegra_car 17>; | ||
24 | resets = <&tegra_car 17>; | ||
25 | reset-names = "pwm"; | ||
17 | }; | 26 | }; |
diff --git a/Documentation/devicetree/bindings/pwm/pwm-lp3943.txt b/Documentation/devicetree/bindings/pwm/pwm-lp3943.txt new file mode 100644 index 000000000000..7bd9d3b12ce1 --- /dev/null +++ b/Documentation/devicetree/bindings/pwm/pwm-lp3943.txt | |||
@@ -0,0 +1,58 @@ | |||
1 | TI/National Semiconductor LP3943 PWM controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "ti,lp3943-pwm" | ||
5 | - #pwm-cells: Should be 2. See pwm.txt in this directory for a | ||
6 | description of the cells format. | ||
7 | Note that this hardware limits the period length to the | ||
8 | range 6250~1600000. | ||
9 | - ti,pwm0 or ti,pwm1: Output pin number(s) for PWM channel 0 or 1. | ||
10 | 0 = output 0 | ||
11 | 1 = output 1 | ||
12 | . | ||
13 | . | ||
14 | 15 = output 15 | ||
15 | |||
16 | Example: | ||
17 | PWM 0 is for RGB LED brightness control | ||
18 | PWM 1 is for brightness control of LP8557 backlight device | ||
19 | |||
20 | &i2c3 { | ||
21 | lp3943@60 { | ||
22 | compatible = "ti,lp3943"; | ||
23 | reg = <0x60>; | ||
24 | |||
25 | /* | ||
26 | * PWM 0 : output 8, 9 and 10 | ||
27 | * PWM 1 : output 15 | ||
28 | */ | ||
29 | pwm3943: pwm { | ||
30 | compatible = "ti,lp3943-pwm"; | ||
31 | #pwm-cells = <2>; | ||
32 | ti,pwm0 = <8 9 10>; | ||
33 | ti,pwm1 = <15>; | ||
34 | }; | ||
35 | }; | ||
36 | |||
37 | }; | ||
38 | |||
39 | /* LEDs control with PWM 0 of LP3943 */ | ||
40 | pwmleds { | ||
41 | compatible = "pwm-leds"; | ||
42 | rgb { | ||
43 | label = "indi::rgb"; | ||
44 | pwms = <&pwm3943 0 10000>; | ||
45 | max-brightness = <255>; | ||
46 | }; | ||
47 | }; | ||
48 | |||
49 | &i2c4 { | ||
50 | /* Backlight control with PWM 1 of LP3943 */ | ||
51 | backlight@2c { | ||
52 | compatible = "ti,lp8557"; | ||
53 | reg = <0x2c>; | ||
54 | |||
55 | pwms = <&pwm3943 1 10000>; | ||
56 | pwm-names = "lp8557"; | ||
57 | }; | ||
58 | }; | ||
diff --git a/Documentation/devicetree/bindings/pwm/pxa-pwm.txt b/Documentation/devicetree/bindings/pwm/pxa-pwm.txt new file mode 100644 index 000000000000..5ae9f1e3c338 --- /dev/null +++ b/Documentation/devicetree/bindings/pwm/pxa-pwm.txt | |||
@@ -0,0 +1,30 @@ | |||
1 | Marvell PWM controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: should be one or more of: | ||
5 | - "marvell,pxa250-pwm" | ||
6 | - "marvell,pxa270-pwm" | ||
7 | - "marvell,pxa168-pwm" | ||
8 | - "marvell,pxa910-pwm" | ||
9 | - reg: Physical base address and length of the registers used by the PWM channel | ||
10 | Note that one device instance must be created for each PWM that is used, so the | ||
11 | length covers only the register window for one PWM output, not that of the | ||
12 | entire PWM controller. Currently length is 0x10 for all supported devices. | ||
13 | - #pwm-cells: Should be 1. This cell is used to specify the period in | ||
14 | nanoseconds. | ||
15 | |||
16 | Example PWM device node: | ||
17 | |||
18 | pwm0: pwm@40b00000 { | ||
19 | compatible = "marvell,pxa250-pwm"; | ||
20 | reg = <0x40b00000 0x10>; | ||
21 | #pwm-cells = <1>; | ||
22 | }; | ||
23 | |||
24 | Example PWM client node: | ||
25 | |||
26 | backlight { | ||
27 | compatible = "pwm-backlight"; | ||
28 | pwms = <&pwm0 5000000>; | ||
29 | ... | ||
30 | } | ||
diff --git a/Documentation/devicetree/bindings/regulator/act8865-regulator.txt b/Documentation/devicetree/bindings/regulator/act8865-regulator.txt new file mode 100644 index 000000000000..bef1fbb647ca --- /dev/null +++ b/Documentation/devicetree/bindings/regulator/act8865-regulator.txt | |||
@@ -0,0 +1,60 @@ | |||
1 | ACT8865 regulator | ||
2 | ------------------- | ||
3 | |||
4 | Required properties: | ||
5 | - compatible: "active-semi,act8865" | ||
6 | - reg: I2C slave address | ||
7 | |||
8 | Any standard regulator properties can be used to configure the single regulator. | ||
9 | |||
10 | The valid names for regulators are: | ||
11 | DCDC_REG1, DCDC_REG2, DCDC_REG3, LDO_REG1, LDO_REG2, LDO_REG3, LDO_REG4. | ||
12 | |||
13 | Example: | ||
14 | -------- | ||
15 | |||
16 | i2c1: i2c@f0018000 { | ||
17 | pmic: act8865@5b { | ||
18 | compatible = "active-semi,act8865"; | ||
19 | reg = <0x5b>; | ||
20 | status = "disabled"; | ||
21 | |||
22 | regulators { | ||
23 | vcc_1v8_reg: DCDC_REG1 { | ||
24 | regulator-name = "VCC_1V8"; | ||
25 | regulator-min-microvolt = <1800000>; | ||
26 | regulator-max-microvolt = <1800000>; | ||
27 | regulator-always-on; | ||
28 | }; | ||
29 | |||
30 | vcc_1v2_reg: DCDC_REG2 { | ||
31 | regulator-name = "VCC_1V2"; | ||
32 | regulator-min-microvolt = <1100000>; | ||
33 | regulator-max-microvolt = <1300000>; | ||
34 | regulator-suspend-mem-microvolt = <1150000>; | ||
35 | regulator-suspend-standby-microvolt = <1150000>; | ||
36 | regulator-always-on; | ||
37 | }; | ||
38 | |||
39 | vcc_3v3_reg: DCDC_REG3 { | ||
40 | regulator-name = "VCC_3V3"; | ||
41 | regulator-min-microvolt = <3300000>; | ||
42 | regulator-max-microvolt = <3300000>; | ||
43 | regulator-always-on; | ||
44 | }; | ||
45 | |||
46 | vddana_reg: LDO_REG1 { | ||
47 | regulator-name = "VDDANA"; | ||
48 | regulator-min-microvolt = <3300000>; | ||
49 | regulator-max-microvolt = <3300000>; | ||
50 | regulator-always-on; | ||
51 | }; | ||
52 | |||
53 | vddfuse_reg: LDO_REG2 { | ||
54 | regulator-name = "FUSE_2V5"; | ||
55 | regulator-min-microvolt = <2500000>; | ||
56 | regulator-max-microvolt = <2500000>; | ||
57 | }; | ||
58 | }; | ||
59 | }; | ||
60 | }; | ||
diff --git a/Documentation/devicetree/bindings/regulator/s5m8767-regulator.txt b/Documentation/devicetree/bindings/regulator/s5m8767-regulator.txt index d1660a90fc06..fc6b38f035bd 100644 --- a/Documentation/devicetree/bindings/regulator/s5m8767-regulator.txt +++ b/Documentation/devicetree/bindings/regulator/s5m8767-regulator.txt | |||
@@ -83,7 +83,7 @@ as per the datasheet of s5m8767. | |||
83 | 83 | ||
84 | - LDOn | 84 | - LDOn |
85 | - valid values for n are 1 to 28 | 85 | - valid values for n are 1 to 28 |
86 | - Example: LDO0, LD01, LDO28 | 86 | - Example: LDO1, LD02, LDO28 |
87 | - BUCKn | 87 | - BUCKn |
88 | - valid values for n are 1 to 9. | 88 | - valid values for n are 1 to 9. |
89 | - Example: BUCK1, BUCK2, BUCK9 | 89 | - Example: BUCK1, BUCK2, BUCK9 |
diff --git a/Documentation/devicetree/bindings/rtc/haoyu,hym8563.txt b/Documentation/devicetree/bindings/rtc/haoyu,hym8563.txt new file mode 100644 index 000000000000..31406fd4a43e --- /dev/null +++ b/Documentation/devicetree/bindings/rtc/haoyu,hym8563.txt | |||
@@ -0,0 +1,27 @@ | |||
1 | Haoyu Microelectronics HYM8563 Real Time Clock | ||
2 | |||
3 | The HYM8563 provides basic rtc and alarm functionality | ||
4 | as well as a clock output of up to 32kHz. | ||
5 | |||
6 | Required properties: | ||
7 | - compatible: should be: "haoyu,hym8563" | ||
8 | - reg: i2c address | ||
9 | - interrupts: rtc alarm/event interrupt | ||
10 | - #clock-cells: the value should be 0 | ||
11 | |||
12 | Example: | ||
13 | |||
14 | hym8563: hym8563@51 { | ||
15 | compatible = "haoyu,hym8563"; | ||
16 | reg = <0x51>; | ||
17 | |||
18 | interrupts = <13 IRQ_TYPE_EDGE_FALLING>; | ||
19 | |||
20 | #clock-cells = <0>; | ||
21 | }; | ||
22 | |||
23 | device { | ||
24 | ... | ||
25 | clocks = <&hym8563>; | ||
26 | ... | ||
27 | }; | ||
diff --git a/Documentation/devicetree/bindings/rtc/maxim,ds1742.txt b/Documentation/devicetree/bindings/rtc/maxim,ds1742.txt new file mode 100644 index 000000000000..d0f937c355b5 --- /dev/null +++ b/Documentation/devicetree/bindings/rtc/maxim,ds1742.txt | |||
@@ -0,0 +1,12 @@ | |||
1 | * Maxim (Dallas) DS1742/DS1743 Real Time Clock | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should contain "maxim,ds1742". | ||
5 | - reg: Physical base address of the RTC and length of memory | ||
6 | mapped region. | ||
7 | |||
8 | Example: | ||
9 | rtc: rtc@10000000 { | ||
10 | compatible = "maxim,ds1742"; | ||
11 | reg = <0x10000000 0x800>; | ||
12 | }; | ||
diff --git a/Documentation/devicetree/bindings/rtc/nvidia,tegra20-rtc.txt b/Documentation/devicetree/bindings/rtc/nvidia,tegra20-rtc.txt index 93f45e9dce7c..652d1ff2e8be 100644 --- a/Documentation/devicetree/bindings/rtc/nvidia,tegra20-rtc.txt +++ b/Documentation/devicetree/bindings/rtc/nvidia,tegra20-rtc.txt | |||
@@ -9,6 +9,8 @@ Required properties: | |||
9 | - compatible : should be "nvidia,tegra20-rtc". | 9 | - compatible : should be "nvidia,tegra20-rtc". |
10 | - reg : Specifies base physical address and size of the registers. | 10 | - reg : Specifies base physical address and size of the registers. |
11 | - interrupts : A single interrupt specifier. | 11 | - interrupts : A single interrupt specifier. |
12 | - clocks : Must contain one entry, for the module clock. | ||
13 | See ../clocks/clock-bindings.txt for details. | ||
12 | 14 | ||
13 | Example: | 15 | Example: |
14 | 16 | ||
@@ -16,4 +18,5 @@ timer { | |||
16 | compatible = "nvidia,tegra20-rtc"; | 18 | compatible = "nvidia,tegra20-rtc"; |
17 | reg = <0x7000e000 0x100>; | 19 | reg = <0x7000e000 0x100>; |
18 | interrupts = <0 2 0x04>; | 20 | interrupts = <0 2 0x04>; |
21 | clocks = <&tegra_car 4>; | ||
19 | }; | 22 | }; |
diff --git a/Documentation/devicetree/bindings/rtc/sunxi-rtc.txt b/Documentation/devicetree/bindings/rtc/sunxi-rtc.txt new file mode 100644 index 000000000000..7cb9dbf34878 --- /dev/null +++ b/Documentation/devicetree/bindings/rtc/sunxi-rtc.txt | |||
@@ -0,0 +1,17 @@ | |||
1 | * sun4i/sun7i Real Time Clock | ||
2 | |||
3 | RTC controller for the Allwinner A10/A20 | ||
4 | |||
5 | Required properties: | ||
6 | - compatible : Should be "allwinner,sun4i-rtc" or "allwinner,sun7i-a20-rtc" | ||
7 | - reg: physical base address of the controller and length of memory mapped | ||
8 | region. | ||
9 | - interrupts: IRQ line for the RTC. | ||
10 | |||
11 | Example: | ||
12 | |||
13 | rtc: rtc@01c20d00 { | ||
14 | compatible = "allwinner,sun4i-rtc"; | ||
15 | reg = <0x01c20d00 0x20>; | ||
16 | interrupts = <24>; | ||
17 | }; | ||
diff --git a/Documentation/devicetree/bindings/serial/atmel-usart.txt b/Documentation/devicetree/bindings/serial/atmel-usart.txt index 2191dcb9f1da..9c5d19ac935c 100644 --- a/Documentation/devicetree/bindings/serial/atmel-usart.txt +++ b/Documentation/devicetree/bindings/serial/atmel-usart.txt | |||
@@ -6,6 +6,9 @@ Required properties: | |||
6 | additional mode or an USART new feature. | 6 | additional mode or an USART new feature. |
7 | - reg: Should contain registers location and length | 7 | - reg: Should contain registers location and length |
8 | - interrupts: Should contain interrupt | 8 | - interrupts: Should contain interrupt |
9 | - clock-names: tuple listing input clock names. | ||
10 | Required elements: "usart" | ||
11 | - clocks: phandles to input clocks. | ||
9 | 12 | ||
10 | Optional properties: | 13 | Optional properties: |
11 | - atmel,use-dma-rx: use of PDC or DMA for receiving data | 14 | - atmel,use-dma-rx: use of PDC or DMA for receiving data |
@@ -26,6 +29,8 @@ Example: | |||
26 | compatible = "atmel,at91sam9260-usart"; | 29 | compatible = "atmel,at91sam9260-usart"; |
27 | reg = <0xfff8c000 0x4000>; | 30 | reg = <0xfff8c000 0x4000>; |
28 | interrupts = <7>; | 31 | interrupts = <7>; |
32 | clocks = <&usart0_clk>; | ||
33 | clock-names = "usart"; | ||
29 | atmel,use-dma-rx; | 34 | atmel,use-dma-rx; |
30 | atmel,use-dma-tx; | 35 | atmel,use-dma-tx; |
31 | }; | 36 | }; |
@@ -35,6 +40,8 @@ Example: | |||
35 | compatible = "atmel,at91sam9260-usart"; | 40 | compatible = "atmel,at91sam9260-usart"; |
36 | reg = <0xf001c000 0x100>; | 41 | reg = <0xf001c000 0x100>; |
37 | interrupts = <12 4 5>; | 42 | interrupts = <12 4 5>; |
43 | clocks = <&usart0_clk>; | ||
44 | clock-names = "usart"; | ||
38 | atmel,use-dma-rx; | 45 | atmel,use-dma-rx; |
39 | atmel,use-dma-tx; | 46 | atmel,use-dma-tx; |
40 | dmas = <&dma0 2 0x3>, | 47 | dmas = <&dma0 2 0x3>, |
diff --git a/Documentation/devicetree/bindings/serial/cirrus,clps711x-uart.txt b/Documentation/devicetree/bindings/serial/cirrus,clps711x-uart.txt new file mode 100644 index 000000000000..12f3cf834deb --- /dev/null +++ b/Documentation/devicetree/bindings/serial/cirrus,clps711x-uart.txt | |||
@@ -0,0 +1,28 @@ | |||
1 | * Cirrus Logic CLPS711X Universal Asynchronous Receiver/Transmitter (UART) | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be "cirrus,clps711x-uart". | ||
5 | - reg: Address and length of the register set for the device. | ||
6 | - interrupts: Should contain UART TX and RX interrupt. | ||
7 | - clocks: Should contain UART core clock number. | ||
8 | - syscon: Phandle to SYSCON node, which contain UART control bits. | ||
9 | |||
10 | Optional properties: | ||
11 | - uart-use-ms: Indicate the UART has modem signal (DCD, DSR, CTS). | ||
12 | |||
13 | Note: Each UART port should have an alias correctly numbered | ||
14 | in "aliases" node. | ||
15 | |||
16 | Example: | ||
17 | aliases { | ||
18 | serial0 = &uart1; | ||
19 | }; | ||
20 | |||
21 | uart1: uart@80000480 { | ||
22 | compatible = "cirrus,clps711x-uart"; | ||
23 | reg = <0x80000480 0x80>; | ||
24 | interrupts = <12 13>; | ||
25 | clocks = <&clks 11>; | ||
26 | syscon = <&syscon1>; | ||
27 | uart-use-ms; | ||
28 | }; | ||
diff --git a/Documentation/devicetree/bindings/serial/nvidia,tegra20-hsuart.txt b/Documentation/devicetree/bindings/serial/nvidia,tegra20-hsuart.txt index 392a4493eebd..845850caf088 100644 --- a/Documentation/devicetree/bindings/serial/nvidia,tegra20-hsuart.txt +++ b/Documentation/devicetree/bindings/serial/nvidia,tegra20-hsuart.txt | |||
@@ -4,8 +4,17 @@ Required properties: | |||
4 | - compatible : should be "nvidia,tegra30-hsuart", "nvidia,tegra20-hsuart". | 4 | - compatible : should be "nvidia,tegra30-hsuart", "nvidia,tegra20-hsuart". |
5 | - reg: Should contain UART controller registers location and length. | 5 | - reg: Should contain UART controller registers location and length. |
6 | - interrupts: Should contain UART controller interrupts. | 6 | - interrupts: Should contain UART controller interrupts. |
7 | - nvidia,dma-request-selector : The Tegra DMA controller's phandle and | 7 | - clocks: Must contain one entry, for the module clock. |
8 | request selector for this UART controller. | 8 | See ../clocks/clock-bindings.txt for details. |
9 | - resets : Must contain an entry for each entry in reset-names. | ||
10 | See ../reset/reset.txt for details. | ||
11 | - reset-names : Must include the following entries: | ||
12 | - serial | ||
13 | - dmas : Must contain an entry for each entry in clock-names. | ||
14 | See ../dma/dma.txt for details. | ||
15 | - dma-names : Must include the following entries: | ||
16 | - rx | ||
17 | - tx | ||
9 | 18 | ||
10 | Optional properties: | 19 | Optional properties: |
11 | - nvidia,enable-modem-interrupt: Enable modem interrupts. Should be enable | 20 | - nvidia,enable-modem-interrupt: Enable modem interrupts. Should be enable |
@@ -18,7 +27,11 @@ serial@70006000 { | |||
18 | reg = <0x70006000 0x40>; | 27 | reg = <0x70006000 0x40>; |
19 | reg-shift = <2>; | 28 | reg-shift = <2>; |
20 | interrupts = <0 36 0x04>; | 29 | interrupts = <0 36 0x04>; |
21 | nvidia,dma-request-selector = <&apbdma 8>; | ||
22 | nvidia,enable-modem-interrupt; | 30 | nvidia,enable-modem-interrupt; |
31 | clocks = <&tegra_car 6>; | ||
32 | resets = <&tegra_car 6>; | ||
33 | reset-names = "serial"; | ||
34 | dmas = <&apbdma 8>, <&apbdma 8>; | ||
35 | dma-names = "rx", "tx"; | ||
23 | status = "disabled"; | 36 | status = "disabled"; |
24 | }; | 37 | }; |
diff --git a/Documentation/devicetree/bindings/serial/renesas,sci-serial.txt b/Documentation/devicetree/bindings/serial/renesas,sci-serial.txt new file mode 100644 index 000000000000..f372cf29068d --- /dev/null +++ b/Documentation/devicetree/bindings/serial/renesas,sci-serial.txt | |||
@@ -0,0 +1,46 @@ | |||
1 | * Renesas SH-Mobile Serial Communication Interface | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible: Must contain one of the following: | ||
6 | |||
7 | - "renesas,scif-r8a7790" for R8A7790 (R-Car H2) SCIF compatible UART. | ||
8 | - "renesas,scifa-r8a7790" for R8A7790 (R-Car H2) SCIFA compatible UART. | ||
9 | - "renesas,scifb-r8a7790" for R8A7790 (R-Car H2) SCIFB compatible UART. | ||
10 | - "renesas,hscif-r8a7790" for R8A7790 (R-Car H2) HSCIF compatible UART. | ||
11 | - "renesas,scif-r8a7791" for R8A7791 (R-Car M2) SCIF compatible UART. | ||
12 | - "renesas,scifa-r8a7791" for R8A7791 (R-Car M2) SCIFA compatible UART. | ||
13 | - "renesas,scifb-r8a7791" for R8A7791 (R-Car M2) SCIFB compatible UART. | ||
14 | - "renesas,hscif-r8a7791" for R8A7791 (R-Car M2) HSCIF compatible UART. | ||
15 | - "renesas,scif" for generic SCIF compatible UART. | ||
16 | - "renesas,scifa" for generic SCIFA compatible UART. | ||
17 | - "renesas,scifb" for generic SCIFB compatible UART. | ||
18 | - "renesas,hscif" for generic HSCIF compatible UART. | ||
19 | |||
20 | When compatible with the generic version, nodes must list the | ||
21 | SoC-specific version corresponding to the platform first followed by the | ||
22 | generic version. | ||
23 | |||
24 | - reg: Base address and length of the I/O registers used by the UART. | ||
25 | - interrupts: Must contain an interrupt-specifier for the SCIx interrupt. | ||
26 | |||
27 | - clocks: Must contain a phandle and clock-specifier pair for each entry | ||
28 | in clock-names. | ||
29 | - clock-names: Must contain "sci_ick" for the SCIx UART interface clock. | ||
30 | |||
31 | Note: Each enabled SCIx UART should have an alias correctly numbered in the | ||
32 | "aliases" node. | ||
33 | |||
34 | Example: | ||
35 | aliases { | ||
36 | serial0 = &scifa0; | ||
37 | }; | ||
38 | |||
39 | scifa0: serial@e6c40000 { | ||
40 | compatible = "renesas,scifa-r8a7790", "renesas,scifa-generic"; | ||
41 | reg = <0 0xe6c40000 0 64>; | ||
42 | interrupt-parent = <&gic>; | ||
43 | interrupts = <0 144 IRQ_TYPE_LEVEL_HIGH>; | ||
44 | clocks = <&mstp2_clks R8A7790_CLK_SCIFA0>; | ||
45 | clock-names = "sci_ick"; | ||
46 | }; | ||
diff --git a/Documentation/devicetree/bindings/serial/vt8500-uart.txt b/Documentation/devicetree/bindings/serial/vt8500-uart.txt new file mode 100644 index 000000000000..795c393d09c4 --- /dev/null +++ b/Documentation/devicetree/bindings/serial/vt8500-uart.txt | |||
@@ -0,0 +1,26 @@ | |||
1 | * VIA VT8500 and WonderMedia WM8xxx UART Controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: should be "via,vt8500-uart" | ||
5 | |||
6 | - reg: base physical address of the controller and length of memory mapped | ||
7 | region. | ||
8 | |||
9 | - interrupts: hardware interrupt number | ||
10 | |||
11 | - clocks: shall be the input parent clock phandle for the clock. This should | ||
12 | be the 24Mhz reference clock. | ||
13 | |||
14 | Aliases may be defined to ensure the correct ordering of the uarts. | ||
15 | |||
16 | Example: | ||
17 | aliases { | ||
18 | serial0 = &uart0; | ||
19 | }; | ||
20 | |||
21 | uart0: serial@d8200000 { | ||
22 | compatible = "via,vt8500-uart"; | ||
23 | reg = <0xd8200000 0x1040>; | ||
24 | interrupts = <32>; | ||
25 | clocks = <&clkuart0>; | ||
26 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/adi,axi-i2s.txt b/Documentation/devicetree/bindings/sound/adi,axi-i2s.txt new file mode 100644 index 000000000000..5875ca459ed1 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/adi,axi-i2s.txt | |||
@@ -0,0 +1,31 @@ | |||
1 | ADI AXI-I2S controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : Must be "adi,axi-i2s-1.00.a" | ||
5 | - reg : Must contain I2S core's registers location and length | ||
6 | - clocks : Pairs of phandle and specifier referencing the controller's clocks. | ||
7 | The controller expects two clocks, the clock used for the AXI interface and | ||
8 | the clock used as the sampling rate reference clock sample. | ||
9 | - clock-names : "axi" for the clock to the AXI interface, "ref" for the sample | ||
10 | rate reference clock. | ||
11 | - dmas: Pairs of phandle and specifier for the DMA channels that are used by | ||
12 | the core. The core expects two dma channels, one for transmit and one for | ||
13 | receive. | ||
14 | - dma-names : "tx" for the transmit channel, "rx" for the receive channel. | ||
15 | |||
16 | For more details on the 'dma', 'dma-names', 'clock' and 'clock-names' properties | ||
17 | please check: | ||
18 | * resource-names.txt | ||
19 | * clock/clock-bindings.txt | ||
20 | * dma/dma.txt | ||
21 | |||
22 | Example: | ||
23 | |||
24 | i2s: i2s@0x77600000 { | ||
25 | compatible = "adi,axi-i2s-1.00.a"; | ||
26 | reg = <0x77600000 0x1000>; | ||
27 | clocks = <&clk 15>, <&audio_clock>; | ||
28 | clock-names = "axi", "ref"; | ||
29 | dmas = <&ps7_dma 0>, <&ps7_dma 1>; | ||
30 | dma-names = "tx", "rx"; | ||
31 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/adi,axi-spdif-tx.txt b/Documentation/devicetree/bindings/sound/adi,axi-spdif-tx.txt new file mode 100644 index 000000000000..46f344965313 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/adi,axi-spdif-tx.txt | |||
@@ -0,0 +1,30 @@ | |||
1 | ADI AXI-SPDIF controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : Must be "adi,axi-spdif-1.00.a" | ||
5 | - reg : Must contain SPDIF core's registers location and length | ||
6 | - clocks : Pairs of phandle and specifier referencing the controller's clocks. | ||
7 | The controller expects two clocks, the clock used for the AXI interface and | ||
8 | the clock used as the sampling rate reference clock sample. | ||
9 | - clock-names: "axi" for the clock to the AXI interface, "ref" for the sample | ||
10 | rate reference clock. | ||
11 | - dmas: Pairs of phandle and specifier for the DMA channel that is used by | ||
12 | the core. The core expects one dma channel for transmit. | ||
13 | - dma-names : Must be "tx" | ||
14 | |||
15 | For more details on the 'dma', 'dma-names', 'clock' and 'clock-names' properties | ||
16 | please check: | ||
17 | * resource-names.txt | ||
18 | * clock/clock-bindings.txt | ||
19 | * dma/dma.txt | ||
20 | |||
21 | Example: | ||
22 | |||
23 | spdif: spdif@0x77400000 { | ||
24 | compatible = "adi,axi-spdif-tx-1.00.a"; | ||
25 | reg = <0x77600000 0x1000>; | ||
26 | clocks = <&clk 15>, <&audio_clock>; | ||
27 | clock-names = "axi", "ref"; | ||
28 | dmas = <&ps7_dma 0>; | ||
29 | dma-names = "tx"; | ||
30 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/bcm2835-i2s.txt b/Documentation/devicetree/bindings/sound/bcm2835-i2s.txt new file mode 100644 index 000000000000..65783de0aedf --- /dev/null +++ b/Documentation/devicetree/bindings/sound/bcm2835-i2s.txt | |||
@@ -0,0 +1,25 @@ | |||
1 | * Broadcom BCM2835 SoC I2S/PCM module | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "brcm,bcm2835-i2s" | ||
5 | - reg: A list of base address and size entries: | ||
6 | * The first entry should cover the PCM registers | ||
7 | * The second entry should cover the PCM clock registers | ||
8 | - dmas: List of DMA controller phandle and DMA request line ordered pairs. | ||
9 | - dma-names: Identifier string for each DMA request line in the dmas property. | ||
10 | These strings correspond 1:1 with the ordered pairs in dmas. | ||
11 | |||
12 | One of the DMA channels will be responsible for transmission (should be | ||
13 | named "tx") and one for reception (should be named "rx"). | ||
14 | |||
15 | Example: | ||
16 | |||
17 | bcm2835_i2s: i2s@7e203000 { | ||
18 | compatible = "brcm,bcm2835-i2s"; | ||
19 | reg = <0x7e203000 0x20>, | ||
20 | <0x7e101098 0x02>; | ||
21 | |||
22 | dmas = <&dma 2>, | ||
23 | <&dma 3>; | ||
24 | dma-names = "tx", "rx"; | ||
25 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/cs42l52.txt b/Documentation/devicetree/bindings/sound/cs42l52.txt new file mode 100644 index 000000000000..bc03c9312a19 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/cs42l52.txt | |||
@@ -0,0 +1,46 @@ | |||
1 | CS42L52 audio CODEC | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible : "cirrus,cs42l52" | ||
6 | |||
7 | - reg : the I2C address of the device for I2C | ||
8 | |||
9 | Optional properties: | ||
10 | |||
11 | - cirrus,reset-gpio : GPIO controller's phandle and the number | ||
12 | of the GPIO used to reset the codec. | ||
13 | |||
14 | - cirrus,chgfreq-divisor : Values used to set the Charge Pump Frequency. | ||
15 | Allowable values of 0x00 through 0x0F. These are raw values written to the | ||
16 | register, not the actual frequency. The frequency is determined by the following. | ||
17 | Frequency = (64xFs)/(N+2) | ||
18 | N = chgfreq_val | ||
19 | Fs = Sample Rate (variable) | ||
20 | |||
21 | - cirrus,mica-differential-cfg : boolean, If present, then the MICA input is configured | ||
22 | as a differential input. If not present then the MICA input is configured as | ||
23 | Single-ended input. Single-ended mode allows for MIC1 or MIC2 muxing for input. | ||
24 | |||
25 | - cirrus,micb-differential-cfg : boolean, If present, then the MICB input is configured | ||
26 | as a differential input. If not present then the MICB input is configured as | ||
27 | Single-ended input. Single-ended mode allows for MIC1 or MIC2 muxing for input. | ||
28 | |||
29 | - cirrus,micbias-lvl: Set the output voltage level on the MICBIAS Pin | ||
30 | 0 = 0.5 x VA | ||
31 | 1 = 0.6 x VA | ||
32 | 2 = 0.7 x VA | ||
33 | 3 = 0.8 x VA | ||
34 | 4 = 0.83 x VA | ||
35 | 5 = 0.91 x VA | ||
36 | |||
37 | Example: | ||
38 | |||
39 | codec: codec@4a { | ||
40 | compatible = "cirrus,cs42l52"; | ||
41 | reg = <0x4a>; | ||
42 | reset-gpio = <&gpio 10 0>; | ||
43 | cirrus,chgfreq-divisor = <0x05>; | ||
44 | cirrus.mica-differential-cfg; | ||
45 | cirrus,micbias-lvl = <5>; | ||
46 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt b/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt index ed785b3f67be..569b26c4a81e 100644 --- a/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt +++ b/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt | |||
@@ -4,7 +4,8 @@ Required properties: | |||
4 | - compatible : | 4 | - compatible : |
5 | "ti,dm646x-mcasp-audio" : for DM646x platforms | 5 | "ti,dm646x-mcasp-audio" : for DM646x platforms |
6 | "ti,da830-mcasp-audio" : for both DA830 & DA850 platforms | 6 | "ti,da830-mcasp-audio" : for both DA830 & DA850 platforms |
7 | "ti,am33xx-mcasp-audio" : for AM33xx platforms (AM33xx, TI81xx) | 7 | "ti,am33xx-mcasp-audio" : for AM33xx platforms (AM33xx, AM43xx, TI81xx) |
8 | "ti,dra7-mcasp-audio" : for DRA7xx platforms | ||
8 | 9 | ||
9 | - reg : Should contain reg specifiers for the entries in the reg-names property. | 10 | - reg : Should contain reg specifiers for the entries in the reg-names property. |
10 | - reg-names : Should contain: | 11 | - reg-names : Should contain: |
@@ -36,7 +37,8 @@ Optional properties: | |||
36 | - pinctrl-0: Should specify pin control group used for this controller. | 37 | - pinctrl-0: Should specify pin control group used for this controller. |
37 | - pinctrl-names: Should contain only one value - "default", for more details | 38 | - pinctrl-names: Should contain only one value - "default", for more details |
38 | please refer to pinctrl-bindings.txt | 39 | please refer to pinctrl-bindings.txt |
39 | 40 | - fck_parent : Should contain a valid clock name which will be used as parent | |
41 | for the McASP fck | ||
40 | 42 | ||
41 | Example: | 43 | Example: |
42 | 44 | ||
diff --git a/Documentation/devicetree/bindings/sound/fsl,esai.txt b/Documentation/devicetree/bindings/sound/fsl,esai.txt new file mode 100644 index 000000000000..d7b99fa637b5 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/fsl,esai.txt | |||
@@ -0,0 +1,50 @@ | |||
1 | Freescale Enhanced Serial Audio Interface (ESAI) Controller | ||
2 | |||
3 | The Enhanced Serial Audio Interface (ESAI) provides a full-duplex serial port | ||
4 | for serial communication with a variety of serial devices, including industry | ||
5 | standard codecs, Sony/Phillips Digital Interface (S/PDIF) transceivers, and | ||
6 | other DSPs. It has up to six transmitters and four receivers. | ||
7 | |||
8 | Required properties: | ||
9 | |||
10 | - compatible : Compatible list, must contain "fsl,imx35-esai". | ||
11 | |||
12 | - reg : Offset and length of the register set for the device. | ||
13 | |||
14 | - interrupts : Contains the spdif interrupt. | ||
15 | |||
16 | - dmas : Generic dma devicetree binding as described in | ||
17 | Documentation/devicetree/bindings/dma/dma.txt. | ||
18 | |||
19 | - dma-names : Two dmas have to be defined, "tx" and "rx". | ||
20 | |||
21 | - clocks: Contains an entry for each entry in clock-names. | ||
22 | |||
23 | - clock-names : Includes the following entries: | ||
24 | "core" The core clock used to access registers | ||
25 | "extal" The esai baud clock for esai controller used to derive | ||
26 | HCK, SCK and FS. | ||
27 | "fsys" The system clock derived from ahb clock used to derive | ||
28 | HCK, SCK and FS. | ||
29 | |||
30 | - fsl,fifo-depth: The number of elements in the transmit and receive FIFOs. | ||
31 | This number is the maximum allowed value for TFCR[TFWM] or RFCR[RFWM]. | ||
32 | |||
33 | - fsl,esai-synchronous: This is a boolean property. If present, indicating | ||
34 | that ESAI would work in the synchronous mode, which means all the settings | ||
35 | for Receiving would be duplicated from Transmition related registers. | ||
36 | |||
37 | Example: | ||
38 | |||
39 | esai: esai@02024000 { | ||
40 | compatible = "fsl,imx35-esai"; | ||
41 | reg = <0x02024000 0x4000>; | ||
42 | interrupts = <0 51 0x04>; | ||
43 | clocks = <&clks 208>, <&clks 118>, <&clks 208>; | ||
44 | clock-names = "core", "extal", "fsys"; | ||
45 | dmas = <&sdma 23 21 0>, <&sdma 24 21 0>; | ||
46 | dma-names = "rx", "tx"; | ||
47 | fsl,fifo-depth = <128>; | ||
48 | fsl,esai-synchronous; | ||
49 | status = "disabled"; | ||
50 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/fsl,ssi.txt b/Documentation/devicetree/bindings/sound/fsl,ssi.txt index 4303b6ab6208..b93e9a91e30e 100644 --- a/Documentation/devicetree/bindings/sound/fsl,ssi.txt +++ b/Documentation/devicetree/bindings/sound/fsl,ssi.txt | |||
@@ -4,7 +4,12 @@ The SSI is a serial device that communicates with audio codecs. It can | |||
4 | be programmed in AC97, I2S, left-justified, or right-justified modes. | 4 | be programmed in AC97, I2S, left-justified, or right-justified modes. |
5 | 5 | ||
6 | Required properties: | 6 | Required properties: |
7 | - compatible: Compatible list, contains "fsl,ssi". | 7 | - compatible: Compatible list, should contain one of the following |
8 | compatibles: | ||
9 | fsl,mpc8610-ssi | ||
10 | fsl,imx51-ssi | ||
11 | fsl,imx35-ssi | ||
12 | fsl,imx21-ssi | ||
8 | - cell-index: The SSI, <0> = SSI1, <1> = SSI2, and so on. | 13 | - cell-index: The SSI, <0> = SSI1, <1> = SSI2, and so on. |
9 | - reg: Offset and length of the register set for the device. | 14 | - reg: Offset and length of the register set for the device. |
10 | - interrupts: <a b> where a is the interrupt number and b is a | 15 | - interrupts: <a b> where a is the interrupt number and b is a |
diff --git a/Documentation/devicetree/bindings/sound/fsl-sai.txt b/Documentation/devicetree/bindings/sound/fsl-sai.txt new file mode 100644 index 000000000000..98611a6761c0 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/fsl-sai.txt | |||
@@ -0,0 +1,40 @@ | |||
1 | Freescale Synchronous Audio Interface (SAI). | ||
2 | |||
3 | The SAI is based on I2S module that used communicating with audio codecs, | ||
4 | which provides a synchronous audio interface that supports fullduplex | ||
5 | serial interfaces with frame synchronization such as I2S, AC97, TDM, and | ||
6 | codec/DSP interfaces. | ||
7 | |||
8 | |||
9 | Required properties: | ||
10 | - compatible: Compatible list, contains "fsl,vf610-sai". | ||
11 | - reg: Offset and length of the register set for the device. | ||
12 | - clocks: Must contain an entry for each entry in clock-names. | ||
13 | - clock-names : Must include the "sai" entry. | ||
14 | - dmas : Generic dma devicetree binding as described in | ||
15 | Documentation/devicetree/bindings/dma/dma.txt. | ||
16 | - dma-names : Two dmas have to be defined, "tx" and "rx". | ||
17 | - pinctrl-names: Must contain a "default" entry. | ||
18 | - pinctrl-NNN: One property must exist for each entry in pinctrl-names. | ||
19 | See ../pinctrl/pinctrl-bindings.txt for details of the property values. | ||
20 | - big-endian-regs: If this property is absent, the little endian mode will | ||
21 | be in use as default, or the big endian mode will be in use for all the | ||
22 | device registers. | ||
23 | - big-endian-data: If this property is absent, the little endian mode will | ||
24 | be in use as default, or the big endian mode will be in use for all the | ||
25 | fifo data. | ||
26 | |||
27 | Example: | ||
28 | sai2: sai@40031000 { | ||
29 | compatible = "fsl,vf610-sai"; | ||
30 | reg = <0x40031000 0x1000>; | ||
31 | pinctrl-names = "default"; | ||
32 | pinctrl-0 = <&pinctrl_sai2_1>; | ||
33 | clocks = <&clks VF610_CLK_SAI2>; | ||
34 | clock-names = "sai"; | ||
35 | dma-names = "tx", "rx"; | ||
36 | dmas = <&edma0 0 VF610_EDMA_MUXID0_SAI2_TX>, | ||
37 | <&edma0 0 VF610_EDMA_MUXID0_SAI2_RX>; | ||
38 | big-endian-regs; | ||
39 | big-endian-data; | ||
40 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/hdmi.txt b/Documentation/devicetree/bindings/sound/hdmi.txt new file mode 100644 index 000000000000..31af7bca3099 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/hdmi.txt | |||
@@ -0,0 +1,17 @@ | |||
1 | Device-Tree bindings for dummy HDMI codec | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: should be "linux,hdmi-audio". | ||
5 | |||
6 | CODEC output pins: | ||
7 | * TX | ||
8 | |||
9 | CODEC input pins: | ||
10 | * RX | ||
11 | |||
12 | Example node: | ||
13 | |||
14 | hdmi_audio: hdmi_audio@0 { | ||
15 | compatible = "linux,hdmi-audio"; | ||
16 | status = "okay"; | ||
17 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/max98090.txt b/Documentation/devicetree/bindings/sound/max98090.txt new file mode 100644 index 000000000000..e4c8b36dcf89 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/max98090.txt | |||
@@ -0,0 +1,43 @@ | |||
1 | MAX98090 audio CODEC | ||
2 | |||
3 | This device supports I2C only. | ||
4 | |||
5 | Required properties: | ||
6 | |||
7 | - compatible : "maxim,max98090". | ||
8 | |||
9 | - reg : The I2C address of the device. | ||
10 | |||
11 | - interrupts : The CODEC's interrupt output. | ||
12 | |||
13 | Pins on the device (for linking into audio routes): | ||
14 | |||
15 | * MIC1 | ||
16 | * MIC2 | ||
17 | * DMICL | ||
18 | * DMICR | ||
19 | * IN1 | ||
20 | * IN2 | ||
21 | * IN3 | ||
22 | * IN4 | ||
23 | * IN5 | ||
24 | * IN6 | ||
25 | * IN12 | ||
26 | * IN34 | ||
27 | * IN56 | ||
28 | * HPL | ||
29 | * HPR | ||
30 | * SPKL | ||
31 | * SPKR | ||
32 | * RCVL | ||
33 | * RCVR | ||
34 | * MICBIAS | ||
35 | |||
36 | Example: | ||
37 | |||
38 | audio-codec@10 { | ||
39 | compatible = "maxim,max98090"; | ||
40 | reg = <0x10>; | ||
41 | interrupt-parent = <&gpio>; | ||
42 | interrupts = <TEGRA_GPIO(H, 4) GPIO_ACTIVE_HIGH>; | ||
43 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt index 8b8903ef0800..57f40f93453e 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt | |||
@@ -3,10 +3,11 @@ NVIDIA Tegra audio complex | |||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : "nvidia,tegra-audio-alc5632" | 4 | - compatible : "nvidia,tegra-audio-alc5632" |
5 | - clocks : Must contain an entry for each entry in clock-names. | 5 | - clocks : Must contain an entry for each entry in clock-names. |
6 | See ../clocks/clock-bindings.txt for details. | ||
6 | - clock-names : Must include the following entries: | 7 | - clock-names : Must include the following entries: |
7 | "pll_a" (The Tegra clock of that name), | 8 | - pll_a |
8 | "pll_a_out0" (The Tegra clock of that name), | 9 | - pll_a_out0 |
9 | "mclk" (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) | 10 | - mclk (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) |
10 | - nvidia,model : The user-visible name of this sound complex. | 11 | - nvidia,model : The user-visible name of this sound complex. |
11 | - nvidia,audio-routing : A list of the connections between audio components. | 12 | - nvidia,audio-routing : A list of the connections between audio components. |
12 | Each entry is a pair of strings, the first being the connection's sink, | 13 | Each entry is a pair of strings, the first being the connection's sink, |
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-max98090.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-max98090.txt new file mode 100644 index 000000000000..9c7c55c71370 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-max98090.txt | |||
@@ -0,0 +1,51 @@ | |||
1 | NVIDIA Tegra audio complex, with MAX98090 CODEC | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "nvidia,tegra-audio-max98090" | ||
5 | - clocks : Must contain an entry for each entry in clock-names. | ||
6 | See ../clocks/clock-bindings.txt for details. | ||
7 | - clock-names : Must include the following entries: | ||
8 | - pll_a | ||
9 | - pll_a_out0 | ||
10 | - mclk (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) | ||
11 | - nvidia,model : The user-visible name of this sound complex. | ||
12 | - nvidia,audio-routing : A list of the connections between audio components. | ||
13 | Each entry is a pair of strings, the first being the connection's sink, | ||
14 | the second being the connection's source. Valid names for sources and | ||
15 | sinks are the MAX98090's pins (as documented in its binding), and the jacks | ||
16 | on the board: | ||
17 | |||
18 | * Headphones | ||
19 | * Speakers | ||
20 | * Mic Jack | ||
21 | |||
22 | - nvidia,i2s-controller : The phandle of the Tegra I2S controller that's | ||
23 | connected to the CODEC. | ||
24 | - nvidia,audio-codec : The phandle of the MAX98090 audio codec. | ||
25 | |||
26 | Optional properties: | ||
27 | - nvidia,hp-det-gpios : The GPIO that detect headphones are plugged in | ||
28 | |||
29 | Example: | ||
30 | |||
31 | sound { | ||
32 | compatible = "nvidia,tegra-audio-max98090-venice2", | ||
33 | "nvidia,tegra-audio-max98090"; | ||
34 | nvidia,model = "NVIDIA Tegra Venice2"; | ||
35 | |||
36 | nvidia,audio-routing = | ||
37 | "Headphones", "HPR", | ||
38 | "Headphones", "HPL", | ||
39 | "Speakers", "SPKR", | ||
40 | "Speakers", "SPKL", | ||
41 | "Mic Jack", "MICBIAS", | ||
42 | "IN34", "Mic Jack"; | ||
43 | |||
44 | nvidia,i2s-controller = <&tegra_i2s1>; | ||
45 | nvidia,audio-codec = <&acodec>; | ||
46 | |||
47 | clocks = <&tegra_car TEGRA124_CLK_PLL_A>, | ||
48 | <&tegra_car TEGRA124_CLK_PLL_A_OUT0>, | ||
49 | <&tegra_car TEGRA124_CLK_EXTERN1>; | ||
50 | clock-names = "pll_a", "pll_a_out0", "mclk"; | ||
51 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5640.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5640.txt index dc6224994d69..7788808dcd0b 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5640.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5640.txt | |||
@@ -3,10 +3,11 @@ NVIDIA Tegra audio complex, with RT5640 CODEC | |||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : "nvidia,tegra-audio-rt5640" | 4 | - compatible : "nvidia,tegra-audio-rt5640" |
5 | - clocks : Must contain an entry for each entry in clock-names. | 5 | - clocks : Must contain an entry for each entry in clock-names. |
6 | See ../clocks/clock-bindings.txt for details. | ||
6 | - clock-names : Must include the following entries: | 7 | - clock-names : Must include the following entries: |
7 | "pll_a" (The Tegra clock of that name), | 8 | - pll_a |
8 | "pll_a_out0" (The Tegra clock of that name), | 9 | - pll_a_out0 |
9 | "mclk" (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) | 10 | - mclk (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) |
10 | - nvidia,model : The user-visible name of this sound complex. | 11 | - nvidia,model : The user-visible name of this sound complex. |
11 | - nvidia,audio-routing : A list of the connections between audio components. | 12 | - nvidia,audio-routing : A list of the connections between audio components. |
12 | Each entry is a pair of strings, the first being the connection's sink, | 13 | Each entry is a pair of strings, the first being the connection's sink, |
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt index aab6ce0ad2fc..96f6a57dd6b4 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt | |||
@@ -3,10 +3,11 @@ NVIDIA Tegra audio complex | |||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : "nvidia,tegra-audio-wm8753" | 4 | - compatible : "nvidia,tegra-audio-wm8753" |
5 | - clocks : Must contain an entry for each entry in clock-names. | 5 | - clocks : Must contain an entry for each entry in clock-names. |
6 | See ../clocks/clock-bindings.txt for details. | ||
6 | - clock-names : Must include the following entries: | 7 | - clock-names : Must include the following entries: |
7 | "pll_a" (The Tegra clock of that name), | 8 | - pll_a |
8 | "pll_a_out0" (The Tegra clock of that name), | 9 | - pll_a_out0 |
9 | "mclk" (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) | 10 | - mclk (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) |
10 | - nvidia,model : The user-visible name of this sound complex. | 11 | - nvidia,model : The user-visible name of this sound complex. |
11 | - nvidia,audio-routing : A list of the connections between audio components. | 12 | - nvidia,audio-routing : A list of the connections between audio components. |
12 | Each entry is a pair of strings, the first being the connection's sink, | 13 | Each entry is a pair of strings, the first being the connection's sink, |
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt index 4b44dfb6ca0d..b795d282818d 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt | |||
@@ -3,10 +3,11 @@ NVIDIA Tegra audio complex | |||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : "nvidia,tegra-audio-wm8903" | 4 | - compatible : "nvidia,tegra-audio-wm8903" |
5 | - clocks : Must contain an entry for each entry in clock-names. | 5 | - clocks : Must contain an entry for each entry in clock-names. |
6 | See ../clocks/clock-bindings.txt for details. | ||
6 | - clock-names : Must include the following entries: | 7 | - clock-names : Must include the following entries: |
7 | "pll_a" (The Tegra clock of that name), | 8 | - pll_a |
8 | "pll_a_out0" (The Tegra clock of that name), | 9 | - pll_a_out0 |
9 | "mclk" (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) | 10 | - mclk (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) |
10 | - nvidia,model : The user-visible name of this sound complex. | 11 | - nvidia,model : The user-visible name of this sound complex. |
11 | - nvidia,audio-routing : A list of the connections between audio components. | 12 | - nvidia,audio-routing : A list of the connections between audio components. |
12 | Each entry is a pair of strings, the first being the connection's sink, | 13 | Each entry is a pair of strings, the first being the connection's sink, |
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm9712.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm9712.txt index ad589b163639..436f6cd9d07c 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm9712.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm9712.txt | |||
@@ -3,10 +3,11 @@ NVIDIA Tegra audio complex | |||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : "nvidia,tegra-audio-wm9712" | 4 | - compatible : "nvidia,tegra-audio-wm9712" |
5 | - clocks : Must contain an entry for each entry in clock-names. | 5 | - clocks : Must contain an entry for each entry in clock-names. |
6 | See ../clocks/clock-bindings.txt for details. | ||
6 | - clock-names : Must include the following entries: | 7 | - clock-names : Must include the following entries: |
7 | "pll_a" (The Tegra clock of that name), | 8 | - pll_a |
8 | "pll_a_out0" (The Tegra clock of that name), | 9 | - pll_a_out0 |
9 | "mclk" (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) | 10 | - mclk (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) |
10 | - nvidia,model : The user-visible name of this sound complex. | 11 | - nvidia,model : The user-visible name of this sound complex. |
11 | - nvidia,audio-routing : A list of the connections between audio components. | 12 | - nvidia,audio-routing : A list of the connections between audio components. |
12 | Each entry is a pair of strings, the first being the connection's sink, | 13 | Each entry is a pair of strings, the first being the connection's sink, |
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra20-ac97.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra20-ac97.txt index c1454979c1ef..eaf00102d92c 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra20-ac97.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra20-ac97.txt | |||
@@ -4,19 +4,33 @@ Required properties: | |||
4 | - compatible : "nvidia,tegra20-ac97" | 4 | - compatible : "nvidia,tegra20-ac97" |
5 | - reg : Should contain AC97 controller registers location and length | 5 | - reg : Should contain AC97 controller registers location and length |
6 | - interrupts : Should contain AC97 interrupt | 6 | - interrupts : Should contain AC97 interrupt |
7 | - nvidia,dma-request-selector : The Tegra DMA controller's phandle and | 7 | - resets : Must contain an entry for each entry in reset-names. |
8 | request selector for the AC97 controller | 8 | See ../reset/reset.txt for details. |
9 | - reset-names : Must include the following entries: | ||
10 | - ac97 | ||
11 | - dmas : Must contain an entry for each entry in clock-names. | ||
12 | See ../dma/dma.txt for details. | ||
13 | - dma-names : Must include the following entries: | ||
14 | - rx | ||
15 | - tx | ||
16 | - clocks : Must contain one entry, for the module clock. | ||
17 | See ../clocks/clock-bindings.txt for details. | ||
9 | - nvidia,codec-reset-gpio : The Tegra GPIO controller's phandle and the number | 18 | - nvidia,codec-reset-gpio : The Tegra GPIO controller's phandle and the number |
10 | of the GPIO used to reset the external AC97 codec | 19 | of the GPIO used to reset the external AC97 codec |
11 | - nvidia,codec-sync-gpio : The Tegra GPIO controller's phandle and the number | 20 | - nvidia,codec-sync-gpio : The Tegra GPIO controller's phandle and the number |
12 | of the GPIO corresponding with the AC97 DAP _FS line | 21 | of the GPIO corresponding with the AC97 DAP _FS line |
22 | |||
13 | Example: | 23 | Example: |
14 | 24 | ||
15 | ac97@70002000 { | 25 | ac97@70002000 { |
16 | compatible = "nvidia,tegra20-ac97"; | 26 | compatible = "nvidia,tegra20-ac97"; |
17 | reg = <0x70002000 0x200>; | 27 | reg = <0x70002000 0x200>; |
18 | interrupts = <0 81 0x04>; | 28 | interrupts = <0 81 0x04>; |
19 | nvidia,dma-request-selector = <&apbdma 12>; | ||
20 | nvidia,codec-reset-gpio = <&gpio 170 0>; | 29 | nvidia,codec-reset-gpio = <&gpio 170 0>; |
21 | nvidia,codec-sync-gpio = <&gpio 120 0>; | 30 | nvidia,codec-sync-gpio = <&gpio 120 0>; |
31 | clocks = <&tegra_car 3>; | ||
32 | resets = <&tegra_car 3>; | ||
33 | reset-names = "ac97"; | ||
34 | dmas = <&apbdma 12>, <&apbdma 12>; | ||
35 | dma-names = "rx", "tx"; | ||
22 | }; | 36 | }; |
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra20-i2s.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra20-i2s.txt index 0df2b5c816e3..dc30c6bfbe95 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra20-i2s.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra20-i2s.txt | |||
@@ -4,8 +4,17 @@ Required properties: | |||
4 | - compatible : "nvidia,tegra20-i2s" | 4 | - compatible : "nvidia,tegra20-i2s" |
5 | - reg : Should contain I2S registers location and length | 5 | - reg : Should contain I2S registers location and length |
6 | - interrupts : Should contain I2S interrupt | 6 | - interrupts : Should contain I2S interrupt |
7 | - nvidia,dma-request-selector : The Tegra DMA controller's phandle and | 7 | - resets : Must contain an entry for each entry in reset-names. |
8 | request selector for this I2S controller | 8 | See ../reset/reset.txt for details. |
9 | - reset-names : Must include the following entries: | ||
10 | - i2s | ||
11 | - dmas : Must contain an entry for each entry in clock-names. | ||
12 | See ../dma/dma.txt for details. | ||
13 | - dma-names : Must include the following entries: | ||
14 | - rx | ||
15 | - tx | ||
16 | - clocks : Must contain one entry, for the module clock. | ||
17 | See ../clocks/clock-bindings.txt for details. | ||
9 | 18 | ||
10 | Example: | 19 | Example: |
11 | 20 | ||
@@ -13,5 +22,9 @@ i2s@70002800 { | |||
13 | compatible = "nvidia,tegra20-i2s"; | 22 | compatible = "nvidia,tegra20-i2s"; |
14 | reg = <0x70002800 0x200>; | 23 | reg = <0x70002800 0x200>; |
15 | interrupts = < 45 >; | 24 | interrupts = < 45 >; |
16 | nvidia,dma-request-selector = < &apbdma 2 >; | 25 | clocks = <&tegra_car 11>; |
26 | resets = <&tegra_car 11>; | ||
27 | reset-names = "i2s"; | ||
28 | dmas = <&apbdma 21>, <&apbdma 21>; | ||
29 | dma-names = "rx", "tx"; | ||
17 | }; | 30 | }; |
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt index 0e5c12c66523..946e2ac46091 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt | |||
@@ -7,18 +7,48 @@ Required properties: | |||
7 | - Tegra30 requires 2 entries, for the APBIF and AHUB/AUDIO register blocks. | 7 | - Tegra30 requires 2 entries, for the APBIF and AHUB/AUDIO register blocks. |
8 | - Tegra114 requires an additional entry, for the APBIF2 register block. | 8 | - Tegra114 requires an additional entry, for the APBIF2 register block. |
9 | - interrupts : Should contain AHUB interrupt | 9 | - interrupts : Should contain AHUB interrupt |
10 | - nvidia,dma-request-selector : A list of the DMA channel specifiers. Each | 10 | - clocks : Must contain an entry for each entry in clock-names. |
11 | entry contains the Tegra DMA controller's phandle and request selector. | 11 | See ../clocks/clock-bindings.txt for details. |
12 | If a single entry is present, the request selectors for the channels are | ||
13 | assumed to be contiguous, and increment from this value. | ||
14 | If multiple values are given, one value must be given per channel. | ||
15 | - clocks : Must contain an entry for each required entry in clock-names. | ||
16 | - clock-names : Must include the following entries: | 12 | - clock-names : Must include the following entries: |
17 | - Tegra30: Requires d_audio, apbif, i2s0, i2s1, i2s2, i2s3, i2s4, dam0, | 13 | - d_audio |
18 | dam1, dam2, spdif_in. | 14 | - apbif |
19 | - Tegra114: Additionally requires amx, adx. | 15 | - resets : Must contain an entry for each entry in reset-names. |
16 | See ../reset/reset.txt for details. | ||
17 | - reset-names : Must include the following entries: | ||
18 | Tegra30 and later: | ||
19 | - d_audio | ||
20 | - apbif | ||
21 | - i2s0 | ||
22 | - i2s1 | ||
23 | - i2s2 | ||
24 | - i2s3 | ||
25 | - i2s4 | ||
26 | - dam0 | ||
27 | - dam1 | ||
28 | - dam2 | ||
29 | - spdif | ||
30 | Tegra114 and later additionally require: | ||
31 | - amx | ||
32 | - adx | ||
33 | Tegra124 and later additionally require: | ||
34 | - amx1 | ||
35 | - adx1 | ||
36 | - afc0 | ||
37 | - afc1 | ||
38 | - afc2 | ||
39 | - afc3 | ||
40 | - afc4 | ||
41 | - afc5 | ||
20 | - ranges : The bus address mapping for the configlink register bus. | 42 | - ranges : The bus address mapping for the configlink register bus. |
21 | Can be empty since the mapping is 1:1. | 43 | Can be empty since the mapping is 1:1. |
44 | - dmas : Must contain an entry for each entry in clock-names. | ||
45 | See ../dma/dma.txt for details. | ||
46 | - dma-names : Must include the following entries: | ||
47 | - rx0 .. rx<n> | ||
48 | - tx0 .. tx<n> | ||
49 | ... where n is: | ||
50 | Tegra30: 3 | ||
51 | Tegra114, Tegra124: 9 | ||
22 | - #address-cells : For the configlink bus. Should be <1>; | 52 | - #address-cells : For the configlink bus. Should be <1>; |
23 | - #size-cells : For the configlink bus. Should be <1>. | 53 | - #size-cells : For the configlink bus. Should be <1>. |
24 | 54 | ||
@@ -35,13 +65,20 @@ ahub@70080000 { | |||
35 | reg = <0x70080000 0x200 0x70080200 0x100>; | 65 | reg = <0x70080000 0x200 0x70080200 0x100>; |
36 | interrupts = < 0 103 0x04 >; | 66 | interrupts = < 0 103 0x04 >; |
37 | nvidia,dma-request-selector = <&apbdma 1>; | 67 | nvidia,dma-request-selector = <&apbdma 1>; |
38 | clocks = <&tegra_car 106>, <&tegra_car 107>, <&tegra_car 30>, | 68 | clocks = <&tegra_car 106>, <&tegra_car 107>; |
69 | clock-names = "d_audio", "apbif"; | ||
70 | resets = <&tegra_car 106>, <&tegra_car 107>, <&tegra_car 30>, | ||
39 | <&tegra_car 11>, <&tegra_car 18>, <&tegra_car 101>, | 71 | <&tegra_car 11>, <&tegra_car 18>, <&tegra_car 101>, |
40 | <&tegra_car 102>, <&tegra_car 108>, <&tegra_car 109>, | 72 | <&tegra_car 102>, <&tegra_car 108>, <&tegra_car 109>, |
41 | <&tegra_car 110>, <&tegra_car 162>; | 73 | <&tegra_car 110>, <&tegra_car 10>; |
42 | clock-names = "d_audio", "apbif", "i2s0", "i2s1", "i2s2", | 74 | reset-names = "d_audio", "apbif", "i2s0", "i2s1", "i2s2", |
43 | "i2s3", "i2s4", "dam0", "dam1", "dam2", | 75 | "i2s3", "i2s4", "dam0", "dam1", "dam2", |
44 | "spdif_in"; | 76 | "spdif"; |
77 | dmas = <&apbdma 1>, <&apbdma 1>; | ||
78 | <&apbdma 2>, <&apbdma 2>; | ||
79 | <&apbdma 3>, <&apbdma 3>; | ||
80 | <&apbdma 4>, <&apbdma 4>; | ||
81 | dma-names = "rx0", "tx0", "rx1", "tx1", "rx2", "tx2", "rx3", "tx3"; | ||
45 | ranges; | 82 | ranges; |
46 | #address-cells = <1>; | 83 | #address-cells = <1>; |
47 | #size-cells = <1>; | 84 | #size-cells = <1>; |
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt index dfa6c037124a..0c113ffe3814 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt | |||
@@ -3,13 +3,22 @@ NVIDIA Tegra30 I2S controller | |||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : "nvidia,tegra30-i2s" | 4 | - compatible : "nvidia,tegra30-i2s" |
5 | - reg : Should contain I2S registers location and length | 5 | - reg : Should contain I2S registers location and length |
6 | - clocks : Must contain one entry, for the module clock. | ||
7 | See ../clocks/clock-bindings.txt for details. | ||
8 | - resets : Must contain an entry for each entry in reset-names. | ||
9 | See ../reset/reset.txt for details. | ||
10 | - reset-names : Must include the following entries: | ||
11 | - i2s | ||
6 | - nvidia,ahub-cif-ids : The list of AHUB CIF IDs for this port, rx (playback) | 12 | - nvidia,ahub-cif-ids : The list of AHUB CIF IDs for this port, rx (playback) |
7 | first, tx (capture) second. See nvidia,tegra30-ahub.txt for values. | 13 | first, tx (capture) second. See nvidia,tegra30-ahub.txt for values. |
8 | 14 | ||
9 | Example: | 15 | Example: |
10 | 16 | ||
11 | i2s@70002800 { | 17 | i2s@70080300 { |
12 | compatible = "nvidia,tegra30-i2s"; | 18 | compatible = "nvidia,tegra30-i2s"; |
13 | reg = <0x70080300 0x100>; | 19 | reg = <0x70080300 0x100>; |
14 | nvidia,ahub-cif-ids = <4 4>; | 20 | nvidia,ahub-cif-ids = <4 4>; |
21 | clocks = <&tegra_car 11>; | ||
22 | resets = <&tegra_car 11>; | ||
23 | reset-names = "i2s"; | ||
15 | }; | 24 | }; |
diff --git a/Documentation/devicetree/bindings/sound/simple-card.txt b/Documentation/devicetree/bindings/sound/simple-card.txt new file mode 100644 index 000000000000..e9e20ec67d62 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/simple-card.txt | |||
@@ -0,0 +1,77 @@ | |||
1 | Simple-Card: | ||
2 | |||
3 | Simple-Card specifies audio DAI connection of SoC <-> codec. | ||
4 | |||
5 | Required properties: | ||
6 | |||
7 | - compatible : "simple-audio-card" | ||
8 | |||
9 | Optional properties: | ||
10 | |||
11 | - simple-audio-card,format : CPU/CODEC common audio format. | ||
12 | "i2s", "right_j", "left_j" , "dsp_a" | ||
13 | "dsp_b", "ac97", "pdm", "msb", "lsb" | ||
14 | - simple-audio-card,routing : A list of the connections between audio components. | ||
15 | Each entry is a pair of strings, the first being the | ||
16 | connection's sink, the second being the connection's | ||
17 | source. | ||
18 | |||
19 | Required subnodes: | ||
20 | |||
21 | - simple-audio-card,cpu : CPU sub-node | ||
22 | - simple-audio-card,codec : CODEC sub-node | ||
23 | |||
24 | Required CPU/CODEC subnodes properties: | ||
25 | |||
26 | - sound-dai : phandle and port of CPU/CODEC | ||
27 | |||
28 | Optional CPU/CODEC subnodes properties: | ||
29 | |||
30 | - format : CPU/CODEC specific audio format if needed. | ||
31 | see simple-audio-card,format | ||
32 | - frame-master : bool property. add this if subnode is frame master | ||
33 | - bitclock-master : bool property. add this if subnode is bitclock master | ||
34 | - bitclock-inversion : bool property. add this if subnode has clock inversion | ||
35 | - frame-inversion : bool property. add this if subnode has frame inversion | ||
36 | - clocks / system-clock-frequency : specify subnode's clock if needed. | ||
37 | it can be specified via "clocks" if system has | ||
38 | clock node (= common clock), or "system-clock-frequency" | ||
39 | (if system doens't support common clock) | ||
40 | |||
41 | Example: | ||
42 | |||
43 | sound { | ||
44 | compatible = "simple-audio-card"; | ||
45 | simple-audio-card,format = "left_j"; | ||
46 | simple-audio-routing = | ||
47 | "MIC_IN", "Mic Jack", | ||
48 | "Headphone Jack", "HP_OUT", | ||
49 | "Ext Spk", "LINE_OUT"; | ||
50 | |||
51 | simple-audio-card,cpu { | ||
52 | sound-dai = <&sh_fsi2 0>; | ||
53 | }; | ||
54 | |||
55 | simple-audio-card,codec { | ||
56 | sound-dai = <&ak4648>; | ||
57 | bitclock-master; | ||
58 | frame-master; | ||
59 | clocks = <&osc>; | ||
60 | }; | ||
61 | }; | ||
62 | |||
63 | &i2c0 { | ||
64 | ak4648: ak4648@12 { | ||
65 | #sound-dai-cells = <0>; | ||
66 | compatible = "asahi-kasei,ak4648"; | ||
67 | reg = <0x12>; | ||
68 | }; | ||
69 | }; | ||
70 | |||
71 | sh_fsi2: sh_fsi2@ec230000 { | ||
72 | #sound-dai-cells = <1>; | ||
73 | compatible = "renesas,sh_fsi2"; | ||
74 | reg = <0xec230000 0x400>; | ||
75 | interrupt-parent = <&gic>; | ||
76 | interrupts = <0 146 0x4>; | ||
77 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/tlv320aic3x.txt b/Documentation/devicetree/bindings/sound/tlv320aic3x.txt index 5e6040c2c2e9..9d8ea14db490 100644 --- a/Documentation/devicetree/bindings/sound/tlv320aic3x.txt +++ b/Documentation/devicetree/bindings/sound/tlv320aic3x.txt | |||
@@ -6,6 +6,7 @@ Required properties: | |||
6 | 6 | ||
7 | - compatible - "string" - One of: | 7 | - compatible - "string" - One of: |
8 | "ti,tlv320aic3x" - Generic TLV320AIC3x device | 8 | "ti,tlv320aic3x" - Generic TLV320AIC3x device |
9 | "ti,tlv320aic32x4" - TLV320AIC32x4 | ||
9 | "ti,tlv320aic33" - TLV320AIC33 | 10 | "ti,tlv320aic33" - TLV320AIC33 |
10 | "ti,tlv320aic3007" - TLV320AIC3007 | 11 | "ti,tlv320aic3007" - TLV320AIC3007 |
11 | "ti,tlv320aic3106" - TLV320AIC3106 | 12 | "ti,tlv320aic3106" - TLV320AIC3106 |
diff --git a/Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.txt b/Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.txt index 91ff771c7e77..7ea701e07dc2 100644 --- a/Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.txt +++ b/Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.txt | |||
@@ -4,10 +4,19 @@ Required properties: | |||
4 | - compatible : should be "nvidia,tegra114-spi". | 4 | - compatible : should be "nvidia,tegra114-spi". |
5 | - reg: Should contain SPI registers location and length. | 5 | - reg: Should contain SPI registers location and length. |
6 | - interrupts: Should contain SPI interrupts. | 6 | - interrupts: Should contain SPI interrupts. |
7 | - nvidia,dma-request-selector : The Tegra DMA controller's phandle and | 7 | - clock-names : Must include the following entries: |
8 | request selector for this SPI controller. | 8 | - spi |
9 | - This is also require clock named "spi" as per binding document | 9 | - resets : Must contain an entry for each entry in reset-names. |
10 | Documentation/devicetree/bindings/clock/clock-bindings.txt | 10 | See ../reset/reset.txt for details. |
11 | - reset-names : Must include the following entries: | ||
12 | - spi | ||
13 | - dmas : Must contain an entry for each entry in clock-names. | ||
14 | See ../dma/dma.txt for details. | ||
15 | - dma-names : Must include the following entries: | ||
16 | - rx | ||
17 | - tx | ||
18 | - clocks : Must contain an entry for each entry in clock-names. | ||
19 | See ../clocks/clock-bindings.txt for details. | ||
11 | 20 | ||
12 | Recommended properties: | 21 | Recommended properties: |
13 | - spi-max-frequency: Definition as per | 22 | - spi-max-frequency: Definition as per |
@@ -18,9 +27,14 @@ spi@7000d600 { | |||
18 | compatible = "nvidia,tegra114-spi"; | 27 | compatible = "nvidia,tegra114-spi"; |
19 | reg = <0x7000d600 0x200>; | 28 | reg = <0x7000d600 0x200>; |
20 | interrupts = <0 82 0x04>; | 29 | interrupts = <0 82 0x04>; |
21 | nvidia,dma-request-selector = <&apbdma 16>; | ||
22 | spi-max-frequency = <25000000>; | 30 | spi-max-frequency = <25000000>; |
23 | #address-cells = <1>; | 31 | #address-cells = <1>; |
24 | #size-cells = <0>; | 32 | #size-cells = <0>; |
33 | clocks = <&tegra_car 44>; | ||
34 | clock-names = "spi"; | ||
35 | resets = <&tegra_car 44>; | ||
36 | reset-names = "spi"; | ||
37 | dmas = <&apbdma 16>, <&apbdma 16>; | ||
38 | dma-names = "rx", "tx"; | ||
25 | status = "disabled"; | 39 | status = "disabled"; |
26 | }; | 40 | }; |
diff --git a/Documentation/devicetree/bindings/spi/nvidia,tegra20-sflash.txt b/Documentation/devicetree/bindings/spi/nvidia,tegra20-sflash.txt index 7b53da5cb75b..bdf08e6dec9b 100644 --- a/Documentation/devicetree/bindings/spi/nvidia,tegra20-sflash.txt +++ b/Documentation/devicetree/bindings/spi/nvidia,tegra20-sflash.txt | |||
@@ -4,8 +4,17 @@ Required properties: | |||
4 | - compatible : should be "nvidia,tegra20-sflash". | 4 | - compatible : should be "nvidia,tegra20-sflash". |
5 | - reg: Should contain SFLASH registers location and length. | 5 | - reg: Should contain SFLASH registers location and length. |
6 | - interrupts: Should contain SFLASH interrupts. | 6 | - interrupts: Should contain SFLASH interrupts. |
7 | - nvidia,dma-request-selector : The Tegra DMA controller's phandle and | 7 | - clocks : Must contain one entry, for the module clock. |
8 | request selector for this SFLASH controller. | 8 | See ../clocks/clock-bindings.txt for details. |
9 | - resets : Must contain an entry for each entry in reset-names. | ||
10 | See ../reset/reset.txt for details. | ||
11 | - reset-names : Must include the following entries: | ||
12 | - spi | ||
13 | - dmas : Must contain an entry for each entry in clock-names. | ||
14 | See ../dma/dma.txt for details. | ||
15 | - dma-names : Must include the following entries: | ||
16 | - rx | ||
17 | - tx | ||
9 | 18 | ||
10 | Recommended properties: | 19 | Recommended properties: |
11 | - spi-max-frequency: Definition as per | 20 | - spi-max-frequency: Definition as per |
@@ -17,10 +26,13 @@ spi@7000c380 { | |||
17 | compatible = "nvidia,tegra20-sflash"; | 26 | compatible = "nvidia,tegra20-sflash"; |
18 | reg = <0x7000c380 0x80>; | 27 | reg = <0x7000c380 0x80>; |
19 | interrupts = <0 39 0x04>; | 28 | interrupts = <0 39 0x04>; |
20 | nvidia,dma-request-selector = <&apbdma 16>; | ||
21 | spi-max-frequency = <25000000>; | 29 | spi-max-frequency = <25000000>; |
22 | #address-cells = <1>; | 30 | #address-cells = <1>; |
23 | #size-cells = <0>; | 31 | #size-cells = <0>; |
32 | clocks = <&tegra_car 43>; | ||
33 | resets = <&tegra_car 43>; | ||
34 | reset-names = "spi"; | ||
35 | dmas = <&apbdma 11>, <&apbdma 11>; | ||
36 | dma-names = "rx", "tx"; | ||
24 | status = "disabled"; | 37 | status = "disabled"; |
25 | }; | 38 | }; |
26 | |||
diff --git a/Documentation/devicetree/bindings/spi/nvidia,tegra20-slink.txt b/Documentation/devicetree/bindings/spi/nvidia,tegra20-slink.txt index eefe15e3d95e..5db9144a33c8 100644 --- a/Documentation/devicetree/bindings/spi/nvidia,tegra20-slink.txt +++ b/Documentation/devicetree/bindings/spi/nvidia,tegra20-slink.txt | |||
@@ -4,8 +4,17 @@ Required properties: | |||
4 | - compatible : should be "nvidia,tegra20-slink", "nvidia,tegra30-slink". | 4 | - compatible : should be "nvidia,tegra20-slink", "nvidia,tegra30-slink". |
5 | - reg: Should contain SLINK registers location and length. | 5 | - reg: Should contain SLINK registers location and length. |
6 | - interrupts: Should contain SLINK interrupts. | 6 | - interrupts: Should contain SLINK interrupts. |
7 | - nvidia,dma-request-selector : The Tegra DMA controller's phandle and | 7 | - clocks : Must contain one entry, for the module clock. |
8 | request selector for this SLINK controller. | 8 | See ../clocks/clock-bindings.txt for details. |
9 | - resets : Must contain an entry for each entry in reset-names. | ||
10 | See ../reset/reset.txt for details. | ||
11 | - reset-names : Must include the following entries: | ||
12 | - spi | ||
13 | - dmas : Must contain an entry for each entry in clock-names. | ||
14 | See ../dma/dma.txt for details. | ||
15 | - dma-names : Must include the following entries: | ||
16 | - rx | ||
17 | - tx | ||
9 | 18 | ||
10 | Recommended properties: | 19 | Recommended properties: |
11 | - spi-max-frequency: Definition as per | 20 | - spi-max-frequency: Definition as per |
@@ -17,10 +26,13 @@ spi@7000d600 { | |||
17 | compatible = "nvidia,tegra20-slink"; | 26 | compatible = "nvidia,tegra20-slink"; |
18 | reg = <0x7000d600 0x200>; | 27 | reg = <0x7000d600 0x200>; |
19 | interrupts = <0 82 0x04>; | 28 | interrupts = <0 82 0x04>; |
20 | nvidia,dma-request-selector = <&apbdma 16>; | ||
21 | spi-max-frequency = <25000000>; | 29 | spi-max-frequency = <25000000>; |
22 | #address-cells = <1>; | 30 | #address-cells = <1>; |
23 | #size-cells = <0>; | 31 | #size-cells = <0>; |
32 | clocks = <&tegra_car 44>; | ||
33 | resets = <&tegra_car 44>; | ||
34 | reset-names = "spi"; | ||
35 | dmas = <&apbdma 16>, <&apbdma 16>; | ||
36 | dma-names = "rx", "tx"; | ||
24 | status = "disabled"; | 37 | status = "disabled"; |
25 | }; | 38 | }; |
26 | |||
diff --git a/Documentation/devicetree/bindings/spi/spi-bus.txt b/Documentation/devicetree/bindings/spi/spi-bus.txt index 800dafe5b01b..e5a4d1b4acfe 100644 --- a/Documentation/devicetree/bindings/spi/spi-bus.txt +++ b/Documentation/devicetree/bindings/spi/spi-bus.txt | |||
@@ -67,7 +67,7 @@ only 1(SINGLE), 2(DUAL) and 4(QUAD). | |||
67 | Dual/Quad mode is not allowed when 3-wire mode is used. | 67 | Dual/Quad mode is not allowed when 3-wire mode is used. |
68 | 68 | ||
69 | If a gpio chipselect is used for the SPI slave the gpio number will be passed | 69 | If a gpio chipselect is used for the SPI slave the gpio number will be passed |
70 | via the cs_gpio | 70 | via the SPI master node cs-gpios property. |
71 | 71 | ||
72 | SPI example for an MPC5200 SPI bus: | 72 | SPI example for an MPC5200 SPI bus: |
73 | spi@f00 { | 73 | spi@f00 { |
diff --git a/Documentation/devicetree/bindings/spi/ti_qspi.txt b/Documentation/devicetree/bindings/spi/ti_qspi.txt index 1f9641ade0b5..601a360531a5 100644 --- a/Documentation/devicetree/bindings/spi/ti_qspi.txt +++ b/Documentation/devicetree/bindings/spi/ti_qspi.txt | |||
@@ -3,6 +3,11 @@ TI QSPI controller. | |||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : should be "ti,dra7xxx-qspi" or "ti,am4372-qspi". | 4 | - compatible : should be "ti,dra7xxx-qspi" or "ti,am4372-qspi". |
5 | - reg: Should contain QSPI registers location and length. | 5 | - reg: Should contain QSPI registers location and length. |
6 | - reg-names: Should contain the resource reg names. | ||
7 | - qspi_base: Qspi configuration register Address space | ||
8 | - qspi_mmap: Memory mapped Address space | ||
9 | - (optional) qspi_ctrlmod: Control module Address space | ||
10 | - interrupts: should contain the qspi interrupt number. | ||
6 | - #address-cells, #size-cells : Must be present if the device has sub-nodes | 11 | - #address-cells, #size-cells : Must be present if the device has sub-nodes |
7 | - ti,hwmods: Name of the hwmod associated to the QSPI | 12 | - ti,hwmods: Name of the hwmod associated to the QSPI |
8 | 13 | ||
@@ -14,7 +19,8 @@ Example: | |||
14 | 19 | ||
15 | qspi: qspi@4b300000 { | 20 | qspi: qspi@4b300000 { |
16 | compatible = "ti,dra7xxx-qspi"; | 21 | compatible = "ti,dra7xxx-qspi"; |
17 | reg = <0x4b300000 0x100>; | 22 | reg = <0x47900000 0x100>, <0x30000000 0x3ffffff>; |
23 | reg-names = "qspi_base", "qspi_mmap"; | ||
18 | #address-cells = <1>; | 24 | #address-cells = <1>; |
19 | #size-cells = <0>; | 25 | #size-cells = <0>; |
20 | spi-max-frequency = <25000000>; | 26 | spi-max-frequency = <25000000>; |
diff --git a/Documentation/devicetree/bindings/staging/dwc2.txt b/Documentation/devicetree/bindings/staging/dwc2.txt deleted file mode 100644 index 1a1b7cfa4845..000000000000 --- a/Documentation/devicetree/bindings/staging/dwc2.txt +++ /dev/null | |||
@@ -1,15 +0,0 @@ | |||
1 | Platform DesignWare HS OTG USB 2.0 controller | ||
2 | ----------------------------------------------------- | ||
3 | |||
4 | Required properties: | ||
5 | - compatible : "snps,dwc2" | ||
6 | - reg : Should contain 1 register range (address and length) | ||
7 | - interrupts : Should contain 1 interrupt | ||
8 | |||
9 | Example: | ||
10 | |||
11 | usb@101c0000 { | ||
12 | compatible = "ralink,rt3050-usb, snps,dwc2"; | ||
13 | reg = <0x101c0000 40000>; | ||
14 | interrupts = <18>; | ||
15 | }; | ||
diff --git a/Documentation/devicetree/bindings/staging/xillybus.txt b/Documentation/devicetree/bindings/staging/xillybus.txt new file mode 100644 index 000000000000..9e316dc2e40f --- /dev/null +++ b/Documentation/devicetree/bindings/staging/xillybus.txt | |||
@@ -0,0 +1,20 @@ | |||
1 | * Xillybus driver for generic FPGA interface | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be "xillybus,xillybus-1.00.a" | ||
5 | - reg: Address and length of the register set for the device | ||
6 | - interrupts: Contains one interrupt node, typically consisting of three cells. | ||
7 | - interrupt-parent: the phandle for the interrupt controller that | ||
8 | services interrupts for this device. | ||
9 | |||
10 | Optional properties: | ||
11 | - dma-coherent: Present if DMA operations are coherent | ||
12 | |||
13 | Example: | ||
14 | |||
15 | xillybus@ff200400 { | ||
16 | compatible = "xillybus,xillybus-1.00.a"; | ||
17 | reg = < 0xff200400 0x00000080 >; | ||
18 | interrupts = < 0 40 1 >; | ||
19 | interrupt-parent = <&intc>; | ||
20 | } ; | ||
diff --git a/Documentation/devicetree/bindings/submitting-patches.txt b/Documentation/devicetree/bindings/submitting-patches.txt new file mode 100644 index 000000000000..042a0273b8ba --- /dev/null +++ b/Documentation/devicetree/bindings/submitting-patches.txt | |||
@@ -0,0 +1,38 @@ | |||
1 | |||
2 | Submitting devicetree (DT) binding patches | ||
3 | |||
4 | I. For patch submitters | ||
5 | |||
6 | 0) Normal patch submission rules from Documentation/SubmittingPatches | ||
7 | applies. | ||
8 | |||
9 | 1) The Documentation/ portion of the patch should be a separate patch. | ||
10 | |||
11 | 2) Submit the entire series to the devicetree mailinglist at | ||
12 | |||
13 | devicetree@vger.kernel.org | ||
14 | |||
15 | II. For kernel maintainers | ||
16 | |||
17 | 1) If you aren't comfortable reviewing a given binding, reply to it and ask | ||
18 | the devicetree maintainers for guidance. This will help them prioritize | ||
19 | which ones to review and which ones are ok to let go. | ||
20 | |||
21 | 2) For driver (not subsystem) bindings: If you are comfortable with the | ||
22 | binding, and it hasn't received an Acked-by from the devicetree | ||
23 | maintainers after a few weeks, go ahead and take it. | ||
24 | |||
25 | Subsystem bindings (anything affecting more than a single device) | ||
26 | then getting a devicetree maintainer to review it is required. | ||
27 | |||
28 | 3) For a series going though multiple trees, the binding patch should be | ||
29 | kept with the driver using the binding. | ||
30 | |||
31 | III. Notes | ||
32 | |||
33 | 0) Please see ...bindings/ABI.txt for details regarding devicetree ABI. | ||
34 | |||
35 | 1) This document is intended as a general familiarization with the process as | ||
36 | decided at the 2013 Kernel Summit. When in doubt, the current word of the | ||
37 | devicetree maintainers overrules this document. In that situation, a patch | ||
38 | updating this document would be appreciated. | ||
diff --git a/Documentation/devicetree/bindings/thermal/imx-thermal.txt b/Documentation/devicetree/bindings/thermal/imx-thermal.txt index 541c25e49abf..1f0f67234a91 100644 --- a/Documentation/devicetree/bindings/thermal/imx-thermal.txt +++ b/Documentation/devicetree/bindings/thermal/imx-thermal.txt | |||
@@ -8,10 +8,14 @@ Required properties: | |||
8 | calibration data, e.g. OCOTP on imx6q. The details about calibration data | 8 | calibration data, e.g. OCOTP on imx6q. The details about calibration data |
9 | can be found in SoC Reference Manual. | 9 | can be found in SoC Reference Manual. |
10 | 10 | ||
11 | Optional properties: | ||
12 | - clocks : thermal sensor's clock source. | ||
13 | |||
11 | Example: | 14 | Example: |
12 | 15 | ||
13 | tempmon { | 16 | tempmon { |
14 | compatible = "fsl,imx6q-tempmon"; | 17 | compatible = "fsl,imx6q-tempmon"; |
15 | fsl,tempmon = <&anatop>; | 18 | fsl,tempmon = <&anatop>; |
16 | fsl,tempmon-data = <&ocotp>; | 19 | fsl,tempmon-data = <&ocotp>; |
20 | clocks = <&clks 172>; | ||
17 | }; | 21 | }; |
diff --git a/Documentation/devicetree/bindings/thermal/thermal.txt b/Documentation/devicetree/bindings/thermal/thermal.txt new file mode 100644 index 000000000000..f5db6b72a36f --- /dev/null +++ b/Documentation/devicetree/bindings/thermal/thermal.txt | |||
@@ -0,0 +1,595 @@ | |||
1 | * Thermal Framework Device Tree descriptor | ||
2 | |||
3 | This file describes a generic binding to provide a way of | ||
4 | defining hardware thermal structure using device tree. | ||
5 | A thermal structure includes thermal zones and their components, | ||
6 | such as trip points, polling intervals, sensors and cooling devices | ||
7 | binding descriptors. | ||
8 | |||
9 | The target of device tree thermal descriptors is to describe only | ||
10 | the hardware thermal aspects. The thermal device tree bindings are | ||
11 | not about how the system must control or which algorithm or policy | ||
12 | must be taken in place. | ||
13 | |||
14 | There are five types of nodes involved to describe thermal bindings: | ||
15 | - thermal sensors: devices which may be used to take temperature | ||
16 | measurements. | ||
17 | - cooling devices: devices which may be used to dissipate heat. | ||
18 | - trip points: describe key temperatures at which cooling is recommended. The | ||
19 | set of points should be chosen based on hardware limits. | ||
20 | - cooling maps: used to describe links between trip points and cooling devices; | ||
21 | - thermal zones: used to describe thermal data within the hardware; | ||
22 | |||
23 | The following is a description of each of these node types. | ||
24 | |||
25 | * Thermal sensor devices | ||
26 | |||
27 | Thermal sensor devices are nodes providing temperature sensing capabilities on | ||
28 | thermal zones. Typical devices are I2C ADC converters and bandgaps. These are | ||
29 | nodes providing temperature data to thermal zones. Thermal sensor devices may | ||
30 | control one or more internal sensors. | ||
31 | |||
32 | Required property: | ||
33 | - #thermal-sensor-cells: Used to provide sensor device specific information | ||
34 | Type: unsigned while referring to it. Typically 0 on thermal sensor | ||
35 | Size: one cell nodes with only one sensor, and at least 1 on nodes | ||
36 | with several internal sensors, in order | ||
37 | to identify uniquely the sensor instances within | ||
38 | the IC. See thermal zone binding for more details | ||
39 | on how consumers refer to sensor devices. | ||
40 | |||
41 | * Cooling device nodes | ||
42 | |||
43 | Cooling devices are nodes providing control on power dissipation. There | ||
44 | are essentially two ways to provide control on power dissipation. First | ||
45 | is by means of regulating device performance, which is known as passive | ||
46 | cooling. A typical passive cooling is a CPU that has dynamic voltage and | ||
47 | frequency scaling (DVFS), and uses lower frequencies as cooling states. | ||
48 | Second is by means of activating devices in order to remove | ||
49 | the dissipated heat, which is known as active cooling, e.g. regulating | ||
50 | fan speeds. In both cases, cooling devices shall have a way to determine | ||
51 | the state of cooling in which the device is. | ||
52 | |||
53 | Any cooling device has a range of cooling states (i.e. different levels | ||
54 | of heat dissipation). For example a fan's cooling states correspond to | ||
55 | the different fan speeds possible. Cooling states are referred to by | ||
56 | single unsigned integers, where larger numbers mean greater heat | ||
57 | dissipation. The precise set of cooling states associated with a device | ||
58 | (as referred to be the cooling-min-state and cooling-max-state | ||
59 | properties) should be defined in a particular device's binding. | ||
60 | For more examples of cooling devices, refer to the example sections below. | ||
61 | |||
62 | Required properties: | ||
63 | - cooling-min-state: An integer indicating the smallest | ||
64 | Type: unsigned cooling state accepted. Typically 0. | ||
65 | Size: one cell | ||
66 | |||
67 | - cooling-max-state: An integer indicating the largest | ||
68 | Type: unsigned cooling state accepted. | ||
69 | Size: one cell | ||
70 | |||
71 | - #cooling-cells: Used to provide cooling device specific information | ||
72 | Type: unsigned while referring to it. Must be at least 2, in order | ||
73 | Size: one cell to specify minimum and maximum cooling state used | ||
74 | in the reference. The first cell is the minimum | ||
75 | cooling state requested and the second cell is | ||
76 | the maximum cooling state requested in the reference. | ||
77 | See Cooling device maps section below for more details | ||
78 | on how consumers refer to cooling devices. | ||
79 | |||
80 | * Trip points | ||
81 | |||
82 | The trip node is a node to describe a point in the temperature domain | ||
83 | in which the system takes an action. This node describes just the point, | ||
84 | not the action. | ||
85 | |||
86 | Required properties: | ||
87 | - temperature: An integer indicating the trip temperature level, | ||
88 | Type: signed in millicelsius. | ||
89 | Size: one cell | ||
90 | |||
91 | - hysteresis: A low hysteresis value on temperature property (above). | ||
92 | Type: unsigned This is a relative value, in millicelsius. | ||
93 | Size: one cell | ||
94 | |||
95 | - type: a string containing the trip type. Expected values are: | ||
96 | "active": A trip point to enable active cooling | ||
97 | "passive": A trip point to enable passive cooling | ||
98 | "hot": A trip point to notify emergency | ||
99 | "critical": Hardware not reliable. | ||
100 | Type: string | ||
101 | |||
102 | * Cooling device maps | ||
103 | |||
104 | The cooling device maps node is a node to describe how cooling devices | ||
105 | get assigned to trip points of the zone. The cooling devices are expected | ||
106 | to be loaded in the target system. | ||
107 | |||
108 | Required properties: | ||
109 | - cooling-device: A phandle of a cooling device with its specifier, | ||
110 | Type: phandle + referring to which cooling device is used in this | ||
111 | cooling specifier binding. In the cooling specifier, the first cell | ||
112 | is the minimum cooling state and the second cell | ||
113 | is the maximum cooling state used in this map. | ||
114 | - trip: A phandle of a trip point node within the same thermal | ||
115 | Type: phandle of zone. | ||
116 | trip point node | ||
117 | |||
118 | Optional property: | ||
119 | - contribution: The cooling contribution to the thermal zone of the | ||
120 | Type: unsigned referred cooling device at the referred trip point. | ||
121 | Size: one cell The contribution is a ratio of the sum | ||
122 | of all cooling contributions within a thermal zone. | ||
123 | |||
124 | Note: Using the THERMAL_NO_LIMIT (-1UL) constant in the cooling-device phandle | ||
125 | limit specifier means: | ||
126 | (i) - minimum state allowed for minimum cooling state used in the reference. | ||
127 | (ii) - maximum state allowed for maximum cooling state used in the reference. | ||
128 | Refer to include/dt-bindings/thermal/thermal.h for definition of this constant. | ||
129 | |||
130 | * Thermal zone nodes | ||
131 | |||
132 | The thermal zone node is the node containing all the required info | ||
133 | for describing a thermal zone, including its cooling device bindings. The | ||
134 | thermal zone node must contain, apart from its own properties, one sub-node | ||
135 | containing trip nodes and one sub-node containing all the zone cooling maps. | ||
136 | |||
137 | Required properties: | ||
138 | - polling-delay: The maximum number of milliseconds to wait between polls | ||
139 | Type: unsigned when checking this thermal zone. | ||
140 | Size: one cell | ||
141 | |||
142 | - polling-delay-passive: The maximum number of milliseconds to wait | ||
143 | Type: unsigned between polls when performing passive cooling. | ||
144 | Size: one cell | ||
145 | |||
146 | - thermal-sensors: A list of thermal sensor phandles and sensor specifier | ||
147 | Type: list of used while monitoring the thermal zone. | ||
148 | phandles + sensor | ||
149 | specifier | ||
150 | |||
151 | - trips: A sub-node which is a container of only trip point nodes | ||
152 | Type: sub-node required to describe the thermal zone. | ||
153 | |||
154 | - cooling-maps: A sub-node which is a container of only cooling device | ||
155 | Type: sub-node map nodes, used to describe the relation between trips | ||
156 | and cooling devices. | ||
157 | |||
158 | Optional property: | ||
159 | - coefficients: An array of integers (one signed cell) containing | ||
160 | Type: array coefficients to compose a linear relation between | ||
161 | Elem size: one cell the sensors listed in the thermal-sensors property. | ||
162 | Elem type: signed Coefficients defaults to 1, in case this property | ||
163 | is not specified. A simple linear polynomial is used: | ||
164 | Z = c0 * x0 + c1 + x1 + ... + c(n-1) * x(n-1) + cn. | ||
165 | |||
166 | The coefficients are ordered and they match with sensors | ||
167 | by means of sensor ID. Additional coefficients are | ||
168 | interpreted as constant offset. | ||
169 | |||
170 | Note: The delay properties are bound to the maximum dT/dt (temperature | ||
171 | derivative over time) in two situations for a thermal zone: | ||
172 | (i) - when passive cooling is activated (polling-delay-passive); and | ||
173 | (ii) - when the zone just needs to be monitored (polling-delay) or | ||
174 | when active cooling is activated. | ||
175 | |||
176 | The maximum dT/dt is highly bound to hardware power consumption and dissipation | ||
177 | capability. The delays should be chosen to account for said max dT/dt, | ||
178 | such that a device does not cross several trip boundaries unexpectedly | ||
179 | between polls. Choosing the right polling delays shall avoid having the | ||
180 | device in temperature ranges that may damage the silicon structures and | ||
181 | reduce silicon lifetime. | ||
182 | |||
183 | * The thermal-zones node | ||
184 | |||
185 | The "thermal-zones" node is a container for all thermal zone nodes. It shall | ||
186 | contain only sub-nodes describing thermal zones as in the section | ||
187 | "Thermal zone nodes". The "thermal-zones" node appears under "/". | ||
188 | |||
189 | * Examples | ||
190 | |||
191 | Below are several examples on how to use thermal data descriptors | ||
192 | using device tree bindings: | ||
193 | |||
194 | (a) - CPU thermal zone | ||
195 | |||
196 | The CPU thermal zone example below describes how to setup one thermal zone | ||
197 | using one single sensor as temperature source and many cooling devices and | ||
198 | power dissipation control sources. | ||
199 | |||
200 | #include <dt-bindings/thermal/thermal.h> | ||
201 | |||
202 | cpus { | ||
203 | /* | ||
204 | * Here is an example of describing a cooling device for a DVFS | ||
205 | * capable CPU. The CPU node describes its four OPPs. | ||
206 | * The cooling states possible are 0..3, and they are | ||
207 | * used as OPP indexes. The minimum cooling state is 0, which means | ||
208 | * all four OPPs can be available to the system. The maximum | ||
209 | * cooling state is 3, which means only the lowest OPPs (198MHz@0.85V) | ||
210 | * can be available in the system. | ||
211 | */ | ||
212 | cpu0: cpu@0 { | ||
213 | ... | ||
214 | operating-points = < | ||
215 | /* kHz uV */ | ||
216 | 970000 1200000 | ||
217 | 792000 1100000 | ||
218 | 396000 950000 | ||
219 | 198000 850000 | ||
220 | >; | ||
221 | cooling-min-state = <0>; | ||
222 | cooling-max-state = <3>; | ||
223 | #cooling-cells = <2>; /* min followed by max */ | ||
224 | }; | ||
225 | ... | ||
226 | }; | ||
227 | |||
228 | &i2c1 { | ||
229 | ... | ||
230 | /* | ||
231 | * A simple fan controller which supports 10 speeds of operation | ||
232 | * (represented as 0-9). | ||
233 | */ | ||
234 | fan0: fan@0x48 { | ||
235 | ... | ||
236 | cooling-min-state = <0>; | ||
237 | cooling-max-state = <9>; | ||
238 | #cooling-cells = <2>; /* min followed by max */ | ||
239 | }; | ||
240 | }; | ||
241 | |||
242 | ocp { | ||
243 | ... | ||
244 | /* | ||
245 | * A simple IC with a single bandgap temperature sensor. | ||
246 | */ | ||
247 | bandgap0: bandgap@0x0000ED00 { | ||
248 | ... | ||
249 | #thermal-sensor-cells = <0>; | ||
250 | }; | ||
251 | }; | ||
252 | |||
253 | thermal-zones { | ||
254 | cpu-thermal: cpu-thermal { | ||
255 | polling-delay-passive = <250>; /* milliseconds */ | ||
256 | polling-delay = <1000>; /* milliseconds */ | ||
257 | |||
258 | thermal-sensors = <&bandgap0>; | ||
259 | |||
260 | trips { | ||
261 | cpu-alert0: cpu-alert { | ||
262 | temperature = <90000>; /* millicelsius */ | ||
263 | hysteresis = <2000>; /* millicelsius */ | ||
264 | type = "active"; | ||
265 | }; | ||
266 | cpu-alert1: cpu-alert { | ||
267 | temperature = <100000>; /* millicelsius */ | ||
268 | hysteresis = <2000>; /* millicelsius */ | ||
269 | type = "passive"; | ||
270 | }; | ||
271 | cpu-crit: cpu-crit { | ||
272 | temperature = <125000>; /* millicelsius */ | ||
273 | hysteresis = <2000>; /* millicelsius */ | ||
274 | type = "critical"; | ||
275 | }; | ||
276 | }; | ||
277 | |||
278 | cooling-maps { | ||
279 | map0 { | ||
280 | trip = <&cpu-alert0>; | ||
281 | cooling-device = <&fan0 THERMAL_NO_LIMITS 4>; | ||
282 | }; | ||
283 | map1 { | ||
284 | trip = <&cpu-alert1>; | ||
285 | cooling-device = <&fan0 5 THERMAL_NO_LIMITS>; | ||
286 | }; | ||
287 | map2 { | ||
288 | trip = <&cpu-alert1>; | ||
289 | cooling-device = | ||
290 | <&cpu0 THERMAL_NO_LIMITS THERMAL_NO_LIMITS>; | ||
291 | }; | ||
292 | }; | ||
293 | }; | ||
294 | }; | ||
295 | |||
296 | In the example above, the ADC sensor (bandgap0) at address 0x0000ED00 is | ||
297 | used to monitor the zone 'cpu-thermal' using its sole sensor. A fan | ||
298 | device (fan0) is controlled via I2C bus 1, at address 0x48, and has ten | ||
299 | different cooling states 0-9. It is used to remove the heat out of | ||
300 | the thermal zone 'cpu-thermal' using its cooling states | ||
301 | from its minimum to 4, when it reaches trip point 'cpu-alert0' | ||
302 | at 90C, as an example of active cooling. The same cooling device is used at | ||
303 | 'cpu-alert1', but from 5 to its maximum state. The cpu@0 device is also | ||
304 | linked to the same thermal zone, 'cpu-thermal', as a passive cooling device, | ||
305 | using all its cooling states at trip point 'cpu-alert1', | ||
306 | which is a trip point at 100C. On the thermal zone 'cpu-thermal', at the | ||
307 | temperature of 125C, represented by the trip point 'cpu-crit', the silicon | ||
308 | is not reliable anymore. | ||
309 | |||
310 | (b) - IC with several internal sensors | ||
311 | |||
312 | The example below describes how to deploy several thermal zones based off a | ||
313 | single sensor IC, assuming it has several internal sensors. This is a common | ||
314 | case on SoC designs with several internal IPs that may need different thermal | ||
315 | requirements, and thus may have their own sensor to monitor or detect internal | ||
316 | hotspots in their silicon. | ||
317 | |||
318 | #include <dt-bindings/thermal/thermal.h> | ||
319 | |||
320 | ocp { | ||
321 | ... | ||
322 | /* | ||
323 | * A simple IC with several bandgap temperature sensors. | ||
324 | */ | ||
325 | bandgap0: bandgap@0x0000ED00 { | ||
326 | ... | ||
327 | #thermal-sensor-cells = <1>; | ||
328 | }; | ||
329 | }; | ||
330 | |||
331 | thermal-zones { | ||
332 | cpu-thermal: cpu-thermal { | ||
333 | polling-delay-passive = <250>; /* milliseconds */ | ||
334 | polling-delay = <1000>; /* milliseconds */ | ||
335 | |||
336 | /* sensor ID */ | ||
337 | thermal-sensors = <&bandgap0 0>; | ||
338 | |||
339 | trips { | ||
340 | /* each zone within the SoC may have its own trips */ | ||
341 | cpu-alert: cpu-alert { | ||
342 | temperature = <100000>; /* millicelsius */ | ||
343 | hysteresis = <2000>; /* millicelsius */ | ||
344 | type = "passive"; | ||
345 | }; | ||
346 | cpu-crit: cpu-crit { | ||
347 | temperature = <125000>; /* millicelsius */ | ||
348 | hysteresis = <2000>; /* millicelsius */ | ||
349 | type = "critical"; | ||
350 | }; | ||
351 | }; | ||
352 | |||
353 | cooling-maps { | ||
354 | /* each zone within the SoC may have its own cooling */ | ||
355 | ... | ||
356 | }; | ||
357 | }; | ||
358 | |||
359 | gpu-thermal: gpu-thermal { | ||
360 | polling-delay-passive = <120>; /* milliseconds */ | ||
361 | polling-delay = <1000>; /* milliseconds */ | ||
362 | |||
363 | /* sensor ID */ | ||
364 | thermal-sensors = <&bandgap0 1>; | ||
365 | |||
366 | trips { | ||
367 | /* each zone within the SoC may have its own trips */ | ||
368 | gpu-alert: gpu-alert { | ||
369 | temperature = <90000>; /* millicelsius */ | ||
370 | hysteresis = <2000>; /* millicelsius */ | ||
371 | type = "passive"; | ||
372 | }; | ||
373 | gpu-crit: gpu-crit { | ||
374 | temperature = <105000>; /* millicelsius */ | ||
375 | hysteresis = <2000>; /* millicelsius */ | ||
376 | type = "critical"; | ||
377 | }; | ||
378 | }; | ||
379 | |||
380 | cooling-maps { | ||
381 | /* each zone within the SoC may have its own cooling */ | ||
382 | ... | ||
383 | }; | ||
384 | }; | ||
385 | |||
386 | dsp-thermal: dsp-thermal { | ||
387 | polling-delay-passive = <50>; /* milliseconds */ | ||
388 | polling-delay = <1000>; /* milliseconds */ | ||
389 | |||
390 | /* sensor ID */ | ||
391 | thermal-sensors = <&bandgap0 2>; | ||
392 | |||
393 | trips { | ||
394 | /* each zone within the SoC may have its own trips */ | ||
395 | dsp-alert: gpu-alert { | ||
396 | temperature = <90000>; /* millicelsius */ | ||
397 | hysteresis = <2000>; /* millicelsius */ | ||
398 | type = "passive"; | ||
399 | }; | ||
400 | dsp-crit: gpu-crit { | ||
401 | temperature = <135000>; /* millicelsius */ | ||
402 | hysteresis = <2000>; /* millicelsius */ | ||
403 | type = "critical"; | ||
404 | }; | ||
405 | }; | ||
406 | |||
407 | cooling-maps { | ||
408 | /* each zone within the SoC may have its own cooling */ | ||
409 | ... | ||
410 | }; | ||
411 | }; | ||
412 | }; | ||
413 | |||
414 | In the example above, there is one bandgap IC which has the capability to | ||
415 | monitor three sensors. The hardware has been designed so that sensors are | ||
416 | placed on different places in the DIE to monitor different temperature | ||
417 | hotspots: one for CPU thermal zone, one for GPU thermal zone and the | ||
418 | other to monitor a DSP thermal zone. | ||
419 | |||
420 | Thus, there is a need to assign each sensor provided by the bandgap IC | ||
421 | to different thermal zones. This is achieved by means of using the | ||
422 | #thermal-sensor-cells property and using the first cell of the sensor | ||
423 | specifier as sensor ID. In the example, then, <bandgap 0> is used to | ||
424 | monitor CPU thermal zone, <bandgap 1> is used to monitor GPU thermal | ||
425 | zone and <bandgap 2> is used to monitor DSP thermal zone. Each zone | ||
426 | may be uncorrelated, having its own dT/dt requirements, trips | ||
427 | and cooling maps. | ||
428 | |||
429 | |||
430 | (c) - Several sensors within one single thermal zone | ||
431 | |||
432 | The example below illustrates how to use more than one sensor within | ||
433 | one thermal zone. | ||
434 | |||
435 | #include <dt-bindings/thermal/thermal.h> | ||
436 | |||
437 | &i2c1 { | ||
438 | ... | ||
439 | /* | ||
440 | * A simple IC with a single temperature sensor. | ||
441 | */ | ||
442 | adc: sensor@0x49 { | ||
443 | ... | ||
444 | #thermal-sensor-cells = <0>; | ||
445 | }; | ||
446 | }; | ||
447 | |||
448 | ocp { | ||
449 | ... | ||
450 | /* | ||
451 | * A simple IC with a single bandgap temperature sensor. | ||
452 | */ | ||
453 | bandgap0: bandgap@0x0000ED00 { | ||
454 | ... | ||
455 | #thermal-sensor-cells = <0>; | ||
456 | }; | ||
457 | }; | ||
458 | |||
459 | thermal-zones { | ||
460 | cpu-thermal: cpu-thermal { | ||
461 | polling-delay-passive = <250>; /* milliseconds */ | ||
462 | polling-delay = <1000>; /* milliseconds */ | ||
463 | |||
464 | thermal-sensors = <&bandgap0>, /* cpu */ | ||
465 | <&adc>; /* pcb north */ | ||
466 | |||
467 | /* hotspot = 100 * bandgap - 120 * adc + 484 */ | ||
468 | coefficients = <100 -120 484>; | ||
469 | |||
470 | trips { | ||
471 | ... | ||
472 | }; | ||
473 | |||
474 | cooling-maps { | ||
475 | ... | ||
476 | }; | ||
477 | }; | ||
478 | }; | ||
479 | |||
480 | In some cases, there is a need to use more than one sensor to extrapolate | ||
481 | a thermal hotspot in the silicon. The above example illustrates this situation. | ||
482 | For instance, it may be the case that a sensor external to CPU IP may be placed | ||
483 | close to CPU hotspot and together with internal CPU sensor, it is used | ||
484 | to determine the hotspot. Assuming this is the case for the above example, | ||
485 | the hypothetical extrapolation rule would be: | ||
486 | hotspot = 100 * bandgap - 120 * adc + 484 | ||
487 | |||
488 | In other context, the same idea can be used to add fixed offset. For instance, | ||
489 | consider the hotspot extrapolation rule below: | ||
490 | hotspot = 1 * adc + 6000 | ||
491 | |||
492 | In the above equation, the hotspot is always 6C higher than what is read | ||
493 | from the ADC sensor. The binding would be then: | ||
494 | thermal-sensors = <&adc>; | ||
495 | |||
496 | /* hotspot = 1 * adc + 6000 */ | ||
497 | coefficients = <1 6000>; | ||
498 | |||
499 | (d) - Board thermal | ||
500 | |||
501 | The board thermal example below illustrates how to setup one thermal zone | ||
502 | with many sensors and many cooling devices. | ||
503 | |||
504 | #include <dt-bindings/thermal/thermal.h> | ||
505 | |||
506 | &i2c1 { | ||
507 | ... | ||
508 | /* | ||
509 | * An IC with several temperature sensor. | ||
510 | */ | ||
511 | adc-dummy: sensor@0x50 { | ||
512 | ... | ||
513 | #thermal-sensor-cells = <1>; /* sensor internal ID */ | ||
514 | }; | ||
515 | }; | ||
516 | |||
517 | thermal-zones { | ||
518 | batt-thermal { | ||
519 | polling-delay-passive = <500>; /* milliseconds */ | ||
520 | polling-delay = <2500>; /* milliseconds */ | ||
521 | |||
522 | /* sensor ID */ | ||
523 | thermal-sensors = <&adc-dummy 4>; | ||
524 | |||
525 | trips { | ||
526 | ... | ||
527 | }; | ||
528 | |||
529 | cooling-maps { | ||
530 | ... | ||
531 | }; | ||
532 | }; | ||
533 | |||
534 | board-thermal: board-thermal { | ||
535 | polling-delay-passive = <1000>; /* milliseconds */ | ||
536 | polling-delay = <2500>; /* milliseconds */ | ||
537 | |||
538 | /* sensor ID */ | ||
539 | thermal-sensors = <&adc-dummy 0>, /* pcb top edge */ | ||
540 | <&adc-dummy 1>, /* lcd */ | ||
541 | <&adc-dymmy 2>; /* back cover */ | ||
542 | /* | ||
543 | * An array of coefficients describing the sensor | ||
544 | * linear relation. E.g.: | ||
545 | * z = c1*x1 + c2*x2 + c3*x3 | ||
546 | */ | ||
547 | coefficients = <1200 -345 890>; | ||
548 | |||
549 | trips { | ||
550 | /* Trips are based on resulting linear equation */ | ||
551 | cpu-trip: cpu-trip { | ||
552 | temperature = <60000>; /* millicelsius */ | ||
553 | hysteresis = <2000>; /* millicelsius */ | ||
554 | type = "passive"; | ||
555 | }; | ||
556 | gpu-trip: gpu-trip { | ||
557 | temperature = <55000>; /* millicelsius */ | ||
558 | hysteresis = <2000>; /* millicelsius */ | ||
559 | type = "passive"; | ||
560 | } | ||
561 | lcd-trip: lcp-trip { | ||
562 | temperature = <53000>; /* millicelsius */ | ||
563 | hysteresis = <2000>; /* millicelsius */ | ||
564 | type = "passive"; | ||
565 | }; | ||
566 | crit-trip: crit-trip { | ||
567 | temperature = <68000>; /* millicelsius */ | ||
568 | hysteresis = <2000>; /* millicelsius */ | ||
569 | type = "critical"; | ||
570 | }; | ||
571 | }; | ||
572 | |||
573 | cooling-maps { | ||
574 | map0 { | ||
575 | trip = <&cpu-trip>; | ||
576 | cooling-device = <&cpu0 0 2>; | ||
577 | contribution = <55>; | ||
578 | }; | ||
579 | map1 { | ||
580 | trip = <&gpu-trip>; | ||
581 | cooling-device = <&gpu0 0 2>; | ||
582 | contribution = <20>; | ||
583 | }; | ||
584 | map2 { | ||
585 | trip = <&lcd-trip>; | ||
586 | cooling-device = <&lcd0 5 10>; | ||
587 | contribution = <15>; | ||
588 | }; | ||
589 | }; | ||
590 | }; | ||
591 | }; | ||
592 | |||
593 | The above example is a mix of previous examples, a sensor IP with several internal | ||
594 | sensors used to monitor different zones, one of them is composed by several sensors and | ||
595 | with different cooling devices. | ||
diff --git a/Documentation/devicetree/bindings/timer/nvidia,tegra20-timer.txt b/Documentation/devicetree/bindings/timer/nvidia,tegra20-timer.txt index e019fdc38773..4a864bd10d3d 100644 --- a/Documentation/devicetree/bindings/timer/nvidia,tegra20-timer.txt +++ b/Documentation/devicetree/bindings/timer/nvidia,tegra20-timer.txt | |||
@@ -8,6 +8,8 @@ Required properties: | |||
8 | - compatible : should be "nvidia,tegra20-timer". | 8 | - compatible : should be "nvidia,tegra20-timer". |
9 | - reg : Specifies base physical address and size of the registers. | 9 | - reg : Specifies base physical address and size of the registers. |
10 | - interrupts : A list of 4 interrupts; one per timer channel. | 10 | - interrupts : A list of 4 interrupts; one per timer channel. |
11 | - clocks : Must contain one entry, for the module clock. | ||
12 | See ../clocks/clock-bindings.txt for details. | ||
11 | 13 | ||
12 | Example: | 14 | Example: |
13 | 15 | ||
@@ -18,4 +20,5 @@ timer { | |||
18 | 0 1 0x04 | 20 | 0 1 0x04 |
19 | 0 41 0x04 | 21 | 0 41 0x04 |
20 | 0 42 0x04>; | 22 | 0 42 0x04>; |
23 | clocks = <&tegra_car 132>; | ||
21 | }; | 24 | }; |
diff --git a/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt b/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt index 906109d4c593..b5082a1cf461 100644 --- a/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt +++ b/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt | |||
@@ -10,6 +10,8 @@ Required properties: | |||
10 | - reg : Specifies base physical address and size of the registers. | 10 | - reg : Specifies base physical address and size of the registers. |
11 | - interrupts : A list of 6 interrupts; one per each of timer channels 1 | 11 | - interrupts : A list of 6 interrupts; one per each of timer channels 1 |
12 | through 5, and one for the shared interrupt for the remaining channels. | 12 | through 5, and one for the shared interrupt for the remaining channels. |
13 | - clocks : Must contain one entry, for the module clock. | ||
14 | See ../clocks/clock-bindings.txt for details. | ||
13 | 15 | ||
14 | timer { | 16 | timer { |
15 | compatible = "nvidia,tegra30-timer", "nvidia,tegra20-timer"; | 17 | compatible = "nvidia,tegra30-timer", "nvidia,tegra20-timer"; |
@@ -20,4 +22,5 @@ timer { | |||
20 | 0 42 0x04 | 22 | 0 42 0x04 |
21 | 0 121 0x04 | 23 | 0 121 0x04 |
22 | 0 122 0x04>; | 24 | 0 122 0x04>; |
25 | clocks = <&tegra_car 214>; | ||
23 | }; | 26 | }; |
diff --git a/Documentation/devicetree/bindings/timer/samsung,exynos4210-mct.txt b/Documentation/devicetree/bindings/timer/samsung,exynos4210-mct.txt index b5a86d20ee36..167d5dab9f64 100644 --- a/Documentation/devicetree/bindings/timer/samsung,exynos4210-mct.txt +++ b/Documentation/devicetree/bindings/timer/samsung,exynos4210-mct.txt | |||
@@ -31,38 +31,58 @@ Required properties: | |||
31 | 7: .. | 31 | 7: .. |
32 | i: Local Timer Interrupt n | 32 | i: Local Timer Interrupt n |
33 | 33 | ||
34 | Example 1: In this example, the system uses only the first global timer | 34 | For MCT block that uses a per-processor interrupt for local timers, such |
35 | interrupt generated by MCT and the remaining three global timer | 35 | as ones compatible with "samsung,exynos4412-mct", only one local timer |
36 | interrupts are unused. Two local timer interrupts have been | 36 | interrupt might be specified, meaning that all local timers use the same |
37 | specified. | 37 | per processor interrupt. |
38 | |||
39 | Example 1: In this example, the IP contains two local timers, using separate | ||
40 | interrupts, so two local timer interrupts have been specified, | ||
41 | in addition to four global timer interrupts. | ||
38 | 42 | ||
39 | mct@10050000 { | 43 | mct@10050000 { |
40 | compatible = "samsung,exynos4210-mct"; | 44 | compatible = "samsung,exynos4210-mct"; |
41 | reg = <0x10050000 0x800>; | 45 | reg = <0x10050000 0x800>; |
42 | interrupts = <0 57 0>, <0 0 0>, <0 0 0>, <0 0 0>, | 46 | interrupts = <0 57 0>, <0 69 0>, <0 70 0>, <0 71 0>, |
43 | <0 42 0>, <0 48 0>; | 47 | <0 42 0>, <0 48 0>; |
44 | }; | 48 | }; |
45 | 49 | ||
46 | Example 2: In this example, the MCT global and local timer interrupts are | 50 | Example 2: In this example, the timer interrupts are connected to two separate |
47 | connected to two separate interrupt controllers. Hence, an | 51 | interrupt controllers. Hence, an interrupt-map is created to map |
48 | interrupt-map is created to map the interrupts to the respective | 52 | the interrupts to the respective interrupt controllers. |
49 | interrupt controllers. | ||
50 | 53 | ||
51 | mct@101C0000 { | 54 | mct@101C0000 { |
52 | compatible = "samsung,exynos4210-mct"; | 55 | compatible = "samsung,exynos4210-mct"; |
53 | reg = <0x101C0000 0x800>; | 56 | reg = <0x101C0000 0x800>; |
54 | interrupt-controller; | ||
55 | #interrups-cells = <2>; | ||
56 | interrupt-parent = <&mct_map>; | 57 | interrupt-parent = <&mct_map>; |
57 | interrupts = <0 0>, <1 0>, <2 0>, <3 0>, | 58 | interrupts = <0>, <1>, <2>, <3>, <4>, <5>; |
58 | <4 0>, <5 0>; | ||
59 | 59 | ||
60 | mct_map: mct-map { | 60 | mct_map: mct-map { |
61 | #interrupt-cells = <2>; | 61 | #interrupt-cells = <1>; |
62 | #address-cells = <0>; | 62 | #address-cells = <0>; |
63 | #size-cells = <0>; | 63 | #size-cells = <0>; |
64 | interrupt-map = <0x0 0 &combiner 23 3>, | 64 | interrupt-map = <0 &gic 0 57 0>, |
65 | <0x4 0 &gic 0 120 0>, | 65 | <1 &gic 0 69 0>, |
66 | <0x5 0 &gic 0 121 0>; | 66 | <2 &combiner 12 6>, |
67 | <3 &combiner 12 7>, | ||
68 | <4 &gic 0 42 0>, | ||
69 | <5 &gic 0 48 0>; | ||
67 | }; | 70 | }; |
68 | }; | 71 | }; |
72 | |||
73 | Example 3: In this example, the IP contains four local timers, but using | ||
74 | a per-processor interrupt to handle them. Either all the local | ||
75 | timer interrupts can be specified, with the same interrupt specifier | ||
76 | value or just the first one. | ||
77 | |||
78 | mct@10050000 { | ||
79 | compatible = "samsung,exynos4412-mct"; | ||
80 | reg = <0x10050000 0x800>; | ||
81 | |||
82 | /* Both ways are possible in this case. Either: */ | ||
83 | interrupts = <0 57 0>, <0 69 0>, <0 70 0>, <0 71 0>, | ||
84 | <0 42 0>; | ||
85 | /* or: */ | ||
86 | interrupts = <0 57 0>, <0 69 0>, <0 70 0>, <0 71 0>, | ||
87 | <0 42 0>, <0 42 0>, <0 42 0>, <0 42 0>; | ||
88 | }; | ||
diff --git a/Documentation/devicetree/bindings/usb/ci13xxx-imx.txt b/Documentation/devicetree/bindings/usb/ci-hdrc-imx.txt index b4b5b7906c88..b4b5b7906c88 100644 --- a/Documentation/devicetree/bindings/usb/ci13xxx-imx.txt +++ b/Documentation/devicetree/bindings/usb/ci-hdrc-imx.txt | |||
diff --git a/Documentation/devicetree/bindings/usb/dwc2.txt b/Documentation/devicetree/bindings/usb/dwc2.txt new file mode 100644 index 000000000000..b8b6871f116f --- /dev/null +++ b/Documentation/devicetree/bindings/usb/dwc2.txt | |||
@@ -0,0 +1,29 @@ | |||
1 | Platform DesignWare HS OTG USB 2.0 controller | ||
2 | ----------------------------------------------------- | ||
3 | |||
4 | Required properties: | ||
5 | - compatible : One of: | ||
6 | - brcm,bcm2835-usb: The DWC2 USB controller instance in the BCM2835 SoC. | ||
7 | - snps,dwc2: A generic DWC2 USB controller with default parameters. | ||
8 | - reg : Should contain 1 register range (address and length) | ||
9 | - interrupts : Should contain 1 interrupt | ||
10 | - clocks: clock provider specifier | ||
11 | - clock-names: shall be "otg" | ||
12 | Refer to clk/clock-bindings.txt for generic clock consumer properties | ||
13 | |||
14 | Optional properties: | ||
15 | - phys: phy provider specifier | ||
16 | - phy-names: shall be "device" | ||
17 | Refer to phy/phy-bindings.txt for generic phy consumer properties | ||
18 | |||
19 | Example: | ||
20 | |||
21 | usb@101c0000 { | ||
22 | compatible = "ralink,rt3050-usb, snps,dwc2"; | ||
23 | reg = <0x101c0000 40000>; | ||
24 | interrupts = <18>; | ||
25 | clocks = <&usb_otg_ahb_clk>; | ||
26 | clock-names = "otg"; | ||
27 | phys = <&usbphy>; | ||
28 | phy-names = "usb2-phy"; | ||
29 | }; | ||
diff --git a/Documentation/devicetree/bindings/usb/gr-udc.txt b/Documentation/devicetree/bindings/usb/gr-udc.txt new file mode 100644 index 000000000000..0c5118f7a916 --- /dev/null +++ b/Documentation/devicetree/bindings/usb/gr-udc.txt | |||
@@ -0,0 +1,28 @@ | |||
1 | USB Peripheral Controller driver for Aeroflex Gaisler GRUSBDC. | ||
2 | |||
3 | The GRUSBDC USB Device Controller core is available in the GRLIB VHDL | ||
4 | IP core library. | ||
5 | |||
6 | Note: In the ordinary environment for the core, a Leon SPARC system, | ||
7 | these properties are built from information in the AMBA plug&play. | ||
8 | |||
9 | Required properties: | ||
10 | |||
11 | - name : Should be "GAISLER_USBDC" or "01_021" | ||
12 | |||
13 | - reg : Address and length of the register set for the device | ||
14 | |||
15 | - interrupts : Interrupt numbers for this device | ||
16 | |||
17 | Optional properties: | ||
18 | |||
19 | - epobufsizes : An array of buffer sizes for OUT endpoints. If the property is | ||
20 | not present, or for endpoints outside of the array, 1024 is assumed by | ||
21 | the driver. | ||
22 | |||
23 | - epibufsizes : An array of buffer sizes for IN endpoints. If the property is | ||
24 | not present, or for endpoints outside of the array, 1024 is assumed by | ||
25 | the driver. | ||
26 | |||
27 | For further information look in the documentation for the GLIB IP core library: | ||
28 | http://www.gaisler.com/products/grlib/grip.pdf | ||
diff --git a/Documentation/devicetree/bindings/usb/keystone-phy.txt b/Documentation/devicetree/bindings/usb/keystone-phy.txt new file mode 100644 index 000000000000..f37b3a86341d --- /dev/null +++ b/Documentation/devicetree/bindings/usb/keystone-phy.txt | |||
@@ -0,0 +1,20 @@ | |||
1 | TI Keystone USB PHY | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: should be "ti,keystone-usbphy". | ||
5 | - #address-cells, #size-cells : should be '1' if the device has sub-nodes | ||
6 | with 'reg' property. | ||
7 | - reg : Address and length of the usb phy control register set. | ||
8 | |||
9 | The main purpose of this PHY driver is to enable the USB PHY reference clock | ||
10 | gate on the Keystone SOC for both the USB2 and USB3 PHY. Otherwise it is just | ||
11 | an NOP PHY driver. Hence this node is referenced as both the usb2 and usb3 | ||
12 | phy node in the USB Glue layer driver node. | ||
13 | |||
14 | usb_phy: usb_phy@2620738 { | ||
15 | compatible = "ti,keystone-usbphy"; | ||
16 | #address-cells = <1>; | ||
17 | #size-cells = <1>; | ||
18 | reg = <0x2620738 32>; | ||
19 | status = "disabled"; | ||
20 | }; | ||
diff --git a/Documentation/devicetree/bindings/usb/keystone-usb.txt b/Documentation/devicetree/bindings/usb/keystone-usb.txt new file mode 100644 index 000000000000..60527d335b58 --- /dev/null +++ b/Documentation/devicetree/bindings/usb/keystone-usb.txt | |||
@@ -0,0 +1,42 @@ | |||
1 | TI Keystone Soc USB Controller | ||
2 | |||
3 | DWC3 GLUE | ||
4 | |||
5 | Required properties: | ||
6 | - compatible: should be "ti,keystone-dwc3". | ||
7 | - #address-cells, #size-cells : should be '1' if the device has sub-nodes | ||
8 | with 'reg' property. | ||
9 | - reg : Address and length of the register set for the USB subsystem on | ||
10 | the SOC. | ||
11 | - interrupts : The irq number of this device that is used to interrupt the | ||
12 | MPU. | ||
13 | - ranges: allows valid 1:1 translation between child's address space and | ||
14 | parent's address space. | ||
15 | - clocks: Clock IDs array as required by the controller. | ||
16 | - clock-names: names of clocks correseponding to IDs in the clock property. | ||
17 | |||
18 | Sub-nodes: | ||
19 | The dwc3 core should be added as subnode to Keystone DWC3 glue. | ||
20 | - dwc3 : | ||
21 | The binding details of dwc3 can be found in: | ||
22 | Documentation/devicetree/bindings/usb/dwc3.txt | ||
23 | |||
24 | Example: | ||
25 | usb: usb@2680000 { | ||
26 | compatible = "ti,keystone-dwc3"; | ||
27 | #address-cells = <1>; | ||
28 | #size-cells = <1>; | ||
29 | reg = <0x2680000 0x10000>; | ||
30 | clocks = <&clkusb>; | ||
31 | clock-names = "usb"; | ||
32 | interrupts = <GIC_SPI 393 IRQ_TYPE_EDGE_RISING>; | ||
33 | ranges; | ||
34 | status = "disabled"; | ||
35 | |||
36 | dwc3@2690000 { | ||
37 | compatible = "synopsys,dwc3"; | ||
38 | reg = <0x2690000 0x70000>; | ||
39 | interrupts = <GIC_SPI 393 IRQ_TYPE_EDGE_RISING>; | ||
40 | usb-phy = <&usb_phy>, <&usb_phy>; | ||
41 | }; | ||
42 | }; | ||
diff --git a/Documentation/devicetree/bindings/usb/nvidia,tegra20-ehci.txt b/Documentation/devicetree/bindings/usb/nvidia,tegra20-ehci.txt index df0933043a5b..3dc9140e3dfb 100644 --- a/Documentation/devicetree/bindings/usb/nvidia,tegra20-ehci.txt +++ b/Documentation/devicetree/bindings/usb/nvidia,tegra20-ehci.txt | |||
@@ -8,7 +8,12 @@ and additions : | |||
8 | Required properties : | 8 | Required properties : |
9 | - compatible : Should be "nvidia,tegra20-ehci". | 9 | - compatible : Should be "nvidia,tegra20-ehci". |
10 | - nvidia,phy : phandle of the PHY that the controller is connected to. | 10 | - nvidia,phy : phandle of the PHY that the controller is connected to. |
11 | - clocks : Contains a single entry which defines the USB controller's clock. | 11 | - clocks : Must contain one entry, for the module clock. |
12 | See ../clocks/clock-bindings.txt for details. | ||
13 | - resets : Must contain an entry for each entry in reset-names. | ||
14 | See ../reset/reset.txt for details. | ||
15 | - reset-names : Must include the following entries: | ||
16 | - usb | ||
12 | 17 | ||
13 | Optional properties: | 18 | Optional properties: |
14 | - nvidia,needs-double-reset : boolean is to be set for some of the Tegra20 | 19 | - nvidia,needs-double-reset : boolean is to be set for some of the Tegra20 |
diff --git a/Documentation/devicetree/bindings/usb/omap-usb.txt b/Documentation/devicetree/bindings/usb/omap-usb.txt index 090e5e22bd2b..c495135115cb 100644 --- a/Documentation/devicetree/bindings/usb/omap-usb.txt +++ b/Documentation/devicetree/bindings/usb/omap-usb.txt | |||
@@ -87,6 +87,8 @@ Required properties: | |||
87 | e.g. USB3 PHY and SATA PHY on OMAP5. | 87 | e.g. USB3 PHY and SATA PHY on OMAP5. |
88 | "ti,control-phy-dra7usb2" - if it has power down register like USB2 PHY on | 88 | "ti,control-phy-dra7usb2" - if it has power down register like USB2 PHY on |
89 | DRA7 platform. | 89 | DRA7 platform. |
90 | "ti,control-phy-am437usb2" - if it has power down register like USB2 PHY on | ||
91 | AM437 platform. | ||
90 | - reg : Address and length of the register set for the device. It contains | 92 | - reg : Address and length of the register set for the device. It contains |
91 | the address of "otghs_control" for control-phy-otghs or "power" register | 93 | the address of "otghs_control" for control-phy-otghs or "power" register |
92 | for other types. | 94 | for other types. |
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt index edbb8d88c85e..3f900cd51bf0 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.txt +++ b/Documentation/devicetree/bindings/vendor-prefixes.txt | |||
@@ -3,12 +3,14 @@ Device tree binding vendor prefix registry. Keep list in alphabetical order. | |||
3 | This isn't an exhaustive list, but you should add new prefixes to it before | 3 | This isn't an exhaustive list, but you should add new prefixes to it before |
4 | using them to avoid name-space collisions. | 4 | using them to avoid name-space collisions. |
5 | 5 | ||
6 | active-semi Active-Semi International Inc | ||
6 | ad Avionic Design GmbH | 7 | ad Avionic Design GmbH |
7 | adi Analog Devices, Inc. | 8 | adi Analog Devices, Inc. |
8 | aeroflexgaisler Aeroflex Gaisler AB | 9 | aeroflexgaisler Aeroflex Gaisler AB |
9 | ak Asahi Kasei Corp. | 10 | ak Asahi Kasei Corp. |
10 | altr Altera Corp. | 11 | altr Altera Corp. |
11 | amcc Applied Micro Circuits Corporation (APM, formally AMCC) | 12 | amcc Applied Micro Circuits Corporation (APM, formally AMCC) |
13 | amstaos AMS-Taos Inc. | ||
12 | apm Applied Micro Circuits Corporation (APM) | 14 | apm Applied Micro Circuits Corporation (APM) |
13 | arm ARM Ltd. | 15 | arm ARM Ltd. |
14 | atmel Atmel Corporation | 16 | atmel Atmel Corporation |
@@ -26,19 +28,25 @@ cortina Cortina Systems, Inc. | |||
26 | dallas Maxim Integrated Products (formerly Dallas Semiconductor) | 28 | dallas Maxim Integrated Products (formerly Dallas Semiconductor) |
27 | davicom DAVICOM Semiconductor, Inc. | 29 | davicom DAVICOM Semiconductor, Inc. |
28 | denx Denx Software Engineering | 30 | denx Denx Software Engineering |
31 | edt Emerging Display Technologies | ||
29 | emmicro EM Microelectronic | 32 | emmicro EM Microelectronic |
33 | epfl Ecole Polytechnique Fédérale de Lausanne | ||
30 | epson Seiko Epson Corp. | 34 | epson Seiko Epson Corp. |
31 | est ESTeem Wireless Modems | 35 | est ESTeem Wireless Modems |
32 | fsl Freescale Semiconductor | 36 | fsl Freescale Semiconductor |
33 | GEFanuc GE Fanuc Intelligent Platforms Embedded Systems, Inc. | 37 | GEFanuc GE Fanuc Intelligent Platforms Embedded Systems, Inc. |
34 | gef GE Fanuc Intelligent Platforms Embedded Systems, Inc. | 38 | gef GE Fanuc Intelligent Platforms Embedded Systems, Inc. |
35 | gmt Global Mixed-mode Technology, Inc. | 39 | gmt Global Mixed-mode Technology, Inc. |
40 | gumstix Gumstix, Inc. | ||
41 | haoyu Haoyu Microelectronic Co. Ltd. | ||
36 | hisilicon Hisilicon Limited. | 42 | hisilicon Hisilicon Limited. |
37 | hp Hewlett Packard | 43 | hp Hewlett Packard |
38 | ibm International Business Machines (IBM) | 44 | ibm International Business Machines (IBM) |
39 | idt Integrated Device Technologies, Inc. | 45 | idt Integrated Device Technologies, Inc. |
40 | img Imagination Technologies Ltd. | 46 | img Imagination Technologies Ltd. |
41 | intercontrol Inter Control Group | 47 | intercontrol Inter Control Group |
48 | isl Intersil | ||
49 | karo Ka-Ro electronics GmbH | ||
42 | lg LG Corporation | 50 | lg LG Corporation |
43 | linux Linux-specific binding | 51 | linux Linux-specific binding |
44 | lsi LSI Corp. (LSI Logic) | 52 | lsi LSI Corp. (LSI Logic) |
@@ -61,6 +69,7 @@ ralink Mediatek/Ralink Technology Corp. | |||
61 | ramtron Ramtron International | 69 | ramtron Ramtron International |
62 | realtek Realtek Semiconductor Corp. | 70 | realtek Realtek Semiconductor Corp. |
63 | renesas Renesas Electronics Corporation | 71 | renesas Renesas Electronics Corporation |
72 | rockchip Fuzhou Rockchip Electronics Co., Ltd | ||
64 | samsung Samsung Semiconductor | 73 | samsung Samsung Semiconductor |
65 | sbs Smart Battery System | 74 | sbs Smart Battery System |
66 | schindler Schindler | 75 | schindler Schindler |
@@ -73,6 +82,7 @@ st STMicroelectronics | |||
73 | ste ST-Ericsson | 82 | ste ST-Ericsson |
74 | stericsson ST-Ericsson | 83 | stericsson ST-Ericsson |
75 | ti Texas Instruments | 84 | ti Texas Instruments |
85 | tlm Trusted Logic Mobility | ||
76 | toshiba Toshiba Corporation | 86 | toshiba Toshiba Corporation |
77 | toumaz Toumaz | 87 | toumaz Toumaz |
78 | v3 V3 Semiconductor | 88 | v3 V3 Semiconductor |
diff --git a/Documentation/devicetree/bindings/video/ssd1289fb.txt b/Documentation/devicetree/bindings/video/ssd1289fb.txt new file mode 100644 index 000000000000..4fcd5e68cb6e --- /dev/null +++ b/Documentation/devicetree/bindings/video/ssd1289fb.txt | |||
@@ -0,0 +1,13 @@ | |||
1 | * Solomon SSD1289 Framebuffer Driver | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be "solomon,ssd1289fb". The only supported bus for | ||
5 | now is lbc. | ||
6 | - reg: Should contain address of the controller on the LBC bus. The detail | ||
7 | was described in Documentation/devicetree/bindings/powerpc/fsl/lbc.txt | ||
8 | |||
9 | Examples: | ||
10 | display@2,0 { | ||
11 | compatible = "solomon,ssd1289fb"; | ||
12 | reg = <0x2 0x0000 0x0004>; | ||
13 | }; | ||
diff --git a/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt b/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt index fcdd48f7dcff..f90e294d7631 100644 --- a/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt +++ b/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt | |||
@@ -9,11 +9,37 @@ Required properties: | |||
9 | 9 | ||
10 | Optional properties: | 10 | Optional properties: |
11 | - timeout-sec: contains the watchdog timeout in seconds. | 11 | - timeout-sec: contains the watchdog timeout in seconds. |
12 | - interrupts : Should contain WDT interrupt. | ||
13 | - atmel,max-heartbeat-sec : Should contain the maximum heartbeat value in | ||
14 | seconds. This value should be less or equal to 16. It is used to | ||
15 | compute the WDV field. | ||
16 | - atmel,min-heartbeat-sec : Should contain the minimum heartbeat value in | ||
17 | seconds. This value must be smaller than the max-heartbeat-sec value. | ||
18 | It is used to compute the WDD field. | ||
19 | - atmel,watchdog-type : Should be "hardware" or "software". Hardware watchdog | ||
20 | use the at91 watchdog reset. Software watchdog use the watchdog | ||
21 | interrupt to trigger a software reset. | ||
22 | - atmel,reset-type : Should be "proc" or "all". | ||
23 | "all" : assert peripherals and processor reset signals | ||
24 | "proc" : assert the processor reset signal | ||
25 | This is valid only when using "hardware" watchdog. | ||
26 | - atmel,disable : Should be present if you want to disable the watchdog. | ||
27 | - atmel,idle-halt : Should be present if you want to stop the watchdog when | ||
28 | entering idle state. | ||
29 | - atmel,dbg-halt : Should be present if you want to stop the watchdog when | ||
30 | entering debug state. | ||
12 | 31 | ||
13 | Example: | 32 | Example: |
14 | |||
15 | watchdog@fffffd40 { | 33 | watchdog@fffffd40 { |
16 | compatible = "atmel,at91sam9260-wdt"; | 34 | compatible = "atmel,at91sam9260-wdt"; |
17 | reg = <0xfffffd40 0x10>; | 35 | reg = <0xfffffd40 0x10>; |
18 | timeout-sec = <10>; | 36 | interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>; |
37 | timeout-sec = <15>; | ||
38 | atmel,watchdog-type = "hardware"; | ||
39 | atmel,reset-type = "all"; | ||
40 | atmel,dbg-halt; | ||
41 | atmel,idle-halt; | ||
42 | atmel,max-heartbeat-sec = <16>; | ||
43 | atmel,min-heartbeat-sec = <0>; | ||
44 | status = "okay"; | ||
19 | }; | 45 | }; |
diff --git a/Documentation/devicetree/bindings/watchdog/davinci-wdt.txt b/Documentation/devicetree/bindings/watchdog/davinci-wdt.txt index 75558ccd9a05..e60b9a13bdcb 100644 --- a/Documentation/devicetree/bindings/watchdog/davinci-wdt.txt +++ b/Documentation/devicetree/bindings/watchdog/davinci-wdt.txt | |||
@@ -1,12 +1,24 @@ | |||
1 | DaVinci Watchdog Timer (WDT) Controller | 1 | Texas Instruments DaVinci/Keystone Watchdog Timer (WDT) Controller |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : Should be "ti,davinci-wdt" | 4 | - compatible : Should be "ti,davinci-wdt", "ti,keystone-wdt" |
5 | - reg : Should contain WDT registers location and length | 5 | - reg : Should contain WDT registers location and length |
6 | 6 | ||
7 | Optional properties: | ||
8 | - timeout-sec : Contains the watchdog timeout in seconds | ||
9 | - clocks : the clock feeding the watchdog timer. | ||
10 | Needed if platform uses clocks. | ||
11 | See clock-bindings.txt | ||
12 | |||
13 | Documentation: | ||
14 | Davinci DM646x - http://www.ti.com/lit/ug/spruer5b/spruer5b.pdf | ||
15 | Keystone - http://www.ti.com/lit/ug/sprugv5a/sprugv5a.pdf | ||
16 | |||
7 | Examples: | 17 | Examples: |
8 | 18 | ||
9 | wdt: wdt@2320000 { | 19 | wdt: wdt@2320000 { |
10 | compatible = "ti,davinci-wdt"; | 20 | compatible = "ti,davinci-wdt"; |
11 | reg = <0x02320000 0x80>; | 21 | reg = <0x02320000 0x80>; |
22 | timeout-sec = <30>; | ||
23 | clocks = <&clkwdtimer0>; | ||
12 | }; | 24 | }; |
diff --git a/Documentation/devicetree/bindings/watchdog/gpio-wdt.txt b/Documentation/devicetree/bindings/watchdog/gpio-wdt.txt new file mode 100644 index 000000000000..37afec194949 --- /dev/null +++ b/Documentation/devicetree/bindings/watchdog/gpio-wdt.txt | |||
@@ -0,0 +1,23 @@ | |||
1 | * GPIO-controlled Watchdog | ||
2 | |||
3 | Required Properties: | ||
4 | - compatible: Should contain "linux,wdt-gpio". | ||
5 | - gpios: From common gpio binding; gpio connection to WDT reset pin. | ||
6 | - hw_algo: The algorithm used by the driver. Should be one of the | ||
7 | following values: | ||
8 | - toggle: Either a high-to-low or a low-to-high transition clears | ||
9 | the WDT counter. The watchdog timer is disabled when GPIO is | ||
10 | left floating or connected to a three-state buffer. | ||
11 | - level: Low or high level starts counting WDT timeout, | ||
12 | the opposite level disables the WDT. Active level is determined | ||
13 | by the GPIO flags. | ||
14 | - hw_margin_ms: Maximum time to reset watchdog circuit (milliseconds). | ||
15 | |||
16 | Example: | ||
17 | watchdog: watchdog { | ||
18 | /* ADM706 */ | ||
19 | compatible = "linux,wdt-gpio"; | ||
20 | gpios = <&gpio3 9 GPIO_ACTIVE_LOW>; | ||
21 | hw_algo = "toggle"; | ||
22 | hw_margin_ms = <1600>; | ||
23 | }; | ||
diff --git a/Documentation/devicetree/bindings/watchdog/samsung-wdt.txt b/Documentation/devicetree/bindings/watchdog/samsung-wdt.txt index 2aa486cc1ff6..cfff37511aac 100644 --- a/Documentation/devicetree/bindings/watchdog/samsung-wdt.txt +++ b/Documentation/devicetree/bindings/watchdog/samsung-wdt.txt | |||
@@ -5,10 +5,29 @@ after a preset amount of time during which the WDT reset event has not | |||
5 | occurred. | 5 | occurred. |
6 | 6 | ||
7 | Required properties: | 7 | Required properties: |
8 | - compatible : should be "samsung,s3c2410-wdt" | 8 | - compatible : should be one among the following |
9 | (a) "samsung,s3c2410-wdt" for Exynos4 and previous SoCs | ||
10 | (b) "samsung,exynos5250-wdt" for Exynos5250 | ||
11 | (c) "samsung,exynos5420-wdt" for Exynos5420 | ||
12 | |||
9 | - reg : base physical address of the controller and length of memory mapped | 13 | - reg : base physical address of the controller and length of memory mapped |
10 | region. | 14 | region. |
11 | - interrupts : interrupt number to the cpu. | 15 | - interrupts : interrupt number to the cpu. |
16 | - samsung,syscon-phandle : reference to syscon node (This property required only | ||
17 | in case of compatible being "samsung,exynos5250-wdt" or "samsung,exynos5420-wdt". | ||
18 | In case of Exynos5250 and 5420 this property points to syscon node holding the PMU | ||
19 | base address) | ||
12 | 20 | ||
13 | Optional properties: | 21 | Optional properties: |
14 | - timeout-sec : contains the watchdog timeout in seconds. | 22 | - timeout-sec : contains the watchdog timeout in seconds. |
23 | |||
24 | Example: | ||
25 | |||
26 | watchdog@101D0000 { | ||
27 | compatible = "samsung,exynos5250-wdt"; | ||
28 | reg = <0x101D0000 0x100>; | ||
29 | interrupts = <0 42 0>; | ||
30 | clocks = <&clock 336>; | ||
31 | clock-names = "watchdog"; | ||
32 | samsung,syscon-phandle = <&pmu_syscon>; | ||
33 | }; | ||
diff --git a/Documentation/devicetree/booting-without-of.txt b/Documentation/devicetree/booting-without-of.txt index b2fb2f5e1922..1f013bd0d320 100644 --- a/Documentation/devicetree/booting-without-of.txt +++ b/Documentation/devicetree/booting-without-of.txt | |||
@@ -1364,19 +1364,16 @@ Appendix A - Sample SOC node for MPC8540 | |||
1364 | phy0: ethernet-phy@0 { | 1364 | phy0: ethernet-phy@0 { |
1365 | interrupts = <5 1>; | 1365 | interrupts = <5 1>; |
1366 | reg = <0>; | 1366 | reg = <0>; |
1367 | device_type = "ethernet-phy"; | ||
1368 | }; | 1367 | }; |
1369 | 1368 | ||
1370 | phy1: ethernet-phy@1 { | 1369 | phy1: ethernet-phy@1 { |
1371 | interrupts = <5 1>; | 1370 | interrupts = <5 1>; |
1372 | reg = <1>; | 1371 | reg = <1>; |
1373 | device_type = "ethernet-phy"; | ||
1374 | }; | 1372 | }; |
1375 | 1373 | ||
1376 | phy3: ethernet-phy@3 { | 1374 | phy3: ethernet-phy@3 { |
1377 | interrupts = <7 1>; | 1375 | interrupts = <7 1>; |
1378 | reg = <3>; | 1376 | reg = <3>; |
1379 | device_type = "ethernet-phy"; | ||
1380 | }; | 1377 | }; |
1381 | }; | 1378 | }; |
1382 | }; | 1379 | }; |
diff --git a/Documentation/driver-model/design-patterns.txt b/Documentation/driver-model/design-patterns.txt new file mode 100644 index 000000000000..ba7b2df64904 --- /dev/null +++ b/Documentation/driver-model/design-patterns.txt | |||
@@ -0,0 +1,116 @@ | |||
1 | |||
2 | Device Driver Design Patterns | ||
3 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
4 | |||
5 | This document describes a few common design patterns found in device drivers. | ||
6 | It is likely that subsystem maintainers will ask driver developers to | ||
7 | conform to these design patterns. | ||
8 | |||
9 | 1. State Container | ||
10 | 2. container_of() | ||
11 | |||
12 | |||
13 | 1. State Container | ||
14 | ~~~~~~~~~~~~~~~~~~ | ||
15 | |||
16 | While the kernel contains a few device drivers that assume that they will | ||
17 | only be probed() once on a certain system (singletons), it is custom to assume | ||
18 | that the device the driver binds to will appear in several instances. This | ||
19 | means that the probe() function and all callbacks need to be reentrant. | ||
20 | |||
21 | The most common way to achieve this is to use the state container design | ||
22 | pattern. It usually has this form: | ||
23 | |||
24 | struct foo { | ||
25 | spinlock_t lock; /* Example member */ | ||
26 | (...) | ||
27 | }; | ||
28 | |||
29 | static int foo_probe(...) | ||
30 | { | ||
31 | struct foo *foo; | ||
32 | |||
33 | foo = devm_kzalloc(dev, sizeof(*foo), GFP_KERNEL); | ||
34 | if (!foo) | ||
35 | return -ENOMEM; | ||
36 | spin_lock_init(&foo->lock); | ||
37 | (...) | ||
38 | } | ||
39 | |||
40 | This will create an instance of struct foo in memory every time probe() is | ||
41 | called. This is our state container for this instance of the device driver. | ||
42 | Of course it is then necessary to always pass this instance of the | ||
43 | state around to all functions that need access to the state and its members. | ||
44 | |||
45 | For example, if the driver is registering an interrupt handler, you would | ||
46 | pass around a pointer to struct foo like this: | ||
47 | |||
48 | static irqreturn_t foo_handler(int irq, void *arg) | ||
49 | { | ||
50 | struct foo *foo = arg; | ||
51 | (...) | ||
52 | } | ||
53 | |||
54 | static int foo_probe(...) | ||
55 | { | ||
56 | struct foo *foo; | ||
57 | |||
58 | (...) | ||
59 | ret = request_irq(irq, foo_handler, 0, "foo", foo); | ||
60 | } | ||
61 | |||
62 | This way you always get a pointer back to the correct instance of foo in | ||
63 | your interrupt handler. | ||
64 | |||
65 | |||
66 | 2. container_of() | ||
67 | ~~~~~~~~~~~~~~~~~ | ||
68 | |||
69 | Continuing on the above example we add an offloaded work: | ||
70 | |||
71 | struct foo { | ||
72 | spinlock_t lock; | ||
73 | struct workqueue_struct *wq; | ||
74 | struct work_struct offload; | ||
75 | (...) | ||
76 | }; | ||
77 | |||
78 | static void foo_work(struct work_struct *work) | ||
79 | { | ||
80 | struct foo *foo = container_of(work, struct foo, offload); | ||
81 | |||
82 | (...) | ||
83 | } | ||
84 | |||
85 | static irqreturn_t foo_handler(int irq, void *arg) | ||
86 | { | ||
87 | struct foo *foo = arg; | ||
88 | |||
89 | queue_work(foo->wq, &foo->offload); | ||
90 | (...) | ||
91 | } | ||
92 | |||
93 | static int foo_probe(...) | ||
94 | { | ||
95 | struct foo *foo; | ||
96 | |||
97 | foo->wq = create_singlethread_workqueue("foo-wq"); | ||
98 | INIT_WORK(&foo->offload, foo_work); | ||
99 | (...) | ||
100 | } | ||
101 | |||
102 | The design pattern is the same for an hrtimer or something similar that will | ||
103 | return a single argument which is a pointer to a struct member in the | ||
104 | callback. | ||
105 | |||
106 | container_of() is a macro defined in <linux/kernel.h> | ||
107 | |||
108 | What container_of() does is to obtain a pointer to the containing struct from | ||
109 | a pointer to a member by a simple subtraction using the offsetof() macro from | ||
110 | standard C, which allows something similar to object oriented behaviours. | ||
111 | Notice that the contained member must not be a pointer, but an actual member | ||
112 | for this to work. | ||
113 | |||
114 | We can see here that we avoid having global pointers to our struct foo * | ||
115 | instance this way, while still keeping the number of parameters passed to the | ||
116 | work function to a single pointer. | ||
diff --git a/Documentation/driver-model/devres.txt b/Documentation/driver-model/devres.txt index 5bdc8cb5fc28..4f7897e99cba 100644 --- a/Documentation/driver-model/devres.txt +++ b/Documentation/driver-model/devres.txt | |||
@@ -242,6 +242,8 @@ IIO | |||
242 | devm_iio_device_free() | 242 | devm_iio_device_free() |
243 | devm_iio_trigger_alloc() | 243 | devm_iio_trigger_alloc() |
244 | devm_iio_trigger_free() | 244 | devm_iio_trigger_free() |
245 | devm_iio_device_register() | ||
246 | devm_iio_device_unregister() | ||
245 | 247 | ||
246 | IO region | 248 | IO region |
247 | devm_request_region() | 249 | devm_request_region() |
diff --git a/Documentation/driver-model/platform.txt b/Documentation/driver-model/platform.txt index 41f41632ee55..07795ec51cde 100644 --- a/Documentation/driver-model/platform.txt +++ b/Documentation/driver-model/platform.txt | |||
@@ -48,7 +48,7 @@ struct platform_driver { | |||
48 | struct device_driver driver; | 48 | struct device_driver driver; |
49 | }; | 49 | }; |
50 | 50 | ||
51 | Note that probe() should general verify that the specified device hardware | 51 | Note that probe() should in general verify that the specified device hardware |
52 | actually exists; sometimes platform setup code can't be sure. The probing | 52 | actually exists; sometimes platform setup code can't be sure. The probing |
53 | can use device resources, including clocks, and device platform_data. | 53 | can use device resources, including clocks, and device platform_data. |
54 | 54 | ||
diff --git a/Documentation/dynamic-debug-howto.txt b/Documentation/dynamic-debug-howto.txt index 1bbdcfcf1f13..46325eb2ea76 100644 --- a/Documentation/dynamic-debug-howto.txt +++ b/Documentation/dynamic-debug-howto.txt | |||
@@ -108,6 +108,12 @@ If your query set is big, you can batch them too: | |||
108 | 108 | ||
109 | ~# cat query-batch-file > <debugfs>/dynamic_debug/control | 109 | ~# cat query-batch-file > <debugfs>/dynamic_debug/control |
110 | 110 | ||
111 | A another way is to use wildcard. The match rule support '*' (matches | ||
112 | zero or more characters) and '?' (matches exactly one character).For | ||
113 | example, you can match all usb drivers: | ||
114 | |||
115 | ~# echo "file drivers/usb/* +p" > <debugfs>/dynamic_debug/control | ||
116 | |||
111 | At the syntactical level, a command comprises a sequence of match | 117 | At the syntactical level, a command comprises a sequence of match |
112 | specifications, followed by a flags change specification. | 118 | specifications, followed by a flags change specification. |
113 | 119 | ||
@@ -315,6 +321,9 @@ nullarbor:~ # echo -n 'func svc_process -p' > | |||
315 | nullarbor:~ # echo -n 'format "nfsd: READ" +p' > | 321 | nullarbor:~ # echo -n 'format "nfsd: READ" +p' > |
316 | <debugfs>/dynamic_debug/control | 322 | <debugfs>/dynamic_debug/control |
317 | 323 | ||
324 | // enable messages in files of which the pathes include string "usb" | ||
325 | nullarbor:~ # echo -n '*usb* +p' > <debugfs>/dynamic_debug/control | ||
326 | |||
318 | // enable all messages | 327 | // enable all messages |
319 | nullarbor:~ # echo -n '+p' > <debugfs>/dynamic_debug/control | 328 | nullarbor:~ # echo -n '+p' > <debugfs>/dynamic_debug/control |
320 | 329 | ||
diff --git a/Documentation/efi-stub.txt b/Documentation/efi-stub.txt index 44e6bb6ead10..c628788d5b47 100644 --- a/Documentation/efi-stub.txt +++ b/Documentation/efi-stub.txt | |||
@@ -20,7 +20,7 @@ The EFI boot stub is enabled with the CONFIG_EFI_STUB kernel option. | |||
20 | **** How to install bzImage.efi | 20 | **** How to install bzImage.efi |
21 | 21 | ||
22 | The bzImage located in arch/x86/boot/bzImage must be copied to the EFI | 22 | The bzImage located in arch/x86/boot/bzImage must be copied to the EFI |
23 | System Partiion (ESP) and renamed with the extension ".efi". Without | 23 | System Partition (ESP) and renamed with the extension ".efi". Without |
24 | the extension the EFI firmware loader will refuse to execute it. It's | 24 | the extension the EFI firmware loader will refuse to execute it. It's |
25 | not possible to execute bzImage.efi from the usual Linux file systems | 25 | not possible to execute bzImage.efi from the usual Linux file systems |
26 | because EFI firmware doesn't have support for them. | 26 | because EFI firmware doesn't have support for them. |
diff --git a/Documentation/email-clients.txt b/Documentation/email-clients.txt index 860c29a472ad..e9f5daccbd02 100644 --- a/Documentation/email-clients.txt +++ b/Documentation/email-clients.txt | |||
@@ -104,7 +104,7 @@ Then from the "Message" menu item, select insert file and choose your patch. | |||
104 | As an added bonus you can customise the message creation toolbar menu | 104 | As an added bonus you can customise the message creation toolbar menu |
105 | and put the "insert file" icon there. | 105 | and put the "insert file" icon there. |
106 | 106 | ||
107 | Make the the composer window wide enough so that no lines wrap. As of | 107 | Make the composer window wide enough so that no lines wrap. As of |
108 | KMail 1.13.5 (KDE 4.5.4), KMail will apply word wrapping when sending | 108 | KMail 1.13.5 (KDE 4.5.4), KMail will apply word wrapping when sending |
109 | the email if the lines wrap in the composer window. Having word wrapping | 109 | the email if the lines wrap in the composer window. Having word wrapping |
110 | disabled in the Options menu isn't enough. Thus, if your patch has very | 110 | disabled in the Options menu isn't enough. Thus, if your patch has very |
diff --git a/Documentation/extcon/porting-android-switch-class b/Documentation/extcon/porting-android-switch-class index 5377f6317961..49c81caef84d 100644 --- a/Documentation/extcon/porting-android-switch-class +++ b/Documentation/extcon/porting-android-switch-class | |||
@@ -50,7 +50,7 @@ so that they are still compatible with legacy userspace processes. | |||
50 | Extcon's extended features for switch device drivers with | 50 | Extcon's extended features for switch device drivers with |
51 | complex features usually required magic numbers in state | 51 | complex features usually required magic numbers in state |
52 | value of switch_dev. With extcon, such magic numbers that | 52 | value of switch_dev. With extcon, such magic numbers that |
53 | support multiple cables ( | 53 | support multiple cables are no more required or supported. |
54 | 54 | ||
55 | 1. Define cable names at edev->supported_cable. | 55 | 1. Define cable names at edev->supported_cable. |
56 | 2. (Recommended) remove print_state callback. | 56 | 2. (Recommended) remove print_state callback. |
@@ -114,11 +114,8 @@ exclusive, the two cables cannot be in ATTACHED state simulteneously. | |||
114 | 114 | ||
115 | ****** ABI Location | 115 | ****** ABI Location |
116 | 116 | ||
117 | If "CONFIG_ANDROID" is enabled and "CONFIG_ANDROID_SWITCH" is | 117 | If "CONFIG_ANDROID" is enabled, /sys/class/switch/* are created |
118 | disabled, /sys/class/switch/* are created as symbolic links to | 118 | as symbolic links to /sys/class/extcon/*. |
119 | /sys/class/extcon/*. Because CONFIG_ANDROID_SWITCH creates | ||
120 | /sys/class/switch directory, we disable symboling linking if | ||
121 | CONFIG_ANDROID_SWITCH is enabled. | ||
122 | 119 | ||
123 | The two files of switch class, name and state, are provided with | 120 | The two files of switch class, name and state, are provided with |
124 | extcon, too. When the multistate support (STEP 2 of CHAPTER 1.) is | 121 | extcon, too. When the multistate support (STEP 2 of CHAPTER 1.) is |
diff --git a/Documentation/filesystems/00-INDEX b/Documentation/filesystems/00-INDEX index 8042050eb265..632211cbdd56 100644 --- a/Documentation/filesystems/00-INDEX +++ b/Documentation/filesystems/00-INDEX | |||
@@ -10,24 +10,32 @@ afs.txt | |||
10 | - info and examples for the distributed AFS (Andrew File System) fs. | 10 | - info and examples for the distributed AFS (Andrew File System) fs. |
11 | affs.txt | 11 | affs.txt |
12 | - info and mount options for the Amiga Fast File System. | 12 | - info and mount options for the Amiga Fast File System. |
13 | autofs4-mount-control.txt | ||
14 | - info on device control operations for autofs4 module. | ||
13 | automount-support.txt | 15 | automount-support.txt |
14 | - information about filesystem automount support. | 16 | - information about filesystem automount support. |
15 | befs.txt | 17 | befs.txt |
16 | - information about the BeOS filesystem for Linux. | 18 | - information about the BeOS filesystem for Linux. |
17 | bfs.txt | 19 | bfs.txt |
18 | - info for the SCO UnixWare Boot Filesystem (BFS). | 20 | - info for the SCO UnixWare Boot Filesystem (BFS). |
21 | btrfs.txt | ||
22 | - info for the BTRFS filesystem. | ||
23 | caching/ | ||
24 | - directory containing filesystem cache documentation. | ||
19 | ceph.txt | 25 | ceph.txt |
20 | - info for the Ceph Distributed File System | 26 | - info for the Ceph Distributed File System. |
21 | cifs.txt | 27 | cifs/ |
22 | - description of the CIFS filesystem. | 28 | - directory containing CIFS filesystem documentation and example code. |
23 | coda.txt | 29 | coda.txt |
24 | - description of the CODA filesystem. | 30 | - description of the CODA filesystem. |
25 | configfs/ | 31 | configfs/ |
26 | - directory containing configfs documentation and example code. | 32 | - directory containing configfs documentation and example code. |
27 | cramfs.txt | 33 | cramfs.txt |
28 | - info on the cram filesystem for small storage (ROMs etc). | 34 | - info on the cram filesystem for small storage (ROMs etc). |
29 | dentry-locking.txt | 35 | debugfs.txt |
30 | - info on the RCU-based dcache locking model. | 36 | - info on the debugfs filesystem. |
37 | devpts.txt | ||
38 | - info on the devpts filesystem. | ||
31 | directory-locking | 39 | directory-locking |
32 | - info about the locking scheme used for directory operations. | 40 | - info about the locking scheme used for directory operations. |
33 | dlmfs.txt | 41 | dlmfs.txt |
@@ -35,7 +43,7 @@ dlmfs.txt | |||
35 | dnotify.txt | 43 | dnotify.txt |
36 | - info about directory notification in Linux. | 44 | - info about directory notification in Linux. |
37 | dnotify_test.c | 45 | dnotify_test.c |
38 | - example program for dnotify | 46 | - example program for dnotify. |
39 | ecryptfs.txt | 47 | ecryptfs.txt |
40 | - docs on eCryptfs: stacked cryptographic filesystem for Linux. | 48 | - docs on eCryptfs: stacked cryptographic filesystem for Linux. |
41 | efivarfs.txt | 49 | efivarfs.txt |
@@ -48,12 +56,18 @@ ext3.txt | |||
48 | - info, mount options and specifications for the Ext3 filesystem. | 56 | - info, mount options and specifications for the Ext3 filesystem. |
49 | ext4.txt | 57 | ext4.txt |
50 | - info, mount options and specifications for the Ext4 filesystem. | 58 | - info, mount options and specifications for the Ext4 filesystem. |
51 | files.txt | ||
52 | - info on file management in the Linux kernel. | ||
53 | f2fs.txt | 59 | f2fs.txt |
54 | - info and mount options for the F2FS filesystem. | 60 | - info and mount options for the F2FS filesystem. |
61 | fiemap.txt | ||
62 | - info on fiemap ioctl. | ||
63 | files.txt | ||
64 | - info on file management in the Linux kernel. | ||
55 | fuse.txt | 65 | fuse.txt |
56 | - info on the Filesystem in User SpacE including mount options. | 66 | - info on the Filesystem in User SpacE including mount options. |
67 | gfs2-glocks.txt | ||
68 | - info on the Global File System 2 - Glock internal locking rules. | ||
69 | gfs2-uevents.txt | ||
70 | - info on the Global File System 2 - uevents. | ||
57 | gfs2.txt | 71 | gfs2.txt |
58 | - info on the Global File System 2. | 72 | - info on the Global File System 2. |
59 | hfs.txt | 73 | hfs.txt |
@@ -84,40 +98,58 @@ ntfs.txt | |||
84 | - info and mount options for the NTFS filesystem (Windows NT). | 98 | - info and mount options for the NTFS filesystem (Windows NT). |
85 | ocfs2.txt | 99 | ocfs2.txt |
86 | - info and mount options for the OCFS2 clustered filesystem. | 100 | - info and mount options for the OCFS2 clustered filesystem. |
101 | omfs.txt | ||
102 | - info on the Optimized MPEG FileSystem. | ||
103 | path-lookup.txt | ||
104 | - info on path walking and name lookup locking. | ||
105 | pohmelfs/ | ||
106 | - directory containing pohmelfs filesystem documentation. | ||
87 | porting | 107 | porting |
88 | - various information on filesystem porting. | 108 | - various information on filesystem porting. |
89 | proc.txt | 109 | proc.txt |
90 | - info on Linux's /proc filesystem. | 110 | - info on Linux's /proc filesystem. |
111 | qnx6.txt | ||
112 | - info on the QNX6 filesystem. | ||
113 | quota.txt | ||
114 | - info on Quota subsystem. | ||
91 | ramfs-rootfs-initramfs.txt | 115 | ramfs-rootfs-initramfs.txt |
92 | - info on the 'in memory' filesystems ramfs, rootfs and initramfs. | 116 | - info on the 'in memory' filesystems ramfs, rootfs and initramfs. |
93 | reiser4.txt | ||
94 | - info on the Reiser4 filesystem based on dancing tree algorithms. | ||
95 | relay.txt | 117 | relay.txt |
96 | - info on relay, for efficient streaming from kernel to user space. | 118 | - info on relay, for efficient streaming from kernel to user space. |
97 | romfs.txt | 119 | romfs.txt |
98 | - description of the ROMFS filesystem. | 120 | - description of the ROMFS filesystem. |
99 | seq_file.txt | 121 | seq_file.txt |
100 | - how to use the seq_file API | 122 | - how to use the seq_file API. |
101 | sharedsubtree.txt | 123 | sharedsubtree.txt |
102 | - a description of shared subtrees for namespaces. | 124 | - a description of shared subtrees for namespaces. |
103 | spufs.txt | 125 | spufs.txt |
104 | - info and mount options for the SPU filesystem used on Cell. | 126 | - info and mount options for the SPU filesystem used on Cell. |
127 | squashfs.txt | ||
128 | - info on the squashfs filesystem. | ||
105 | sysfs-pci.txt | 129 | sysfs-pci.txt |
106 | - info on accessing PCI device resources through sysfs. | 130 | - info on accessing PCI device resources through sysfs. |
131 | sysfs-tagging.txt | ||
132 | - info on sysfs tagging to avoid duplicates. | ||
107 | sysfs.txt | 133 | sysfs.txt |
108 | - info on sysfs, a ram-based filesystem for exporting kernel objects. | 134 | - info on sysfs, a ram-based filesystem for exporting kernel objects. |
109 | sysv-fs.txt | 135 | sysv-fs.txt |
110 | - info on the SystemV/V7/Xenix/Coherent filesystem. | 136 | - info on the SystemV/V7/Xenix/Coherent filesystem. |
111 | tmpfs.txt | 137 | tmpfs.txt |
112 | - info on tmpfs, a filesystem that holds all files in virtual memory. | 138 | - info on tmpfs, a filesystem that holds all files in virtual memory. |
139 | ubifs.txt | ||
140 | - info on the Unsorted Block Images FileSystem. | ||
113 | udf.txt | 141 | udf.txt |
114 | - info and mount options for the UDF filesystem. | 142 | - info and mount options for the UDF filesystem. |
115 | ufs.txt | 143 | ufs.txt |
116 | - info on the ufs filesystem. | 144 | - info on the ufs filesystem. |
117 | vfat.txt | 145 | vfat.txt |
118 | - info on using the VFAT filesystem used in Windows NT and Windows 95 | 146 | - info on using the VFAT filesystem used in Windows NT and Windows 95. |
119 | vfs.txt | 147 | vfs.txt |
120 | - overview of the Virtual File System | 148 | - overview of the Virtual File System. |
149 | xfs-delayed-logging-design.txt | ||
150 | - info on the XFS Delayed Logging Design. | ||
151 | xfs-self-describing-metadata.txt | ||
152 | - info on XFS Self Describing Metadata. | ||
121 | xfs.txt | 153 | xfs.txt |
122 | - info and mount options for the XFS filesystem. | 154 | - info and mount options for the XFS filesystem. |
123 | xip.txt | 155 | xip.txt |
diff --git a/Documentation/filesystems/9p.txt b/Documentation/filesystems/9p.txt index 2c0321442845..fec7144e817c 100644 --- a/Documentation/filesystems/9p.txt +++ b/Documentation/filesystems/9p.txt | |||
@@ -69,10 +69,14 @@ OPTIONS | |||
69 | offering several exported file systems. | 69 | offering several exported file systems. |
70 | 70 | ||
71 | cache=mode specifies a caching policy. By default, no caches are used. | 71 | cache=mode specifies a caching policy. By default, no caches are used. |
72 | none = default no cache policy, metadata and data | ||
73 | alike are synchronous. | ||
72 | loose = no attempts are made at consistency, | 74 | loose = no attempts are made at consistency, |
73 | intended for exclusive, read-only mounts | 75 | intended for exclusive, read-only mounts |
74 | fscache = use FS-Cache for a persistent, read-only | 76 | fscache = use FS-Cache for a persistent, read-only |
75 | cache backend. | 77 | cache backend. |
78 | mmap = minimal cache that is only used for read-write | ||
79 | mmap. Northing else is cached, like cache=none | ||
76 | 80 | ||
77 | debug=n specifies debug level. The debug level is a bitmask. | 81 | debug=n specifies debug level. The debug level is a bitmask. |
78 | 0x01 = display verbose error messages | 82 | 0x01 = display verbose error messages |
@@ -147,8 +151,7 @@ on sourceforge (http://sourceforge.net/projects/v9fs). | |||
147 | News and other information is maintained on a Wiki. | 151 | News and other information is maintained on a Wiki. |
148 | (http://sf.net/apps/mediawiki/v9fs/index.php). | 152 | (http://sf.net/apps/mediawiki/v9fs/index.php). |
149 | 153 | ||
150 | Bug reports may be issued through the kernel.org bugzilla | 154 | Bug reports are best issued via the mailing list. |
151 | (http://bugzilla.kernel.org) | ||
152 | 155 | ||
153 | For more information on the Plan 9 Operating System check out | 156 | For more information on the Plan 9 Operating System check out |
154 | http://plan9.bell-labs.com/plan9 | 157 | http://plan9.bell-labs.com/plan9 |
@@ -156,11 +159,3 @@ http://plan9.bell-labs.com/plan9 | |||
156 | For information on Plan 9 from User Space (Plan 9 applications and libraries | 159 | For information on Plan 9 from User Space (Plan 9 applications and libraries |
157 | ported to Linux/BSD/OSX/etc) check out http://swtch.com/plan9 | 160 | ported to Linux/BSD/OSX/etc) check out http://swtch.com/plan9 |
158 | 161 | ||
159 | |||
160 | STATUS | ||
161 | ====== | ||
162 | |||
163 | The 2.6 kernel support is working on PPC and x86. | ||
164 | |||
165 | PLEASE USE THE KERNEL BUGZILLA TO REPORT PROBLEMS. (http://bugzilla.kernel.org) | ||
166 | |||
diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking index fe7afe225381..5b0c083d7c0e 100644 --- a/Documentation/filesystems/Locking +++ b/Documentation/filesystems/Locking | |||
@@ -544,7 +544,7 @@ like the ->fault() handler, but simply return with VM_FAULT_NOPAGE, which | |||
544 | will cause the VM to retry the fault. | 544 | will cause the VM to retry the fault. |
545 | 545 | ||
546 | ->access() is called when get_user_pages() fails in | 546 | ->access() is called when get_user_pages() fails in |
547 | acces_process_vm(), typically used to debug a process through | 547 | access_process_vm(), typically used to debug a process through |
548 | /proc/pid/mem or ptrace. This function is needed only for | 548 | /proc/pid/mem or ptrace. This function is needed only for |
549 | VM_IO | VM_PFNMAP VMAs. | 549 | VM_IO | VM_PFNMAP VMAs. |
550 | 550 | ||
diff --git a/Documentation/filesystems/btrfs.txt b/Documentation/filesystems/btrfs.txt index 5dd282dda55c..d11cc2f8077b 100644 --- a/Documentation/filesystems/btrfs.txt +++ b/Documentation/filesystems/btrfs.txt | |||
@@ -38,7 +38,7 @@ Mount Options | |||
38 | ============= | 38 | ============= |
39 | 39 | ||
40 | When mounting a btrfs filesystem, the following option are accepted. | 40 | When mounting a btrfs filesystem, the following option are accepted. |
41 | Unless otherwise specified, all options default to off. | 41 | Options with (*) are default options and will not show in the mount options. |
42 | 42 | ||
43 | alloc_start=<bytes> | 43 | alloc_start=<bytes> |
44 | Debugging option to force all block allocations above a certain | 44 | Debugging option to force all block allocations above a certain |
@@ -46,10 +46,12 @@ Unless otherwise specified, all options default to off. | |||
46 | bytes, optionally with a K, M, or G suffix, case insensitive. | 46 | bytes, optionally with a K, M, or G suffix, case insensitive. |
47 | Default is 1MB. | 47 | Default is 1MB. |
48 | 48 | ||
49 | noautodefrag(*) | ||
49 | autodefrag | 50 | autodefrag |
50 | Detect small random writes into files and queue them up for the | 51 | Disable/enable auto defragmentation. |
51 | defrag process. Works best for small files; Not well suited for | 52 | Auto defragmentation detects small random writes into files and queue |
52 | large database workloads. | 53 | them up for the defrag process. Works best for small files; |
54 | Not well suited for large database workloads. | ||
53 | 55 | ||
54 | check_int | 56 | check_int |
55 | check_int_data | 57 | check_int_data |
@@ -96,21 +98,26 @@ Unless otherwise specified, all options default to off. | |||
96 | can be avoided. Especially useful when trying to mount a multi-device | 98 | can be avoided. Especially useful when trying to mount a multi-device |
97 | setup as root. May be specified multiple times for multiple devices. | 99 | setup as root. May be specified multiple times for multiple devices. |
98 | 100 | ||
101 | nodiscard(*) | ||
99 | discard | 102 | discard |
100 | Issue frequent commands to let the block device reclaim space freed by | 103 | Disable/enable discard mount option. |
101 | the filesystem. This is useful for SSD devices, thinly provisioned | 104 | Discard issues frequent commands to let the block device reclaim space |
105 | freed by the filesystem. | ||
106 | This is useful for SSD devices, thinly provisioned | ||
102 | LUNs and virtual machine images, but may have a significant | 107 | LUNs and virtual machine images, but may have a significant |
103 | performance impact. (The fstrim command is also available to | 108 | performance impact. (The fstrim command is also available to |
104 | initiate batch trims from userspace). | 109 | initiate batch trims from userspace). |
105 | 110 | ||
111 | noenospc_debug(*) | ||
106 | enospc_debug | 112 | enospc_debug |
107 | Debugging option to be more verbose in some ENOSPC conditions. | 113 | Disable/enable debugging option to be more verbose in some ENOSPC conditions. |
108 | 114 | ||
109 | fatal_errors=<action> | 115 | fatal_errors=<action> |
110 | Action to take when encountering a fatal error: | 116 | Action to take when encountering a fatal error: |
111 | "bug" - BUG() on a fatal error. This is the default. | 117 | "bug" - BUG() on a fatal error. This is the default. |
112 | "panic" - panic() on a fatal error. | 118 | "panic" - panic() on a fatal error. |
113 | 119 | ||
120 | noflushoncommit(*) | ||
114 | flushoncommit | 121 | flushoncommit |
115 | The 'flushoncommit' mount option forces any data dirtied by a write in a | 122 | The 'flushoncommit' mount option forces any data dirtied by a write in a |
116 | prior transaction to commit as part of the current commit. This makes | 123 | prior transaction to commit as part of the current commit. This makes |
@@ -134,26 +141,32 @@ Unless otherwise specified, all options default to off. | |||
134 | Specify that 1 metadata chunk should be allocated after every <value> | 141 | Specify that 1 metadata chunk should be allocated after every <value> |
135 | data chunks. Off by default. | 142 | data chunks. Off by default. |
136 | 143 | ||
144 | acl(*) | ||
137 | noacl | 145 | noacl |
138 | Disable support for Posix Access Control Lists (ACLs). See the | 146 | Enable/disable support for Posix Access Control Lists (ACLs). See the |
139 | acl(5) manual page for more information about ACLs. | 147 | acl(5) manual page for more information about ACLs. |
140 | 148 | ||
149 | barrier(*) | ||
141 | nobarrier | 150 | nobarrier |
142 | Disables the use of block layer write barriers. Write barriers ensure | 151 | Enable/disable the use of block layer write barriers. Write barriers |
143 | that certain IOs make it through the device cache and are on persistent | 152 | ensure that certain IOs make it through the device cache and are on |
144 | storage. If used on a device with a volatile (non-battery-backed) | 153 | persistent storage. If disabled on a device with a volatile |
145 | write-back cache, this option will lead to filesystem corruption on a | 154 | (non-battery-backed) write-back cache, nobarrier option will lead to |
146 | system crash or power loss. | 155 | filesystem corruption on a system crash or power loss. |
147 | 156 | ||
157 | datacow(*) | ||
148 | nodatacow | 158 | nodatacow |
149 | Disable data copy-on-write for newly created files. Implies nodatasum, | 159 | Enable/disable data copy-on-write for newly created files. |
150 | and disables all compression. | 160 | Nodatacow implies nodatasum, and disables all compression. |
151 | 161 | ||
162 | datasum(*) | ||
152 | nodatasum | 163 | nodatasum |
153 | Disable data checksumming for newly created files. | 164 | Enable/disable data checksumming for newly created files. |
165 | Datasum implies datacow. | ||
154 | 166 | ||
167 | treelog(*) | ||
155 | notreelog | 168 | notreelog |
156 | Disable the tree logging used for fsync and O_SYNC writes. | 169 | Enable/disable the tree logging used for fsync and O_SYNC writes. |
157 | 170 | ||
158 | recovery | 171 | recovery |
159 | Enable autorecovery attempts if a bad tree root is found at mount time. | 172 | Enable autorecovery attempts if a bad tree root is found at mount time. |
diff --git a/Documentation/filesystems/f2fs.txt b/Documentation/filesystems/f2fs.txt index a3fe811bbdbc..b8d284975f0f 100644 --- a/Documentation/filesystems/f2fs.txt +++ b/Documentation/filesystems/f2fs.txt | |||
@@ -120,6 +120,8 @@ active_logs=%u Support configuring the number of active logs. In the | |||
120 | disable_ext_identify Disable the extension list configured by mkfs, so f2fs | 120 | disable_ext_identify Disable the extension list configured by mkfs, so f2fs |
121 | does not aware of cold files such as media files. | 121 | does not aware of cold files such as media files. |
122 | inline_xattr Enable the inline xattrs feature. | 122 | inline_xattr Enable the inline xattrs feature. |
123 | inline_data Enable the inline data feature: New created small(<~3.4k) | ||
124 | files can be written into inode block. | ||
123 | 125 | ||
124 | ================================================================================ | 126 | ================================================================================ |
125 | DEBUGFS ENTRIES | 127 | DEBUGFS ENTRIES |
@@ -171,6 +173,28 @@ Files in /sys/fs/f2fs/<devname> | |||
171 | conduct checkpoint to reclaim the prefree segments | 173 | conduct checkpoint to reclaim the prefree segments |
172 | to free segments. By default, 100 segments, 200MB. | 174 | to free segments. By default, 100 segments, 200MB. |
173 | 175 | ||
176 | max_small_discards This parameter controls the number of discard | ||
177 | commands that consist small blocks less than 2MB. | ||
178 | The candidates to be discarded are cached until | ||
179 | checkpoint is triggered, and issued during the | ||
180 | checkpoint. By default, it is disabled with 0. | ||
181 | |||
182 | ipu_policy This parameter controls the policy of in-place | ||
183 | updates in f2fs. There are five policies: | ||
184 | 0: F2FS_IPU_FORCE, 1: F2FS_IPU_SSR, | ||
185 | 2: F2FS_IPU_UTIL, 3: F2FS_IPU_SSR_UTIL, | ||
186 | 4: F2FS_IPU_DISABLE. | ||
187 | |||
188 | min_ipu_util This parameter controls the threshold to trigger | ||
189 | in-place-updates. The number indicates percentage | ||
190 | of the filesystem utilization, and used by | ||
191 | F2FS_IPU_UTIL and F2FS_IPU_SSR_UTIL policies. | ||
192 | |||
193 | max_victim_search This parameter controls the number of trials to | ||
194 | find a victim segment when conducting SSR and | ||
195 | cleaning operations. The default value is 4096 | ||
196 | which covers 8GB block address range. | ||
197 | |||
174 | ================================================================================ | 198 | ================================================================================ |
175 | USAGE | 199 | USAGE |
176 | ================================================================================ | 200 | ================================================================================ |
diff --git a/Documentation/filesystems/nfs/nfs41-server.txt b/Documentation/filesystems/nfs/nfs41-server.txt index 01c2db769791..b930ad087780 100644 --- a/Documentation/filesystems/nfs/nfs41-server.txt +++ b/Documentation/filesystems/nfs/nfs41-server.txt | |||
@@ -5,11 +5,11 @@ Server support for minorversion 1 can be controlled using the | |||
5 | by reading this file will contain either "+4.1" or "-4.1" | 5 | by reading this file will contain either "+4.1" or "-4.1" |
6 | correspondingly. | 6 | correspondingly. |
7 | 7 | ||
8 | Currently, server support for minorversion 1 is disabled by default. | 8 | Currently, server support for minorversion 1 is enabled by default. |
9 | It can be enabled at run time by writing the string "+4.1" to | 9 | It can be disabled at run time by writing the string "-4.1" to |
10 | the /proc/fs/nfsd/versions control file. Note that to write this | 10 | the /proc/fs/nfsd/versions control file. Note that to write this |
11 | control file, the nfsd service must be taken down. Use your user-mode | 11 | control file, the nfsd service must be taken down. You can use rpc.nfsd |
12 | nfs-utils to set this up; see rpc.nfsd(8) | 12 | for this; see rpc.nfsd(8). |
13 | 13 | ||
14 | (Warning: older servers will interpret "+4.1" and "-4.1" as "+4" and | 14 | (Warning: older servers will interpret "+4.1" and "-4.1" as "+4" and |
15 | "-4", respectively. Therefore, code meant to work on both new and old | 15 | "-4", respectively. Therefore, code meant to work on both new and old |
@@ -29,29 +29,6 @@ are still under development out of tree. | |||
29 | See http://wiki.linux-nfs.org/wiki/index.php/PNFS_prototype_design | 29 | See http://wiki.linux-nfs.org/wiki/index.php/PNFS_prototype_design |
30 | for more information. | 30 | for more information. |
31 | 31 | ||
32 | The current implementation is intended for developers only: while it | ||
33 | does support ordinary file operations on clients we have tested against | ||
34 | (including the linux client), it is incomplete in ways which may limit | ||
35 | features unexpectedly, cause known bugs in rare cases, or cause | ||
36 | interoperability problems with future clients. Known issues: | ||
37 | |||
38 | - gss support is questionable: currently mounts with kerberos | ||
39 | from a linux client are possible, but we aren't really | ||
40 | conformant with the spec (for example, we don't use kerberos | ||
41 | on the backchannel correctly). | ||
42 | - We do not support SSV, which provides security for shared | ||
43 | client-server state (thus preventing unauthorized tampering | ||
44 | with locks and opens, for example). It is mandatory for | ||
45 | servers to support this, though no clients use it yet. | ||
46 | |||
47 | In addition, some limitations are inherited from the current NFSv4 | ||
48 | implementation: | ||
49 | |||
50 | - Incomplete delegation enforcement: if a file is renamed or | ||
51 | unlinked by a local process, a client holding a delegation may | ||
52 | continue to indefinitely allow opens of the file under the old | ||
53 | name. | ||
54 | |||
55 | The table below, taken from the NFSv4.1 document, lists | 32 | The table below, taken from the NFSv4.1 document, lists |
56 | the operations that are mandatory to implement (REQ), optional | 33 | the operations that are mandatory to implement (REQ), optional |
57 | (OPT), and NFSv4.0 operations that are required not to implement (MNI) | 34 | (OPT), and NFSv4.0 operations that are required not to implement (MNI) |
@@ -169,6 +146,16 @@ NS*| CB_WANTS_CANCELLED | OPT | FDELG, | Section 20.10 | | |||
169 | 146 | ||
170 | Implementation notes: | 147 | Implementation notes: |
171 | 148 | ||
149 | SSV: | ||
150 | * The spec claims this is mandatory, but we don't actually know of any | ||
151 | implementations, so we're ignoring it for now. The server returns | ||
152 | NFS4ERR_ENCR_ALG_UNSUPP on EXCHANGE_ID, which should be future-proof. | ||
153 | |||
154 | GSS on the backchannel: | ||
155 | * Again, theoretically required but not widely implemented (in | ||
156 | particular, the current Linux client doesn't request it). We return | ||
157 | NFS4ERR_ENCR_ALG_UNSUPP on CREATE_SESSION. | ||
158 | |||
172 | DELEGPURGE: | 159 | DELEGPURGE: |
173 | * mandatory only for servers that support CLAIM_DELEGATE_PREV and/or | 160 | * mandatory only for servers that support CLAIM_DELEGATE_PREV and/or |
174 | CLAIM_DELEG_PREV_FH (which allows clients to keep delegations that | 161 | CLAIM_DELEG_PREV_FH (which allows clients to keep delegations that |
@@ -176,7 +163,6 @@ DELEGPURGE: | |||
176 | now. | 163 | now. |
177 | 164 | ||
178 | EXCHANGE_ID: | 165 | EXCHANGE_ID: |
179 | * only SP4_NONE state protection supported | ||
180 | * implementation ids are ignored | 166 | * implementation ids are ignored |
181 | 167 | ||
182 | CREATE_SESSION: | 168 | CREATE_SESSION: |
diff --git a/Documentation/filesystems/nilfs2.txt b/Documentation/filesystems/nilfs2.txt index 873a2ab2e9f8..06887d46ccf2 100644 --- a/Documentation/filesystems/nilfs2.txt +++ b/Documentation/filesystems/nilfs2.txt | |||
@@ -81,6 +81,62 @@ nodiscard(*) The discard/TRIM commands are sent to the underlying | |||
81 | block device when blocks are freed. This is useful | 81 | block device when blocks are freed. This is useful |
82 | for SSD devices and sparse/thinly-provisioned LUNs. | 82 | for SSD devices and sparse/thinly-provisioned LUNs. |
83 | 83 | ||
84 | Ioctls | ||
85 | ====== | ||
86 | |||
87 | There is some NILFS2 specific functionality which can be accessed by applications | ||
88 | through the system call interfaces. The list of all NILFS2 specific ioctls are | ||
89 | shown in the table below. | ||
90 | |||
91 | Table of NILFS2 specific ioctls | ||
92 | .............................................................................. | ||
93 | Ioctl Description | ||
94 | NILFS_IOCTL_CHANGE_CPMODE Change mode of given checkpoint between | ||
95 | checkpoint and snapshot state. This ioctl is | ||
96 | used in chcp and mkcp utilities. | ||
97 | |||
98 | NILFS_IOCTL_DELETE_CHECKPOINT Remove checkpoint from NILFS2 file system. | ||
99 | This ioctl is used in rmcp utility. | ||
100 | |||
101 | NILFS_IOCTL_GET_CPINFO Return info about requested checkpoints. This | ||
102 | ioctl is used in lscp utility and by | ||
103 | nilfs_cleanerd daemon. | ||
104 | |||
105 | NILFS_IOCTL_GET_CPSTAT Return checkpoints statistics. This ioctl is | ||
106 | used by lscp, rmcp utilities and by | ||
107 | nilfs_cleanerd daemon. | ||
108 | |||
109 | NILFS_IOCTL_GET_SUINFO Return segment usage info about requested | ||
110 | segments. This ioctl is used in lssu, | ||
111 | nilfs_resize utilities and by nilfs_cleanerd | ||
112 | daemon. | ||
113 | |||
114 | NILFS_IOCTL_GET_SUSTAT Return segment usage statistics. This ioctl | ||
115 | is used in lssu, nilfs_resize utilities and | ||
116 | by nilfs_cleanerd daemon. | ||
117 | |||
118 | NILFS_IOCTL_GET_VINFO Return information on virtual block addresses. | ||
119 | This ioctl is used by nilfs_cleanerd daemon. | ||
120 | |||
121 | NILFS_IOCTL_GET_BDESCS Return information about descriptors of disk | ||
122 | block numbers. This ioctl is used by | ||
123 | nilfs_cleanerd daemon. | ||
124 | |||
125 | NILFS_IOCTL_CLEAN_SEGMENTS Do garbage collection operation in the | ||
126 | environment of requested parameters from | ||
127 | userspace. This ioctl is used by | ||
128 | nilfs_cleanerd daemon. | ||
129 | |||
130 | NILFS_IOCTL_SYNC Make a checkpoint. This ioctl is used in | ||
131 | mkcp utility. | ||
132 | |||
133 | NILFS_IOCTL_RESIZE Resize NILFS2 volume. This ioctl is used | ||
134 | by nilfs_resize utility. | ||
135 | |||
136 | NILFS_IOCTL_SET_ALLOC_RANGE Define lower limit of segments in bytes and | ||
137 | upper limit of segments in bytes. This ioctl | ||
138 | is used by nilfs_resize utility. | ||
139 | |||
84 | NILFS2 usage | 140 | NILFS2 usage |
85 | ============ | 141 | ============ |
86 | 142 | ||
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt index 22d89aa37218..f00bee144add 100644 --- a/Documentation/filesystems/proc.txt +++ b/Documentation/filesystems/proc.txt | |||
@@ -547,7 +547,7 @@ Table 1-5: Kernel info in /proc | |||
547 | sys See chapter 2 | 547 | sys See chapter 2 |
548 | sysvipc Info of SysVIPC Resources (msg, sem, shm) (2.4) | 548 | sysvipc Info of SysVIPC Resources (msg, sem, shm) (2.4) |
549 | tty Info of tty drivers | 549 | tty Info of tty drivers |
550 | uptime System uptime | 550 | uptime Wall clock since boot, combined idle time of all cpus |
551 | version Kernel version | 551 | version Kernel version |
552 | video bttv info of video resources (2.4) | 552 | video bttv info of video resources (2.4) |
553 | vmallocinfo Show vmalloced areas | 553 | vmallocinfo Show vmalloced areas |
@@ -767,6 +767,7 @@ The "Locked" indicates whether the mapping is locked in memory or not. | |||
767 | 767 | ||
768 | MemTotal: 16344972 kB | 768 | MemTotal: 16344972 kB |
769 | MemFree: 13634064 kB | 769 | MemFree: 13634064 kB |
770 | MemAvailable: 14836172 kB | ||
770 | Buffers: 3656 kB | 771 | Buffers: 3656 kB |
771 | Cached: 1195708 kB | 772 | Cached: 1195708 kB |
772 | SwapCached: 0 kB | 773 | SwapCached: 0 kB |
@@ -799,6 +800,14 @@ AnonHugePages: 49152 kB | |||
799 | MemTotal: Total usable ram (i.e. physical ram minus a few reserved | 800 | MemTotal: Total usable ram (i.e. physical ram minus a few reserved |
800 | bits and the kernel binary code) | 801 | bits and the kernel binary code) |
801 | MemFree: The sum of LowFree+HighFree | 802 | MemFree: The sum of LowFree+HighFree |
803 | MemAvailable: An estimate of how much memory is available for starting new | ||
804 | applications, without swapping. Calculated from MemFree, | ||
805 | SReclaimable, the size of the file LRU lists, and the low | ||
806 | watermarks in each zone. | ||
807 | The estimate takes into account that the system needs some | ||
808 | page cache to function well, and that not all reclaimable | ||
809 | slab will be reclaimable, due to items being in use. The | ||
810 | impact of those factors will vary from system to system. | ||
802 | Buffers: Relatively temporary storage for raw disk blocks | 811 | Buffers: Relatively temporary storage for raw disk blocks |
803 | shouldn't get tremendously large (20MB or so) | 812 | shouldn't get tremendously large (20MB or so) |
804 | Cached: in-memory cache for files read from the disk (the | 813 | Cached: in-memory cache for files read from the disk (the |
@@ -1377,8 +1386,8 @@ may allocate from based on an estimation of its current memory and swap use. | |||
1377 | For example, if a task is using all allowed memory, its badness score will be | 1386 | For example, if a task is using all allowed memory, its badness score will be |
1378 | 1000. If it is using half of its allowed memory, its score will be 500. | 1387 | 1000. If it is using half of its allowed memory, its score will be 500. |
1379 | 1388 | ||
1380 | There is an additional factor included in the badness score: root | 1389 | There is an additional factor included in the badness score: the current memory |
1381 | processes are given 3% extra memory over other tasks. | 1390 | and swap usage is discounted by 3% for root processes. |
1382 | 1391 | ||
1383 | The amount of "allowed" memory depends on the context in which the oom killer | 1392 | The amount of "allowed" memory depends on the context in which the oom killer |
1384 | was called. If it is due to the memory assigned to the allocating task's cpuset | 1393 | was called. If it is due to the memory assigned to the allocating task's cpuset |
diff --git a/Documentation/filesystems/sysfs.txt b/Documentation/filesystems/sysfs.txt index a6619b7064b9..b35a64b82f9e 100644 --- a/Documentation/filesystems/sysfs.txt +++ b/Documentation/filesystems/sysfs.txt | |||
@@ -108,12 +108,12 @@ static DEVICE_ATTR(foo, S_IWUSR | S_IRUGO, show_foo, store_foo); | |||
108 | is equivalent to doing: | 108 | is equivalent to doing: |
109 | 109 | ||
110 | static struct device_attribute dev_attr_foo = { | 110 | static struct device_attribute dev_attr_foo = { |
111 | .attr = { | 111 | .attr = { |
112 | .name = "foo", | 112 | .name = "foo", |
113 | .mode = S_IWUSR | S_IRUGO, | 113 | .mode = S_IWUSR | S_IRUGO, |
114 | .show = show_foo, | ||
115 | .store = store_foo, | ||
116 | }, | 114 | }, |
115 | .show = show_foo, | ||
116 | .store = store_foo, | ||
117 | }; | 117 | }; |
118 | 118 | ||
119 | 119 | ||
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt index deb48b5fd883..c53784c119c8 100644 --- a/Documentation/filesystems/vfs.txt +++ b/Documentation/filesystems/vfs.txt | |||
@@ -782,7 +782,7 @@ struct file_operations | |||
782 | ---------------------- | 782 | ---------------------- |
783 | 783 | ||
784 | This describes how the VFS can manipulate an open file. As of kernel | 784 | This describes how the VFS can manipulate an open file. As of kernel |
785 | 3.5, the following members are defined: | 785 | 3.12, the following members are defined: |
786 | 786 | ||
787 | struct file_operations { | 787 | struct file_operations { |
788 | struct module *owner; | 788 | struct module *owner; |
@@ -803,9 +803,6 @@ struct file_operations { | |||
803 | int (*aio_fsync) (struct kiocb *, int datasync); | 803 | int (*aio_fsync) (struct kiocb *, int datasync); |
804 | int (*fasync) (int, struct file *, int); | 804 | int (*fasync) (int, struct file *, int); |
805 | int (*lock) (struct file *, int, struct file_lock *); | 805 | int (*lock) (struct file *, int, struct file_lock *); |
806 | ssize_t (*readv) (struct file *, const struct iovec *, unsigned long, loff_t *); | ||
807 | ssize_t (*writev) (struct file *, const struct iovec *, unsigned long, loff_t *); | ||
808 | ssize_t (*sendfile) (struct file *, loff_t *, size_t, read_actor_t, void *); | ||
809 | ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int); | 806 | ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int); |
810 | unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); | 807 | unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); |
811 | int (*check_flags)(int); | 808 | int (*check_flags)(int); |
@@ -814,6 +811,7 @@ struct file_operations { | |||
814 | ssize_t (*splice_read)(struct file *, struct pipe_inode_info *, size_t, unsigned int); | 811 | ssize_t (*splice_read)(struct file *, struct pipe_inode_info *, size_t, unsigned int); |
815 | int (*setlease)(struct file *, long arg, struct file_lock **); | 812 | int (*setlease)(struct file *, long arg, struct file_lock **); |
816 | long (*fallocate)(struct file *, int mode, loff_t offset, loff_t len); | 813 | long (*fallocate)(struct file *, int mode, loff_t offset, loff_t len); |
814 | int (*show_fdinfo)(struct seq_file *m, struct file *f); | ||
817 | }; | 815 | }; |
818 | 816 | ||
819 | Again, all methods are called without any locks being held, unless | 817 | Again, all methods are called without any locks being held, unless |
@@ -864,12 +862,6 @@ otherwise noted. | |||
864 | lock: called by the fcntl(2) system call for F_GETLK, F_SETLK, and F_SETLKW | 862 | lock: called by the fcntl(2) system call for F_GETLK, F_SETLK, and F_SETLKW |
865 | commands | 863 | commands |
866 | 864 | ||
867 | readv: called by the readv(2) system call | ||
868 | |||
869 | writev: called by the writev(2) system call | ||
870 | |||
871 | sendfile: called by the sendfile(2) system call | ||
872 | |||
873 | get_unmapped_area: called by the mmap(2) system call | 865 | get_unmapped_area: called by the mmap(2) system call |
874 | 866 | ||
875 | check_flags: called by the fcntl(2) system call for F_SETFL command | 867 | check_flags: called by the fcntl(2) system call for F_SETFL command |
diff --git a/Documentation/gpio/board.txt b/Documentation/gpio/board.txt index 0d03506f2cc5..ba169faad5c6 100644 --- a/Documentation/gpio/board.txt +++ b/Documentation/gpio/board.txt | |||
@@ -72,10 +72,11 @@ where | |||
72 | 72 | ||
73 | - chip_label is the label of the gpiod_chip instance providing the GPIO | 73 | - chip_label is the label of the gpiod_chip instance providing the GPIO |
74 | - chip_hwnum is the hardware number of the GPIO within the chip | 74 | - chip_hwnum is the hardware number of the GPIO within the chip |
75 | - dev_id is the identifier of the device that will make use of this GPIO. If | 75 | - dev_id is the identifier of the device that will make use of this GPIO. It |
76 | NULL, the GPIO will be available to all devices. | 76 | can be NULL, in which case it will be matched for calls to gpiod_get() |
77 | with a NULL device. | ||
77 | - con_id is the name of the GPIO function from the device point of view. It | 78 | - con_id is the name of the GPIO function from the device point of view. It |
78 | can be NULL. | 79 | can be NULL, in which case it will match any function. |
79 | - idx is the index of the GPIO within the function. | 80 | - idx is the index of the GPIO within the function. |
80 | - flags is defined to specify the following properties: | 81 | - flags is defined to specify the following properties: |
81 | * GPIOF_ACTIVE_LOW - to configure the GPIO as active-low | 82 | * GPIOF_ACTIVE_LOW - to configure the GPIO as active-low |
@@ -86,18 +87,23 @@ In the future, these flags might be extended to support more properties. | |||
86 | 87 | ||
87 | Note that GPIO_LOOKUP() is just a shortcut to GPIO_LOOKUP_IDX() where idx = 0. | 88 | Note that GPIO_LOOKUP() is just a shortcut to GPIO_LOOKUP_IDX() where idx = 0. |
88 | 89 | ||
89 | A lookup table can then be defined as follows: | 90 | A lookup table can then be defined as follows, with an empty entry defining its |
91 | end: | ||
90 | 92 | ||
91 | struct gpiod_lookup gpios_table[] = { | 93 | struct gpiod_lookup_table gpios_table = { |
92 | GPIO_LOOKUP_IDX("gpio.0", 15, "foo.0", "led", 0, GPIO_ACTIVE_HIGH), | 94 | .dev_id = "foo.0", |
93 | GPIO_LOOKUP_IDX("gpio.0", 16, "foo.0", "led", 1, GPIO_ACTIVE_HIGH), | 95 | .table = { |
94 | GPIO_LOOKUP_IDX("gpio.0", 17, "foo.0", "led", 2, GPIO_ACTIVE_HIGH), | 96 | GPIO_LOOKUP_IDX("gpio.0", 15, "led", 0, GPIO_ACTIVE_HIGH), |
95 | GPIO_LOOKUP("gpio.0", 1, "foo.0", "power", GPIO_ACTIVE_LOW), | 97 | GPIO_LOOKUP_IDX("gpio.0", 16, "led", 1, GPIO_ACTIVE_HIGH), |
96 | }; | 98 | GPIO_LOOKUP_IDX("gpio.0", 17, "led", 2, GPIO_ACTIVE_HIGH), |
99 | GPIO_LOOKUP("gpio.0", 1, "power", GPIO_ACTIVE_LOW), | ||
100 | { }, | ||
101 | }, | ||
102 | }; | ||
97 | 103 | ||
98 | And the table can be added by the board code as follows: | 104 | And the table can be added by the board code as follows: |
99 | 105 | ||
100 | gpiod_add_table(gpios_table, ARRAY_SIZE(gpios_table)); | 106 | gpiod_add_lookup_table(&gpios_table); |
101 | 107 | ||
102 | The driver controlling "foo.0" will then be able to obtain its GPIOs as follows: | 108 | The driver controlling "foo.0" will then be able to obtain its GPIOs as follows: |
103 | 109 | ||
diff --git a/Documentation/gpio/consumer.txt b/Documentation/gpio/consumer.txt index 07c74a3765a0..e42f77d8d4ca 100644 --- a/Documentation/gpio/consumer.txt +++ b/Documentation/gpio/consumer.txt | |||
@@ -38,7 +38,11 @@ device that displays digits), an additional index argument can be specified: | |||
38 | const char *con_id, unsigned int idx) | 38 | const char *con_id, unsigned int idx) |
39 | 39 | ||
40 | Both functions return either a valid GPIO descriptor, or an error code checkable | 40 | Both functions return either a valid GPIO descriptor, or an error code checkable |
41 | with IS_ERR(). They will never return a NULL pointer. | 41 | with IS_ERR() (they will never return a NULL pointer). -ENOENT will be returned |
42 | if and only if no GPIO has been assigned to the device/function/index triplet, | ||
43 | other error codes are used for cases where a GPIO has been assigned but an error | ||
44 | occured while trying to acquire it. This is useful to discriminate between mere | ||
45 | errors and an absence of GPIO for optional GPIO parameters. | ||
42 | 46 | ||
43 | Device-managed variants of these functions are also defined: | 47 | Device-managed variants of these functions are also defined: |
44 | 48 | ||
diff --git a/Documentation/hwmon/adm1025 b/Documentation/hwmon/adm1025 index 39d2b781b5d6..99f05049c68a 100644 --- a/Documentation/hwmon/adm1025 +++ b/Documentation/hwmon/adm1025 | |||
@@ -18,7 +18,7 @@ The NE1619 presents some differences with the original ADM1025: | |||
18 | 18 | ||
19 | Authors: | 19 | Authors: |
20 | Chen-Yuan Wu <gwu@esoft.com>, | 20 | Chen-Yuan Wu <gwu@esoft.com>, |
21 | Jean Delvare <khali@linux-fr.org> | 21 | Jean Delvare <jdelvare@suse.de> |
22 | 22 | ||
23 | Description | 23 | Description |
24 | ----------- | 24 | ----------- |
diff --git a/Documentation/hwmon/adm1031 b/Documentation/hwmon/adm1031 index be92a77da1d5..a143117c99cb 100644 --- a/Documentation/hwmon/adm1031 +++ b/Documentation/hwmon/adm1031 | |||
@@ -16,7 +16,7 @@ Supported chips: | |||
16 | 16 | ||
17 | Authors: | 17 | Authors: |
18 | Alexandre d'Alton <alex@alexdalton.org> | 18 | Alexandre d'Alton <alex@alexdalton.org> |
19 | Jean Delvare <khali@linux-fr.org> | 19 | Jean Delvare <jdelvare@suse.de> |
20 | 20 | ||
21 | Description | 21 | Description |
22 | ----------- | 22 | ----------- |
diff --git a/Documentation/hwmon/adm9240 b/Documentation/hwmon/adm9240 index 36e8ec6aa868..9b174fc700cc 100644 --- a/Documentation/hwmon/adm9240 +++ b/Documentation/hwmon/adm9240 | |||
@@ -25,7 +25,7 @@ Authors: | |||
25 | Philip Edelbrock <phil@netroedge.com>, | 25 | Philip Edelbrock <phil@netroedge.com>, |
26 | Michiel Rook <michiel@grendelproject.nl>, | 26 | Michiel Rook <michiel@grendelproject.nl>, |
27 | Grant Coady <gcoady.lk@gmail.com> with guidance | 27 | Grant Coady <gcoady.lk@gmail.com> with guidance |
28 | from Jean Delvare <khali@linux-fr.org> | 28 | from Jean Delvare <jdelvare@suse.de> |
29 | 29 | ||
30 | Interface | 30 | Interface |
31 | --------- | 31 | --------- |
diff --git a/Documentation/hwmon/ds1621 b/Documentation/hwmon/ds1621 index 896cdc972ca8..f775e612f582 100644 --- a/Documentation/hwmon/ds1621 +++ b/Documentation/hwmon/ds1621 | |||
@@ -31,7 +31,7 @@ Authors: | |||
31 | Christian W. Zuckschwerdt <zany@triq.net> | 31 | Christian W. Zuckschwerdt <zany@triq.net> |
32 | valuable contributions by Jan M. Sendler <sendler@sendler.de> | 32 | valuable contributions by Jan M. Sendler <sendler@sendler.de> |
33 | ported to 2.6 by Aurelien Jarno <aurelien@aurel32.net> | 33 | ported to 2.6 by Aurelien Jarno <aurelien@aurel32.net> |
34 | with the help of Jean Delvare <khali@linux-fr.org> | 34 | with the help of Jean Delvare <jdelvare@suse.de> |
35 | 35 | ||
36 | Module Parameters | 36 | Module Parameters |
37 | ------------------ | 37 | ------------------ |
diff --git a/Documentation/hwmon/emc6w201 b/Documentation/hwmon/emc6w201 index 32f355aaf56b..757629b12897 100644 --- a/Documentation/hwmon/emc6w201 +++ b/Documentation/hwmon/emc6w201 | |||
@@ -7,7 +7,7 @@ Supported chips: | |||
7 | Addresses scanned: I2C 0x2c, 0x2d, 0x2e | 7 | Addresses scanned: I2C 0x2c, 0x2d, 0x2e |
8 | Datasheet: Not public | 8 | Datasheet: Not public |
9 | 9 | ||
10 | Author: Jean Delvare <khali@linux-fr.org> | 10 | Author: Jean Delvare <jdelvare@suse.de> |
11 | 11 | ||
12 | 12 | ||
13 | Description | 13 | Description |
diff --git a/Documentation/hwmon/f71805f b/Documentation/hwmon/f71805f index f0d55976740a..48a356084bc6 100644 --- a/Documentation/hwmon/f71805f +++ b/Documentation/hwmon/f71805f | |||
@@ -15,7 +15,7 @@ Supported chips: | |||
15 | Addresses scanned: none, address read from Super I/O config space | 15 | Addresses scanned: none, address read from Super I/O config space |
16 | Datasheet: Available from the Fintek website | 16 | Datasheet: Available from the Fintek website |
17 | 17 | ||
18 | Author: Jean Delvare <khali@linux-fr.org> | 18 | Author: Jean Delvare <jdelvare@suse.de> |
19 | 19 | ||
20 | Thanks to Denis Kieft from Barracuda Networks for the donation of a | 20 | Thanks to Denis Kieft from Barracuda Networks for the donation of a |
21 | test system (custom Jetway K8M8MS motherboard, with CPU and RAM) and | 21 | test system (custom Jetway K8M8MS motherboard, with CPU and RAM) and |
diff --git a/Documentation/hwmon/gl518sm b/Documentation/hwmon/gl518sm index 26f9f3c02dc7..494bb55b6e72 100644 --- a/Documentation/hwmon/gl518sm +++ b/Documentation/hwmon/gl518sm | |||
@@ -14,7 +14,7 @@ Authors: | |||
14 | Frodo Looijaard <frodol@dds.nl>, | 14 | Frodo Looijaard <frodol@dds.nl>, |
15 | Kyösti Mälkki <kmalkki@cc.hut.fi> | 15 | Kyösti Mälkki <kmalkki@cc.hut.fi> |
16 | Hong-Gunn Chew <hglinux@gunnet.org> | 16 | Hong-Gunn Chew <hglinux@gunnet.org> |
17 | Jean Delvare <khali@linux-fr.org> | 17 | Jean Delvare <jdelvare@suse.de> |
18 | 18 | ||
19 | Description | 19 | Description |
20 | ----------- | 20 | ----------- |
diff --git a/Documentation/hwmon/it87 b/Documentation/hwmon/it87 index c263740f0cba..0c1635082c99 100644 --- a/Documentation/hwmon/it87 +++ b/Documentation/hwmon/it87 | |||
@@ -2,6 +2,10 @@ Kernel driver it87 | |||
2 | ================== | 2 | ================== |
3 | 3 | ||
4 | Supported chips: | 4 | Supported chips: |
5 | * IT8603E | ||
6 | Prefix: 'it8603' | ||
7 | Addresses scanned: from Super I/O config space (8 I/O ports) | ||
8 | Datasheet: Not publicly available | ||
5 | * IT8705F | 9 | * IT8705F |
6 | Prefix: 'it87' | 10 | Prefix: 'it87' |
7 | Addresses scanned: from Super I/O config space (8 I/O ports) | 11 | Addresses scanned: from Super I/O config space (8 I/O ports) |
@@ -53,7 +57,7 @@ Supported chips: | |||
53 | 57 | ||
54 | Authors: | 58 | Authors: |
55 | Christophe Gauthron | 59 | Christophe Gauthron |
56 | Jean Delvare <khali@linux-fr.org> | 60 | Jean Delvare <jdelvare@suse.de> |
57 | 61 | ||
58 | 62 | ||
59 | Module Parameters | 63 | Module Parameters |
@@ -90,7 +94,7 @@ motherboard models. | |||
90 | Description | 94 | Description |
91 | ----------- | 95 | ----------- |
92 | 96 | ||
93 | This driver implements support for the IT8705F, IT8712F, IT8716F, | 97 | This driver implements support for the IT8603E, IT8705F, IT8712F, IT8716F, |
94 | IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8758E, IT8771E, IT8772E, | 98 | IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8758E, IT8771E, IT8772E, |
95 | IT8782F, IT8783E/F, and SiS950 chips. | 99 | IT8782F, IT8783E/F, and SiS950 chips. |
96 | 100 | ||
@@ -129,6 +133,10 @@ to userspace applications. | |||
129 | The IT8728F, IT8771E, and IT8772E are considered compatible with the IT8721F, | 133 | The IT8728F, IT8771E, and IT8772E are considered compatible with the IT8721F, |
130 | until a datasheet becomes available (hopefully.) | 134 | until a datasheet becomes available (hopefully.) |
131 | 135 | ||
136 | The IT8603E is a custom design, hardware monitoring part is similar to | ||
137 | IT8728F. It only supports 16-bit fan mode, the full speed mode of the | ||
138 | fan is not supported (value 0 of pwmX_enable). | ||
139 | |||
132 | Temperatures are measured in degrees Celsius. An alarm is triggered once | 140 | Temperatures are measured in degrees Celsius. An alarm is triggered once |
133 | when the Overtemperature Shutdown limit is crossed. | 141 | when the Overtemperature Shutdown limit is crossed. |
134 | 142 | ||
@@ -145,13 +153,16 @@ alarm is triggered if the voltage has crossed a programmable minimum or | |||
145 | maximum limit. Note that minimum in this case always means 'closest to | 153 | maximum limit. Note that minimum in this case always means 'closest to |
146 | zero'; this is important for negative voltage measurements. All voltage | 154 | zero'; this is important for negative voltage measurements. All voltage |
147 | inputs can measure voltages between 0 and 4.08 volts, with a resolution of | 155 | inputs can measure voltages between 0 and 4.08 volts, with a resolution of |
148 | 0.016 volt (except IT8721F/IT8758E and IT8728F: 0.012 volt.) The battery | 156 | 0.016 volt (except IT8603E, IT8721F/IT8758E and IT8728F: 0.012 volt.) The |
149 | voltage in8 does not have limit registers. | 157 | battery voltage in8 does not have limit registers. |
150 | 158 | ||
151 | On the IT8721F/IT8758E, IT8782F, and IT8783E/F, some voltage inputs are | 159 | On the IT8603E, IT8721F/IT8758E, IT8782F, and IT8783E/F, some voltage inputs |
152 | internal and scaled inside the chip (in7 (optional for IT8782F and IT8783E/F), | 160 | are internal and scaled inside the chip: |
153 | in8 and optionally in3). The driver handles this transparently so user-space | 161 | * in3 (optional) |
154 | doesn't have to care. | 162 | * in7 (optional for IT8782F and IT8783E/F) |
163 | * in8 (always) | ||
164 | * in9 (relevant for IT8603E only) | ||
165 | The driver handles this transparently so user-space doesn't have to care. | ||
155 | 166 | ||
156 | The VID lines (IT8712F/IT8716F/IT8718F/IT8720F) encode the core voltage value: | 167 | The VID lines (IT8712F/IT8716F/IT8718F/IT8720F) encode the core voltage value: |
157 | the voltage level your processor should work with. This is hardcoded by | 168 | the voltage level your processor should work with. This is hardcoded by |
diff --git a/Documentation/hwmon/lm63 b/Documentation/hwmon/lm63 index 4d30d209881a..4a00461512a6 100644 --- a/Documentation/hwmon/lm63 +++ b/Documentation/hwmon/lm63 | |||
@@ -18,7 +18,7 @@ Supported chips: | |||
18 | Datasheet: Publicly available at the National Semiconductor website | 18 | Datasheet: Publicly available at the National Semiconductor website |
19 | http://www.national.com/pf/LM/LM96163.html | 19 | http://www.national.com/pf/LM/LM96163.html |
20 | 20 | ||
21 | Author: Jean Delvare <khali@linux-fr.org> | 21 | Author: Jean Delvare <jdelvare@suse.de> |
22 | 22 | ||
23 | Thanks go to Tyan and especially Alex Buckingham for setting up a remote | 23 | Thanks go to Tyan and especially Alex Buckingham for setting up a remote |
24 | access to their S4882 test platform for this driver. | 24 | access to their S4882 test platform for this driver. |
diff --git a/Documentation/hwmon/lm70 b/Documentation/hwmon/lm70 index 86d182942c51..1bb2db440671 100644 --- a/Documentation/hwmon/lm70 +++ b/Documentation/hwmon/lm70 | |||
@@ -43,5 +43,5 @@ data (0.03125 degrees celsius resolution). | |||
43 | 43 | ||
44 | Thanks to | 44 | Thanks to |
45 | --------- | 45 | --------- |
46 | Jean Delvare <khali@linux-fr.org> for mentoring the hwmon-side driver | 46 | Jean Delvare <jdelvare@suse.de> for mentoring the hwmon-side driver |
47 | development. | 47 | development. |
diff --git a/Documentation/hwmon/lm78 b/Documentation/hwmon/lm78 index 2bdc881a0c12..4dd47731789f 100644 --- a/Documentation/hwmon/lm78 +++ b/Documentation/hwmon/lm78 | |||
@@ -14,7 +14,7 @@ Supported chips: | |||
14 | http://www.national.com/ | 14 | http://www.national.com/ |
15 | 15 | ||
16 | Authors: Frodo Looijaard <frodol@dds.nl> | 16 | Authors: Frodo Looijaard <frodol@dds.nl> |
17 | Jean Delvare <khali@linux-fr.org> | 17 | Jean Delvare <jdelvare@suse.de> |
18 | 18 | ||
19 | Description | 19 | Description |
20 | ----------- | 20 | ----------- |
diff --git a/Documentation/hwmon/lm83 b/Documentation/hwmon/lm83 index a04d1fe9269c..50be5cb26de9 100644 --- a/Documentation/hwmon/lm83 +++ b/Documentation/hwmon/lm83 | |||
@@ -13,7 +13,7 @@ Supported chips: | |||
13 | http://www.national.com/pf/LM/LM82.html | 13 | http://www.national.com/pf/LM/LM82.html |
14 | 14 | ||
15 | 15 | ||
16 | Author: Jean Delvare <khali@linux-fr.org> | 16 | Author: Jean Delvare <jdelvare@suse.de> |
17 | 17 | ||
18 | Description | 18 | Description |
19 | ----------- | 19 | ----------- |
diff --git a/Documentation/hwmon/lm87 b/Documentation/hwmon/lm87 index 6b47b67fd968..a2339fd9acb9 100644 --- a/Documentation/hwmon/lm87 +++ b/Documentation/hwmon/lm87 | |||
@@ -17,7 +17,7 @@ Authors: | |||
17 | Mark Studebaker <mdsxyz123@yahoo.com>, | 17 | Mark Studebaker <mdsxyz123@yahoo.com>, |
18 | Stephen Rousset <stephen.rousset@rocketlogix.com>, | 18 | Stephen Rousset <stephen.rousset@rocketlogix.com>, |
19 | Dan Eaton <dan.eaton@rocketlogix.com>, | 19 | Dan Eaton <dan.eaton@rocketlogix.com>, |
20 | Jean Delvare <khali@linux-fr.org>, | 20 | Jean Delvare <jdelvare@suse.de>, |
21 | Original 2.6 port Jeff Oliver | 21 | Original 2.6 port Jeff Oliver |
22 | 22 | ||
23 | Description | 23 | Description |
diff --git a/Documentation/hwmon/lm90 b/Documentation/hwmon/lm90 index ab81013cc390..8122675d30f6 100644 --- a/Documentation/hwmon/lm90 +++ b/Documentation/hwmon/lm90 | |||
@@ -129,7 +129,7 @@ Supported chips: | |||
129 | http://www.ti.com/litv/pdf/sbos686 | 129 | http://www.ti.com/litv/pdf/sbos686 |
130 | 130 | ||
131 | 131 | ||
132 | Author: Jean Delvare <khali@linux-fr.org> | 132 | Author: Jean Delvare <jdelvare@suse.de> |
133 | 133 | ||
134 | 134 | ||
135 | Description | 135 | Description |
diff --git a/Documentation/hwmon/lm92 b/Documentation/hwmon/lm92 index 7705bfaa0708..22f68ad032cf 100644 --- a/Documentation/hwmon/lm92 +++ b/Documentation/hwmon/lm92 | |||
@@ -19,7 +19,7 @@ Supported chips: | |||
19 | 19 | ||
20 | Authors: | 20 | Authors: |
21 | Abraham van der Merwe <abraham@2d3d.co.za> | 21 | Abraham van der Merwe <abraham@2d3d.co.za> |
22 | Jean Delvare <khali@linux-fr.org> | 22 | Jean Delvare <jdelvare@suse.de> |
23 | 23 | ||
24 | 24 | ||
25 | Description | 25 | Description |
diff --git a/Documentation/hwmon/max1619 b/Documentation/hwmon/max1619 index e6d87398cc8f..518bae3a80c4 100644 --- a/Documentation/hwmon/max1619 +++ b/Documentation/hwmon/max1619 | |||
@@ -10,7 +10,7 @@ Supported chips: | |||
10 | 10 | ||
11 | Authors: | 11 | Authors: |
12 | Oleksij Rempel <bug-track@fisher-privat.net>, | 12 | Oleksij Rempel <bug-track@fisher-privat.net>, |
13 | Jean Delvare <khali@linux-fr.org> | 13 | Jean Delvare <jdelvare@suse.de> |
14 | 14 | ||
15 | Description | 15 | Description |
16 | ----------- | 16 | ----------- |
diff --git a/Documentation/hwmon/pc87360 b/Documentation/hwmon/pc87360 index cbac32b59c8c..d5f5cf16ce59 100644 --- a/Documentation/hwmon/pc87360 +++ b/Documentation/hwmon/pc87360 | |||
@@ -7,7 +7,7 @@ Supported chips: | |||
7 | Addresses scanned: none, address read from Super I/O config space | 7 | Addresses scanned: none, address read from Super I/O config space |
8 | Datasheets: No longer available | 8 | Datasheets: No longer available |
9 | 9 | ||
10 | Authors: Jean Delvare <khali@linux-fr.org> | 10 | Authors: Jean Delvare <jdelvare@suse.de> |
11 | 11 | ||
12 | Thanks to Sandeep Mehta, Tonko de Rooy and Daniel Ceregatti for testing. | 12 | Thanks to Sandeep Mehta, Tonko de Rooy and Daniel Ceregatti for testing. |
13 | Thanks to Rudolf Marek for helping me investigate conversion issues. | 13 | Thanks to Rudolf Marek for helping me investigate conversion issues. |
diff --git a/Documentation/hwmon/pc87427 b/Documentation/hwmon/pc87427 index 8fdd08c9e48b..c313eb66e08a 100644 --- a/Documentation/hwmon/pc87427 +++ b/Documentation/hwmon/pc87427 | |||
@@ -7,7 +7,7 @@ Supported chips: | |||
7 | Addresses scanned: none, address read from Super I/O config space | 7 | Addresses scanned: none, address read from Super I/O config space |
8 | Datasheet: No longer available | 8 | Datasheet: No longer available |
9 | 9 | ||
10 | Author: Jean Delvare <khali@linux-fr.org> | 10 | Author: Jean Delvare <jdelvare@suse.de> |
11 | 11 | ||
12 | Thanks to Amir Habibi at Candelis for setting up a test system, and to | 12 | Thanks to Amir Habibi at Candelis for setting up a test system, and to |
13 | Michael Kress for testing several iterations of this driver. | 13 | Michael Kress for testing several iterations of this driver. |
diff --git a/Documentation/hwmon/pcf8591 b/Documentation/hwmon/pcf8591 index ac020b3bb7b3..447c0702c0ec 100644 --- a/Documentation/hwmon/pcf8591 +++ b/Documentation/hwmon/pcf8591 | |||
@@ -11,7 +11,7 @@ Supported chips: | |||
11 | Authors: | 11 | Authors: |
12 | Aurelien Jarno <aurelien@aurel32.net> | 12 | Aurelien Jarno <aurelien@aurel32.net> |
13 | valuable contributions by Jan M. Sendler <sendler@sendler.de>, | 13 | valuable contributions by Jan M. Sendler <sendler@sendler.de>, |
14 | Jean Delvare <khali@linux-fr.org> | 14 | Jean Delvare <jdelvare@suse.de> |
15 | 15 | ||
16 | 16 | ||
17 | Description | 17 | Description |
diff --git a/Documentation/hwmon/smsc47m1 b/Documentation/hwmon/smsc47m1 index 2a13378dcf22..10a24b420686 100644 --- a/Documentation/hwmon/smsc47m1 +++ b/Documentation/hwmon/smsc47m1 | |||
@@ -25,7 +25,7 @@ Authors: | |||
25 | With assistance from Bruce Allen <ballen@uwm.edu>, and his | 25 | With assistance from Bruce Allen <ballen@uwm.edu>, and his |
26 | fan.c program: http://www.lsc-group.phys.uwm.edu/%7Eballen/driver/ | 26 | fan.c program: http://www.lsc-group.phys.uwm.edu/%7Eballen/driver/ |
27 | Gabriele Gorla <gorlik@yahoo.com>, | 27 | Gabriele Gorla <gorlik@yahoo.com>, |
28 | Jean Delvare <khali@linux-fr.org> | 28 | Jean Delvare <jdelvare@suse.de> |
29 | 29 | ||
30 | Description | 30 | Description |
31 | ----------- | 31 | ----------- |
diff --git a/Documentation/hwmon/w83627ehf b/Documentation/hwmon/w83627ehf index ceaf6f652b00..735c42a85ead 100644 --- a/Documentation/hwmon/w83627ehf +++ b/Documentation/hwmon/w83627ehf | |||
@@ -36,7 +36,7 @@ Supported chips: | |||
36 | Datasheet: Available from Nuvoton upon request | 36 | Datasheet: Available from Nuvoton upon request |
37 | 37 | ||
38 | Authors: | 38 | Authors: |
39 | Jean Delvare <khali@linux-fr.org> | 39 | Jean Delvare <jdelvare@suse.de> |
40 | Yuan Mu (Winbond) | 40 | Yuan Mu (Winbond) |
41 | Rudolf Marek <r.marek@assembler.cz> | 41 | Rudolf Marek <r.marek@assembler.cz> |
42 | David Hubbard <david.c.hubbard@gmail.com> | 42 | David Hubbard <david.c.hubbard@gmail.com> |
diff --git a/Documentation/hwmon/w83795 b/Documentation/hwmon/w83795 index 9f160371f463..d3e678216b9a 100644 --- a/Documentation/hwmon/w83795 +++ b/Documentation/hwmon/w83795 | |||
@@ -13,7 +13,7 @@ Supported chips: | |||
13 | 13 | ||
14 | Authors: | 14 | Authors: |
15 | Wei Song (Nuvoton) | 15 | Wei Song (Nuvoton) |
16 | Jean Delvare <khali@linux-fr.org> | 16 | Jean Delvare <jdelvare@suse.de> |
17 | 17 | ||
18 | 18 | ||
19 | Pin mapping | 19 | Pin mapping |
diff --git a/Documentation/hwmon/w83l785ts b/Documentation/hwmon/w83l785ts index bd1fa9d4468d..c8978478871f 100644 --- a/Documentation/hwmon/w83l785ts +++ b/Documentation/hwmon/w83l785ts | |||
@@ -9,7 +9,7 @@ Supported chips: | |||
9 | http://www.winbond-usa.com/products/winbond_products/pdfs/PCIC/W83L785TS-S.pdf | 9 | http://www.winbond-usa.com/products/winbond_products/pdfs/PCIC/W83L785TS-S.pdf |
10 | 10 | ||
11 | Authors: | 11 | Authors: |
12 | Jean Delvare <khali@linux-fr.org> | 12 | Jean Delvare <jdelvare@suse.de> |
13 | 13 | ||
14 | Description | 14 | Description |
15 | ----------- | 15 | ----------- |
diff --git a/Documentation/i2c/busses/i2c-i801 b/Documentation/i2c/busses/i2c-i801 index 7b0dcdb57173..aaaf069306a3 100644 --- a/Documentation/i2c/busses/i2c-i801 +++ b/Documentation/i2c/busses/i2c-i801 | |||
@@ -33,7 +33,7 @@ and the additional 'Integrated Device Function' controllers are supported. | |||
33 | 33 | ||
34 | Authors: | 34 | Authors: |
35 | Mark Studebaker <mdsxyz123@yahoo.com> | 35 | Mark Studebaker <mdsxyz123@yahoo.com> |
36 | Jean Delvare <khali@linux-fr.org> | 36 | Jean Delvare <jdelvare@suse.de> |
37 | 37 | ||
38 | 38 | ||
39 | Module Parameters | 39 | Module Parameters |
diff --git a/Documentation/i2c/busses/i2c-parport b/Documentation/i2c/busses/i2c-parport index 2461c7b53b2c..0e2d17b460fd 100644 --- a/Documentation/i2c/busses/i2c-parport +++ b/Documentation/i2c/busses/i2c-parport | |||
@@ -1,6 +1,6 @@ | |||
1 | Kernel driver i2c-parport | 1 | Kernel driver i2c-parport |
2 | 2 | ||
3 | Author: Jean Delvare <khali@linux-fr.org> | 3 | Author: Jean Delvare <jdelvare@suse.de> |
4 | 4 | ||
5 | This is a unified driver for several i2c-over-parallel-port adapters, | 5 | This is a unified driver for several i2c-over-parallel-port adapters, |
6 | such as the ones made by Philips, Velleman or ELV. This driver is | 6 | such as the ones made by Philips, Velleman or ELV. This driver is |
diff --git a/Documentation/i2c/busses/i2c-parport-light b/Documentation/i2c/busses/i2c-parport-light index c22ee063e1e5..7071b8ba0af4 100644 --- a/Documentation/i2c/busses/i2c-parport-light +++ b/Documentation/i2c/busses/i2c-parport-light | |||
@@ -1,6 +1,6 @@ | |||
1 | Kernel driver i2c-parport-light | 1 | Kernel driver i2c-parport-light |
2 | 2 | ||
3 | Author: Jean Delvare <khali@linux-fr.org> | 3 | Author: Jean Delvare <jdelvare@suse.de> |
4 | 4 | ||
5 | This driver is a light version of i2c-parport. It doesn't depend | 5 | This driver is a light version of i2c-parport. It doesn't depend |
6 | on the parport driver, and uses direct I/O access instead. This might be | 6 | on the parport driver, and uses direct I/O access instead. This might be |
diff --git a/Documentation/i2c/busses/i2c-piix4 b/Documentation/i2c/busses/i2c-piix4 index c097e0f020fe..aa959fd22450 100644 --- a/Documentation/i2c/busses/i2c-piix4 +++ b/Documentation/i2c/busses/i2c-piix4 | |||
@@ -13,7 +13,7 @@ Supported adapters: | |||
13 | * AMD SP5100 (SB700 derivative found on some server mainboards) | 13 | * AMD SP5100 (SB700 derivative found on some server mainboards) |
14 | Datasheet: Publicly available at the AMD website | 14 | Datasheet: Publicly available at the AMD website |
15 | http://support.amd.com/us/Embedded_TechDocs/44413.pdf | 15 | http://support.amd.com/us/Embedded_TechDocs/44413.pdf |
16 | * AMD Hudson-2, CZ | 16 | * AMD Hudson-2, ML, CZ |
17 | Datasheet: Not publicly available | 17 | Datasheet: Not publicly available |
18 | * Standard Microsystems (SMSC) SLC90E66 (Victory66) southbridge | 18 | * Standard Microsystems (SMSC) SLC90E66 (Victory66) southbridge |
19 | Datasheet: Publicly available at the SMSC website http://www.smsc.com | 19 | Datasheet: Publicly available at the SMSC website http://www.smsc.com |
diff --git a/Documentation/i2c/busses/i2c-taos-evm b/Documentation/i2c/busses/i2c-taos-evm index 63f62bcbf592..60299555dcf0 100644 --- a/Documentation/i2c/busses/i2c-taos-evm +++ b/Documentation/i2c/busses/i2c-taos-evm | |||
@@ -1,6 +1,6 @@ | |||
1 | Kernel driver i2c-taos-evm | 1 | Kernel driver i2c-taos-evm |
2 | 2 | ||
3 | Author: Jean Delvare <khali@linux-fr.org> | 3 | Author: Jean Delvare <jdelvare@suse.de> |
4 | 4 | ||
5 | This is a driver for the evaluation modules for TAOS I2C/SMBus chips. | 5 | This is a driver for the evaluation modules for TAOS I2C/SMBus chips. |
6 | The modules include an SMBus master with limited capabilities, which can | 6 | The modules include an SMBus master with limited capabilities, which can |
diff --git a/Documentation/i2c/busses/i2c-viapro b/Documentation/i2c/busses/i2c-viapro index b88f91ae580e..ab64ce21c254 100644 --- a/Documentation/i2c/busses/i2c-viapro +++ b/Documentation/i2c/busses/i2c-viapro | |||
@@ -28,7 +28,7 @@ Supported adapters: | |||
28 | Authors: | 28 | Authors: |
29 | Kyösti Mälkki <kmalkki@cc.hut.fi>, | 29 | Kyösti Mälkki <kmalkki@cc.hut.fi>, |
30 | Mark D. Studebaker <mdsxyz123@yahoo.com>, | 30 | Mark D. Studebaker <mdsxyz123@yahoo.com>, |
31 | Jean Delvare <khali@linux-fr.org> | 31 | Jean Delvare <jdelvare@suse.de> |
32 | 32 | ||
33 | Module Parameters | 33 | Module Parameters |
34 | ----------------- | 34 | ----------------- |
diff --git a/Documentation/i2c/fault-codes b/Documentation/i2c/fault-codes index 045765c0b9b5..47c25abb7d52 100644 --- a/Documentation/i2c/fault-codes +++ b/Documentation/i2c/fault-codes | |||
@@ -64,9 +64,6 @@ EINVAL | |||
64 | detected before any I/O operation was started. Use a more | 64 | detected before any I/O operation was started. Use a more |
65 | specific fault code when you can. | 65 | specific fault code when you can. |
66 | 66 | ||
67 | One example would be a driver trying an SMBus Block Write | ||
68 | with block size outside the range of 1-32 bytes. | ||
69 | |||
70 | EIO | 67 | EIO |
71 | This rather vague error means something went wrong when | 68 | This rather vague error means something went wrong when |
72 | performing an I/O operation. Use a more specific fault | 69 | performing an I/O operation. Use a more specific fault |
diff --git a/Documentation/input/gamepad.txt b/Documentation/input/gamepad.txt index 31bb6a4029ef..3f6d8a5e9cdc 100644 --- a/Documentation/input/gamepad.txt +++ b/Documentation/input/gamepad.txt | |||
@@ -68,7 +68,7 @@ features that you need, first. How each feature is mapped is described below. | |||
68 | Legacy drivers often don't comply to these rules. As we cannot change them | 68 | Legacy drivers often don't comply to these rules. As we cannot change them |
69 | for backwards-compatibility reasons, you need to provide fixup mappings in | 69 | for backwards-compatibility reasons, you need to provide fixup mappings in |
70 | user-space yourself. Some of them might also provide module-options that | 70 | user-space yourself. Some of them might also provide module-options that |
71 | change the mappings so you can adivce users to set these. | 71 | change the mappings so you can advise users to set these. |
72 | 72 | ||
73 | All new gamepads are supposed to comply with this mapping. Please report any | 73 | All new gamepads are supposed to comply with this mapping. Please report any |
74 | bugs, if they don't. | 74 | bugs, if they don't. |
@@ -150,10 +150,10 @@ Menu-Pad: | |||
150 | BTN_START | 150 | BTN_START |
151 | Many pads also have a third button which is branded or has a special symbol | 151 | Many pads also have a third button which is branded or has a special symbol |
152 | and meaning. Such buttons are mapped as BTN_MODE. Examples are the Nintendo | 152 | and meaning. Such buttons are mapped as BTN_MODE. Examples are the Nintendo |
153 | "HOME" button, the XBox "X"-button or Sony "P" button. | 153 | "HOME" button, the XBox "X"-button or Sony "PS" button. |
154 | 154 | ||
155 | Rumble: | 155 | Rumble: |
156 | Rumble is adverticed as FF_RUMBLE. | 156 | Rumble is advertised as FF_RUMBLE. |
157 | 157 | ||
158 | ---------------------------------------------------------------------------- | 158 | ---------------------------------------------------------------------------- |
159 | Written 2013 by David Herrmann <dh.herrmann@gmail.com> | 159 | Written 2013 by David Herrmann <dh.herrmann@gmail.com> |
diff --git a/Documentation/input/joystick-api.txt b/Documentation/input/joystick-api.txt index c507330740cd..943b18eac918 100644 --- a/Documentation/input/joystick-api.txt +++ b/Documentation/input/joystick-api.txt | |||
@@ -16,14 +16,14 @@ joystick. | |||
16 | 16 | ||
17 | By default, the device is opened in blocking mode. | 17 | By default, the device is opened in blocking mode. |
18 | 18 | ||
19 | int fd = open ("/dev/js0", O_RDONLY); | 19 | int fd = open ("/dev/input/js0", O_RDONLY); |
20 | 20 | ||
21 | 21 | ||
22 | 2. Event Reading | 22 | 2. Event Reading |
23 | ~~~~~~~~~~~~~~~~ | 23 | ~~~~~~~~~~~~~~~~ |
24 | 24 | ||
25 | struct js_event e; | 25 | struct js_event e; |
26 | read (fd, &e, sizeof(struct js_event)); | 26 | read (fd, &e, sizeof(e)); |
27 | 27 | ||
28 | where js_event is defined as | 28 | where js_event is defined as |
29 | 29 | ||
@@ -34,8 +34,8 @@ where js_event is defined as | |||
34 | __u8 number; /* axis/button number */ | 34 | __u8 number; /* axis/button number */ |
35 | }; | 35 | }; |
36 | 36 | ||
37 | If the read is successful, it will return sizeof(struct js_event), unless | 37 | If the read is successful, it will return sizeof(e), unless you wanted to read |
38 | you wanted to read more than one event per read as described in section 3.1. | 38 | more than one event per read as described in section 3.1. |
39 | 39 | ||
40 | 40 | ||
41 | 2.1 js_event.type | 41 | 2.1 js_event.type |
@@ -99,9 +99,9 @@ may work well if you handle JS_EVENT_INIT events separately, | |||
99 | 99 | ||
100 | if ((js_event.type & ~JS_EVENT_INIT) == JS_EVENT_BUTTON) { | 100 | if ((js_event.type & ~JS_EVENT_INIT) == JS_EVENT_BUTTON) { |
101 | if (js_event.value) | 101 | if (js_event.value) |
102 | buttons_state |= (1 << js_event.number); | 102 | buttons_state |= (1 << js_event.number); |
103 | else | 103 | else |
104 | buttons_state &= ~(1 << js_event.number); | 104 | buttons_state &= ~(1 << js_event.number); |
105 | } | 105 | } |
106 | 106 | ||
107 | is much safer since it can't lose sync with the driver. As you would | 107 | is much safer since it can't lose sync with the driver. As you would |
@@ -144,14 +144,14 @@ all events on the queue (that is, until you get a -1). | |||
144 | For example, | 144 | For example, |
145 | 145 | ||
146 | while (1) { | 146 | while (1) { |
147 | while (read (fd, &e, sizeof(struct js_event)) > 0) { | 147 | while (read (fd, &e, sizeof(e)) > 0) { |
148 | process_event (e); | 148 | process_event (e); |
149 | } | 149 | } |
150 | /* EAGAIN is returned when the queue is empty */ | 150 | /* EAGAIN is returned when the queue is empty */ |
151 | if (errno != EAGAIN) { | 151 | if (errno != EAGAIN) { |
152 | /* error */ | 152 | /* error */ |
153 | } | 153 | } |
154 | /* do something interesting with processed events */ | 154 | /* do something interesting with processed events */ |
155 | } | 155 | } |
156 | 156 | ||
157 | One reason for emptying the queue is that if it gets full you'll start | 157 | One reason for emptying the queue is that if it gets full you'll start |
@@ -181,7 +181,7 @@ at a time using the typical read(2) functionality. For that, you would | |||
181 | replace the read above with something like | 181 | replace the read above with something like |
182 | 182 | ||
183 | struct js_event mybuffer[0xff]; | 183 | struct js_event mybuffer[0xff]; |
184 | int i = read (fd, mybuffer, sizeof(struct mybuffer)); | 184 | int i = read (fd, mybuffer, sizeof(mybuffer)); |
185 | 185 | ||
186 | In this case, read would return -1 if the queue was empty, or some | 186 | In this case, read would return -1 if the queue was empty, or some |
187 | other value in which the number of events read would be i / | 187 | other value in which the number of events read would be i / |
@@ -269,9 +269,9 @@ The driver offers backward compatibility, though. Here's a quick summary: | |||
269 | struct JS_DATA_TYPE js; | 269 | struct JS_DATA_TYPE js; |
270 | while (1) { | 270 | while (1) { |
271 | if (read (fd, &js, JS_RETURN) != JS_RETURN) { | 271 | if (read (fd, &js, JS_RETURN) != JS_RETURN) { |
272 | /* error */ | 272 | /* error */ |
273 | } | 273 | } |
274 | usleep (1000); | 274 | usleep (1000); |
275 | } | 275 | } |
276 | 276 | ||
277 | As you can figure out from the example, the read returns immediately, | 277 | As you can figure out from the example, the read returns immediately, |
diff --git a/Documentation/input/joystick.txt b/Documentation/input/joystick.txt index 304262bb661a..8d027dc86c1f 100644 --- a/Documentation/input/joystick.txt +++ b/Documentation/input/joystick.txt | |||
@@ -116,7 +116,7 @@ your needs: | |||
116 | For testing the joystick driver functionality, there is the jstest | 116 | For testing the joystick driver functionality, there is the jstest |
117 | program in the utilities package. You run it by typing: | 117 | program in the utilities package. You run it by typing: |
118 | 118 | ||
119 | jstest /dev/js0 | 119 | jstest /dev/input/js0 |
120 | 120 | ||
121 | And it should show a line with the joystick values, which update as you | 121 | And it should show a line with the joystick values, which update as you |
122 | move the stick, and press its buttons. The axes should all be zero when the | 122 | move the stick, and press its buttons. The axes should all be zero when the |
@@ -136,7 +136,7 @@ joystick should be autocalibrated by the driver automagically. However, with | |||
136 | some analog joysticks, that either do not use linear resistors, or if you | 136 | some analog joysticks, that either do not use linear resistors, or if you |
137 | want better precision, you can use the jscal program | 137 | want better precision, you can use the jscal program |
138 | 138 | ||
139 | jscal -c /dev/js0 | 139 | jscal -c /dev/input/js0 |
140 | 140 | ||
141 | included in the joystick package to set better correction coefficients than | 141 | included in the joystick package to set better correction coefficients than |
142 | what the driver would choose itself. | 142 | what the driver would choose itself. |
@@ -145,7 +145,7 @@ what the driver would choose itself. | |||
145 | calibration using the jstest command, and if you do, you then can save the | 145 | calibration using the jstest command, and if you do, you then can save the |
146 | correction coefficients into a file | 146 | correction coefficients into a file |
147 | 147 | ||
148 | jscal -p /dev/js0 > /etc/joystick.cal | 148 | jscal -p /dev/input/js0 > /etc/joystick.cal |
149 | 149 | ||
150 | And add a line to your rc script executing that file | 150 | And add a line to your rc script executing that file |
151 | 151 | ||
@@ -556,7 +556,7 @@ interface, and "old" for the "0.x" interface. You run it by typing: | |||
556 | 556 | ||
557 | 5. FAQ | 557 | 5. FAQ |
558 | ~~~~~~ | 558 | ~~~~~~ |
559 | Q: Running 'jstest /dev/js0' results in "File not found" error. What's the | 559 | Q: Running 'jstest /dev/input/js0' results in "File not found" error. What's the |
560 | cause? | 560 | cause? |
561 | A: The device files don't exist. Create them (see section 2.2). | 561 | A: The device files don't exist. Create them (see section 2.2). |
562 | 562 | ||
diff --git a/Documentation/io-mapping.txt b/Documentation/io-mapping.txt index 473e43b2d588..5ca78426f54c 100644 --- a/Documentation/io-mapping.txt +++ b/Documentation/io-mapping.txt | |||
@@ -38,7 +38,7 @@ maps are more efficient: | |||
38 | 38 | ||
39 | void io_mapping_unmap_atomic(void *vaddr) | 39 | void io_mapping_unmap_atomic(void *vaddr) |
40 | 40 | ||
41 | 'vaddr' must be the the value returned by the last | 41 | 'vaddr' must be the value returned by the last |
42 | io_mapping_map_atomic_wc call. This unmaps the specified | 42 | io_mapping_map_atomic_wc call. This unmaps the specified |
43 | page and allows the task to sleep once again. | 43 | page and allows the task to sleep once again. |
44 | 44 | ||
diff --git a/Documentation/ioctl/ioctl-number.txt b/Documentation/ioctl/ioctl-number.txt index 7cbfa3c4fc3d..d7e43fa88575 100644 --- a/Documentation/ioctl/ioctl-number.txt +++ b/Documentation/ioctl/ioctl-number.txt | |||
@@ -73,6 +73,7 @@ Code Seq#(hex) Include File Comments | |||
73 | 0x09 all linux/raid/md_u.h | 73 | 0x09 all linux/raid/md_u.h |
74 | 0x10 00-0F drivers/char/s390/vmcp.h | 74 | 0x10 00-0F drivers/char/s390/vmcp.h |
75 | 0x10 10-1F arch/s390/include/uapi/sclp_ctl.h | 75 | 0x10 10-1F arch/s390/include/uapi/sclp_ctl.h |
76 | 0x10 20-2F arch/s390/include/uapi/asm/hypfs.h | ||
76 | 0x12 all linux/fs.h | 77 | 0x12 all linux/fs.h |
77 | linux/blkpg.h | 78 | linux/blkpg.h |
78 | 0x1b all InfiniBand Subsystem <http://infiniband.sourceforge.net/> | 79 | 0x1b all InfiniBand Subsystem <http://infiniband.sourceforge.net/> |
diff --git a/Documentation/ja_JP/HOWTO b/Documentation/ja_JP/HOWTO index 8148a47fc70e..0091a8215ac1 100644 --- a/Documentation/ja_JP/HOWTO +++ b/Documentation/ja_JP/HOWTO | |||
@@ -149,7 +149,7 @@ linux-api@ver.kernel.org に送ることを勧めます。 | |||
149 | この他にパッチを作る方法についてのよくできた記述は- | 149 | この他にパッチを作る方法についてのよくできた記述は- |
150 | 150 | ||
151 | "The Perfect Patch" | 151 | "The Perfect Patch" |
152 | http://userweb.kernel.org/~akpm/stuff/tpp.txt | 152 | http://www.ozlabs.org/~akpm/stuff/tpp.txt |
153 | "Linux kernel patch submission format" | 153 | "Linux kernel patch submission format" |
154 | http://linux.yyz.us/patch-format.html | 154 | http://linux.yyz.us/patch-format.html |
155 | 155 | ||
@@ -622,7 +622,7 @@ Linux カーネルコミュニティは、一度に大量のコードの塊を | |||
622 | これについて全てがどのようにあるべきかについての詳細は、以下のドキュメ | 622 | これについて全てがどのようにあるべきかについての詳細は、以下のドキュメ |
623 | ントの ChangeLog セクションを見てください- | 623 | ントの ChangeLog セクションを見てください- |
624 | "The Perfect Patch" | 624 | "The Perfect Patch" |
625 | http://userweb.kernel.org/~akpm/stuff/tpp.txt | 625 | http://www.ozlabs.org/~akpm/stuff/tpp.txt |
626 | 626 | ||
627 | これらのどれもが、時にはとても困難です。これらの慣例を完璧に実施するに | 627 | これらのどれもが、時にはとても困難です。これらの慣例を完璧に実施するに |
628 | は数年かかるかもしれません。これは継続的な改善のプロセスであり、そのた | 628 | は数年かかるかもしれません。これは継続的な改善のプロセスであり、そのた |
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 4252af6ffda1..8f441dab0396 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -343,6 +343,9 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
343 | no: ACPI OperationRegions are not marked as reserved, | 343 | no: ACPI OperationRegions are not marked as reserved, |
344 | no further checks are performed. | 344 | no further checks are performed. |
345 | 345 | ||
346 | acpi_no_memhotplug [ACPI] Disable memory hotplug. Useful for kdump | ||
347 | kernels. | ||
348 | |||
346 | add_efi_memmap [EFI; X86] Include EFI memory map in | 349 | add_efi_memmap [EFI; X86] Include EFI memory map in |
347 | kernel's map of available physical RAM. | 350 | kernel's map of available physical RAM. |
348 | 351 | ||
@@ -463,6 +466,22 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
463 | atkbd.softrepeat= [HW] | 466 | atkbd.softrepeat= [HW] |
464 | Use software keyboard repeat | 467 | Use software keyboard repeat |
465 | 468 | ||
469 | audit= [KNL] Enable the audit sub-system | ||
470 | Format: { "0" | "1" } (0 = disabled, 1 = enabled) | ||
471 | 0 - kernel audit is disabled and can not be enabled | ||
472 | until the next reboot | ||
473 | unset - kernel audit is initialized but disabled and | ||
474 | will be fully enabled by the userspace auditd. | ||
475 | 1 - kernel audit is initialized and partially enabled, | ||
476 | storing at most audit_backlog_limit messages in | ||
477 | RAM until it is fully enabled by the userspace | ||
478 | auditd. | ||
479 | Default: unset | ||
480 | |||
481 | audit_backlog_limit= [KNL] Set the audit queue size limit. | ||
482 | Format: <int> (must be >=0) | ||
483 | Default: 64 | ||
484 | |||
466 | baycom_epp= [HW,AX25] | 485 | baycom_epp= [HW,AX25] |
467 | Format: <io>,<mode> | 486 | Format: <io>,<mode> |
468 | 487 | ||
@@ -515,7 +534,14 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
515 | 534 | ||
516 | cgroup_disable= [KNL] Disable a particular controller | 535 | cgroup_disable= [KNL] Disable a particular controller |
517 | Format: {name of the controller(s) to disable} | 536 | Format: {name of the controller(s) to disable} |
518 | {Currently supported controllers - "memory"} | 537 | The effects of cgroup_disable=foo are: |
538 | - foo isn't auto-mounted if you mount all cgroups in | ||
539 | a single hierarchy | ||
540 | - foo isn't visible as an individually mountable | ||
541 | subsystem | ||
542 | {Currently only "memory" controller deal with this and | ||
543 | cut the overhead, others just disable the usage. So | ||
544 | only cgroup_disable=memory is actually worthy} | ||
519 | 545 | ||
520 | checkreqprot [SELINUX] Set initial checkreqprot flag value. | 546 | checkreqprot [SELINUX] Set initial checkreqprot flag value. |
521 | Format: { "0" | "1" } | 547 | Format: { "0" | "1" } |
@@ -1036,7 +1062,9 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
1036 | debugfs files are removed at module unload time. | 1062 | debugfs files are removed at module unload time. |
1037 | 1063 | ||
1038 | gpt [EFI] Forces disk with valid GPT signature but | 1064 | gpt [EFI] Forces disk with valid GPT signature but |
1039 | invalid Protective MBR to be treated as GPT. | 1065 | invalid Protective MBR to be treated as GPT. If the |
1066 | primary GPT is corrupted, it enables the backup/alternate | ||
1067 | GPT to be used instead. | ||
1040 | 1068 | ||
1041 | grcan.enable0= [HW] Configuration of physical interface 0. Determines | 1069 | grcan.enable0= [HW] Configuration of physical interface 0. Determines |
1042 | the "Enable 0" bit of the configuration register. | 1070 | the "Enable 0" bit of the configuration register. |
@@ -1438,6 +1466,13 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
1438 | Valid arguments: on, off | 1466 | Valid arguments: on, off |
1439 | Default: on | 1467 | Default: on |
1440 | 1468 | ||
1469 | kmemcheck= [X86] Boot-time kmemcheck enable/disable/one-shot mode | ||
1470 | Valid arguments: 0, 1, 2 | ||
1471 | kmemcheck=0 (disabled) | ||
1472 | kmemcheck=1 (enabled) | ||
1473 | kmemcheck=2 (one-shot mode) | ||
1474 | Default: 2 (one-shot mode) | ||
1475 | |||
1441 | kstack=N [X86] Print N words from the kernel stack | 1476 | kstack=N [X86] Print N words from the kernel stack |
1442 | in oops dumps. | 1477 | in oops dumps. |
1443 | 1478 | ||
@@ -3089,7 +3124,11 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
3089 | controller if no parameter or 1 is given or disable | 3124 | controller if no parameter or 1 is given or disable |
3090 | it if 0 is given (See Documentation/cgroups/memory.txt) | 3125 | it if 0 is given (See Documentation/cgroups/memory.txt) |
3091 | 3126 | ||
3092 | swiotlb= [IA-64] Number of I/O TLB slabs | 3127 | swiotlb= [ARM,IA-64,PPC,MIPS,X86] |
3128 | Format: { <int> | force } | ||
3129 | <int> -- Number of I/O TLB slabs | ||
3130 | force -- force using of bounce buffers even if they | ||
3131 | wouldn't be automatically used by the kernel | ||
3093 | 3132 | ||
3094 | switches= [HW,M68k] | 3133 | switches= [HW,M68k] |
3095 | 3134 | ||
diff --git a/Documentation/kmsg/s390/zcrypt b/Documentation/kmsg/s390/zcrypt deleted file mode 100644 index 7fb2087409d6..000000000000 --- a/Documentation/kmsg/s390/zcrypt +++ /dev/null | |||
@@ -1,20 +0,0 @@ | |||
1 | /*? | ||
2 | * Text: "Cryptographic device %x failed and was set offline\n" | ||
3 | * Severity: Error | ||
4 | * Parameter: | ||
5 | * @1: device index | ||
6 | * Description: | ||
7 | * A cryptographic device failed to process a cryptographic request. | ||
8 | * The cryptographic device driver could not correct the error and | ||
9 | * set the device offline. The application that issued the | ||
10 | * request received an indication that the request has failed. | ||
11 | * User action: | ||
12 | * Use the lszcrypt command to confirm that the cryptographic | ||
13 | * hardware is still configured to your LPAR or z/VM guest virtual | ||
14 | * machine. If the device is available to your Linux instance the | ||
15 | * command output contains a line that begins with 'card<device index>', | ||
16 | * where <device index> is the two-digit decimal number in the message text. | ||
17 | * After ensuring that the device is available, use the chzcrypt command to | ||
18 | * set it online again. | ||
19 | * If the error persists, contact your support organization. | ||
20 | */ | ||
diff --git a/Documentation/ko_KR/HOWTO b/Documentation/ko_KR/HOWTO index 680e64635958..dc2ff8f611e0 100644 --- a/Documentation/ko_KR/HOWTO +++ b/Documentation/ko_KR/HOWTO | |||
@@ -122,7 +122,7 @@ mtk.manpages@gmail.com의 메인테이너에게 보낼 것을 권장한다. | |||
122 | 122 | ||
123 | 올바른 패치들을 만드는 법에 관한 훌륭한 다른 문서들이 있다. | 123 | 올바른 패치들을 만드는 법에 관한 훌륭한 다른 문서들이 있다. |
124 | "The Perfect Patch" | 124 | "The Perfect Patch" |
125 | http://userweb.kernel.org/~akpm/stuff/tpp.txt | 125 | http://www.ozlabs.org/~akpm/stuff/tpp.txt |
126 | "Linux kernel patch submission format" | 126 | "Linux kernel patch submission format" |
127 | http://linux.yyz.us/patch-format.html | 127 | http://linux.yyz.us/patch-format.html |
128 | 128 | ||
@@ -213,7 +213,7 @@ Documentation/DocBook/ 디렉토리 내에서 만들어지며 PDF, Postscript, H | |||
213 | 것은 Linux Cross-Reference project이며 그것은 자기 참조 방식이며 | 213 | 것은 Linux Cross-Reference project이며 그것은 자기 참조 방식이며 |
214 | 소스코드를 인덱스된 웹 페이지들의 형태로 보여준다. 최신의 멋진 커널 | 214 | 소스코드를 인덱스된 웹 페이지들의 형태로 보여준다. 최신의 멋진 커널 |
215 | 코드 저장소는 다음을 통하여 참조할 수 있다. | 215 | 코드 저장소는 다음을 통하여 참조할 수 있다. |
216 | http://users.sosdg.org/~qiyong/lxr/ | 216 | http://lxr.linux.no/+trees |
217 | 217 | ||
218 | 218 | ||
219 | 개발 프로세스 | 219 | 개발 프로세스 |
@@ -222,20 +222,20 @@ Documentation/DocBook/ 디렉토리 내에서 만들어지며 PDF, Postscript, H | |||
222 | 리눅스 커널 개발 프로세스는 현재 몇몇 다른 메인 커널 "브랜치들"과 | 222 | 리눅스 커널 개발 프로세스는 현재 몇몇 다른 메인 커널 "브랜치들"과 |
223 | 서브시스템에 특화된 커널 브랜치들로 구성된다. 몇몇 다른 메인 | 223 | 서브시스템에 특화된 커널 브랜치들로 구성된다. 몇몇 다른 메인 |
224 | 브랜치들은 다음과 같다. | 224 | 브랜치들은 다음과 같다. |
225 | - main 2.6.x 커널 트리 | 225 | - main 3.x 커널 트리 |
226 | - 2.6.x.y - 안정된 커널 트리 | 226 | - 3.x.y - 안정된 커널 트리 |
227 | - 2.6.x -git 커널 패치들 | 227 | - 3.x -git 커널 패치들 |
228 | - 2.6.x -mm 커널 패치들 | ||
229 | - 서브시스템을 위한 커널 트리들과 패치들 | 228 | - 서브시스템을 위한 커널 트리들과 패치들 |
229 | - 3.x - 통합 테스트를 위한 next 커널 트리 | ||
230 | 230 | ||
231 | 2.6.x 커널 트리 | 231 | 3.x 커널 트리 |
232 | --------------- | 232 | --------------- |
233 | 233 | ||
234 | 2.6.x 커널들은 Linux Torvalds가 관리하며 kernel.org의 pub/linux/kernel/v2.6/ | 234 | 3.x 커널들은 Linux Torvalds가 관리하며 kernel.org의 pub/linux/kernel/v3.x/ |
235 | 디렉토리에서 참조될 수 있다.개발 프로세스는 다음과 같다. | 235 | 디렉토리에서 참조될 수 있다.개발 프로세스는 다음과 같다. |
236 | - 새로운 커널이 배포되자마자 2주의 시간이 주어진다. 이 기간동은 | 236 | - 새로운 커널이 배포되자마자 2주의 시간이 주어진다. 이 기간동은 |
237 | 메인테이너들은 큰 diff들을 Linus에게 제출할 수 있다. 대개 이 패치들은 | 237 | 메인테이너들은 큰 diff들을 Linus에게 제출할 수 있다. 대개 이 패치들은 |
238 | 몇 주 동안 -mm 커널내에 이미 있었던 것들이다. 큰 변경들을 제출하는 데 | 238 | 몇 주 동안 -next 커널내에 이미 있었던 것들이다. 큰 변경들을 제출하는 데 |
239 | 선호되는 방법은 git(커널의 소스 관리 툴, 더 많은 정보들은 http://git.or.cz/ | 239 | 선호되는 방법은 git(커널의 소스 관리 툴, 더 많은 정보들은 http://git.or.cz/ |
240 | 에서 참조할 수 있다)를 사용하는 것이지만 순수한 패치파일의 형식으로 보내는 | 240 | 에서 참조할 수 있다)를 사용하는 것이지만 순수한 패치파일의 형식으로 보내는 |
241 | 것도 무관하다. | 241 | 것도 무관하다. |
@@ -262,20 +262,20 @@ Andrew Morton의 글이 있다. | |||
262 | 버그의 상황에 따라 배포되는 것이지 미리정해 놓은 시간에 따라 | 262 | 버그의 상황에 따라 배포되는 것이지 미리정해 놓은 시간에 따라 |
263 | 배포되는 것은 아니기 때문이다." | 263 | 배포되는 것은 아니기 때문이다." |
264 | 264 | ||
265 | 2.6.x.y - 안정 커널 트리 | 265 | 3.x.y - 안정 커널 트리 |
266 | ------------------------ | 266 | ------------------------ |
267 | 267 | ||
268 | 4 자리 숫자로 이루어진 버젼의 커널들은 -stable 커널들이다. 그것들은 2.6.x | 268 | 3 자리 숫자로 이루어진 버젼의 커널들은 -stable 커널들이다. 그것들은 3.x |
269 | 커널에서 발견된 큰 회귀들이나 보안 문제들 중 비교적 작고 중요한 수정들을 | 269 | 커널에서 발견된 큰 회귀들이나 보안 문제들 중 비교적 작고 중요한 수정들을 |
270 | 포함한다. | 270 | 포함한다. |
271 | 271 | ||
272 | 이것은 가장 최근의 안정적인 커널을 원하는 사용자에게 추천되는 브랜치이며, | 272 | 이것은 가장 최근의 안정적인 커널을 원하는 사용자에게 추천되는 브랜치이며, |
273 | 개발/실험적 버젼을 테스트하는 것을 돕고자 하는 사용자들과는 별로 관련이 없다. | 273 | 개발/실험적 버젼을 테스트하는 것을 돕고자 하는 사용자들과는 별로 관련이 없다. |
274 | 274 | ||
275 | 어떤 2.6.x.y 커널도 사용할 수 없다면 그때는 가장 높은 숫자의 2.6.x | 275 | 어떤 3.x.y 커널도 사용할 수 없다면 그때는 가장 높은 숫자의 3.x |
276 | 커널이 현재의 안정 커널이다. | 276 | 커널이 현재의 안정 커널이다. |
277 | 277 | ||
278 | 2.6.x.y는 "stable" 팀<stable@kernel.org>에 의해 관리되며 거의 매번 격주로 | 278 | 3.x.y는 "stable" 팀<stable@vger.kernel.org>에 의해 관리되며 거의 매번 격주로 |
279 | 배포된다. | 279 | 배포된다. |
280 | 280 | ||
281 | 커널 트리 문서들 내에 Documentation/stable_kernel_rules.txt 파일은 어떤 | 281 | 커널 트리 문서들 내에 Documentation/stable_kernel_rules.txt 파일은 어떤 |
@@ -283,84 +283,46 @@ Andrew Morton의 글이 있다. | |||
283 | 진행되는지를 설명한다. | 283 | 진행되는지를 설명한다. |
284 | 284 | ||
285 | 285 | ||
286 | 2.6.x -git 패치들 | 286 | 3.x -git 패치들 |
287 | ------------------ | 287 | ------------------ |
288 | git 저장소(그러므로 -git이라는 이름이 붙음)에는 날마다 관리되는 Linus의 | 288 | git 저장소(그러므로 -git이라는 이름이 붙음)에는 날마다 관리되는 Linus의 |
289 | 커널 트리의 snapshot 들이 있다. 이 패치들은 일반적으로 날마다 배포되며 | 289 | 커널 트리의 snapshot 들이 있다. 이 패치들은 일반적으로 날마다 배포되며 |
290 | Linus의 트리의 현재 상태를 나타낸다. 이 패치들은 정상적인지 조금도 | 290 | Linus의 트리의 현재 상태를 나타낸다. 이 패치들은 정상적인지 조금도 |
291 | 살펴보지 않고 자동적으로 생성된 것이므로 -rc 커널들 보다도 더 실험적이다. | 291 | 살펴보지 않고 자동적으로 생성된 것이므로 -rc 커널들 보다도 더 실험적이다. |
292 | 292 | ||
293 | 2.6.x -mm 커널 패치들 | ||
294 | --------------------- | ||
295 | Andrew Morton에 의해 배포된 실험적인 커널 패치들이다. Andrew는 모든 다른 | ||
296 | 서브시스템 커널 트리와 패치들을 가져와서 리눅스 커널 메일링 리스트로 | ||
297 | 온 많은 패치들과 한데 묶는다. 이 트리는 새로운 기능들과 패치들을 위한 | ||
298 | 장소를 제공하는 역할을 한다. 하나의 패치가 -mm에 한동안 있으면서 그 가치가 | ||
299 | 증명되게 되면 Andrew나 서브시스템 메인테이너는 그것을 메인라인에 포함시키기 | ||
300 | 위하여 Linus에게 보낸다. | ||
301 | |||
302 | 커널 트리에 포함하고 싶은 모든 새로운 패치들은 Linus에게 보내지기 전에 | ||
303 | -mm 트리에서 테스트를 하는 것을 적극 추천한다. | ||
304 | |||
305 | 이 커널들은 안정되게 사용할 시스템에서에 실행하는 것은 적합하지 않으며 | ||
306 | 다른 브랜치들의 어떤 것들보다 위험하다. | ||
307 | |||
308 | 여러분이 커널 개발 프로세스를 돕길 원한다면 이 커널 배포들을 사용하고 | ||
309 | 테스트한 후 어떤 문제를 발견하거나 또는 모든 것이 잘 동작한다면 리눅스 | ||
310 | 커널 메일링 리스트로 피드백을 해달라. | ||
311 | |||
312 | 이 커널들은 일반적으로 모든 다른 실험적인 패치들과 배포될 당시의 | ||
313 | 사용가능한 메인라인 -git 커널들의 몇몇 변경을 포함한다. | ||
314 | |||
315 | -mm 커널들은 정해진 일정대로 배포되지 않는다. 하지만 대개 몇몇 -mm 커널들은 | ||
316 | 각 -rc 커널(1부터 3이 흔함) 사이에서 배포된다. | ||
317 | |||
318 | 서브시스템 커널 트리들과 패치들 | 293 | 서브시스템 커널 트리들과 패치들 |
319 | ------------------------------- | 294 | ------------------------------- |
320 | 많은 다른 커널 서브시스템 개발자들은 커널의 다른 부분들에서 무슨 일이 | 295 | 다양한 커널 서브시스템의 메인테이너들 --- 그리고 많은 커널 서브시스템 개발자들 |
321 | 일어나고 있는지를 볼수 있도록 그들의 개발 트리를 공개한다. 이 트리들은 | 296 | --- 은 그들의 현재 개발 상태를 소스 저장소로 노출한다. 이를 통해 다른 사람들도 |
322 | 위에서 설명하였던 것 처럼 -mm 커널 배포들로 합쳐진다. | 297 | 커널의 다른 영역에 어떤 변화가 이루어지고 있는지 알 수 있다. 급속히 개발이 |
323 | 298 | 진행되는 영역이 있고 그렇지 않은 영역이 있으므로, 개발자는 다른 개발자가 제출한 | |
324 | 다음은 활용가능한 커널 트리들을 나열한다. | 299 | 수정 사항과 자신의 수정사항의 충돌이나 동일한 일을 동시에 두사람이 따로 |
325 | git trees: | 300 | 진행하는 사태를 방지하기 위해 급속히 개발이 진행되고 있는 영역에 작업의 |
326 | - Kbuild development tree, Sam Ravnborg < sam@ravnborg.org> | 301 | 베이스를 맞춰줄 것이 요구된다. |
327 | git.kernel.org:/pub/scm/linux/kernel/git/sam/kbuild.git | 302 | |
328 | 303 | 대부분의 이러한 저장소는 git 트리지만, git이 아닌 SCM으로 관리되거나, quilt | |
329 | - ACPI development tree, Len Brown <len.brown@intel.com > | 304 | 시리즈로 제공되는 패치들도 존재한다. 이러한 서브시스템 저장소들은 MAINTAINERS |
330 | git.kernel.org:/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6.git | 305 | 파일에 나열되어 있다. 대부분은 http://git.kernel.org 에서 볼 수 있다. |
331 | 306 | ||
332 | - Block development tree, Jens Axboe <jens.axboe@oracle.com> | 307 | 제안된 패치는 서브시스템 트리에 커밋되기 전에 메일링 리스트를 통해 |
333 | git.kernel.org:/pub/scm/linux/kernel/git/axboe/linux-2.6-block.git | 308 | 리뷰된다(아래의 관련 섹션을 참고하기 바란다). 일부 커널 서브시스템의 경우, 이 |
334 | 309 | 리뷰 프로세스는 patchwork라는 도구를 통해 추적된다. patchwork은 등록된 패치와 | |
335 | - DRM development tree, Dave Airlie <airlied@linux.ie> | 310 | 패치에 대한 코멘트, 패치의 버전을 볼 수 있는 웹 인터페이스를 제공하고, |
336 | git.kernel.org:/pub/scm/linux/kernel/git/airlied/drm-2.6.git | 311 | 메인테이너는 패치를 리뷰 중, 리뷰 통과, 또는 반려됨으로 표시할 수 있다. |
337 | 312 | 대부분의 이러한 patchwork 사이트는 http://patchwork.kernel.org/ 또는 | |
338 | - ia64 development tree, Tony Luck < tony.luck@intel.com> | 313 | http://patchwork.ozlabs.org/ 에 나열되어 있다. |
339 | git.kernel.org:/pub/scm/linux/kernel/git/aegl/linux-2.6.git | 314 | |
340 | 315 | 3.x - 통합 테스트를 위한 next 커널 트리 | |
341 | - infiniband, Roland Dreier <rolandd@cisco.com > | 316 | ----------------------------------------- |
342 | git.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git | 317 | 서브시스템 트리들의 변경사항들은 mainline 3.x 트리로 들어오기 전에 통합 |
343 | 318 | 테스트를 거쳐야 한다. 이런 목적으로, 모든 서브시스템 트리의 변경사항을 거의 | |
344 | - libata, Jeff Garzik <jgarzik@pobox.com> | 319 | 매일 받아가는 특수한 테스트 저장소가 존재한다: |
345 | git.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev.git | 320 | http://git.kernel.org/?p=linux/kernel/git/sfr/linux-next.git |
346 | 321 | http://linux.f-seidel.de/linux-next/pmwiki/ | |
347 | - network drivers, Jeff Garzik <jgarzik@pobox.com> | 322 | |
348 | git.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git | 323 | 이런 식으로, -next 커널을 통해 다음 머지 기간에 메인라인 커널에 어떤 변경이 |
349 | 324 | 가해질 것인지 간략히 알 수 있다. 모험심 강한 테스터라면 -next 커널에서 테스트를 | |
350 | - pcmcia, Dominik Brodowski < linux@dominikbrodowski.net> | 325 | 수행하는 것도 좋을 것이다. |
351 | git.kernel.org:/pub/scm/linux/kernel/git/brodo/pcmcia-2.6.git | ||
352 | |||
353 | - SCSI, James Bottomley < James.Bottomley@SteelEye.com> | ||
354 | git.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git | ||
355 | |||
356 | quilt trees: | ||
357 | - USB, PCI, Driver Core, and I2C, Greg Kroah-Hartman < gregkh@linuxfoundation.org> | ||
358 | kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/ | ||
359 | - x86-64, partly i386, Andi Kleen < ak@suse.de> | ||
360 | ftp.firstfloor.org:/pub/ak/x86_64/quilt/ | ||
361 | |||
362 | 다른 커널 트리들은 http://kernel.org/git와 MAINTAINERS 파일에서 참조할 수 | ||
363 | 있다. | ||
364 | 326 | ||
365 | 버그 보고 | 327 | 버그 보고 |
366 | --------- | 328 | --------- |
@@ -597,7 +559,7 @@ Pat이라는 이름을 가진 여자가 있을 수도 있는 것이다. 리눅 | |||
597 | 559 | ||
598 | 이것이 무엇인지 더 자세한 것을 알고 싶다면 다음 문서의 ChageLog 항을 봐라. | 560 | 이것이 무엇인지 더 자세한 것을 알고 싶다면 다음 문서의 ChageLog 항을 봐라. |
599 | "The Perfect Patch" | 561 | "The Perfect Patch" |
600 | http://userweb.kernel.org/~akpm/stuff/tpp.txt | 562 | http://www.ozlabs.org/~akpm/stuff/tpp.txt |
601 | 563 | ||
602 | 564 | ||
603 | 565 | ||
diff --git a/Documentation/kobject.txt b/Documentation/kobject.txt index c5182bb2c16c..f87241dfed87 100644 --- a/Documentation/kobject.txt +++ b/Documentation/kobject.txt | |||
@@ -342,7 +342,10 @@ kset use: | |||
342 | 342 | ||
343 | When you are finished with the kset, call: | 343 | When you are finished with the kset, call: |
344 | void kset_unregister(struct kset *kset); | 344 | void kset_unregister(struct kset *kset); |
345 | to destroy it. | 345 | to destroy it. This removes the kset from sysfs and decrements its reference |
346 | count. When the reference count goes to zero, the kset will be released. | ||
347 | Because other references to the kset may still exist, the release may happen | ||
348 | after kset_unregister() returns. | ||
346 | 349 | ||
347 | An example of using a kset can be seen in the | 350 | An example of using a kset can be seen in the |
348 | samples/kobject/kset-example.c file in the kernel tree. | 351 | samples/kobject/kset-example.c file in the kernel tree. |
diff --git a/Documentation/laptops/hpfall.c b/Documentation/laptops/hpfall.c index a4a8fc5d05d4..b85dbbac0499 100644 --- a/Documentation/laptops/hpfall.c +++ b/Documentation/laptops/hpfall.c | |||
@@ -29,7 +29,7 @@ int set_unload_heads_path(char *device) | |||
29 | return -EINVAL; | 29 | return -EINVAL; |
30 | strncpy(devname, device + 5, sizeof(devname)); | 30 | strncpy(devname, device + 5, sizeof(devname)); |
31 | 31 | ||
32 | snprintf(unload_heads_path, sizeof(unload_heads_path), | 32 | snprintf(unload_heads_path, sizeof(unload_heads_path) - 1, |
33 | "/sys/block/%s/device/unload_heads", devname); | 33 | "/sys/block/%s/device/unload_heads", devname); |
34 | return 0; | 34 | return 0; |
35 | } | 35 | } |
diff --git a/Documentation/leds/leds-lp55xx.txt b/Documentation/leds/leds-lp55xx.txt index 82713ff92eb3..bcea12a0c584 100644 --- a/Documentation/leds/leds-lp55xx.txt +++ b/Documentation/leds/leds-lp55xx.txt | |||
@@ -73,6 +73,10 @@ select_engine : Select which engine is used for running program | |||
73 | run_engine : Start program which is loaded via the firmware interface | 73 | run_engine : Start program which is loaded via the firmware interface |
74 | firmware : Load program data | 74 | firmware : Load program data |
75 | 75 | ||
76 | In case of LP5523, one more command is required, 'enginex_leds'. | ||
77 | It is used for selecting LED output(s) at each engine number. | ||
78 | In more details, please refer to 'leds-lp5523.txt'. | ||
79 | |||
76 | For example, run blinking pattern in engine #1 of LP5521 | 80 | For example, run blinking pattern in engine #1 of LP5521 |
77 | echo 1 > /sys/bus/i2c/devices/xxxx/select_engine | 81 | echo 1 > /sys/bus/i2c/devices/xxxx/select_engine |
78 | echo 1 > /sys/class/firmware/lp5521/loading | 82 | echo 1 > /sys/class/firmware/lp5521/loading |
@@ -81,10 +85,12 @@ echo 0 > /sys/class/firmware/lp5521/loading | |||
81 | echo 1 > /sys/bus/i2c/devices/xxxx/run_engine | 85 | echo 1 > /sys/bus/i2c/devices/xxxx/run_engine |
82 | 86 | ||
83 | For example, run blinking pattern in engine #3 of LP55231 | 87 | For example, run blinking pattern in engine #3 of LP55231 |
88 | Two LEDs are configured as pattern output channels. | ||
84 | echo 3 > /sys/bus/i2c/devices/xxxx/select_engine | 89 | echo 3 > /sys/bus/i2c/devices/xxxx/select_engine |
85 | echo 1 > /sys/class/firmware/lp55231/loading | 90 | echo 1 > /sys/class/firmware/lp55231/loading |
86 | echo "9d0740ff7e0040007e00a0010000" > /sys/class/firmware/lp55231/data | 91 | echo "9d0740ff7e0040007e00a0010000" > /sys/class/firmware/lp55231/data |
87 | echo 0 > /sys/class/firmware/lp55231/loading | 92 | echo 0 > /sys/class/firmware/lp55231/loading |
93 | echo "000001100" > /sys/bus/i2c/devices/xxxx/engine3_leds | ||
88 | echo 1 > /sys/bus/i2c/devices/xxxx/run_engine | 94 | echo 1 > /sys/bus/i2c/devices/xxxx/run_engine |
89 | 95 | ||
90 | To start blinking patterns in engine #2 and #3 simultaneously, | 96 | To start blinking patterns in engine #2 and #3 simultaneously, |
@@ -99,17 +105,19 @@ done | |||
99 | echo 1 > /sys/class/leds/red/device/run_engine | 105 | echo 1 > /sys/class/leds/red/device/run_engine |
100 | 106 | ||
101 | Here is another example for LP5523. | 107 | Here is another example for LP5523. |
108 | Full LED strings are selected by 'engine2_leds'. | ||
102 | echo 2 > /sys/bus/i2c/devices/xxxx/select_engine | 109 | echo 2 > /sys/bus/i2c/devices/xxxx/select_engine |
103 | echo 1 > /sys/class/firmware/lp5523/loading | 110 | echo 1 > /sys/class/firmware/lp5523/loading |
104 | echo "9d80400004ff05ff437f0000" > /sys/class/firmware/lp5523/data | 111 | echo "9d80400004ff05ff437f0000" > /sys/class/firmware/lp5523/data |
105 | echo 0 > /sys/class/firmware/lp5523/loading | 112 | echo 0 > /sys/class/firmware/lp5523/loading |
113 | echo "111111111" > /sys/bus/i2c/devices/xxxx/engine2_leds | ||
106 | echo 1 > /sys/bus/i2c/devices/xxxx/run_engine | 114 | echo 1 > /sys/bus/i2c/devices/xxxx/run_engine |
107 | 115 | ||
108 | As soon as 'loading' is set to 0, registered callback is called. | 116 | As soon as 'loading' is set to 0, registered callback is called. |
109 | Inside the callback, the selected engine is loaded and memory is updated. | 117 | Inside the callback, the selected engine is loaded and memory is updated. |
110 | To run programmed pattern, 'run_engine' attribute should be enabled. | 118 | To run programmed pattern, 'run_engine' attribute should be enabled. |
111 | 119 | ||
112 | The pattern sqeuence of LP8501 is same as LP5523. | 120 | The pattern sqeuence of LP8501 is similar to LP5523. |
113 | However pattern data is specific. | 121 | However pattern data is specific. |
114 | Ex 1) Engine 1 is used | 122 | Ex 1) Engine 1 is used |
115 | echo 1 > /sys/bus/i2c/devices/xxxx/select_engine | 123 | echo 1 > /sys/bus/i2c/devices/xxxx/select_engine |
diff --git a/Documentation/md.txt b/Documentation/md.txt index fbb2fcbf16b6..f925666e4342 100644 --- a/Documentation/md.txt +++ b/Documentation/md.txt | |||
@@ -533,7 +533,7 @@ also have | |||
533 | found. The count in 'mismatch_cnt' is the number of sectors | 533 | found. The count in 'mismatch_cnt' is the number of sectors |
534 | that were re-written, or (for 'check') would have been | 534 | that were re-written, or (for 'check') would have been |
535 | re-written. As most raid levels work in units of pages rather | 535 | re-written. As most raid levels work in units of pages rather |
536 | than sectors, this my be larger than the number of actual errors | 536 | than sectors, this may be larger than the number of actual errors |
537 | by a factor of the number of sectors in a page. | 537 | by a factor of the number of sectors in a page. |
538 | 538 | ||
539 | bitmap_set_bits | 539 | bitmap_set_bits |
diff --git a/Documentation/misc-devices/eeprom b/Documentation/misc-devices/eeprom index f7e8104b5764..ba692011f221 100644 --- a/Documentation/misc-devices/eeprom +++ b/Documentation/misc-devices/eeprom | |||
@@ -38,7 +38,7 @@ Supported chips: | |||
38 | Authors: | 38 | Authors: |
39 | Frodo Looijaard <frodol@dds.nl>, | 39 | Frodo Looijaard <frodol@dds.nl>, |
40 | Philip Edelbrock <phil@netroedge.com>, | 40 | Philip Edelbrock <phil@netroedge.com>, |
41 | Jean Delvare <khali@linux-fr.org>, | 41 | Jean Delvare <jdelvare@suse.de>, |
42 | Greg Kroah-Hartman <greg@kroah.com>, | 42 | Greg Kroah-Hartman <greg@kroah.com>, |
43 | IBM Corp. | 43 | IBM Corp. |
44 | 44 | ||
diff --git a/Documentation/misc-devices/mei/mei-amt-version.c b/Documentation/misc-devices/mei/mei-amt-version.c index 49e4f770864a..57d0d871dcf7 100644 --- a/Documentation/misc-devices/mei/mei-amt-version.c +++ b/Documentation/misc-devices/mei/mei-amt-version.c | |||
@@ -115,8 +115,6 @@ static bool mei_init(struct mei *me, const uuid_le *guid, | |||
115 | struct mei_client *cl; | 115 | struct mei_client *cl; |
116 | struct mei_connect_client_data data; | 116 | struct mei_connect_client_data data; |
117 | 117 | ||
118 | mei_deinit(me); | ||
119 | |||
120 | me->verbose = verbose; | 118 | me->verbose = verbose; |
121 | 119 | ||
122 | me->fd = open("/dev/mei", O_RDWR); | 120 | me->fd = open("/dev/mei", O_RDWR); |
diff --git a/Documentation/mtd/nand/pxa3xx-nand.txt b/Documentation/mtd/nand/pxa3xx-nand.txt new file mode 100644 index 000000000000..840fd41c181b --- /dev/null +++ b/Documentation/mtd/nand/pxa3xx-nand.txt | |||
@@ -0,0 +1,113 @@ | |||
1 | |||
2 | About this document | ||
3 | =================== | ||
4 | |||
5 | Some notes about Marvell's NAND controller available in PXA and Armada 370/XP | ||
6 | SoC (aka NFCv1 and NFCv2), with an emphasis on the latter. | ||
7 | |||
8 | NFCv2 controller background | ||
9 | =========================== | ||
10 | |||
11 | The controller has a 2176 bytes FIFO buffer. Therefore, in order to support | ||
12 | larger pages, I/O operations on 4 KiB and 8 KiB pages is done with a set of | ||
13 | chunked transfers. | ||
14 | |||
15 | For instance, if we choose a 2048 data chunk and set "BCH" ECC (see below) | ||
16 | we'll have this layout in the pages: | ||
17 | |||
18 | ------------------------------------------------------------------------------ | ||
19 | | 2048B data | 32B spare | 30B ECC || 2048B data | 32B spare | 30B ECC | ... | | ||
20 | ------------------------------------------------------------------------------ | ||
21 | |||
22 | The driver reads the data and spare portions independently and builds an internal | ||
23 | buffer with this layout (in the 4 KiB page case): | ||
24 | |||
25 | ------------------------------------------ | ||
26 | | 4096B data | 64B spare | | ||
27 | ------------------------------------------ | ||
28 | |||
29 | Also, for the READOOB command the driver disables the ECC and reads a 'spare + ECC' | ||
30 | OOB, one per chunk read. | ||
31 | |||
32 | ------------------------------------------------------------------- | ||
33 | | 4096B data | 32B spare | 30B ECC | 32B spare | 30B ECC | | ||
34 | ------------------------------------------------------------------- | ||
35 | |||
36 | So, in order to achieve reading (for instance), we issue several READ0 commands | ||
37 | (with some additional controller-specific magic) and read two chunks of 2080B | ||
38 | (2048 data + 32 spare) each. | ||
39 | The driver accommodates this data to expose the NAND core a contiguous buffer | ||
40 | (4096 data + spare) or (4096 + spare + ECC + spare + ECC). | ||
41 | |||
42 | ECC | ||
43 | === | ||
44 | |||
45 | The controller has built-in hardware ECC capabilities. In addition it is | ||
46 | configurable between two modes: 1) Hamming, 2) BCH. | ||
47 | |||
48 | Note that the actual BCH mode: BCH-4 or BCH-8 will depend on the way | ||
49 | the controller is configured to transfer the data. | ||
50 | |||
51 | In the BCH mode the ECC code will be calculated for each transfered chunk | ||
52 | and expected to be located (when reading/programming) right after the spare | ||
53 | bytes as the figure above shows. | ||
54 | |||
55 | So, repeating the above scheme, a 2048B data chunk will be followed by 32B | ||
56 | spare, and then the ECC controller will read/write the ECC code (30B in | ||
57 | this case): | ||
58 | |||
59 | ------------------------------------ | ||
60 | | 2048B data | 32B spare | 30B ECC | | ||
61 | ------------------------------------ | ||
62 | |||
63 | If the ECC mode is 'BCH' then the ECC is *always* 30 bytes long. | ||
64 | If the ECC mode is 'Hamming' the ECC is 6 bytes long, for each 512B block. | ||
65 | So in Hamming mode, a 2048B page will have a 24B ECC. | ||
66 | |||
67 | Despite all of the above, the controller requires the driver to only read or | ||
68 | write in multiples of 8-bytes, because the data buffer is 64-bits. | ||
69 | |||
70 | OOB | ||
71 | === | ||
72 | |||
73 | Because of the above scheme, and because the "spare" OOB is really located in | ||
74 | the middle of a page, spare OOB cannot be read or write independently of the | ||
75 | data area. In other words, in order to read the OOB (aka READOOB), the entire | ||
76 | page (aka READ0) has to be read. | ||
77 | |||
78 | In the same sense, in order to write to the spare OOB the driver has to write | ||
79 | an *entire* page. | ||
80 | |||
81 | Factory bad blocks handling | ||
82 | =========================== | ||
83 | |||
84 | Given the ECC BCH requires to layout the device's pages in a split | ||
85 | data/OOB/data/OOB way, the controller has a view of the flash page that's | ||
86 | different from the specified (aka the manufacturer's) view. In other words, | ||
87 | |||
88 | Factory view: | ||
89 | |||
90 | ----------------------------------------------- | ||
91 | | Data |x OOB | | ||
92 | ----------------------------------------------- | ||
93 | |||
94 | Driver's view: | ||
95 | |||
96 | ----------------------------------------------- | ||
97 | | Data | OOB | Data x | OOB | | ||
98 | ----------------------------------------------- | ||
99 | |||
100 | It can be seen from the above, that the factory bad block marker must be | ||
101 | searched within the 'data' region, and not in the usual OOB region. | ||
102 | |||
103 | In addition, this means under regular usage the driver will write such | ||
104 | position (since it belongs to the data region) and every used block is | ||
105 | likely to be marked as bad. | ||
106 | |||
107 | For this reason, marking the block as bad in the OOB is explicitly | ||
108 | disabled by using the NAND_BBT_NO_OOB_BBM option in the driver. The rationale | ||
109 | for this is that there's no point in marking a block as bad, because good | ||
110 | blocks are also 'marked as bad' (in the OOB BBM sense) under normal usage. | ||
111 | |||
112 | Instead, the driver relies on the bad block table alone, and should only perform | ||
113 | the bad block scan on the very first time (when the device hasn't been used). | ||
diff --git a/Documentation/networking/batman-adv.txt b/Documentation/networking/batman-adv.txt index 89490beb3c0b..58e49042fc20 100644 --- a/Documentation/networking/batman-adv.txt +++ b/Documentation/networking/batman-adv.txt | |||
@@ -66,11 +66,10 @@ All mesh wide settings can be found in batman's own interface | |||
66 | folder: | 66 | folder: |
67 | 67 | ||
68 | # ls /sys/class/net/bat0/mesh/ | 68 | # ls /sys/class/net/bat0/mesh/ |
69 | # aggregated_ogms gw_bandwidth log_level | 69 | #aggregated_ogms distributed_arp_table gw_sel_class orig_interval |
70 | # ap_isolation gw_mode orig_interval | 70 | #ap_isolation fragmentation hop_penalty routing_algo |
71 | # bonding gw_sel_class routing_algo | 71 | #bonding gw_bandwidth isolation_mark vlan0 |
72 | # bridge_loop_avoidance hop_penalty fragmentation | 72 | #bridge_loop_avoidance gw_mode log_level |
73 | |||
74 | 73 | ||
75 | There is a special folder for debugging information: | 74 | There is a special folder for debugging information: |
76 | 75 | ||
diff --git a/Documentation/networking/bonding.txt b/Documentation/networking/bonding.txt index 2cdb8b66caa9..5cdb22971d19 100644 --- a/Documentation/networking/bonding.txt +++ b/Documentation/networking/bonding.txt | |||
@@ -657,7 +657,8 @@ primary | |||
657 | one slave is preferred over another, e.g., when one slave has | 657 | one slave is preferred over another, e.g., when one slave has |
658 | higher throughput than another. | 658 | higher throughput than another. |
659 | 659 | ||
660 | The primary option is only valid for active-backup mode. | 660 | The primary option is only valid for active-backup(1), |
661 | balance-tlb (5) and balance-alb (6) mode. | ||
661 | 662 | ||
662 | primary_reselect | 663 | primary_reselect |
663 | 664 | ||
@@ -853,6 +854,14 @@ resend_igmp | |||
853 | 854 | ||
854 | This option was added for bonding version 3.7.0. | 855 | This option was added for bonding version 3.7.0. |
855 | 856 | ||
857 | lp_interval | ||
858 | |||
859 | Specifies the number of seconds between instances where the bonding | ||
860 | driver sends learning packets to each slaves peer switch. | ||
861 | |||
862 | The valid range is 1 - 0x7fffffff; the default value is 1. This Option | ||
863 | has effect only in balance-tlb and balance-alb modes. | ||
864 | |||
856 | 3. Configuring Bonding Devices | 865 | 3. Configuring Bonding Devices |
857 | ============================== | 866 | ============================== |
858 | 867 | ||
diff --git a/Documentation/networking/can.txt b/Documentation/networking/can.txt index 4c072414eadb..f3089d423515 100644 --- a/Documentation/networking/can.txt +++ b/Documentation/networking/can.txt | |||
@@ -2,21 +2,20 @@ | |||
2 | 2 | ||
3 | can.txt | 3 | can.txt |
4 | 4 | ||
5 | Readme file for the Controller Area Network Protocol Family (aka Socket CAN) | 5 | Readme file for the Controller Area Network Protocol Family (aka SocketCAN) |
6 | 6 | ||
7 | This file contains | 7 | This file contains |
8 | 8 | ||
9 | 1 Overview / What is Socket CAN | 9 | 1 Overview / What is SocketCAN |
10 | 10 | ||
11 | 2 Motivation / Why using the socket API | 11 | 2 Motivation / Why using the socket API |
12 | 12 | ||
13 | 3 Socket CAN concept | 13 | 3 SocketCAN concept |
14 | 3.1 receive lists | 14 | 3.1 receive lists |
15 | 3.2 local loopback of sent frames | 15 | 3.2 local loopback of sent frames |
16 | 3.3 network security issues (capabilities) | 16 | 3.3 network problem notifications |
17 | 3.4 network problem notifications | ||
18 | 17 | ||
19 | 4 How to use Socket CAN | 18 | 4 How to use SocketCAN |
20 | 4.1 RAW protocol sockets with can_filters (SOCK_RAW) | 19 | 4.1 RAW protocol sockets with can_filters (SOCK_RAW) |
21 | 4.1.1 RAW socket option CAN_RAW_FILTER | 20 | 4.1.1 RAW socket option CAN_RAW_FILTER |
22 | 4.1.2 RAW socket option CAN_RAW_ERR_FILTER | 21 | 4.1.2 RAW socket option CAN_RAW_ERR_FILTER |
@@ -34,7 +33,7 @@ This file contains | |||
34 | 4.3 connected transport protocols (SOCK_SEQPACKET) | 33 | 4.3 connected transport protocols (SOCK_SEQPACKET) |
35 | 4.4 unconnected transport protocols (SOCK_DGRAM) | 34 | 4.4 unconnected transport protocols (SOCK_DGRAM) |
36 | 35 | ||
37 | 5 Socket CAN core module | 36 | 5 SocketCAN core module |
38 | 5.1 can.ko module params | 37 | 5.1 can.ko module params |
39 | 5.2 procfs content | 38 | 5.2 procfs content |
40 | 5.3 writing own CAN protocol modules | 39 | 5.3 writing own CAN protocol modules |
@@ -51,20 +50,20 @@ This file contains | |||
51 | 6.6 CAN FD (flexible data rate) driver support | 50 | 6.6 CAN FD (flexible data rate) driver support |
52 | 6.7 supported CAN hardware | 51 | 6.7 supported CAN hardware |
53 | 52 | ||
54 | 7 Socket CAN resources | 53 | 7 SocketCAN resources |
55 | 54 | ||
56 | 8 Credits | 55 | 8 Credits |
57 | 56 | ||
58 | ============================================================================ | 57 | ============================================================================ |
59 | 58 | ||
60 | 1. Overview / What is Socket CAN | 59 | 1. Overview / What is SocketCAN |
61 | -------------------------------- | 60 | -------------------------------- |
62 | 61 | ||
63 | The socketcan package is an implementation of CAN protocols | 62 | The socketcan package is an implementation of CAN protocols |
64 | (Controller Area Network) for Linux. CAN is a networking technology | 63 | (Controller Area Network) for Linux. CAN is a networking technology |
65 | which has widespread use in automation, embedded devices, and | 64 | which has widespread use in automation, embedded devices, and |
66 | automotive fields. While there have been other CAN implementations | 65 | automotive fields. While there have been other CAN implementations |
67 | for Linux based on character devices, Socket CAN uses the Berkeley | 66 | for Linux based on character devices, SocketCAN uses the Berkeley |
68 | socket API, the Linux network stack and implements the CAN device | 67 | socket API, the Linux network stack and implements the CAN device |
69 | drivers as network interfaces. The CAN socket API has been designed | 68 | drivers as network interfaces. The CAN socket API has been designed |
70 | as similar as possible to the TCP/IP protocols to allow programmers, | 69 | as similar as possible to the TCP/IP protocols to allow programmers, |
@@ -74,7 +73,7 @@ sockets. | |||
74 | 2. Motivation / Why using the socket API | 73 | 2. Motivation / Why using the socket API |
75 | ---------------------------------------- | 74 | ---------------------------------------- |
76 | 75 | ||
77 | There have been CAN implementations for Linux before Socket CAN so the | 76 | There have been CAN implementations for Linux before SocketCAN so the |
78 | question arises, why we have started another project. Most existing | 77 | question arises, why we have started another project. Most existing |
79 | implementations come as a device driver for some CAN hardware, they | 78 | implementations come as a device driver for some CAN hardware, they |
80 | are based on character devices and provide comparatively little | 79 | are based on character devices and provide comparatively little |
@@ -89,10 +88,10 @@ the CAN controller requires employment of another device driver and | |||
89 | often the need for adaption of large parts of the application to the | 88 | often the need for adaption of large parts of the application to the |
90 | new driver's API. | 89 | new driver's API. |
91 | 90 | ||
92 | Socket CAN was designed to overcome all of these limitations. A new | 91 | SocketCAN was designed to overcome all of these limitations. A new |
93 | protocol family has been implemented which provides a socket interface | 92 | protocol family has been implemented which provides a socket interface |
94 | to user space applications and which builds upon the Linux network | 93 | to user space applications and which builds upon the Linux network |
95 | layer, so to use all of the provided queueing functionality. A device | 94 | layer, enabling use all of the provided queueing functionality. A device |
96 | driver for CAN controller hardware registers itself with the Linux | 95 | driver for CAN controller hardware registers itself with the Linux |
97 | network layer as a network device, so that CAN frames from the | 96 | network layer as a network device, so that CAN frames from the |
98 | controller can be passed up to the network layer and on to the CAN | 97 | controller can be passed up to the network layer and on to the CAN |
@@ -146,15 +145,15 @@ solution for a couple of reasons: | |||
146 | providing an API for device drivers to register with. However, then | 145 | providing an API for device drivers to register with. However, then |
147 | it would be no more difficult, or may be even easier, to use the | 146 | it would be no more difficult, or may be even easier, to use the |
148 | networking framework provided by the Linux kernel, and this is what | 147 | networking framework provided by the Linux kernel, and this is what |
149 | Socket CAN does. | 148 | SocketCAN does. |
150 | 149 | ||
151 | The use of the networking framework of the Linux kernel is just the | 150 | The use of the networking framework of the Linux kernel is just the |
152 | natural and most appropriate way to implement CAN for Linux. | 151 | natural and most appropriate way to implement CAN for Linux. |
153 | 152 | ||
154 | 3. Socket CAN concept | 153 | 3. SocketCAN concept |
155 | --------------------- | 154 | --------------------- |
156 | 155 | ||
157 | As described in chapter 2 it is the main goal of Socket CAN to | 156 | As described in chapter 2 it is the main goal of SocketCAN to |
158 | provide a socket interface to user space applications which builds | 157 | provide a socket interface to user space applications which builds |
159 | upon the Linux network layer. In contrast to the commonly known | 158 | upon the Linux network layer. In contrast to the commonly known |
160 | TCP/IP and ethernet networking, the CAN bus is a broadcast-only(!) | 159 | TCP/IP and ethernet networking, the CAN bus is a broadcast-only(!) |
@@ -168,11 +167,11 @@ solution for a couple of reasons: | |||
168 | 167 | ||
169 | The network transparent access of multiple applications leads to the | 168 | The network transparent access of multiple applications leads to the |
170 | problem that different applications may be interested in the same | 169 | problem that different applications may be interested in the same |
171 | CAN-IDs from the same CAN network interface. The Socket CAN core | 170 | CAN-IDs from the same CAN network interface. The SocketCAN core |
172 | module - which implements the protocol family CAN - provides several | 171 | module - which implements the protocol family CAN - provides several |
173 | high efficient receive lists for this reason. If e.g. a user space | 172 | high efficient receive lists for this reason. If e.g. a user space |
174 | application opens a CAN RAW socket, the raw protocol module itself | 173 | application opens a CAN RAW socket, the raw protocol module itself |
175 | requests the (range of) CAN-IDs from the Socket CAN core that are | 174 | requests the (range of) CAN-IDs from the SocketCAN core that are |
176 | requested by the user. The subscription and unsubscription of | 175 | requested by the user. The subscription and unsubscription of |
177 | CAN-IDs can be done for specific CAN interfaces or for all(!) known | 176 | CAN-IDs can be done for specific CAN interfaces or for all(!) known |
178 | CAN interfaces with the can_rx_(un)register() functions provided to | 177 | CAN interfaces with the can_rx_(un)register() functions provided to |
@@ -217,21 +216,7 @@ solution for a couple of reasons: | |||
217 | * = you really like to have this when you're running analyser tools | 216 | * = you really like to have this when you're running analyser tools |
218 | like 'candump' or 'cansniffer' on the (same) node. | 217 | like 'candump' or 'cansniffer' on the (same) node. |
219 | 218 | ||
220 | 3.3 network security issues (capabilities) | 219 | 3.3 network problem notifications |
221 | |||
222 | The Controller Area Network is a local field bus transmitting only | ||
223 | broadcast messages without any routing and security concepts. | ||
224 | In the majority of cases the user application has to deal with | ||
225 | raw CAN frames. Therefore it might be reasonable NOT to restrict | ||
226 | the CAN access only to the user root, as known from other networks. | ||
227 | Since the currently implemented CAN_RAW and CAN_BCM sockets can only | ||
228 | send and receive frames to/from CAN interfaces it does not affect | ||
229 | security of others networks to allow all users to access the CAN. | ||
230 | To enable non-root users to access CAN_RAW and CAN_BCM protocol | ||
231 | sockets the Kconfig options CAN_RAW_USER and/or CAN_BCM_USER may be | ||
232 | selected at kernel compile time. | ||
233 | |||
234 | 3.4 network problem notifications | ||
235 | 220 | ||
236 | The use of the CAN bus may lead to several problems on the physical | 221 | The use of the CAN bus may lead to several problems on the physical |
237 | and media access control layer. Detecting and logging of these lower | 222 | and media access control layer. Detecting and logging of these lower |
@@ -251,11 +236,11 @@ solution for a couple of reasons: | |||
251 | by default. The format of the CAN error message frame is briefly | 236 | by default. The format of the CAN error message frame is briefly |
252 | described in the Linux header file "include/linux/can/error.h". | 237 | described in the Linux header file "include/linux/can/error.h". |
253 | 238 | ||
254 | 4. How to use Socket CAN | 239 | 4. How to use SocketCAN |
255 | ------------------------ | 240 | ------------------------ |
256 | 241 | ||
257 | Like TCP/IP, you first need to open a socket for communicating over a | 242 | Like TCP/IP, you first need to open a socket for communicating over a |
258 | CAN network. Since Socket CAN implements a new protocol family, you | 243 | CAN network. Since SocketCAN implements a new protocol family, you |
259 | need to pass PF_CAN as the first argument to the socket(2) system | 244 | need to pass PF_CAN as the first argument to the socket(2) system |
260 | call. Currently, there are two CAN protocols to choose from, the raw | 245 | call. Currently, there are two CAN protocols to choose from, the raw |
261 | socket protocol and the broadcast manager (BCM). So to open a socket, | 246 | socket protocol and the broadcast manager (BCM). So to open a socket, |
@@ -286,8 +271,8 @@ solution for a couple of reasons: | |||
286 | }; | 271 | }; |
287 | 272 | ||
288 | The alignment of the (linear) payload data[] to a 64bit boundary | 273 | The alignment of the (linear) payload data[] to a 64bit boundary |
289 | allows the user to define own structs and unions to easily access the | 274 | allows the user to define their own structs and unions to easily access |
290 | CAN payload. There is no given byteorder on the CAN bus by | 275 | the CAN payload. There is no given byteorder on the CAN bus by |
291 | default. A read(2) system call on a CAN_RAW socket transfers a | 276 | default. A read(2) system call on a CAN_RAW socket transfers a |
292 | struct can_frame to the user space. | 277 | struct can_frame to the user space. |
293 | 278 | ||
@@ -479,7 +464,7 @@ solution for a couple of reasons: | |||
479 | 464 | ||
480 | setsockopt(s, SOL_CAN_RAW, CAN_RAW_FILTER, NULL, 0); | 465 | setsockopt(s, SOL_CAN_RAW, CAN_RAW_FILTER, NULL, 0); |
481 | 466 | ||
482 | To set the filters to zero filters is quite obsolete as not read | 467 | To set the filters to zero filters is quite obsolete as to not read |
483 | data causes the raw socket to discard the received CAN frames. But | 468 | data causes the raw socket to discard the received CAN frames. But |
484 | having this 'send only' use-case we may remove the receive list in the | 469 | having this 'send only' use-case we may remove the receive list in the |
485 | Kernel to save a little (really a very little!) CPU usage. | 470 | Kernel to save a little (really a very little!) CPU usage. |
@@ -814,17 +799,17 @@ solution for a couple of reasons: | |||
814 | 4.4 unconnected transport protocols (SOCK_DGRAM) | 799 | 4.4 unconnected transport protocols (SOCK_DGRAM) |
815 | 800 | ||
816 | 801 | ||
817 | 5. Socket CAN core module | 802 | 5. SocketCAN core module |
818 | ------------------------- | 803 | ------------------------- |
819 | 804 | ||
820 | The Socket CAN core module implements the protocol family | 805 | The SocketCAN core module implements the protocol family |
821 | PF_CAN. CAN protocol modules are loaded by the core module at | 806 | PF_CAN. CAN protocol modules are loaded by the core module at |
822 | runtime. The core module provides an interface for CAN protocol | 807 | runtime. The core module provides an interface for CAN protocol |
823 | modules to subscribe needed CAN IDs (see chapter 3.1). | 808 | modules to subscribe needed CAN IDs (see chapter 3.1). |
824 | 809 | ||
825 | 5.1 can.ko module params | 810 | 5.1 can.ko module params |
826 | 811 | ||
827 | - stats_timer: To calculate the Socket CAN core statistics | 812 | - stats_timer: To calculate the SocketCAN core statistics |
828 | (e.g. current/maximum frames per second) this 1 second timer is | 813 | (e.g. current/maximum frames per second) this 1 second timer is |
829 | invoked at can.ko module start time by default. This timer can be | 814 | invoked at can.ko module start time by default. This timer can be |
830 | disabled by using stattimer=0 on the module commandline. | 815 | disabled by using stattimer=0 on the module commandline. |
@@ -833,7 +818,7 @@ solution for a couple of reasons: | |||
833 | 818 | ||
834 | 5.2 procfs content | 819 | 5.2 procfs content |
835 | 820 | ||
836 | As described in chapter 3.1 the Socket CAN core uses several filter | 821 | As described in chapter 3.1 the SocketCAN core uses several filter |
837 | lists to deliver received CAN frames to CAN protocol modules. These | 822 | lists to deliver received CAN frames to CAN protocol modules. These |
838 | receive lists, their filters and the count of filter matches can be | 823 | receive lists, their filters and the count of filter matches can be |
839 | checked in the appropriate receive list. All entries contain the | 824 | checked in the appropriate receive list. All entries contain the |
@@ -860,15 +845,15 @@ solution for a couple of reasons: | |||
860 | 845 | ||
861 | Additional procfs files in /proc/net/can | 846 | Additional procfs files in /proc/net/can |
862 | 847 | ||
863 | stats - Socket CAN core statistics (rx/tx frames, match ratios, ...) | 848 | stats - SocketCAN core statistics (rx/tx frames, match ratios, ...) |
864 | reset_stats - manual statistic reset | 849 | reset_stats - manual statistic reset |
865 | version - prints the Socket CAN core version and the ABI version | 850 | version - prints the SocketCAN core version and the ABI version |
866 | 851 | ||
867 | 5.3 writing own CAN protocol modules | 852 | 5.3 writing own CAN protocol modules |
868 | 853 | ||
869 | To implement a new protocol in the protocol family PF_CAN a new | 854 | To implement a new protocol in the protocol family PF_CAN a new |
870 | protocol has to be defined in include/linux/can.h . | 855 | protocol has to be defined in include/linux/can.h . |
871 | The prototypes and definitions to use the Socket CAN core can be | 856 | The prototypes and definitions to use the SocketCAN core can be |
872 | accessed by including include/linux/can/core.h . | 857 | accessed by including include/linux/can/core.h . |
873 | In addition to functions that register the CAN protocol and the | 858 | In addition to functions that register the CAN protocol and the |
874 | CAN device notifier chain there are functions to subscribe CAN | 859 | CAN device notifier chain there are functions to subscribe CAN |
@@ -1105,7 +1090,7 @@ solution for a couple of reasons: | |||
1105 | 1090 | ||
1106 | $ ip link set canX up type can bitrate 125000 | 1091 | $ ip link set canX up type can bitrate 125000 |
1107 | 1092 | ||
1108 | A device may enter the "bus-off" state if too much errors occurred on | 1093 | A device may enter the "bus-off" state if too many errors occurred on |
1109 | the CAN bus. Then no more messages are received or sent. An automatic | 1094 | the CAN bus. Then no more messages are received or sent. An automatic |
1110 | bus-off recovery can be enabled by setting the "restart-ms" to a | 1095 | bus-off recovery can be enabled by setting the "restart-ms" to a |
1111 | non-zero value, e.g.: | 1096 | non-zero value, e.g.: |
@@ -1125,7 +1110,7 @@ solution for a couple of reasons: | |||
1125 | 1110 | ||
1126 | CAN FD capable CAN controllers support two different bitrates for the | 1111 | CAN FD capable CAN controllers support two different bitrates for the |
1127 | arbitration phase and the payload phase of the CAN FD frame. Therefore a | 1112 | arbitration phase and the payload phase of the CAN FD frame. Therefore a |
1128 | second bittiming has to be specified in order to enable the CAN FD bitrate. | 1113 | second bit timing has to be specified in order to enable the CAN FD bitrate. |
1129 | 1114 | ||
1130 | Additionally CAN FD capable CAN controllers support up to 64 bytes of | 1115 | Additionally CAN FD capable CAN controllers support up to 64 bytes of |
1131 | payload. The representation of this length in can_frame.can_dlc and | 1116 | payload. The representation of this length in can_frame.can_dlc and |
@@ -1150,21 +1135,16 @@ solution for a couple of reasons: | |||
1150 | 6.7 Supported CAN hardware | 1135 | 6.7 Supported CAN hardware |
1151 | 1136 | ||
1152 | Please check the "Kconfig" file in "drivers/net/can" to get an actual | 1137 | Please check the "Kconfig" file in "drivers/net/can" to get an actual |
1153 | list of the support CAN hardware. On the Socket CAN project website | 1138 | list of the support CAN hardware. On the SocketCAN project website |
1154 | (see chapter 7) there might be further drivers available, also for | 1139 | (see chapter 7) there might be further drivers available, also for |
1155 | older kernel versions. | 1140 | older kernel versions. |
1156 | 1141 | ||
1157 | 7. Socket CAN resources | 1142 | 7. SocketCAN resources |
1158 | ----------------------- | 1143 | ----------------------- |
1159 | 1144 | ||
1160 | You can find further resources for Socket CAN like user space tools, | 1145 | The Linux CAN / SocketCAN project ressources (project site / mailing list) |
1161 | support for old kernel versions, more drivers, mailing lists, etc. | 1146 | are referenced in the MAINTAINERS file in the Linux source tree. |
1162 | at the BerliOS OSS project website for Socket CAN: | 1147 | Search for CAN NETWORK [LAYERS|DRIVERS]. |
1163 | |||
1164 | http://developer.berlios.de/projects/socketcan | ||
1165 | |||
1166 | If you have questions, bug fixes, etc., don't hesitate to post them to | ||
1167 | the Socketcan-Users mailing list. But please search the archives first. | ||
1168 | 1148 | ||
1169 | 8. Credits | 1149 | 8. Credits |
1170 | ---------- | 1150 | ---------- |
diff --git a/Documentation/networking/filter.txt b/Documentation/networking/filter.txt index cdb3e40b9d14..a06b48d2f5cc 100644 --- a/Documentation/networking/filter.txt +++ b/Documentation/networking/filter.txt | |||
@@ -1,49 +1,563 @@ | |||
1 | filter.txt: Linux Socket Filtering | 1 | Linux Socket Filtering aka Berkeley Packet Filter (BPF) |
2 | Written by: Jay Schulist <jschlst@samba.org> | 2 | ======================================================= |
3 | 3 | ||
4 | Introduction | 4 | Introduction |
5 | ============ | 5 | ------------ |
6 | 6 | ||
7 | Linux Socket Filtering is derived from the Berkeley | 7 | Linux Socket Filtering (LSF) is derived from the Berkeley Packet Filter. |
8 | Packet Filter. There are some distinct differences between | 8 | Though there are some distinct differences between the BSD and Linux |
9 | the BSD and Linux Kernel Filtering. | 9 | Kernel filtering, but when we speak of BPF or LSF in Linux context, we |
10 | 10 | mean the very same mechanism of filtering in the Linux kernel. | |
11 | Linux Socket Filtering (LSF) allows a user-space program to | 11 | |
12 | attach a filter onto any socket and allow or disallow certain | 12 | BPF allows a user-space program to attach a filter onto any socket and |
13 | types of data to come through the socket. LSF follows exactly | 13 | allow or disallow certain types of data to come through the socket. LSF |
14 | the same filter code structure as the BSD Berkeley Packet Filter | 14 | follows exactly the same filter code structure as BSD's BPF, so referring |
15 | (BPF), so referring to the BSD bpf.4 manpage is very helpful in | 15 | to the BSD bpf.4 manpage is very helpful in creating filters. |
16 | creating filters. | 16 | |
17 | 17 | On Linux, BPF is much simpler than on BSD. One does not have to worry | |
18 | LSF is much simpler than BPF. One does not have to worry about | 18 | about devices or anything like that. You simply create your filter code, |
19 | devices or anything like that. You simply create your filter | 19 | send it to the kernel via the SO_ATTACH_FILTER option and if your filter |
20 | code, send it to the kernel via the SO_ATTACH_FILTER option and | 20 | code passes the kernel check on it, you then immediately begin filtering |
21 | if your filter code passes the kernel check on it, you then | 21 | data on that socket. |
22 | immediately begin filtering data on that socket. | 22 | |
23 | 23 | You can also detach filters from your socket via the SO_DETACH_FILTER | |
24 | You can also detach filters from your socket via the | 24 | option. This will probably not be used much since when you close a socket |
25 | SO_DETACH_FILTER option. This will probably not be used much | 25 | that has a filter on it the filter is automagically removed. The other |
26 | since when you close a socket that has a filter on it the | 26 | less common case may be adding a different filter on the same socket where |
27 | filter is automagically removed. The other less common case | 27 | you had another filter that is still running: the kernel takes care of |
28 | may be adding a different filter on the same socket where you had another | 28 | removing the old one and placing your new one in its place, assuming your |
29 | filter that is still running: the kernel takes care of removing | 29 | filter has passed the checks, otherwise if it fails the old filter will |
30 | the old one and placing your new one in its place, assuming your | 30 | remain on that socket. |
31 | filter has passed the checks, otherwise if it fails the old filter | 31 | |
32 | will remain on that socket. | 32 | SO_LOCK_FILTER option allows to lock the filter attached to a socket. Once |
33 | 33 | set, a filter cannot be removed or changed. This allows one process to | |
34 | SO_LOCK_FILTER option allows to lock the filter attached to a | 34 | setup a socket, attach a filter, lock it then drop privileges and be |
35 | socket. Once set, a filter cannot be removed or changed. This allows | 35 | assured that the filter will be kept until the socket is closed. |
36 | one process to setup a socket, attach a filter, lock it then drop | 36 | |
37 | privileges and be assured that the filter will be kept until the | 37 | The biggest user of this construct might be libpcap. Issuing a high-level |
38 | socket is closed. | 38 | filter command like `tcpdump -i em1 port 22` passes through the libpcap |
39 | 39 | internal compiler that generates a structure that can eventually be loaded | |
40 | Examples | 40 | via SO_ATTACH_FILTER to the kernel. `tcpdump -i em1 port 22 -ddd` |
41 | ======== | 41 | displays what is being placed into this structure. |
42 | 42 | ||
43 | Ioctls- | 43 | Although we were only speaking about sockets here, BPF in Linux is used |
44 | setsockopt(sockfd, SOL_SOCKET, SO_ATTACH_FILTER, &Filter, sizeof(Filter)); | 44 | in many more places. There's xt_bpf for netfilter, cls_bpf in the kernel |
45 | setsockopt(sockfd, SOL_SOCKET, SO_DETACH_FILTER, &value, sizeof(value)); | 45 | qdisc layer, SECCOMP-BPF (SECure COMPuting [1]), and lots of other places |
46 | setsockopt(sockfd, SOL_SOCKET, SO_LOCK_FILTER, &value, sizeof(value)); | 46 | such as team driver, PTP code, etc where BPF is being used. |
47 | 47 | ||
48 | See the BSD bpf.4 manpage and the BSD Packet Filter paper written by | 48 | [1] Documentation/prctl/seccomp_filter.txt |
49 | Steven McCanne and Van Jacobson of Lawrence Berkeley Laboratory. | 49 | |
50 | Original BPF paper: | ||
51 | |||
52 | Steven McCanne and Van Jacobson. 1993. The BSD packet filter: a new | ||
53 | architecture for user-level packet capture. In Proceedings of the | ||
54 | USENIX Winter 1993 Conference Proceedings on USENIX Winter 1993 | ||
55 | Conference Proceedings (USENIX'93). USENIX Association, Berkeley, | ||
56 | CA, USA, 2-2. [http://www.tcpdump.org/papers/bpf-usenix93.pdf] | ||
57 | |||
58 | Structure | ||
59 | --------- | ||
60 | |||
61 | User space applications include <linux/filter.h> which contains the | ||
62 | following relevant structures: | ||
63 | |||
64 | struct sock_filter { /* Filter block */ | ||
65 | __u16 code; /* Actual filter code */ | ||
66 | __u8 jt; /* Jump true */ | ||
67 | __u8 jf; /* Jump false */ | ||
68 | __u32 k; /* Generic multiuse field */ | ||
69 | }; | ||
70 | |||
71 | Such a structure is assembled as an array of 4-tuples, that contains | ||
72 | a code, jt, jf and k value. jt and jf are jump offsets and k a generic | ||
73 | value to be used for a provided code. | ||
74 | |||
75 | struct sock_fprog { /* Required for SO_ATTACH_FILTER. */ | ||
76 | unsigned short len; /* Number of filter blocks */ | ||
77 | struct sock_filter __user *filter; | ||
78 | }; | ||
79 | |||
80 | For socket filtering, a pointer to this structure (as shown in | ||
81 | follow-up example) is being passed to the kernel through setsockopt(2). | ||
82 | |||
83 | Example | ||
84 | ------- | ||
85 | |||
86 | #include <sys/socket.h> | ||
87 | #include <sys/types.h> | ||
88 | #include <arpa/inet.h> | ||
89 | #include <linux/if_ether.h> | ||
90 | /* ... */ | ||
91 | |||
92 | /* From the example above: tcpdump -i em1 port 22 -dd */ | ||
93 | struct sock_filter code[] = { | ||
94 | { 0x28, 0, 0, 0x0000000c }, | ||
95 | { 0x15, 0, 8, 0x000086dd }, | ||
96 | { 0x30, 0, 0, 0x00000014 }, | ||
97 | { 0x15, 2, 0, 0x00000084 }, | ||
98 | { 0x15, 1, 0, 0x00000006 }, | ||
99 | { 0x15, 0, 17, 0x00000011 }, | ||
100 | { 0x28, 0, 0, 0x00000036 }, | ||
101 | { 0x15, 14, 0, 0x00000016 }, | ||
102 | { 0x28, 0, 0, 0x00000038 }, | ||
103 | { 0x15, 12, 13, 0x00000016 }, | ||
104 | { 0x15, 0, 12, 0x00000800 }, | ||
105 | { 0x30, 0, 0, 0x00000017 }, | ||
106 | { 0x15, 2, 0, 0x00000084 }, | ||
107 | { 0x15, 1, 0, 0x00000006 }, | ||
108 | { 0x15, 0, 8, 0x00000011 }, | ||
109 | { 0x28, 0, 0, 0x00000014 }, | ||
110 | { 0x45, 6, 0, 0x00001fff }, | ||
111 | { 0xb1, 0, 0, 0x0000000e }, | ||
112 | { 0x48, 0, 0, 0x0000000e }, | ||
113 | { 0x15, 2, 0, 0x00000016 }, | ||
114 | { 0x48, 0, 0, 0x00000010 }, | ||
115 | { 0x15, 0, 1, 0x00000016 }, | ||
116 | { 0x06, 0, 0, 0x0000ffff }, | ||
117 | { 0x06, 0, 0, 0x00000000 }, | ||
118 | }; | ||
119 | |||
120 | struct sock_fprog bpf = { | ||
121 | .len = ARRAY_SIZE(code), | ||
122 | .filter = code, | ||
123 | }; | ||
124 | |||
125 | sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)); | ||
126 | if (sock < 0) | ||
127 | /* ... bail out ... */ | ||
128 | |||
129 | ret = setsockopt(sock, SOL_SOCKET, SO_ATTACH_FILTER, &bpf, sizeof(bpf)); | ||
130 | if (ret < 0) | ||
131 | /* ... bail out ... */ | ||
132 | |||
133 | /* ... */ | ||
134 | close(sock); | ||
135 | |||
136 | The above example code attaches a socket filter for a PF_PACKET socket | ||
137 | in order to let all IPv4/IPv6 packets with port 22 pass. The rest will | ||
138 | be dropped for this socket. | ||
139 | |||
140 | The setsockopt(2) call to SO_DETACH_FILTER doesn't need any arguments | ||
141 | and SO_LOCK_FILTER for preventing the filter to be detached, takes an | ||
142 | integer value with 0 or 1. | ||
143 | |||
144 | Note that socket filters are not restricted to PF_PACKET sockets only, | ||
145 | but can also be used on other socket families. | ||
146 | |||
147 | Summary of system calls: | ||
148 | |||
149 | * setsockopt(sockfd, SOL_SOCKET, SO_ATTACH_FILTER, &val, sizeof(val)); | ||
150 | * setsockopt(sockfd, SOL_SOCKET, SO_DETACH_FILTER, &val, sizeof(val)); | ||
151 | * setsockopt(sockfd, SOL_SOCKET, SO_LOCK_FILTER, &val, sizeof(val)); | ||
152 | |||
153 | Normally, most use cases for socket filtering on packet sockets will be | ||
154 | covered by libpcap in high-level syntax, so as an application developer | ||
155 | you should stick to that. libpcap wraps its own layer around all that. | ||
156 | |||
157 | Unless i) using/linking to libpcap is not an option, ii) the required BPF | ||
158 | filters use Linux extensions that are not supported by libpcap's compiler, | ||
159 | iii) a filter might be more complex and not cleanly implementable with | ||
160 | libpcap's compiler, or iv) particular filter codes should be optimized | ||
161 | differently than libpcap's internal compiler does; then in such cases | ||
162 | writing such a filter "by hand" can be of an alternative. For example, | ||
163 | xt_bpf and cls_bpf users might have requirements that could result in | ||
164 | more complex filter code, or one that cannot be expressed with libpcap | ||
165 | (e.g. different return codes for various code paths). Moreover, BPF JIT | ||
166 | implementors may wish to manually write test cases and thus need low-level | ||
167 | access to BPF code as well. | ||
168 | |||
169 | BPF engine and instruction set | ||
170 | ------------------------------ | ||
171 | |||
172 | Under tools/net/ there's a small helper tool called bpf_asm which can | ||
173 | be used to write low-level filters for example scenarios mentioned in the | ||
174 | previous section. Asm-like syntax mentioned here has been implemented in | ||
175 | bpf_asm and will be used for further explanations (instead of dealing with | ||
176 | less readable opcodes directly, principles are the same). The syntax is | ||
177 | closely modelled after Steven McCanne's and Van Jacobson's BPF paper. | ||
178 | |||
179 | The BPF architecture consists of the following basic elements: | ||
180 | |||
181 | Element Description | ||
182 | |||
183 | A 32 bit wide accumulator | ||
184 | X 32 bit wide X register | ||
185 | M[] 16 x 32 bit wide misc registers aka "scratch memory | ||
186 | store", addressable from 0 to 15 | ||
187 | |||
188 | A program, that is translated by bpf_asm into "opcodes" is an array that | ||
189 | consists of the following elements (as already mentioned): | ||
190 | |||
191 | op:16, jt:8, jf:8, k:32 | ||
192 | |||
193 | The element op is a 16 bit wide opcode that has a particular instruction | ||
194 | encoded. jt and jf are two 8 bit wide jump targets, one for condition | ||
195 | "jump if true", the other one "jump if false". Eventually, element k | ||
196 | contains a miscellaneous argument that can be interpreted in different | ||
197 | ways depending on the given instruction in op. | ||
198 | |||
199 | The instruction set consists of load, store, branch, alu, miscellaneous | ||
200 | and return instructions that are also represented in bpf_asm syntax. This | ||
201 | table lists all bpf_asm instructions available resp. what their underlying | ||
202 | opcodes as defined in linux/filter.h stand for: | ||
203 | |||
204 | Instruction Addressing mode Description | ||
205 | |||
206 | ld 1, 2, 3, 4, 10 Load word into A | ||
207 | ldi 4 Load word into A | ||
208 | ldh 1, 2 Load half-word into A | ||
209 | ldb 1, 2 Load byte into A | ||
210 | ldx 3, 4, 5, 10 Load word into X | ||
211 | ldxi 4 Load word into X | ||
212 | ldxb 5 Load byte into X | ||
213 | |||
214 | st 3 Store A into M[] | ||
215 | stx 3 Store X into M[] | ||
216 | |||
217 | jmp 6 Jump to label | ||
218 | ja 6 Jump to label | ||
219 | jeq 7, 8 Jump on k == A | ||
220 | jneq 8 Jump on k != A | ||
221 | jne 8 Jump on k != A | ||
222 | jlt 8 Jump on k < A | ||
223 | jle 8 Jump on k <= A | ||
224 | jgt 7, 8 Jump on k > A | ||
225 | jge 7, 8 Jump on k >= A | ||
226 | jset 7, 8 Jump on k & A | ||
227 | |||
228 | add 0, 4 A + <x> | ||
229 | sub 0, 4 A - <x> | ||
230 | mul 0, 4 A * <x> | ||
231 | div 0, 4 A / <x> | ||
232 | mod 0, 4 A % <x> | ||
233 | neg 0, 4 !A | ||
234 | and 0, 4 A & <x> | ||
235 | or 0, 4 A | <x> | ||
236 | xor 0, 4 A ^ <x> | ||
237 | lsh 0, 4 A << <x> | ||
238 | rsh 0, 4 A >> <x> | ||
239 | |||
240 | tax Copy A into X | ||
241 | txa Copy X into A | ||
242 | |||
243 | ret 4, 9 Return | ||
244 | |||
245 | The next table shows addressing formats from the 2nd column: | ||
246 | |||
247 | Addressing mode Syntax Description | ||
248 | |||
249 | 0 x/%x Register X | ||
250 | 1 [k] BHW at byte offset k in the packet | ||
251 | 2 [x + k] BHW at the offset X + k in the packet | ||
252 | 3 M[k] Word at offset k in M[] | ||
253 | 4 #k Literal value stored in k | ||
254 | 5 4*([k]&0xf) Lower nibble * 4 at byte offset k in the packet | ||
255 | 6 L Jump label L | ||
256 | 7 #k,Lt,Lf Jump to Lt if true, otherwise jump to Lf | ||
257 | 8 #k,Lt Jump to Lt if predicate is true | ||
258 | 9 a/%a Accumulator A | ||
259 | 10 extension BPF extension | ||
260 | |||
261 | The Linux kernel also has a couple of BPF extensions that are used along | ||
262 | with the class of load instructions by "overloading" the k argument with | ||
263 | a negative offset + a particular extension offset. The result of such BPF | ||
264 | extensions are loaded into A. | ||
265 | |||
266 | Possible BPF extensions are shown in the following table: | ||
267 | |||
268 | Extension Description | ||
269 | |||
270 | len skb->len | ||
271 | proto skb->protocol | ||
272 | type skb->pkt_type | ||
273 | poff Payload start offset | ||
274 | ifidx skb->dev->ifindex | ||
275 | nla Netlink attribute of type X with offset A | ||
276 | nlan Nested Netlink attribute of type X with offset A | ||
277 | mark skb->mark | ||
278 | queue skb->queue_mapping | ||
279 | hatype skb->dev->type | ||
280 | rxhash skb->rxhash | ||
281 | cpu raw_smp_processor_id() | ||
282 | vlan_tci vlan_tx_tag_get(skb) | ||
283 | vlan_pr vlan_tx_tag_present(skb) | ||
284 | |||
285 | These extensions can also be prefixed with '#'. | ||
286 | Examples for low-level BPF: | ||
287 | |||
288 | ** ARP packets: | ||
289 | |||
290 | ldh [12] | ||
291 | jne #0x806, drop | ||
292 | ret #-1 | ||
293 | drop: ret #0 | ||
294 | |||
295 | ** IPv4 TCP packets: | ||
296 | |||
297 | ldh [12] | ||
298 | jne #0x800, drop | ||
299 | ldb [23] | ||
300 | jneq #6, drop | ||
301 | ret #-1 | ||
302 | drop: ret #0 | ||
303 | |||
304 | ** (Accelerated) VLAN w/ id 10: | ||
305 | |||
306 | ld vlan_tci | ||
307 | jneq #10, drop | ||
308 | ret #-1 | ||
309 | drop: ret #0 | ||
310 | |||
311 | ** SECCOMP filter example: | ||
312 | |||
313 | ld [4] /* offsetof(struct seccomp_data, arch) */ | ||
314 | jne #0xc000003e, bad /* AUDIT_ARCH_X86_64 */ | ||
315 | ld [0] /* offsetof(struct seccomp_data, nr) */ | ||
316 | jeq #15, good /* __NR_rt_sigreturn */ | ||
317 | jeq #231, good /* __NR_exit_group */ | ||
318 | jeq #60, good /* __NR_exit */ | ||
319 | jeq #0, good /* __NR_read */ | ||
320 | jeq #1, good /* __NR_write */ | ||
321 | jeq #5, good /* __NR_fstat */ | ||
322 | jeq #9, good /* __NR_mmap */ | ||
323 | jeq #14, good /* __NR_rt_sigprocmask */ | ||
324 | jeq #13, good /* __NR_rt_sigaction */ | ||
325 | jeq #35, good /* __NR_nanosleep */ | ||
326 | bad: ret #0 /* SECCOMP_RET_KILL */ | ||
327 | good: ret #0x7fff0000 /* SECCOMP_RET_ALLOW */ | ||
328 | |||
329 | The above example code can be placed into a file (here called "foo"), and | ||
330 | then be passed to the bpf_asm tool for generating opcodes, output that xt_bpf | ||
331 | and cls_bpf understands and can directly be loaded with. Example with above | ||
332 | ARP code: | ||
333 | |||
334 | $ ./bpf_asm foo | ||
335 | 4,40 0 0 12,21 0 1 2054,6 0 0 4294967295,6 0 0 0, | ||
336 | |||
337 | In copy and paste C-like output: | ||
338 | |||
339 | $ ./bpf_asm -c foo | ||
340 | { 0x28, 0, 0, 0x0000000c }, | ||
341 | { 0x15, 0, 1, 0x00000806 }, | ||
342 | { 0x06, 0, 0, 0xffffffff }, | ||
343 | { 0x06, 0, 0, 0000000000 }, | ||
344 | |||
345 | In particular, as usage with xt_bpf or cls_bpf can result in more complex BPF | ||
346 | filters that might not be obvious at first, it's good to test filters before | ||
347 | attaching to a live system. For that purpose, there's a small tool called | ||
348 | bpf_dbg under tools/net/ in the kernel source directory. This debugger allows | ||
349 | for testing BPF filters against given pcap files, single stepping through the | ||
350 | BPF code on the pcap's packets and to do BPF machine register dumps. | ||
351 | |||
352 | Starting bpf_dbg is trivial and just requires issuing: | ||
353 | |||
354 | # ./bpf_dbg | ||
355 | |||
356 | In case input and output do not equal stdin/stdout, bpf_dbg takes an | ||
357 | alternative stdin source as a first argument, and an alternative stdout | ||
358 | sink as a second one, e.g. `./bpf_dbg test_in.txt test_out.txt`. | ||
359 | |||
360 | Other than that, a particular libreadline configuration can be set via | ||
361 | file "~/.bpf_dbg_init" and the command history is stored in the file | ||
362 | "~/.bpf_dbg_history". | ||
363 | |||
364 | Interaction in bpf_dbg happens through a shell that also has auto-completion | ||
365 | support (follow-up example commands starting with '>' denote bpf_dbg shell). | ||
366 | The usual workflow would be to ... | ||
367 | |||
368 | > load bpf 6,40 0 0 12,21 0 3 2048,48 0 0 23,21 0 1 1,6 0 0 65535,6 0 0 0 | ||
369 | Loads a BPF filter from standard output of bpf_asm, or transformed via | ||
370 | e.g. `tcpdump -iem1 -ddd port 22 | tr '\n' ','`. Note that for JIT | ||
371 | debugging (next section), this command creates a temporary socket and | ||
372 | loads the BPF code into the kernel. Thus, this will also be useful for | ||
373 | JIT developers. | ||
374 | |||
375 | > load pcap foo.pcap | ||
376 | Loads standard tcpdump pcap file. | ||
377 | |||
378 | > run [<n>] | ||
379 | bpf passes:1 fails:9 | ||
380 | Runs through all packets from a pcap to account how many passes and fails | ||
381 | the filter will generate. A limit of packets to traverse can be given. | ||
382 | |||
383 | > disassemble | ||
384 | l0: ldh [12] | ||
385 | l1: jeq #0x800, l2, l5 | ||
386 | l2: ldb [23] | ||
387 | l3: jeq #0x1, l4, l5 | ||
388 | l4: ret #0xffff | ||
389 | l5: ret #0 | ||
390 | Prints out BPF code disassembly. | ||
391 | |||
392 | > dump | ||
393 | /* { op, jt, jf, k }, */ | ||
394 | { 0x28, 0, 0, 0x0000000c }, | ||
395 | { 0x15, 0, 3, 0x00000800 }, | ||
396 | { 0x30, 0, 0, 0x00000017 }, | ||
397 | { 0x15, 0, 1, 0x00000001 }, | ||
398 | { 0x06, 0, 0, 0x0000ffff }, | ||
399 | { 0x06, 0, 0, 0000000000 }, | ||
400 | Prints out C-style BPF code dump. | ||
401 | |||
402 | > breakpoint 0 | ||
403 | breakpoint at: l0: ldh [12] | ||
404 | > breakpoint 1 | ||
405 | breakpoint at: l1: jeq #0x800, l2, l5 | ||
406 | ... | ||
407 | Sets breakpoints at particular BPF instructions. Issuing a `run` command | ||
408 | will walk through the pcap file continuing from the current packet and | ||
409 | break when a breakpoint is being hit (another `run` will continue from | ||
410 | the currently active breakpoint executing next instructions): | ||
411 | |||
412 | > run | ||
413 | -- register dump -- | ||
414 | pc: [0] <-- program counter | ||
415 | code: [40] jt[0] jf[0] k[12] <-- plain BPF code of current instruction | ||
416 | curr: l0: ldh [12] <-- disassembly of current instruction | ||
417 | A: [00000000][0] <-- content of A (hex, decimal) | ||
418 | X: [00000000][0] <-- content of X (hex, decimal) | ||
419 | M[0,15]: [00000000][0] <-- folded content of M (hex, decimal) | ||
420 | -- packet dump -- <-- Current packet from pcap (hex) | ||
421 | len: 42 | ||
422 | 0: 00 19 cb 55 55 a4 00 14 a4 43 78 69 08 06 00 01 | ||
423 | 16: 08 00 06 04 00 01 00 14 a4 43 78 69 0a 3b 01 26 | ||
424 | 32: 00 00 00 00 00 00 0a 3b 01 01 | ||
425 | (breakpoint) | ||
426 | > | ||
427 | |||
428 | > breakpoint | ||
429 | breakpoints: 0 1 | ||
430 | Prints currently set breakpoints. | ||
431 | |||
432 | > step [-<n>, +<n>] | ||
433 | Performs single stepping through the BPF program from the current pc | ||
434 | offset. Thus, on each step invocation, above register dump is issued. | ||
435 | This can go forwards and backwards in time, a plain `step` will break | ||
436 | on the next BPF instruction, thus +1. (No `run` needs to be issued here.) | ||
437 | |||
438 | > select <n> | ||
439 | Selects a given packet from the pcap file to continue from. Thus, on | ||
440 | the next `run` or `step`, the BPF program is being evaluated against | ||
441 | the user pre-selected packet. Numbering starts just as in Wireshark | ||
442 | with index 1. | ||
443 | |||
444 | > quit | ||
445 | # | ||
446 | Exits bpf_dbg. | ||
447 | |||
448 | JIT compiler | ||
449 | ------------ | ||
450 | |||
451 | The Linux kernel has a built-in BPF JIT compiler for x86_64, SPARC, PowerPC, | ||
452 | ARM and s390 and can be enabled through CONFIG_BPF_JIT. The JIT compiler is | ||
453 | transparently invoked for each attached filter from user space or for internal | ||
454 | kernel users if it has been previously enabled by root: | ||
455 | |||
456 | echo 1 > /proc/sys/net/core/bpf_jit_enable | ||
457 | |||
458 | For JIT developers, doing audits etc, each compile run can output the generated | ||
459 | opcode image into the kernel log via: | ||
460 | |||
461 | echo 2 > /proc/sys/net/core/bpf_jit_enable | ||
462 | |||
463 | Example output from dmesg: | ||
464 | |||
465 | [ 3389.935842] flen=6 proglen=70 pass=3 image=ffffffffa0069c8f | ||
466 | [ 3389.935847] JIT code: 00000000: 55 48 89 e5 48 83 ec 60 48 89 5d f8 44 8b 4f 68 | ||
467 | [ 3389.935849] JIT code: 00000010: 44 2b 4f 6c 4c 8b 87 d8 00 00 00 be 0c 00 00 00 | ||
468 | [ 3389.935850] JIT code: 00000020: e8 1d 94 ff e0 3d 00 08 00 00 75 16 be 17 00 00 | ||
469 | [ 3389.935851] JIT code: 00000030: 00 e8 28 94 ff e0 83 f8 01 75 07 b8 ff ff 00 00 | ||
470 | [ 3389.935852] JIT code: 00000040: eb 02 31 c0 c9 c3 | ||
471 | |||
472 | In the kernel source tree under tools/net/, there's bpf_jit_disasm for | ||
473 | generating disassembly out of the kernel log's hexdump: | ||
474 | |||
475 | # ./bpf_jit_disasm | ||
476 | 70 bytes emitted from JIT compiler (pass:3, flen:6) | ||
477 | ffffffffa0069c8f + <x>: | ||
478 | 0: push %rbp | ||
479 | 1: mov %rsp,%rbp | ||
480 | 4: sub $0x60,%rsp | ||
481 | 8: mov %rbx,-0x8(%rbp) | ||
482 | c: mov 0x68(%rdi),%r9d | ||
483 | 10: sub 0x6c(%rdi),%r9d | ||
484 | 14: mov 0xd8(%rdi),%r8 | ||
485 | 1b: mov $0xc,%esi | ||
486 | 20: callq 0xffffffffe0ff9442 | ||
487 | 25: cmp $0x800,%eax | ||
488 | 2a: jne 0x0000000000000042 | ||
489 | 2c: mov $0x17,%esi | ||
490 | 31: callq 0xffffffffe0ff945e | ||
491 | 36: cmp $0x1,%eax | ||
492 | 39: jne 0x0000000000000042 | ||
493 | 3b: mov $0xffff,%eax | ||
494 | 40: jmp 0x0000000000000044 | ||
495 | 42: xor %eax,%eax | ||
496 | 44: leaveq | ||
497 | 45: retq | ||
498 | |||
499 | Issuing option `-o` will "annotate" opcodes to resulting assembler | ||
500 | instructions, which can be very useful for JIT developers: | ||
501 | |||
502 | # ./bpf_jit_disasm -o | ||
503 | 70 bytes emitted from JIT compiler (pass:3, flen:6) | ||
504 | ffffffffa0069c8f + <x>: | ||
505 | 0: push %rbp | ||
506 | 55 | ||
507 | 1: mov %rsp,%rbp | ||
508 | 48 89 e5 | ||
509 | 4: sub $0x60,%rsp | ||
510 | 48 83 ec 60 | ||
511 | 8: mov %rbx,-0x8(%rbp) | ||
512 | 48 89 5d f8 | ||
513 | c: mov 0x68(%rdi),%r9d | ||
514 | 44 8b 4f 68 | ||
515 | 10: sub 0x6c(%rdi),%r9d | ||
516 | 44 2b 4f 6c | ||
517 | 14: mov 0xd8(%rdi),%r8 | ||
518 | 4c 8b 87 d8 00 00 00 | ||
519 | 1b: mov $0xc,%esi | ||
520 | be 0c 00 00 00 | ||
521 | 20: callq 0xffffffffe0ff9442 | ||
522 | e8 1d 94 ff e0 | ||
523 | 25: cmp $0x800,%eax | ||
524 | 3d 00 08 00 00 | ||
525 | 2a: jne 0x0000000000000042 | ||
526 | 75 16 | ||
527 | 2c: mov $0x17,%esi | ||
528 | be 17 00 00 00 | ||
529 | 31: callq 0xffffffffe0ff945e | ||
530 | e8 28 94 ff e0 | ||
531 | 36: cmp $0x1,%eax | ||
532 | 83 f8 01 | ||
533 | 39: jne 0x0000000000000042 | ||
534 | 75 07 | ||
535 | 3b: mov $0xffff,%eax | ||
536 | b8 ff ff 00 00 | ||
537 | 40: jmp 0x0000000000000044 | ||
538 | eb 02 | ||
539 | 42: xor %eax,%eax | ||
540 | 31 c0 | ||
541 | 44: leaveq | ||
542 | c9 | ||
543 | 45: retq | ||
544 | c3 | ||
545 | |||
546 | For BPF JIT developers, bpf_jit_disasm, bpf_asm and bpf_dbg provides a useful | ||
547 | toolchain for developing and testing the kernel's JIT compiler. | ||
548 | |||
549 | Misc | ||
550 | ---- | ||
551 | |||
552 | Also trinity, the Linux syscall fuzzer, has built-in support for BPF and | ||
553 | SECCOMP-BPF kernel fuzzing. | ||
554 | |||
555 | Written by | ||
556 | ---------- | ||
557 | |||
558 | The document was written in the hope that it is found useful and in order | ||
559 | to give potential BPF hackers or security auditors a better overview of | ||
560 | the underlying architecture. | ||
561 | |||
562 | Jay Schulist <jschlst@samba.org> | ||
563 | Daniel Borkmann <dborkman@redhat.com> | ||
diff --git a/Documentation/networking/i40evf.txt b/Documentation/networking/i40evf.txt new file mode 100644 index 000000000000..21e41271af79 --- /dev/null +++ b/Documentation/networking/i40evf.txt | |||
@@ -0,0 +1,47 @@ | |||
1 | Linux* Base Driver for Intel(R) Network Connection | ||
2 | ================================================== | ||
3 | |||
4 | Intel XL710 X710 Virtual Function Linux driver. | ||
5 | Copyright(c) 2013 Intel Corporation. | ||
6 | |||
7 | Contents | ||
8 | ======== | ||
9 | |||
10 | - Identifying Your Adapter | ||
11 | - Known Issues/Troubleshooting | ||
12 | - Support | ||
13 | |||
14 | This file describes the i40evf Linux* Base Driver for the Intel(R) XL710 | ||
15 | X710 Virtual Function. | ||
16 | |||
17 | The i40evf driver supports XL710 and X710 virtual function devices that | ||
18 | can only be activated on kernels with CONFIG_PCI_IOV enabled. | ||
19 | |||
20 | The guest OS loading the i40evf driver must support MSI-X interrupts. | ||
21 | |||
22 | Identifying Your Adapter | ||
23 | ======================== | ||
24 | |||
25 | For more information on how to identify your adapter, go to the Adapter & | ||
26 | Driver ID Guide at: | ||
27 | |||
28 | http://support.intel.com/support/go/network/adapter/idguide.htm | ||
29 | |||
30 | Known Issues/Troubleshooting | ||
31 | ============================ | ||
32 | |||
33 | |||
34 | Support | ||
35 | ======= | ||
36 | |||
37 | For general information, go to the Intel support website at: | ||
38 | |||
39 | http://support.intel.com | ||
40 | |||
41 | or the Intel Wired Networking project hosted by Sourceforge at: | ||
42 | |||
43 | http://sourceforge.net/projects/e1000 | ||
44 | |||
45 | If an issue is identified with the released source code on the supported | ||
46 | kernel with a supported adapter, email the specific information related | ||
47 | to the issue to e1000-devel@lists.sf.net | ||
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt index 8a984e994e61..ab42c95f9985 100644 --- a/Documentation/networking/ip-sysctl.txt +++ b/Documentation/networking/ip-sysctl.txt | |||
@@ -15,17 +15,47 @@ ip_default_ttl - INTEGER | |||
15 | forwarded) IP packets. Should be between 1 and 255 inclusive. | 15 | forwarded) IP packets. Should be between 1 and 255 inclusive. |
16 | Default: 64 (as recommended by RFC1700) | 16 | Default: 64 (as recommended by RFC1700) |
17 | 17 | ||
18 | ip_no_pmtu_disc - BOOLEAN | 18 | ip_no_pmtu_disc - INTEGER |
19 | Disable Path MTU Discovery. If enabled and a | 19 | Disable Path MTU Discovery. If enabled in mode 1 and a |
20 | fragmentation-required ICMP is received, the PMTU to this | 20 | fragmentation-required ICMP is received, the PMTU to this |
21 | destination will be set to min_pmtu (see below). You will need | 21 | destination will be set to min_pmtu (see below). You will need |
22 | to raise min_pmtu to the smallest interface MTU on your system | 22 | to raise min_pmtu to the smallest interface MTU on your system |
23 | manually if you want to avoid locally generated fragments. | 23 | manually if you want to avoid locally generated fragments. |
24 | |||
25 | In mode 2 incoming Path MTU Discovery messages will be | ||
26 | discarded. Outgoing frames are handled the same as in mode 1, | ||
27 | implicitly setting IP_PMTUDISC_DONT on every created socket. | ||
28 | |||
29 | Mode 3 is a hardend pmtu discover mode. The kernel will only | ||
30 | accept fragmentation-needed errors if the underlying protocol | ||
31 | can verify them besides a plain socket lookup. Current | ||
32 | protocols for which pmtu events will be honored are TCP, SCTP | ||
33 | and DCCP as they verify e.g. the sequence number or the | ||
34 | association. This mode should not be enabled globally but is | ||
35 | only intended to secure e.g. name servers in namespaces where | ||
36 | TCP path mtu must still work but path MTU information of other | ||
37 | protocols should be discarded. If enabled globally this mode | ||
38 | could break other protocols. | ||
39 | |||
40 | Possible values: 0-3 | ||
24 | Default: FALSE | 41 | Default: FALSE |
25 | 42 | ||
26 | min_pmtu - INTEGER | 43 | min_pmtu - INTEGER |
27 | default 552 - minimum discovered Path MTU | 44 | default 552 - minimum discovered Path MTU |
28 | 45 | ||
46 | ip_forward_use_pmtu - BOOLEAN | ||
47 | By default we don't trust protocol path MTUs while forwarding | ||
48 | because they could be easily forged and can lead to unwanted | ||
49 | fragmentation by the router. | ||
50 | You only need to enable this if you have user-space software | ||
51 | which tries to discover path mtus by itself and depends on the | ||
52 | kernel honoring this information. This is normally not the | ||
53 | case. | ||
54 | Default: 0 (disabled) | ||
55 | Possible values: | ||
56 | 0 - disabled | ||
57 | 1 - enabled | ||
58 | |||
29 | route/max_size - INTEGER | 59 | route/max_size - INTEGER |
30 | Maximum number of routes allowed in the kernel. Increase | 60 | Maximum number of routes allowed in the kernel. Increase |
31 | this when using large numbers of interfaces and/or routes. | 61 | this when using large numbers of interfaces and/or routes. |
@@ -160,6 +190,16 @@ tcp_app_win - INTEGER | |||
160 | buffer. Value 0 is special, it means that nothing is reserved. | 190 | buffer. Value 0 is special, it means that nothing is reserved. |
161 | Default: 31 | 191 | Default: 31 |
162 | 192 | ||
193 | tcp_autocorking - BOOLEAN | ||
194 | Enable TCP auto corking : | ||
195 | When applications do consecutive small write()/sendmsg() system calls, | ||
196 | we try to coalesce these small writes as much as possible, to lower | ||
197 | total amount of sent packets. This is done if at least one prior | ||
198 | packet for the flow is waiting in Qdisc queues or device transmit | ||
199 | queue. Applications can still use TCP_CORK for optimal behavior | ||
200 | when they know how/when to uncork their sockets. | ||
201 | Default : 1 | ||
202 | |||
163 | tcp_available_congestion_control - STRING | 203 | tcp_available_congestion_control - STRING |
164 | Shows the available congestion control choices that are registered. | 204 | Shows the available congestion control choices that are registered. |
165 | More congestion control algorithms may be available as modules, | 205 | More congestion control algorithms may be available as modules, |
@@ -1048,6 +1088,12 @@ igmpv3_unsolicited_report_interval - INTEGER | |||
1048 | IGMPv3 report retransmit will take place. | 1088 | IGMPv3 report retransmit will take place. |
1049 | Default: 1000 (1 seconds) | 1089 | Default: 1000 (1 seconds) |
1050 | 1090 | ||
1091 | promote_secondaries - BOOLEAN | ||
1092 | When a primary IP address is removed from this interface | ||
1093 | promote a corresponding secondary IP address instead of | ||
1094 | removing all the corresponding secondary IP addresses. | ||
1095 | |||
1096 | |||
1051 | tag - INTEGER | 1097 | tag - INTEGER |
1052 | Allows you to write a number, which can be used as required. | 1098 | Allows you to write a number, which can be used as required. |
1053 | Default value is 0. | 1099 | Default value is 0. |
@@ -1078,6 +1124,21 @@ bindv6only - BOOLEAN | |||
1078 | 1124 | ||
1079 | Default: FALSE (as specified in RFC3493) | 1125 | Default: FALSE (as specified in RFC3493) |
1080 | 1126 | ||
1127 | flowlabel_consistency - BOOLEAN | ||
1128 | Protect the consistency (and unicity) of flow label. | ||
1129 | You have to disable it to use IPV6_FL_F_REFLECT flag on the | ||
1130 | flow label manager. | ||
1131 | TRUE: enabled | ||
1132 | FALSE: disabled | ||
1133 | Default: TRUE | ||
1134 | |||
1135 | anycast_src_echo_reply - BOOLEAN | ||
1136 | Controls the use of anycast addresses as source addresses for ICMPv6 | ||
1137 | echo reply | ||
1138 | TRUE: enabled | ||
1139 | FALSE: disabled | ||
1140 | Default: FALSE | ||
1141 | |||
1081 | IPv6 Fragmentation: | 1142 | IPv6 Fragmentation: |
1082 | 1143 | ||
1083 | ip6frag_high_thresh - INTEGER | 1144 | ip6frag_high_thresh - INTEGER |
diff --git a/Documentation/networking/ipsec.txt b/Documentation/networking/ipsec.txt new file mode 100644 index 000000000000..8dbc08b7e431 --- /dev/null +++ b/Documentation/networking/ipsec.txt | |||
@@ -0,0 +1,38 @@ | |||
1 | |||
2 | Here documents known IPsec corner cases which need to be keep in mind when | ||
3 | deploy various IPsec configuration in real world production environment. | ||
4 | |||
5 | 1. IPcomp: Small IP packet won't get compressed at sender, and failed on | ||
6 | policy check on receiver. | ||
7 | |||
8 | Quote from RFC3173: | ||
9 | 2.2. Non-Expansion Policy | ||
10 | |||
11 | If the total size of a compressed payload and the IPComp header, as | ||
12 | defined in section 3, is not smaller than the size of the original | ||
13 | payload, the IP datagram MUST be sent in the original non-compressed | ||
14 | form. To clarify: If an IP datagram is sent non-compressed, no | ||
15 | |||
16 | IPComp header is added to the datagram. This policy ensures saving | ||
17 | the decompression processing cycles and avoiding incurring IP | ||
18 | datagram fragmentation when the expanded datagram is larger than the | ||
19 | MTU. | ||
20 | |||
21 | Small IP datagrams are likely to expand as a result of compression. | ||
22 | Therefore, a numeric threshold should be applied before compression, | ||
23 | where IP datagrams of size smaller than the threshold are sent in the | ||
24 | original form without attempting compression. The numeric threshold | ||
25 | is implementation dependent. | ||
26 | |||
27 | Current IPComp implementation is indeed by the book, while as in practice | ||
28 | when sending non-compressed packet to the peer(whether or not packet len | ||
29 | is smaller than the threshold or the compressed len is large than original | ||
30 | packet len), the packet is dropped when checking the policy as this packet | ||
31 | matches the selector but not coming from any XFRM layer, i.e., with no | ||
32 | security path. Such naked packet will not eventually make it to upper layer. | ||
33 | The result is much more wired to the user when ping peer with different | ||
34 | payload length. | ||
35 | |||
36 | One workaround is try to set "level use" for each policy if user observed | ||
37 | above scenario. The consequence of doing so is small packet(uncompressed) | ||
38 | will skip policy checking on receiver side. | ||
diff --git a/Documentation/networking/packet_mmap.txt b/Documentation/networking/packet_mmap.txt index 8e48e3b14227..1404674c0a02 100644 --- a/Documentation/networking/packet_mmap.txt +++ b/Documentation/networking/packet_mmap.txt | |||
@@ -98,6 +98,11 @@ by the kernel. | |||
98 | The destruction of the socket and all associated resources | 98 | The destruction of the socket and all associated resources |
99 | is done by a simple call to close(fd). | 99 | is done by a simple call to close(fd). |
100 | 100 | ||
101 | Similarly as without PACKET_MMAP, it is possible to use one socket | ||
102 | for capture and transmission. This can be done by mapping the | ||
103 | allocated RX and TX buffer ring with a single mmap() call. | ||
104 | See "Mapping and use of the circular buffer (ring)". | ||
105 | |||
101 | Next I will describe PACKET_MMAP settings and its constraints, | 106 | Next I will describe PACKET_MMAP settings and its constraints, |
102 | also the mapping of the circular buffer in the user process and | 107 | also the mapping of the circular buffer in the user process and |
103 | the use of this buffer. | 108 | the use of this buffer. |
@@ -414,6 +419,19 @@ tp_block_size/tp_frame_size frames there will be a gap between | |||
414 | the frames. This is because a frame cannot be spawn across two | 419 | the frames. This is because a frame cannot be spawn across two |
415 | blocks. | 420 | blocks. |
416 | 421 | ||
422 | To use one socket for capture and transmission, the mapping of both the | ||
423 | RX and TX buffer ring has to be done with one call to mmap: | ||
424 | |||
425 | ... | ||
426 | setsockopt(fd, SOL_PACKET, PACKET_RX_RING, &foo, sizeof(foo)); | ||
427 | setsockopt(fd, SOL_PACKET, PACKET_TX_RING, &bar, sizeof(bar)); | ||
428 | ... | ||
429 | rx_ring = mmap(0, size * 2, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); | ||
430 | tx_ring = rx_ring + size; | ||
431 | |||
432 | RX must be the first as the kernel maps the TX ring memory right | ||
433 | after the RX one. | ||
434 | |||
417 | At the beginning of each frame there is an status field (see | 435 | At the beginning of each frame there is an status field (see |
418 | struct tpacket_hdr). If this field is 0 means that the frame is ready | 436 | struct tpacket_hdr). If this field is 0 means that the frame is ready |
419 | to be used for the kernel, If not, there is a frame the user can read | 437 | to be used for the kernel, If not, there is a frame the user can read |
@@ -517,8 +535,6 @@ where 'tpacket_version' can be TPACKET_V1 (default), TPACKET_V2, TPACKET_V3. | |||
517 | TPACKET_V1: | 535 | TPACKET_V1: |
518 | - Default if not otherwise specified by setsockopt(2) | 536 | - Default if not otherwise specified by setsockopt(2) |
519 | - RX_RING, TX_RING available | 537 | - RX_RING, TX_RING available |
520 | - VLAN metadata information available for packets | ||
521 | (TP_STATUS_VLAN_VALID) | ||
522 | 538 | ||
523 | TPACKET_V1 --> TPACKET_V2: | 539 | TPACKET_V1 --> TPACKET_V2: |
524 | - Made 64 bit clean due to unsigned long usage in TPACKET_V1 | 540 | - Made 64 bit clean due to unsigned long usage in TPACKET_V1 |
@@ -526,6 +542,13 @@ TPACKET_V1 --> TPACKET_V2: | |||
526 | userspace and the like | 542 | userspace and the like |
527 | - Timestamp resolution in nanoseconds instead of microseconds | 543 | - Timestamp resolution in nanoseconds instead of microseconds |
528 | - RX_RING, TX_RING available | 544 | - RX_RING, TX_RING available |
545 | - VLAN metadata information available for packets | ||
546 | (TP_STATUS_VLAN_VALID, TP_STATUS_VLAN_TPID_VALID), | ||
547 | in the tpacket2_hdr structure: | ||
548 | - TP_STATUS_VLAN_VALID bit being set into the tp_status field indicates | ||
549 | that the tp_vlan_tci field has valid VLAN TCI value | ||
550 | - TP_STATUS_VLAN_TPID_VALID bit being set into the tp_status field | ||
551 | indicates that the tp_vlan_tpid field has valid VLAN TPID value | ||
529 | - How to switch to TPACKET_V2: | 552 | - How to switch to TPACKET_V2: |
530 | 1. Replace struct tpacket_hdr by struct tpacket2_hdr | 553 | 1. Replace struct tpacket_hdr by struct tpacket2_hdr |
531 | 2. Query header len and save | 554 | 2. Query header len and save |
@@ -560,6 +583,7 @@ Currently implemented fanout policies are: | |||
560 | - PACKET_FANOUT_CPU: schedule to socket by CPU packet arrives on | 583 | - PACKET_FANOUT_CPU: schedule to socket by CPU packet arrives on |
561 | - PACKET_FANOUT_RND: schedule to socket by random selection | 584 | - PACKET_FANOUT_RND: schedule to socket by random selection |
562 | - PACKET_FANOUT_ROLLOVER: if one socket is full, rollover to another | 585 | - PACKET_FANOUT_ROLLOVER: if one socket is full, rollover to another |
586 | - PACKET_FANOUT_QM: schedule to socket by skbs recorded queue_mapping | ||
563 | 587 | ||
564 | Minimal example code by David S. Miller (try things like "./test eth0 hash", | 588 | Minimal example code by David S. Miller (try things like "./test eth0 hash", |
565 | "./test eth0 lb", etc.): | 589 | "./test eth0 lb", etc.): |
@@ -953,6 +977,27 @@ int main(int argc, char **argp) | |||
953 | } | 977 | } |
954 | 978 | ||
955 | ------------------------------------------------------------------------------- | 979 | ------------------------------------------------------------------------------- |
980 | + PACKET_QDISC_BYPASS | ||
981 | ------------------------------------------------------------------------------- | ||
982 | |||
983 | If there is a requirement to load the network with many packets in a similar | ||
984 | fashion as pktgen does, you might set the following option after socket | ||
985 | creation: | ||
986 | |||
987 | int one = 1; | ||
988 | setsockopt(fd, SOL_PACKET, PACKET_QDISC_BYPASS, &one, sizeof(one)); | ||
989 | |||
990 | This has the side-effect, that packets sent through PF_PACKET will bypass the | ||
991 | kernel's qdisc layer and are forcedly pushed to the driver directly. Meaning, | ||
992 | packet are not buffered, tc disciplines are ignored, increased loss can occur | ||
993 | and such packets are also not visible to other PF_PACKET sockets anymore. So, | ||
994 | you have been warned; generally, this can be useful for stress testing various | ||
995 | components of a system. | ||
996 | |||
997 | On default, PACKET_QDISC_BYPASS is disabled and needs to be explicitly enabled | ||
998 | on PF_PACKET sockets. | ||
999 | |||
1000 | ------------------------------------------------------------------------------- | ||
956 | + PACKET_TIMESTAMP | 1001 | + PACKET_TIMESTAMP |
957 | ------------------------------------------------------------------------------- | 1002 | ------------------------------------------------------------------------------- |
958 | 1003 | ||
diff --git a/Documentation/networking/phy.txt b/Documentation/networking/phy.txt index d5b1a3935245..ebf270719402 100644 --- a/Documentation/networking/phy.txt +++ b/Documentation/networking/phy.txt | |||
@@ -255,7 +255,8 @@ Writing a PHY driver | |||
255 | 255 | ||
256 | config_init: configures PHY into a sane state after a reset. | 256 | config_init: configures PHY into a sane state after a reset. |
257 | For instance, a Davicom PHY requires descrambling disabled. | 257 | For instance, a Davicom PHY requires descrambling disabled. |
258 | probe: Does any setup needed by the driver | 258 | probe: Allocate phy->priv, optionally refuse to bind. |
259 | PHY may not have been reset or had fixups run yet. | ||
259 | suspend/resume: power management | 260 | suspend/resume: power management |
260 | config_aneg: Changes the speed/duplex/negotiation settings | 261 | config_aneg: Changes the speed/duplex/negotiation settings |
261 | read_status: Reads the current speed/duplex/negotiation settings | 262 | read_status: Reads the current speed/duplex/negotiation settings |
diff --git a/Documentation/networking/pktgen.txt b/Documentation/networking/pktgen.txt index 75e4fd708ccb..5a61a240a652 100644 --- a/Documentation/networking/pktgen.txt +++ b/Documentation/networking/pktgen.txt | |||
@@ -108,7 +108,9 @@ Examples: | |||
108 | MPLS_RND, VID_RND, SVID_RND | 108 | MPLS_RND, VID_RND, SVID_RND |
109 | QUEUE_MAP_RND # queue map random | 109 | QUEUE_MAP_RND # queue map random |
110 | QUEUE_MAP_CPU # queue map mirrors smp_processor_id() | 110 | QUEUE_MAP_CPU # queue map mirrors smp_processor_id() |
111 | IPSEC # Make IPsec encapsulation for packet | ||
111 | 112 | ||
113 | pgset spi SPI_VALUE Set specific SA used to transform packet. | ||
112 | 114 | ||
113 | pgset "udp_src_min 9" set UDP source port min, If < udp_src_max, then | 115 | pgset "udp_src_min 9" set UDP source port min, If < udp_src_max, then |
114 | cycle through the port range. | 116 | cycle through the port range. |
@@ -177,6 +179,18 @@ Note when adding devices to a specific CPU there good idea to also assign | |||
177 | /proc/irq/XX/smp_affinity so the TX-interrupts gets bound to the same CPU. | 179 | /proc/irq/XX/smp_affinity so the TX-interrupts gets bound to the same CPU. |
178 | as this reduces cache bouncing when freeing skb's. | 180 | as this reduces cache bouncing when freeing skb's. |
179 | 181 | ||
182 | Enable IPsec | ||
183 | ============ | ||
184 | Default IPsec transformation with ESP encapsulation plus Transport mode | ||
185 | could be enabled by simply setting: | ||
186 | |||
187 | pgset "flag IPSEC" | ||
188 | pgset "flows 1" | ||
189 | |||
190 | To avoid breaking existing testbed scripts for using AH type and tunnel mode, | ||
191 | user could use "pgset spi SPI_VALUE" to specify which formal of transformation | ||
192 | to employ. | ||
193 | |||
180 | 194 | ||
181 | Current commands and configuration options | 195 | Current commands and configuration options |
182 | ========================================== | 196 | ========================================== |
@@ -225,6 +239,7 @@ flag | |||
225 | UDPDST_RND | 239 | UDPDST_RND |
226 | MACSRC_RND | 240 | MACSRC_RND |
227 | MACDST_RND | 241 | MACDST_RND |
242 | IPSEC | ||
228 | 243 | ||
229 | dst_min | 244 | dst_min |
230 | dst_max | 245 | dst_max |
diff --git a/Documentation/networking/regulatory.txt b/Documentation/networking/regulatory.txt index 9551622d0a7b..356f791af574 100644 --- a/Documentation/networking/regulatory.txt +++ b/Documentation/networking/regulatory.txt | |||
@@ -159,10 +159,10 @@ struct ieee80211_regdomain mydriver_jp_regdom = { | |||
159 | REG_RULE(2412-20, 2484+20, 40, 6, 20, 0), | 159 | REG_RULE(2412-20, 2484+20, 40, 6, 20, 0), |
160 | /* IEEE 802.11a, channels 34..48 */ | 160 | /* IEEE 802.11a, channels 34..48 */ |
161 | REG_RULE(5170-20, 5240+20, 40, 6, 20, | 161 | REG_RULE(5170-20, 5240+20, 40, 6, 20, |
162 | NL80211_RRF_PASSIVE_SCAN), | 162 | NL80211_RRF_NO_IR), |
163 | /* IEEE 802.11a, channels 52..64 */ | 163 | /* IEEE 802.11a, channels 52..64 */ |
164 | REG_RULE(5260-20, 5320+20, 40, 6, 20, | 164 | REG_RULE(5260-20, 5320+20, 40, 6, 20, |
165 | NL80211_RRF_NO_IBSS | | 165 | NL80211_RRF_NO_IR| |
166 | NL80211_RRF_DFS), | 166 | NL80211_RRF_DFS), |
167 | } | 167 | } |
168 | }; | 168 | }; |
diff --git a/Documentation/networking/stmmac.txt b/Documentation/networking/stmmac.txt index cdd916da838d..2090895b08d4 100644 --- a/Documentation/networking/stmmac.txt +++ b/Documentation/networking/stmmac.txt | |||
@@ -127,8 +127,9 @@ struct plat_stmmacenet_data { | |||
127 | int riwt_off; | 127 | int riwt_off; |
128 | void (*fix_mac_speed)(void *priv, unsigned int speed); | 128 | void (*fix_mac_speed)(void *priv, unsigned int speed); |
129 | void (*bus_setup)(void __iomem *ioaddr); | 129 | void (*bus_setup)(void __iomem *ioaddr); |
130 | int (*init)(struct platform_device *pdev); | 130 | void *(*setup)(struct platform_device *pdev); |
131 | void (*exit)(struct platform_device *pdev); | 131 | int (*init)(struct platform_device *pdev, void *priv); |
132 | void (*exit)(struct platform_device *pdev, void *priv); | ||
132 | void *custom_cfg; | 133 | void *custom_cfg; |
133 | void *custom_data; | 134 | void *custom_data; |
134 | void *bsp_priv; | 135 | void *bsp_priv; |
@@ -169,10 +170,13 @@ Where: | |||
169 | o bus_setup: perform HW setup of the bus. For example, on some ST platforms | 170 | o bus_setup: perform HW setup of the bus. For example, on some ST platforms |
170 | this field is used to configure the AMBA bridge to generate more | 171 | this field is used to configure the AMBA bridge to generate more |
171 | efficient STBus traffic. | 172 | efficient STBus traffic. |
172 | o init/exit: callbacks used for calling a custom initialization; | 173 | o setup/init/exit: callbacks used for calling a custom initialization; |
173 | this is sometime necessary on some platforms (e.g. ST boxes) | 174 | this is sometime necessary on some platforms (e.g. ST boxes) |
174 | where the HW needs to have set some PIO lines or system cfg | 175 | where the HW needs to have set some PIO lines or system cfg |
175 | registers. | 176 | registers. setup should return a pointer to private data, |
177 | which will be stored in bsp_priv, and then passed to init and | ||
178 | exit callbacks. init/exit callbacks should not use or modify | ||
179 | platform data. | ||
176 | o custom_cfg/custom_data: this is a custom configuration that can be passed | 180 | o custom_cfg/custom_data: this is a custom configuration that can be passed |
177 | while initializing the resources. | 181 | while initializing the resources. |
178 | o bsp_priv: another private pointer. | 182 | o bsp_priv: another private pointer. |
diff --git a/Documentation/networking/timestamping.txt b/Documentation/networking/timestamping.txt index 98097d8cb910..661d3c316a17 100644 --- a/Documentation/networking/timestamping.txt +++ b/Documentation/networking/timestamping.txt | |||
@@ -85,7 +85,7 @@ Filled in if SOF_TIMESTAMPING_SYS_HARDWARE is set. Requires support | |||
85 | by the network device and will be empty without that support. | 85 | by the network device and will be empty without that support. |
86 | 86 | ||
87 | 87 | ||
88 | SIOCSHWTSTAMP: | 88 | SIOCSHWTSTAMP, SIOCGHWTSTAMP: |
89 | 89 | ||
90 | Hardware time stamping must also be initialized for each device driver | 90 | Hardware time stamping must also be initialized for each device driver |
91 | that is expected to do hardware time stamping. The parameter is defined in | 91 | that is expected to do hardware time stamping. The parameter is defined in |
@@ -115,6 +115,10 @@ Only a processes with admin rights may change the configuration. User | |||
115 | space is responsible to ensure that multiple processes don't interfere | 115 | space is responsible to ensure that multiple processes don't interfere |
116 | with each other and that the settings are reset. | 116 | with each other and that the settings are reset. |
117 | 117 | ||
118 | Any process can read the actual configuration by passing this | ||
119 | structure to ioctl(SIOCGHWTSTAMP) in the same way. However, this has | ||
120 | not been implemented in all drivers. | ||
121 | |||
118 | /* possible values for hwtstamp_config->tx_type */ | 122 | /* possible values for hwtstamp_config->tx_type */ |
119 | enum { | 123 | enum { |
120 | /* | 124 | /* |
@@ -157,7 +161,8 @@ DEVICE IMPLEMENTATION | |||
157 | 161 | ||
158 | A driver which supports hardware time stamping must support the | 162 | A driver which supports hardware time stamping must support the |
159 | SIOCSHWTSTAMP ioctl and update the supplied struct hwtstamp_config with | 163 | SIOCSHWTSTAMP ioctl and update the supplied struct hwtstamp_config with |
160 | the actual values as described in the section on SIOCSHWTSTAMP. | 164 | the actual values as described in the section on SIOCSHWTSTAMP. It |
165 | should also support SIOCGHWTSTAMP. | ||
161 | 166 | ||
162 | Time stamps for received packets must be stored in the skb. To get a pointer | 167 | Time stamps for received packets must be stored in the skb. To get a pointer |
163 | to the shared time stamp structure of the skb call skb_hwtstamps(). Then | 168 | to the shared time stamp structure of the skb call skb_hwtstamps(). Then |
diff --git a/Documentation/networking/timestamping/.gitignore b/Documentation/networking/timestamping/.gitignore index 71e81eb2e22f..a380159765ce 100644 --- a/Documentation/networking/timestamping/.gitignore +++ b/Documentation/networking/timestamping/.gitignore | |||
@@ -1 +1,2 @@ | |||
1 | timestamping | 1 | timestamping |
2 | hwtstamp_config | ||
diff --git a/Documentation/networking/timestamping/Makefile b/Documentation/networking/timestamping/Makefile index e79973443e9f..d934afc8306a 100644 --- a/Documentation/networking/timestamping/Makefile +++ b/Documentation/networking/timestamping/Makefile | |||
@@ -2,12 +2,13 @@ | |||
2 | obj- := dummy.o | 2 | obj- := dummy.o |
3 | 3 | ||
4 | # List of programs to build | 4 | # List of programs to build |
5 | hostprogs-y := timestamping | 5 | hostprogs-y := timestamping hwtstamp_config |
6 | 6 | ||
7 | # Tell kbuild to always build the programs | 7 | # Tell kbuild to always build the programs |
8 | always := $(hostprogs-y) | 8 | always := $(hostprogs-y) |
9 | 9 | ||
10 | HOSTCFLAGS_timestamping.o += -I$(objtree)/usr/include | 10 | HOSTCFLAGS_timestamping.o += -I$(objtree)/usr/include |
11 | HOSTCFLAGS_hwtstamp_config.o += -I$(objtree)/usr/include | ||
11 | 12 | ||
12 | clean: | 13 | clean: |
13 | rm -f timestamping | 14 | rm -f timestamping hwtstamp_config |
diff --git a/Documentation/networking/timestamping/hwtstamp_config.c b/Documentation/networking/timestamping/hwtstamp_config.c new file mode 100644 index 000000000000..e8b685a7f15f --- /dev/null +++ b/Documentation/networking/timestamping/hwtstamp_config.c | |||
@@ -0,0 +1,134 @@ | |||
1 | /* Test program for SIOC{G,S}HWTSTAMP | ||
2 | * Copyright 2013 Solarflare Communications | ||
3 | * Author: Ben Hutchings | ||
4 | */ | ||
5 | |||
6 | #include <errno.h> | ||
7 | #include <stdio.h> | ||
8 | #include <stdlib.h> | ||
9 | #include <string.h> | ||
10 | |||
11 | #include <sys/socket.h> | ||
12 | #include <sys/ioctl.h> | ||
13 | |||
14 | #include <linux/if.h> | ||
15 | #include <linux/net_tstamp.h> | ||
16 | #include <linux/sockios.h> | ||
17 | |||
18 | static int | ||
19 | lookup_value(const char **names, int size, const char *name) | ||
20 | { | ||
21 | int value; | ||
22 | |||
23 | for (value = 0; value < size; value++) | ||
24 | if (names[value] && strcasecmp(names[value], name) == 0) | ||
25 | return value; | ||
26 | |||
27 | return -1; | ||
28 | } | ||
29 | |||
30 | static const char * | ||
31 | lookup_name(const char **names, int size, int value) | ||
32 | { | ||
33 | return (value >= 0 && value < size) ? names[value] : NULL; | ||
34 | } | ||
35 | |||
36 | static void list_names(FILE *f, const char **names, int size) | ||
37 | { | ||
38 | int value; | ||
39 | |||
40 | for (value = 0; value < size; value++) | ||
41 | if (names[value]) | ||
42 | fprintf(f, " %s\n", names[value]); | ||
43 | } | ||
44 | |||
45 | static const char *tx_types[] = { | ||
46 | #define TX_TYPE(name) [HWTSTAMP_TX_ ## name] = #name | ||
47 | TX_TYPE(OFF), | ||
48 | TX_TYPE(ON), | ||
49 | TX_TYPE(ONESTEP_SYNC) | ||
50 | #undef TX_TYPE | ||
51 | }; | ||
52 | #define N_TX_TYPES ((int)(sizeof(tx_types) / sizeof(tx_types[0]))) | ||
53 | |||
54 | static const char *rx_filters[] = { | ||
55 | #define RX_FILTER(name) [HWTSTAMP_FILTER_ ## name] = #name | ||
56 | RX_FILTER(NONE), | ||
57 | RX_FILTER(ALL), | ||
58 | RX_FILTER(SOME), | ||
59 | RX_FILTER(PTP_V1_L4_EVENT), | ||
60 | RX_FILTER(PTP_V1_L4_SYNC), | ||
61 | RX_FILTER(PTP_V1_L4_DELAY_REQ), | ||
62 | RX_FILTER(PTP_V2_L4_EVENT), | ||
63 | RX_FILTER(PTP_V2_L4_SYNC), | ||
64 | RX_FILTER(PTP_V2_L4_DELAY_REQ), | ||
65 | RX_FILTER(PTP_V2_L2_EVENT), | ||
66 | RX_FILTER(PTP_V2_L2_SYNC), | ||
67 | RX_FILTER(PTP_V2_L2_DELAY_REQ), | ||
68 | RX_FILTER(PTP_V2_EVENT), | ||
69 | RX_FILTER(PTP_V2_SYNC), | ||
70 | RX_FILTER(PTP_V2_DELAY_REQ), | ||
71 | #undef RX_FILTER | ||
72 | }; | ||
73 | #define N_RX_FILTERS ((int)(sizeof(rx_filters) / sizeof(rx_filters[0]))) | ||
74 | |||
75 | static void usage(void) | ||
76 | { | ||
77 | fputs("Usage: hwtstamp_config if_name [tx_type rx_filter]\n" | ||
78 | "tx_type is any of (case-insensitive):\n", | ||
79 | stderr); | ||
80 | list_names(stderr, tx_types, N_TX_TYPES); | ||
81 | fputs("rx_filter is any of (case-insensitive):\n", stderr); | ||
82 | list_names(stderr, rx_filters, N_RX_FILTERS); | ||
83 | } | ||
84 | |||
85 | int main(int argc, char **argv) | ||
86 | { | ||
87 | struct ifreq ifr; | ||
88 | struct hwtstamp_config config; | ||
89 | const char *name; | ||
90 | int sock; | ||
91 | |||
92 | if ((argc != 2 && argc != 4) || (strlen(argv[1]) >= IFNAMSIZ)) { | ||
93 | usage(); | ||
94 | return 2; | ||
95 | } | ||
96 | |||
97 | if (argc == 4) { | ||
98 | config.flags = 0; | ||
99 | config.tx_type = lookup_value(tx_types, N_TX_TYPES, argv[2]); | ||
100 | config.rx_filter = lookup_value(rx_filters, N_RX_FILTERS, argv[3]); | ||
101 | if (config.tx_type < 0 || config.rx_filter < 0) { | ||
102 | usage(); | ||
103 | return 2; | ||
104 | } | ||
105 | } | ||
106 | |||
107 | sock = socket(AF_INET, SOCK_DGRAM, 0); | ||
108 | if (sock < 0) { | ||
109 | perror("socket"); | ||
110 | return 1; | ||
111 | } | ||
112 | |||
113 | strcpy(ifr.ifr_name, argv[1]); | ||
114 | ifr.ifr_data = (caddr_t)&config; | ||
115 | |||
116 | if (ioctl(sock, (argc == 2) ? SIOCGHWTSTAMP : SIOCSHWTSTAMP, &ifr)) { | ||
117 | perror("ioctl"); | ||
118 | return 1; | ||
119 | } | ||
120 | |||
121 | printf("flags = %#x\n", config.flags); | ||
122 | name = lookup_name(tx_types, N_TX_TYPES, config.tx_type); | ||
123 | if (name) | ||
124 | printf("tx_type = %s\n", name); | ||
125 | else | ||
126 | printf("tx_type = %d\n", config.tx_type); | ||
127 | name = lookup_name(rx_filters, N_RX_FILTERS, config.rx_filter); | ||
128 | if (name) | ||
129 | printf("rx_filter = %s\n", name); | ||
130 | else | ||
131 | printf("rx_filter = %d\n", config.rx_filter); | ||
132 | |||
133 | return 0; | ||
134 | } | ||
diff --git a/Documentation/pinctrl.txt b/Documentation/pinctrl.txt index a7929cb47e7c..23f1590f49fe 100644 --- a/Documentation/pinctrl.txt +++ b/Documentation/pinctrl.txt | |||
@@ -18,7 +18,7 @@ Definition of PIN CONTROLLER: | |||
18 | 18 | ||
19 | - A pin controller is a piece of hardware, usually a set of registers, that | 19 | - A pin controller is a piece of hardware, usually a set of registers, that |
20 | can control PINs. It may be able to multiplex, bias, set load capacitance, | 20 | can control PINs. It may be able to multiplex, bias, set load capacitance, |
21 | set drive strength etc for individual pins or groups of pins. | 21 | set drive strength, etc. for individual pins or groups of pins. |
22 | 22 | ||
23 | Definition of PIN: | 23 | Definition of PIN: |
24 | 24 | ||
@@ -90,7 +90,7 @@ selected drivers, you need to select them from your machine's Kconfig entry, | |||
90 | since these are so tightly integrated with the machines they are used on. | 90 | since these are so tightly integrated with the machines they are used on. |
91 | See for example arch/arm/mach-u300/Kconfig for an example. | 91 | See for example arch/arm/mach-u300/Kconfig for an example. |
92 | 92 | ||
93 | Pins usually have fancier names than this. You can find these in the dataheet | 93 | Pins usually have fancier names than this. You can find these in the datasheet |
94 | for your chip. Notice that the core pinctrl.h file provides a fancy macro | 94 | for your chip. Notice that the core pinctrl.h file provides a fancy macro |
95 | called PINCTRL_PIN() to create the struct entries. As you can see I enumerated | 95 | called PINCTRL_PIN() to create the struct entries. As you can see I enumerated |
96 | the pins from 0 in the upper left corner to 63 in the lower right corner. | 96 | the pins from 0 in the upper left corner to 63 in the lower right corner. |
@@ -185,7 +185,7 @@ static struct pinctrl_desc foo_desc = { | |||
185 | }; | 185 | }; |
186 | 186 | ||
187 | The pin control subsystem will call the .get_groups_count() function to | 187 | The pin control subsystem will call the .get_groups_count() function to |
188 | determine total number of legal selectors, then it will call the other functions | 188 | determine the total number of legal selectors, then it will call the other functions |
189 | to retrieve the name and pins of the group. Maintaining the data structure of | 189 | to retrieve the name and pins of the group. Maintaining the data structure of |
190 | the groups is up to the driver, this is just a simple example - in practice you | 190 | the groups is up to the driver, this is just a simple example - in practice you |
191 | may need more entries in your group structure, for example specific register | 191 | may need more entries in your group structure, for example specific register |
@@ -195,7 +195,7 @@ ranges associated with each group and so on. | |||
195 | Pin configuration | 195 | Pin configuration |
196 | ================= | 196 | ================= |
197 | 197 | ||
198 | Pins can sometimes be software-configured in an various ways, mostly related | 198 | Pins can sometimes be software-configured in various ways, mostly related |
199 | to their electronic properties when used as inputs or outputs. For example you | 199 | to their electronic properties when used as inputs or outputs. For example you |
200 | may be able to make an output pin high impedance, or "tristate" meaning it is | 200 | may be able to make an output pin high impedance, or "tristate" meaning it is |
201 | effectively disconnected. You may be able to connect an input pin to VDD or GND | 201 | effectively disconnected. You may be able to connect an input pin to VDD or GND |
@@ -291,7 +291,7 @@ Since the pin controller subsystem have its pinspace local to the pin | |||
291 | controller we need a mapping so that the pin control subsystem can figure out | 291 | controller we need a mapping so that the pin control subsystem can figure out |
292 | which pin controller handles control of a certain GPIO pin. Since a single | 292 | which pin controller handles control of a certain GPIO pin. Since a single |
293 | pin controller may be muxing several GPIO ranges (typically SoCs that have | 293 | pin controller may be muxing several GPIO ranges (typically SoCs that have |
294 | one set of pins but internally several GPIO silicon blocks, each modelled as | 294 | one set of pins, but internally several GPIO silicon blocks, each modelled as |
295 | a struct gpio_chip) any number of GPIO ranges can be added to a pin controller | 295 | a struct gpio_chip) any number of GPIO ranges can be added to a pin controller |
296 | instance like this: | 296 | instance like this: |
297 | 297 | ||
@@ -373,9 +373,9 @@ will be called on that specific pin controller. | |||
373 | 373 | ||
374 | For all functionalities dealing with pin biasing, pin muxing etc, the pin | 374 | For all functionalities dealing with pin biasing, pin muxing etc, the pin |
375 | controller subsystem will look up the corresponding pin number from the passed | 375 | controller subsystem will look up the corresponding pin number from the passed |
376 | in gpio number, and use the range's internals to retrive a pin number. After | 376 | in gpio number, and use the range's internals to retrieve a pin number. After |
377 | that, the subsystem passes it on to the pin control driver, so the driver | 377 | that, the subsystem passes it on to the pin control driver, so the driver |
378 | will get an pin number into its handled number range. Further it is also passed | 378 | will get a pin number into its handled number range. Further it is also passed |
379 | the range ID value, so that the pin controller knows which range it should | 379 | the range ID value, so that the pin controller knows which range it should |
380 | deal with. | 380 | deal with. |
381 | 381 | ||
@@ -430,8 +430,8 @@ pins you see some will be taken by things like a few VCC and GND to feed power | |||
430 | to the chip, and quite a few will be taken by large ports like an external | 430 | to the chip, and quite a few will be taken by large ports like an external |
431 | memory interface. The remaining pins will often be subject to pin multiplexing. | 431 | memory interface. The remaining pins will often be subject to pin multiplexing. |
432 | 432 | ||
433 | The example 8x8 PGA package above will have pin numbers 0 thru 63 assigned to | 433 | The example 8x8 PGA package above will have pin numbers 0 through 63 assigned |
434 | its physical pins. It will name the pins { A1, A2, A3 ... H6, H7, H8 } using | 434 | to its physical pins. It will name the pins { A1, A2, A3 ... H6, H7, H8 } using |
435 | pinctrl_register_pins() and a suitable data set as shown earlier. | 435 | pinctrl_register_pins() and a suitable data set as shown earlier. |
436 | 436 | ||
437 | In this 8x8 BGA package the pins { A8, A7, A6, A5 } can be used as an SPI port | 437 | In this 8x8 BGA package the pins { A8, A7, A6, A5 } can be used as an SPI port |
@@ -442,7 +442,7 @@ we cannot use the SPI port and I2C port at the same time. However in the inside | |||
442 | of the package the silicon performing the SPI logic can alternatively be routed | 442 | of the package the silicon performing the SPI logic can alternatively be routed |
443 | out on pins { G4, G3, G2, G1 }. | 443 | out on pins { G4, G3, G2, G1 }. |
444 | 444 | ||
445 | On the botton row at { A1, B1, C1, D1, E1, F1, G1, H1 } we have something | 445 | On the bottom row at { A1, B1, C1, D1, E1, F1, G1, H1 } we have something |
446 | special - it's an external MMC bus that can be 2, 4 or 8 bits wide, and it will | 446 | special - it's an external MMC bus that can be 2, 4 or 8 bits wide, and it will |
447 | consume 2, 4 or 8 pins respectively, so either { A1, B1 } are taken or | 447 | consume 2, 4 or 8 pins respectively, so either { A1, B1 } are taken or |
448 | { A1, B1, C1, D1 } or all of them. If we use all 8 bits, we cannot use the SPI | 448 | { A1, B1, C1, D1 } or all of them. If we use all 8 bits, we cannot use the SPI |
@@ -549,7 +549,7 @@ Assumptions: | |||
549 | 549 | ||
550 | We assume that the number of possible function maps to pin groups is limited by | 550 | We assume that the number of possible function maps to pin groups is limited by |
551 | the hardware. I.e. we assume that there is no system where any function can be | 551 | the hardware. I.e. we assume that there is no system where any function can be |
552 | mapped to any pin, like in a phone exchange. So the available pins groups for | 552 | mapped to any pin, like in a phone exchange. So the available pin groups for |
553 | a certain function will be limited to a few choices (say up to eight or so), | 553 | a certain function will be limited to a few choices (say up to eight or so), |
554 | not hundreds or any amount of choices. This is the characteristic we have found | 554 | not hundreds or any amount of choices. This is the characteristic we have found |
555 | by inspecting available pinmux hardware, and a necessary assumption since we | 555 | by inspecting available pinmux hardware, and a necessary assumption since we |
@@ -564,7 +564,7 @@ The pinmux core takes care of preventing conflicts on pins and calling | |||
564 | the pin controller driver to execute different settings. | 564 | the pin controller driver to execute different settings. |
565 | 565 | ||
566 | It is the responsibility of the pinmux driver to impose further restrictions | 566 | It is the responsibility of the pinmux driver to impose further restrictions |
567 | (say for example infer electronic limitations due to load etc) to determine | 567 | (say for example infer electronic limitations due to load, etc.) to determine |
568 | whether or not the requested function can actually be allowed, and in case it | 568 | whether or not the requested function can actually be allowed, and in case it |
569 | is possible to perform the requested mux setting, poke the hardware so that | 569 | is possible to perform the requested mux setting, poke the hardware so that |
570 | this happens. | 570 | this happens. |
@@ -755,7 +755,7 @@ Pin control interaction with the GPIO subsystem | |||
755 | Note that the following implies that the use case is to use a certain pin | 755 | Note that the following implies that the use case is to use a certain pin |
756 | from the Linux kernel using the API in <linux/gpio.h> with gpio_request() | 756 | from the Linux kernel using the API in <linux/gpio.h> with gpio_request() |
757 | and similar functions. There are cases where you may be using something | 757 | and similar functions. There are cases where you may be using something |
758 | that your datasheet calls "GPIO mode" but actually is just an electrical | 758 | that your datasheet calls "GPIO mode", but actually is just an electrical |
759 | configuration for a certain device. See the section below named | 759 | configuration for a certain device. See the section below named |
760 | "GPIO mode pitfalls" for more details on this scenario. | 760 | "GPIO mode pitfalls" for more details on this scenario. |
761 | 761 | ||
@@ -871,7 +871,7 @@ hardware and shall be put into different subsystems: | |||
871 | 871 | ||
872 | - Registers (or fields within registers) that control muxing of signals | 872 | - Registers (or fields within registers) that control muxing of signals |
873 | from various other HW blocks (e.g. I2C, MMC, or GPIO) onto pins should | 873 | from various other HW blocks (e.g. I2C, MMC, or GPIO) onto pins should |
874 | be exposed through the pinctrl subssytem, as mux functions. | 874 | be exposed through the pinctrl subsystem, as mux functions. |
875 | 875 | ||
876 | - Registers (or fields within registers) that control GPIO functionality | 876 | - Registers (or fields within registers) that control GPIO functionality |
877 | such as setting a GPIO's output value, reading a GPIO's input value, or | 877 | such as setting a GPIO's output value, reading a GPIO's input value, or |
@@ -895,7 +895,7 @@ Example: a pin is usually muxed in to be used as a UART TX line. But during | |||
895 | system sleep, we need to put this pin into "GPIO mode" and ground it. | 895 | system sleep, we need to put this pin into "GPIO mode" and ground it. |
896 | 896 | ||
897 | If you make a 1-to-1 map to the GPIO subsystem for this pin, you may start | 897 | If you make a 1-to-1 map to the GPIO subsystem for this pin, you may start |
898 | to think that you need to come up with something real complex, that the | 898 | to think that you need to come up with something really complex, that the |
899 | pin shall be used for UART TX and GPIO at the same time, that you will grab | 899 | pin shall be used for UART TX and GPIO at the same time, that you will grab |
900 | a pin control handle and set it to a certain state to enable UART TX to be | 900 | a pin control handle and set it to a certain state to enable UART TX to be |
901 | muxed in, then twist it over to GPIO mode and use gpio_direction_output() | 901 | muxed in, then twist it over to GPIO mode and use gpio_direction_output() |
@@ -964,12 +964,12 @@ GPIO mode. | |||
964 | This will give the desired effect without any bogus interaction with the | 964 | This will give the desired effect without any bogus interaction with the |
965 | GPIO subsystem. It is just an electrical configuration used by that device | 965 | GPIO subsystem. It is just an electrical configuration used by that device |
966 | when going to sleep, it might imply that the pin is set into something the | 966 | when going to sleep, it might imply that the pin is set into something the |
967 | datasheet calls "GPIO mode" but that is not the point: it is still used | 967 | datasheet calls "GPIO mode", but that is not the point: it is still used |
968 | by that UART device to control the pins that pertain to that very UART | 968 | by that UART device to control the pins that pertain to that very UART |
969 | driver, putting them into modes needed by the UART. GPIO in the Linux | 969 | driver, putting them into modes needed by the UART. GPIO in the Linux |
970 | kernel sense are just some 1-bit line, and is a different use case. | 970 | kernel sense are just some 1-bit line, and is a different use case. |
971 | 971 | ||
972 | How the registers are poked to attain the push/pull and output low | 972 | How the registers are poked to attain the push or pull, and output low |
973 | configuration and the muxing of the "u0" or "gpio-mode" group onto these | 973 | configuration and the muxing of the "u0" or "gpio-mode" group onto these |
974 | pins is a question for the driver. | 974 | pins is a question for the driver. |
975 | 975 | ||
@@ -977,7 +977,7 @@ Some datasheets will be more helpful and refer to the "GPIO mode" as | |||
977 | "low power mode" rather than anything to do with GPIO. This often means | 977 | "low power mode" rather than anything to do with GPIO. This often means |
978 | the same thing electrically speaking, but in this latter case the | 978 | the same thing electrically speaking, but in this latter case the |
979 | software engineers will usually quickly identify that this is some | 979 | software engineers will usually quickly identify that this is some |
980 | specific muxing/configuration rather than anything related to the GPIO | 980 | specific muxing or configuration rather than anything related to the GPIO |
981 | API. | 981 | API. |
982 | 982 | ||
983 | 983 | ||
@@ -1024,8 +1024,7 @@ up the device struct (just like with clockdev or regulators). The function name | |||
1024 | must match a function provided by the pinmux driver handling this pin range. | 1024 | must match a function provided by the pinmux driver handling this pin range. |
1025 | 1025 | ||
1026 | As you can see we may have several pin controllers on the system and thus | 1026 | As you can see we may have several pin controllers on the system and thus |
1027 | we need to specify which one of them that contain the functions we wish | 1027 | we need to specify which one of them contains the functions we wish to map. |
1028 | to map. | ||
1029 | 1028 | ||
1030 | You register this pinmux mapping to the pinmux subsystem by simply: | 1029 | You register this pinmux mapping to the pinmux subsystem by simply: |
1031 | 1030 | ||
@@ -1254,10 +1253,10 @@ The semantics of the pinctrl APIs are: | |||
1254 | pinctrl_get(). | 1253 | pinctrl_get(). |
1255 | 1254 | ||
1256 | - pinctrl_lookup_state() is called in process context to obtain a handle to a | 1255 | - pinctrl_lookup_state() is called in process context to obtain a handle to a |
1257 | specific state for a the client device. This operation may be slow too. | 1256 | specific state for a client device. This operation may be slow, too. |
1258 | 1257 | ||
1259 | - pinctrl_select_state() programs pin controller hardware according to the | 1258 | - pinctrl_select_state() programs pin controller hardware according to the |
1260 | definition of the state as given by the mapping table. In theory this is a | 1259 | definition of the state as given by the mapping table. In theory, this is a |
1261 | fast-path operation, since it only involved blasting some register settings | 1260 | fast-path operation, since it only involved blasting some register settings |
1262 | into hardware. However, note that some pin controllers may have their | 1261 | into hardware. However, note that some pin controllers may have their |
1263 | registers on a slow/IRQ-based bus, so client devices should not assume they | 1262 | registers on a slow/IRQ-based bus, so client devices should not assume they |
diff --git a/Documentation/power/basic-pm-debugging.txt b/Documentation/power/basic-pm-debugging.txt index e9b54de8fdf7..edeecd447d23 100644 --- a/Documentation/power/basic-pm-debugging.txt +++ b/Documentation/power/basic-pm-debugging.txt | |||
@@ -172,7 +172,7 @@ you can boot the kernel with the 'no_console_suspend' parameter and try to log | |||
172 | kernel messages using the serial console. This may provide you with some | 172 | kernel messages using the serial console. This may provide you with some |
173 | information about the reasons of the suspend (resume) failure. Alternatively, | 173 | information about the reasons of the suspend (resume) failure. Alternatively, |
174 | it may be possible to use a FireWire port for debugging with firescope | 174 | it may be possible to use a FireWire port for debugging with firescope |
175 | (ftp://ftp.firstfloor.org/pub/ak/firescope/). On x86 it is also possible to | 175 | (http://v3.sk/~lkundrak/firescope/). On x86 it is also possible to |
176 | use the PM_TRACE mechanism documented in Documentation/power/s2ram.txt . | 176 | use the PM_TRACE mechanism documented in Documentation/power/s2ram.txt . |
177 | 177 | ||
178 | 2. Testing suspend to RAM (STR) | 178 | 2. Testing suspend to RAM (STR) |
diff --git a/Documentation/printk-formats.txt b/Documentation/printk-formats.txt index 445ad743ec81..6f4eb322ffaf 100644 --- a/Documentation/printk-formats.txt +++ b/Documentation/printk-formats.txt | |||
@@ -55,14 +55,21 @@ Struct Resources: | |||
55 | For printing struct resources. The 'R' and 'r' specifiers result in a | 55 | For printing struct resources. The 'R' and 'r' specifiers result in a |
56 | printed resource with ('R') or without ('r') a decoded flags member. | 56 | printed resource with ('R') or without ('r') a decoded flags member. |
57 | 57 | ||
58 | Physical addresses: | 58 | Physical addresses types phys_addr_t: |
59 | 59 | ||
60 | %pa 0x01234567 or 0x0123456789abcdef | 60 | %pa[p] 0x01234567 or 0x0123456789abcdef |
61 | 61 | ||
62 | For printing a phys_addr_t type (and its derivatives, such as | 62 | For printing a phys_addr_t type (and its derivatives, such as |
63 | resource_size_t) which can vary based on build options, regardless of | 63 | resource_size_t) which can vary based on build options, regardless of |
64 | the width of the CPU data path. Passed by reference. | 64 | the width of the CPU data path. Passed by reference. |
65 | 65 | ||
66 | DMA addresses types dma_addr_t: | ||
67 | |||
68 | %pad 0x01234567 or 0x0123456789abcdef | ||
69 | |||
70 | For printing a dma_addr_t type which can vary based on build options, | ||
71 | regardless of the width of the CPU data path. Passed by reference. | ||
72 | |||
66 | Raw buffer as a hex string: | 73 | Raw buffer as a hex string: |
67 | %*ph 00 01 02 ... 3f | 74 | %*ph 00 01 02 ... 3f |
68 | %*phC 00:01:02: ... :3f | 75 | %*phC 00:01:02: ... :3f |
diff --git a/Documentation/rfkill.txt b/Documentation/rfkill.txt index 03c9d9299c6b..f430004df73c 100644 --- a/Documentation/rfkill.txt +++ b/Documentation/rfkill.txt | |||
@@ -71,7 +71,7 @@ To create an rfkill driver, driver's Kconfig needs to have | |||
71 | depends on RFKILL || !RFKILL | 71 | depends on RFKILL || !RFKILL |
72 | 72 | ||
73 | to ensure the driver cannot be built-in when rfkill is modular. The !RFKILL | 73 | to ensure the driver cannot be built-in when rfkill is modular. The !RFKILL |
74 | case allows the driver to be built when rfkill is not configured, which which | 74 | case allows the driver to be built when rfkill is not configured, which |
75 | case all rfkill API can still be used but will be provided by static inlines | 75 | case all rfkill API can still be used but will be provided by static inlines |
76 | which compile to almost nothing. | 76 | which compile to almost nothing. |
77 | 77 | ||
diff --git a/Documentation/rt-mutex-design.txt b/Documentation/rt-mutex-design.txt index a5bcd7f5c33f..8666070d3189 100644 --- a/Documentation/rt-mutex-design.txt +++ b/Documentation/rt-mutex-design.txt | |||
@@ -30,7 +30,7 @@ is something called unbounded priority inversion. That is when the high | |||
30 | priority process is prevented from running by a lower priority process for | 30 | priority process is prevented from running by a lower priority process for |
31 | an undetermined amount of time. | 31 | an undetermined amount of time. |
32 | 32 | ||
33 | The classic example of unbounded priority inversion is were you have three | 33 | The classic example of unbounded priority inversion is where you have three |
34 | processes, let's call them processes A, B, and C, where A is the highest | 34 | processes, let's call them processes A, B, and C, where A is the highest |
35 | priority process, C is the lowest, and B is in between. A tries to grab a lock | 35 | priority process, C is the lowest, and B is in between. A tries to grab a lock |
36 | that C owns and must wait and lets C run to release the lock. But in the | 36 | that C owns and must wait and lets C run to release the lock. But in the |
diff --git a/Documentation/s390/qeth.txt b/Documentation/s390/qeth.txt new file mode 100644 index 000000000000..74122ada9949 --- /dev/null +++ b/Documentation/s390/qeth.txt | |||
@@ -0,0 +1,50 @@ | |||
1 | IBM s390 QDIO Ethernet Driver | ||
2 | |||
3 | HiperSockets Bridge Port Support | ||
4 | |||
5 | Uevents | ||
6 | |||
7 | To generate the events the device must be assigned a role of either | ||
8 | a primary or a secondary Bridge Port. For more information, see | ||
9 | "z/VM Connectivity, SC24-6174". | ||
10 | |||
11 | When run on HiperSockets Bridge Capable Port hardware, and the state | ||
12 | of some configured Bridge Port device on the channel changes, a udev | ||
13 | event with ACTION=CHANGE is emitted on behalf of the corresponding | ||
14 | ccwgroup device. The event has the following attributes: | ||
15 | |||
16 | BRIDGEPORT=statechange - indicates that the Bridge Port device changed | ||
17 | its state. | ||
18 | |||
19 | ROLE={primary|secondary|none} - the role assigned to the port. | ||
20 | |||
21 | STATE={active|standby|inactive} - the newly assumed state of the port. | ||
22 | |||
23 | When run on HiperSockets Bridge Capable Port hardware with host address | ||
24 | notifications enabled, a udev event with ACTION=CHANGE is emitted. | ||
25 | It is emitted on behalf of the corresponding ccwgroup device when a host | ||
26 | or a VLAN is registered or unregistered on the network served by the device. | ||
27 | The event has the following attributes: | ||
28 | |||
29 | BRIDGEDHOST={reset|register|deregister|abort} - host address | ||
30 | notifications are started afresh, a new host or VLAN is registered or | ||
31 | deregistered on the Bridge Port HiperSockets channel, or address | ||
32 | notifications are aborted. | ||
33 | |||
34 | VLAN=numeric-vlan-id - VLAN ID on which the event occurred. Not included | ||
35 | if no VLAN is involved in the event. | ||
36 | |||
37 | MAC=xx:xx:xx:xx:xx:xx - MAC address of the host that is being registered | ||
38 | or deregistered from the HiperSockets channel. Not reported if the | ||
39 | event reports the creation or destruction of a VLAN. | ||
40 | |||
41 | NTOK_BUSID=x.y.zzzz - device bus ID (CSSID, SSID and device number). | ||
42 | |||
43 | NTOK_IID=xx - device IID. | ||
44 | |||
45 | NTOK_CHPID=xx - device CHPID. | ||
46 | |||
47 | NTOK_CHID=xxxx - device channel ID. | ||
48 | |||
49 | Note that the NTOK_* attributes refer to devices other than the one | ||
50 | connected to the system on which the OS is running. | ||
diff --git a/Documentation/scsi/00-INDEX b/Documentation/scsi/00-INDEX index 9b0787f965e9..2044be565d93 100644 --- a/Documentation/scsi/00-INDEX +++ b/Documentation/scsi/00-INDEX | |||
@@ -42,8 +42,6 @@ aic79xx.txt | |||
42 | - Adaptec Ultra320 SCSI host adapters | 42 | - Adaptec Ultra320 SCSI host adapters |
43 | aic7xxx.txt | 43 | aic7xxx.txt |
44 | - info on driver for Adaptec controllers | 44 | - info on driver for Adaptec controllers |
45 | aic7xxx_old.txt | ||
46 | - info on driver for Adaptec controllers, old generation | ||
47 | arcmsr_spec.txt | 45 | arcmsr_spec.txt |
48 | - ARECA FIRMWARE SPEC (for IOP331 adapter) | 46 | - ARECA FIRMWARE SPEC (for IOP331 adapter) |
49 | dc395x.txt | 47 | dc395x.txt |
diff --git a/Documentation/scsi/aic7xxx_old.txt b/Documentation/scsi/aic7xxx_old.txt deleted file mode 100644 index ecfc474f36a8..000000000000 --- a/Documentation/scsi/aic7xxx_old.txt +++ /dev/null | |||
@@ -1,511 +0,0 @@ | |||
1 | AIC7xxx Driver for Linux | ||
2 | |||
3 | Introduction | ||
4 | ---------------------------- | ||
5 | The AIC7xxx SCSI driver adds support for Adaptec (http://www.adaptec.com) | ||
6 | SCSI controllers and chipsets. Major portions of the driver and driver | ||
7 | development are shared between both Linux and FreeBSD. Support for the | ||
8 | AIC-7xxx chipsets have been in the default Linux kernel since approximately | ||
9 | linux-1.1.x and fairly stable since linux-1.2.x, and are also in FreeBSD | ||
10 | 2.1.0 or later. | ||
11 | |||
12 | Supported cards/chipsets | ||
13 | ---------------------------- | ||
14 | Adaptec Cards | ||
15 | ---------------------------- | ||
16 | AHA-274x | ||
17 | AHA-274xT | ||
18 | AHA-2842 | ||
19 | AHA-2910B | ||
20 | AHA-2920C | ||
21 | AHA-2930 | ||
22 | AHA-2930U | ||
23 | AHA-2930CU | ||
24 | AHA-2930U2 | ||
25 | AHA-2940 | ||
26 | AHA-2940W | ||
27 | AHA-2940U | ||
28 | AHA-2940UW | ||
29 | AHA-2940UW-PRO | ||
30 | AHA-2940AU | ||
31 | AHA-2940U2W | ||
32 | AHA-2940U2 | ||
33 | AHA-2940U2B | ||
34 | AHA-2940U2BOEM | ||
35 | AHA-2944D | ||
36 | AHA-2944WD | ||
37 | AHA-2944UD | ||
38 | AHA-2944UWD | ||
39 | AHA-2950U2 | ||
40 | AHA-2950U2W | ||
41 | AHA-2950U2B | ||
42 | AHA-29160M | ||
43 | AHA-3940 | ||
44 | AHA-3940U | ||
45 | AHA-3940W | ||
46 | AHA-3940UW | ||
47 | AHA-3940AUW | ||
48 | AHA-3940U2W | ||
49 | AHA-3950U2B | ||
50 | AHA-3950U2D | ||
51 | AHA-3960D | ||
52 | AHA-39160M | ||
53 | AHA-3985 | ||
54 | AHA-3985U | ||
55 | AHA-3985W | ||
56 | AHA-3985UW | ||
57 | |||
58 | Motherboard Chipsets | ||
59 | ---------------------------- | ||
60 | AIC-777x | ||
61 | AIC-785x | ||
62 | AIC-786x | ||
63 | AIC-787x | ||
64 | AIC-788x | ||
65 | AIC-789x | ||
66 | AIC-3860 | ||
67 | |||
68 | Bus Types | ||
69 | ---------------------------- | ||
70 | W - Wide SCSI, SCSI-3, 16bit bus, 68pin connector, will also support | ||
71 | SCSI-1/SCSI-2 50pin devices, transfer rates up to 20MB/s. | ||
72 | U - Ultra SCSI, transfer rates up to 40MB/s. | ||
73 | U2- Ultra 2 SCSI, transfer rates up to 80MB/s. | ||
74 | D - Differential SCSI. | ||
75 | T - Twin Channel SCSI. Up to 14 SCSI devices. | ||
76 | |||
77 | AHA-274x - EISA SCSI controller | ||
78 | AHA-284x - VLB SCSI controller | ||
79 | AHA-29xx - PCI SCSI controller | ||
80 | AHA-394x - PCI controllers with two separate SCSI controllers on-board. | ||
81 | AHA-398x - PCI RAID controllers with three separate SCSI controllers | ||
82 | on-board. | ||
83 | |||
84 | Not Supported Devices | ||
85 | ------------------------------ | ||
86 | Adaptec Cards | ||
87 | ---------------------------- | ||
88 | AHA-2920 (Only the cards that use the Future Domain chipset are not | ||
89 | supported, any 2920 cards based on Adaptec AIC chipsets, | ||
90 | such as the 2920C, are supported) | ||
91 | AAA-13x Raid Adapters | ||
92 | AAA-113x Raid Port Card | ||
93 | |||
94 | Motherboard Chipsets | ||
95 | ---------------------------- | ||
96 | AIC-7810 | ||
97 | |||
98 | Bus Types | ||
99 | ---------------------------- | ||
100 | R - Raid Port busses are not supported. | ||
101 | |||
102 | The hardware RAID devices sold by Adaptec are *NOT* supported by this | ||
103 | driver (and will people please stop emailing me about them, they are | ||
104 | a totally separate beast from the bare SCSI controllers and this driver | ||
105 | cannot be retrofitted in any sane manner to support the hardware RAID | ||
106 | features on those cards - Doug Ledford). | ||
107 | |||
108 | |||
109 | People | ||
110 | ------------------------------ | ||
111 | Justin T Gibbs gibbs@plutotech.com | ||
112 | (BSD Driver Author) | ||
113 | Dan Eischen deischen@iworks.InterWorks.org | ||
114 | (Original Linux Driver Co-maintainer) | ||
115 | Dean Gehnert deang@teleport.com | ||
116 | (Original Linux FTP/patch maintainer) | ||
117 | Jess Johnson jester@frenzy.com | ||
118 | (AIC7xxx FAQ author) | ||
119 | Doug Ledford dledford@redhat.com | ||
120 | (Current Linux aic7xxx-5.x.x Driver/Patch/FTP maintainer) | ||
121 | |||
122 | Special thanks go to John Aycock (aycock@cpsc.ucalgary.ca), the original | ||
123 | author of the driver. John has since retired from the project. Thanks | ||
124 | again for all his work! | ||
125 | |||
126 | Mailing list | ||
127 | ------------------------------ | ||
128 | There is a mailing list available for users who want to track development | ||
129 | and converse with other users and developers. This list is for both | ||
130 | FreeBSD and Linux support of the AIC7xxx chipsets. | ||
131 | |||
132 | To subscribe to the AIC7xxx mailing list send mail to the list server, | ||
133 | with "subscribe AIC7xxx" in the body (no Subject: required): | ||
134 | To: majordomo@FreeBSD.ORG | ||
135 | --- | ||
136 | subscribe AIC7xxx | ||
137 | |||
138 | To unsubscribe from the list, send mail to the list server with: | ||
139 | To: majordomo@FreeBSD.ORG | ||
140 | --- | ||
141 | unsubscribe AIC7xxx | ||
142 | |||
143 | Send regular messages and replies to: AIC7xxx@FreeBSD.ORG | ||
144 | |||
145 | Boot Command line options | ||
146 | ------------------------------ | ||
147 | "aic7xxx=no_reset" - Eliminate the SCSI bus reset during startup. | ||
148 | Some SCSI devices need the initial reset that this option disables | ||
149 | in order to work. If you have problems at bootup, please make sure | ||
150 | you aren't using this option. | ||
151 | |||
152 | "aic7xxx=reverse_scan" - Certain PCI motherboards scan for devices at | ||
153 | bootup by scanning from the highest numbered PCI device to the | ||
154 | lowest numbered PCI device, others do just the opposite and scan | ||
155 | from lowest to highest numbered PCI device. There is no reliable | ||
156 | way to autodetect this ordering. So, we default to the most common | ||
157 | order, which is lowest to highest. Then, in case your motherboard | ||
158 | scans from highest to lowest, we have this option. If your BIOS | ||
159 | finds the drives on controller A before controller B but the linux | ||
160 | kernel finds your drives on controller B before A, then you should | ||
161 | use this option. | ||
162 | |||
163 | "aic7xxx=extended" - Force the driver to detect extended drive translation | ||
164 | on your controller. This helps those people who have cards without | ||
165 | a SEEPROM make sure that linux and all other operating systems think | ||
166 | the same way about your hard drives. | ||
167 | |||
168 | "aic7xxx=scbram" - Some cards have external SCB RAM that can be used to | ||
169 | give the card more hardware SCB slots. This allows the driver to use | ||
170 | that SCB RAM. Without this option, the driver won't touch the SCB | ||
171 | RAM because it is known to cause problems on a few cards out there | ||
172 | (such as 3985 class cards). | ||
173 | |||
174 | "aic7xxx=irq_trigger:x" - Replace x with either 0 or 1 to force the kernel | ||
175 | to use the correct IRQ type for your card. This only applies to EISA | ||
176 | based controllers. On these controllers, 0 is for Edge triggered | ||
177 | interrupts, and 1 is for Level triggered interrupts. If you aren't | ||
178 | sure or don't know which IRQ trigger type your EISA card uses, then | ||
179 | let the kernel autodetect the trigger type. | ||
180 | |||
181 | "aic7xxx=verbose" - This option can be used in one of two ways. If you | ||
182 | simply specify aic7xxx=verbose, then the kernel will automatically | ||
183 | pick the default set of verbose messages for you to see. | ||
184 | Alternatively, you can specify the command as | ||
185 | "aic7xxx=verbose:0xXXXX" where the X entries are replaced with | ||
186 | hexadecimal digits. This option is a bit field type option. For | ||
187 | a full listing of the available options, search for the | ||
188 | #define VERBOSE_xxxxxx lines in the aic7xxx.c file. If you want | ||
189 | verbose messages, then it is recommended that you simply use the | ||
190 | aic7xxx=verbose variant of this command. | ||
191 | |||
192 | "aic7xxx=pci_parity:x" - This option controls whether or not the driver | ||
193 | enables PCI parity error checking on the PCI bus. By default, this | ||
194 | checking is disabled. To enable the checks, simply specify pci_parity | ||
195 | with no value afterwords. To reverse the parity from even to odd, | ||
196 | supply any number other than 0 or 255. In short: | ||
197 | pci_parity - Even parity checking (even is the normal PCI parity) | ||
198 | pci_parity:x - Where x > 0, Odd parity checking | ||
199 | pci_parity:0 - No check (default) | ||
200 | NOTE: In order to get Even PCI parity checking, you must use the | ||
201 | version of the option that does not include the : and a number at | ||
202 | the end (unless you want to enter exactly 2^32 - 1 as the number). | ||
203 | |||
204 | "aic7xxx=no_probe" - This option will disable the probing for any VLB | ||
205 | based 2842 controllers and any EISA based controllers. This is | ||
206 | needed on certain newer motherboards where the normal EISA I/O ranges | ||
207 | have been claimed by other PCI devices. Probing on those machines | ||
208 | will often result in the machine crashing or spontaneously rebooting | ||
209 | during startup. Examples of machines that need this are the | ||
210 | Dell PowerEdge 6300 machines. | ||
211 | |||
212 | "aic7xxx=seltime:2" - This option controls how long the card waits | ||
213 | during a device selection sequence for the device to respond. | ||
214 | The original SCSI spec says that this "should be" 256ms. This | ||
215 | is generally not required with modern devices. However, some | ||
216 | very old SCSI I devices need the full 256ms. Most modern devices | ||
217 | can run fine with only 64ms. The default for this option is | ||
218 | 64ms. If you need to change this option, then use the following | ||
219 | table to set the proper value in the example above: | ||
220 | 0 - 256ms | ||
221 | 1 - 128ms | ||
222 | 2 - 64ms | ||
223 | 3 - 32ms | ||
224 | |||
225 | "aic7xxx=panic_on_abort" - This option is for debugging and will cause | ||
226 | the driver to panic the linux kernel and freeze the system the first | ||
227 | time the drivers abort or reset routines are called. This is most | ||
228 | helpful when some problem causes infinite reset loops that scroll too | ||
229 | fast to see. By using this option, you can write down what the errors | ||
230 | actually are and send that information to me so it can be fixed. | ||
231 | |||
232 | "aic7xxx=dump_card" - This option will print out the *entire* set of | ||
233 | configuration registers on the card during the init sequence. This | ||
234 | is a debugging aid used to see exactly what state the card is in | ||
235 | when we finally finish our initialization routines. If you don't | ||
236 | have documentation on the chipsets, this will do you absolutely | ||
237 | no good unless you are simply trying to write all the information | ||
238 | down in order to send it to me. | ||
239 | |||
240 | "aic7xxx=dump_sequencer" - This is the same as the above options except | ||
241 | that instead of dumping the register contents on the card, this | ||
242 | option dumps the contents of the sequencer program RAM. This gives | ||
243 | the ability to verify that the instructions downloaded to the | ||
244 | card's sequencer are indeed what they are supposed to be. Again, | ||
245 | unless you have documentation to tell you how to interpret these | ||
246 | numbers, then it is totally useless. | ||
247 | |||
248 | "aic7xxx=override_term:0xffffffff" - This option is used to force the | ||
249 | termination on your SCSI controllers to a particular setting. This | ||
250 | is a bit mask variable that applies for up to 8 aic7xxx SCSI channels. | ||
251 | Each channel gets 4 bits, divided as follows: | ||
252 | bit 3 2 1 0 | ||
253 | | | | Enable/Disable Single Ended Low Byte Termination | ||
254 | | | En/Disable Single Ended High Byte Termination | ||
255 | | En/Disable Low Byte LVD Termination | ||
256 | En/Disable High Byte LVD Termination | ||
257 | |||
258 | The upper 2 bits that deal with LVD termination only apply to Ultra2 | ||
259 | controllers. Furthermore, due to the current Ultra2 controller | ||
260 | designs, these bits are tied together such that setting either bit | ||
261 | enables both low and high byte LVD termination. It is not possible | ||
262 | to only set high or low byte LVD termination in this manner. This is | ||
263 | an artifact of the BIOS definition on Ultra2 controllers. For other | ||
264 | controllers, the only important bits are the two lowest bits. Setting | ||
265 | the higher bits on non-Ultra2 controllers has no effect. A few | ||
266 | examples of how to use this option: | ||
267 | |||
268 | Enable low and high byte termination on a non-ultra2 controller that | ||
269 | is the first aic7xxx controller (the correct bits are 0011), | ||
270 | aic7xxx=override_term:0x3 | ||
271 | |||
272 | Enable all termination on the third aic7xxx controller, high byte | ||
273 | termination on the second aic7xxx controller, and low and high byte | ||
274 | SE termination on the first aic7xxx controller | ||
275 | (bits are 1111 0010 0011), | ||
276 | aic7xxx=override_term:0xf23 | ||
277 | |||
278 | No attempt has been made to make this option non-cryptic. It really | ||
279 | shouldn't be used except in dire circumstances, and if that happens, | ||
280 | I'm probably going to be telling you what to set this to anyway :) | ||
281 | |||
282 | "aic7xxx=stpwlev:0xffffffff" - This option is used to control the STPWLEV | ||
283 | bit in the DEVCONFIG PCI register. Currently, this is one of the | ||
284 | very few registers that we have absolutely *no* way of detecting | ||
285 | what the variable should be. It depends entirely on how the chipset | ||
286 | and external terminators were coupled by the card/motherboard maker. | ||
287 | Further, a chip reset (at power up) always sets this bit to 0. If | ||
288 | there is no BIOS to run on the chipset/card (such as with a 2910C | ||
289 | or a motherboard controller with the BIOS totally disabled) then | ||
290 | the variable may not get set properly. Of course, if the proper | ||
291 | setting was 0, then that's what it would be after the reset, but if | ||
292 | the proper setting is actually 1.....you get the picture. Now, since | ||
293 | we can't detect this at all, I've added this option to force the | ||
294 | setting. If you have a BIOS on your controller then you should never | ||
295 | need to use this option. However, if you are having lots of SCSI | ||
296 | reset problems and can't seem to get them knocked out, this may help. | ||
297 | |||
298 | Here's a test to know for certain if you need this option. Make | ||
299 | a boot floppy that you can use to boot your computer up and that | ||
300 | will detect the aic7xxx controller. Next, power down your computer. | ||
301 | While it's down, unplug all SCSI cables from your Adaptec SCSI | ||
302 | controller. Boot the system back up to the Adaptec EZ-SCSI BIOS | ||
303 | and then make sure that termination is enabled on your adapter (if | ||
304 | you have an Adaptec BIOS of course). Next, boot up the floppy you | ||
305 | made and wait for it to detect the aic7xxx controller. If the kernel | ||
306 | finds the controller fine, says scsi : x hosts and then tries to | ||
307 | detect your devices like normal, up to the point where it fails to | ||
308 | mount your root file system and panics, then you're fine. If, on | ||
309 | the other hand, the system goes into an infinite reset loop, then | ||
310 | you need to use this option and/or the previous option to force the | ||
311 | proper termination settings on your controller. If this happens, | ||
312 | then you next need to figure out what your settings should be. | ||
313 | |||
314 | To find the correct settings, power your machine back down, connect | ||
315 | back up the SCSI cables, and boot back into your machine like normal. | ||
316 | However, boot with the aic7xxx=verbose:0x39 option. Record the | ||
317 | initial DEVCONFIG values for each of your aic7xxx controllers as | ||
318 | they are listed, and also record what the machine is detecting as | ||
319 | the proper termination on your controllers. NOTE: the order in | ||
320 | which the initial DEVCONFIG values are printed out is not guaranteed | ||
321 | to be the same order as the SCSI controllers are registered. The | ||
322 | above option and this option both work on the order of the SCSI | ||
323 | controllers as they are registered, so make sure you match the right | ||
324 | DEVCONFIG values with the right controllers if you have more than | ||
325 | one aic7xxx controller. | ||
326 | |||
327 | Once you have the detected termination settings and the initial | ||
328 | DEVCONFIG values for each controller, then figure out what the | ||
329 | termination on each of the controllers *should* be. Hopefully, that | ||
330 | part is correct, but it could possibly be wrong if there is | ||
331 | bogus cable detection logic on your controller or something similar. | ||
332 | If all the controllers have the correct termination settings, then | ||
333 | don't set the aic7xxx=override_term variable at all, leave it alone. | ||
334 | Next, on any controllers that go into an infinite reset loop when | ||
335 | you unplug all the SCSI cables, get the starting DEVCONFIG value. | ||
336 | If the initial DEVCONFIG value is divisible by 2, then the correct | ||
337 | setting for that controller is 0. If it's an odd number, then | ||
338 | the correct setting for that controller is 1. For any other | ||
339 | controllers that didn't have an infinite reset problem, then reverse | ||
340 | the above options. If DEVCONFIG was even, then the correct setting | ||
341 | is 1, if not then the correct setting is 0. | ||
342 | |||
343 | Now that you know what the correct setting was for each controller, | ||
344 | we need to encode that into the aic7xxx=stpwlev:0x... variable. | ||
345 | This variable is a bit field encoded variable. Bit 0 is for the first | ||
346 | aic7xxx controller, bit 1 for the next, etc. Put all these bits | ||
347 | together and you get a number. For example, if the third aic7xxx | ||
348 | needed a 1, but the second and first both needed a 0, then the bits | ||
349 | would be 100 in binary. This then translates to 0x04. You would | ||
350 | therefore set aic7xxx=stpwlev:0x04. This is fairly standard binary | ||
351 | to hexadecimal conversions here. If you aren't up to speed on the | ||
352 | binary->hex conversion then send an email to the aic7xxx mailing | ||
353 | list and someone can help you out. | ||
354 | |||
355 | "aic7xxx=tag_info:{{8,8..},{8,8..},..}" - This option is used to disable | ||
356 | or enable Tagged Command Queueing (TCQ) on specific devices. As of | ||
357 | driver version 5.1.11, TCQ is now either on or off by default | ||
358 | according to the setting you choose during the make config process. | ||
359 | In order to en/disable TCQ for certain devices at boot time, a user | ||
360 | may use this boot param. The driver will then parse this message out | ||
361 | and en/disable the specific device entries that are present based upon | ||
362 | the value given. The param line is parsed in the following manner: | ||
363 | |||
364 | { - first instance indicates the start of this parameter values | ||
365 | second instance is the start of entries for a particular | ||
366 | device entry | ||
367 | } - end the entries for a particular host adapter, or end the entire | ||
368 | set of parameter entries | ||
369 | , - move to next entry. Inside of a set of device entries, this | ||
370 | moves us to the next device on the list. Outside of device | ||
371 | entries, this moves us to the next host adapter | ||
372 | . - Same effect as , but is safe to use with insmod. | ||
373 | x - the number to enter into the array at this position. | ||
374 | 0 = Enable tagged queueing on this device and use the default | ||
375 | queue depth | ||
376 | 1-254 = Enable tagged queueing on this device and use this | ||
377 | number as the queue depth | ||
378 | 255 = Disable tagged queueing on this device. | ||
379 | Note: anything above 32 for an actual queue depth is wasteful | ||
380 | and not recommended. | ||
381 | |||
382 | A few examples of how this can be used: | ||
383 | |||
384 | tag_info:{{8,12,,0,,255,4}} | ||
385 | This line will only effect the first aic7xxx card registered. It | ||
386 | will set scsi id 0 to a queue depth of 8, id 1 to 12, leave id 2 | ||
387 | at the default, set id 3 to tagged queueing enabled and use the | ||
388 | default queue depth, id 4 default, id 5 disabled, and id 6 to 4. | ||
389 | Any not specified entries stay at the default value, repeated | ||
390 | commas with no value specified will simply increment to the next id | ||
391 | without changing anything for the missing values. | ||
392 | |||
393 | tag_info:{,,,{,,,255}} | ||
394 | First, second, and third adapters at default values. Fourth | ||
395 | adapter, id 3 is disabled. Notice that leading commas simply | ||
396 | increment what the first number effects, and there are no need | ||
397 | for trailing commas. When you close out an adapter, or the | ||
398 | entire entry, anything not explicitly set stays at the default | ||
399 | value. | ||
400 | |||
401 | A final note on this option. The scanner I used for this isn't | ||
402 | perfect or highly robust. If you mess the line up, the worst that | ||
403 | should happen is that the line will get ignored. If you don't | ||
404 | close out the entire entry with the final bracket, then any other | ||
405 | aic7xxx options after this will get ignored. So, in general, be | ||
406 | sure of what you are entering, and after you have it right, just | ||
407 | add it to the lilo.conf file so there won't be any mistakes. As | ||
408 | a means of checking this parser, the entire tag_info array for | ||
409 | each card is now printed out in the /proc/scsi/aic7xxx/x file. You | ||
410 | can use that to verify that your options were parsed correctly. | ||
411 | |||
412 | Boot command line options may be combined to form the proper set of options | ||
413 | a user might need. For example, the following is valid: | ||
414 | |||
415 | aic7xxx=verbose,extended,irq_trigger:1 | ||
416 | |||
417 | The only requirement is that individual options be separated by a comma or | ||
418 | a period on the command line. | ||
419 | |||
420 | Module Loading command options | ||
421 | ------------------------------ | ||
422 | When loading the aic7xxx driver as a module, the exact same options are | ||
423 | available to the user. However, the syntax to specify the options changes | ||
424 | slightly. For insmod, you need to wrap the aic7xxx= argument in quotes | ||
425 | and replace all ',' with '.'. So, for example, a valid insmod line | ||
426 | would be: | ||
427 | |||
428 | insmod aic7xxx aic7xxx='verbose.irq_trigger:1.extended' | ||
429 | |||
430 | This line should result in the *exact* same behaviour as if you typed | ||
431 | it in at the lilo prompt and the driver was compiled into the kernel | ||
432 | instead of being a module. The reason for the single quote is so that | ||
433 | the shell won't try to interpret anything in the line, such as {. | ||
434 | Insmod assumes any options starting with a letter instead of a number | ||
435 | is a character string (which is what we want) and by switching all of | ||
436 | the commas to periods, insmod won't interpret this as more than one | ||
437 | string and write junk into our binary image. I consider it a bug in | ||
438 | the insmod program that even if you wrap your string in quotes (quotes | ||
439 | that pass the shell mind you and that insmod sees) it still treats | ||
440 | a comma inside of those quotes as starting a new variable, resulting | ||
441 | in memory scribbles if you don't switch the commas to periods. | ||
442 | |||
443 | |||
444 | Kernel Compile options | ||
445 | ------------------------------ | ||
446 | The various kernel compile time options for this driver are now fairly | ||
447 | well documented in the file drivers/scsi/Kconfig. In order to | ||
448 | see this documentation, you need to use one of the advanced configuration | ||
449 | programs (menuconfig and xconfig). If you are using the "make menuconfig" | ||
450 | method of configuring your kernel, then you would simply highlight the | ||
451 | option in question and hit the ? key. If you are using the "make xconfig" | ||
452 | method of configuring your kernel, then simply click on the help button | ||
453 | next to the option you have questions about. The help information from | ||
454 | the Configure.help file will then get automatically displayed. | ||
455 | |||
456 | /proc support | ||
457 | ------------------------------ | ||
458 | The /proc support for the AIC7xxx can be found in the /proc/scsi/aic7xxx/ | ||
459 | directory. That directory contains a file for each SCSI controller in | ||
460 | the system. Each file presents the current configuration and transfer | ||
461 | statistics (enabled with #define in aic7xxx.c) for each controller. | ||
462 | |||
463 | Thanks to Michael Neuffer for his upper-level SCSI help, and | ||
464 | Matthew Jacob for statistics support. | ||
465 | |||
466 | Debugging the driver | ||
467 | ------------------------------ | ||
468 | Should you have problems with this driver, and would like some help in | ||
469 | getting them solved, there are a couple debugging items built into | ||
470 | the driver to facilitate getting the needed information from the system. | ||
471 | In general, I need a complete description of the problem, with as many | ||
472 | logs as possible concerning what happens. To help with this, there is | ||
473 | a command option aic7xxx=panic_on_abort. This option, when set, forces | ||
474 | the driver to panic the kernel on the first SCSI abort issued by the | ||
475 | mid level SCSI code. If your system is going to reset loops and you | ||
476 | can't read the screen, then this is what you need. Not only will it | ||
477 | stop the system, but it also prints out a large amount of state | ||
478 | information in the process. Second, if you specify the option | ||
479 | "aic7xxx=verbose:0x1ffff", the system will print out *SOOOO* much | ||
480 | information as it runs that you won't be able to see anything. | ||
481 | However, this can actually be very useful if your machine simply | ||
482 | locks up when trying to boot, since it will pin-point what was last | ||
483 | happening (in regards to the aic7xxx driver) immediately prior to | ||
484 | the lockup. This is really only useful if your machine simply can | ||
485 | not boot up successfully. If you can get your machine to run, then | ||
486 | this will produce far too much information. | ||
487 | |||
488 | FTP sites | ||
489 | ------------------------------ | ||
490 | ftp://ftp.redhat.com/pub/aic/ | ||
491 | - Out of date. I used to keep stuff here, but too many people | ||
492 | complained about having a hard time getting into Red Hat's ftp | ||
493 | server. So use the web site below instead. | ||
494 | ftp://ftp.pcnet.com/users/eischen/Linux/ | ||
495 | - Dan Eischen's driver distribution area | ||
496 | ftp://ekf2.vsb.cz/pub/linux/kernel/aic7xxx/ftp.teleport.com/ | ||
497 | - European Linux mirror of Teleport site | ||
498 | |||
499 | Web sites | ||
500 | ------------------------------ | ||
501 | http://people.redhat.com/dledford/ | ||
502 | - My web site, also the primary aic7xxx site with several related | ||
503 | pages. | ||
504 | |||
505 | Dean W. Gehnert | ||
506 | deang@teleport.com | ||
507 | |||
508 | $Revision: 3.0 $ | ||
509 | |||
510 | Modified by Doug Ledford 1998-2000 | ||
511 | |||
diff --git a/Documentation/scsi/scsi_eh.txt b/Documentation/scsi/scsi_eh.txt index 6ff16b620d84..a0c85110a07e 100644 --- a/Documentation/scsi/scsi_eh.txt +++ b/Documentation/scsi/scsi_eh.txt | |||
@@ -42,20 +42,14 @@ discussion. | |||
42 | 42 | ||
43 | Once LLDD gets hold of a scmd, either the LLDD will complete the | 43 | Once LLDD gets hold of a scmd, either the LLDD will complete the |
44 | command by calling scsi_done callback passed from midlayer when | 44 | command by calling scsi_done callback passed from midlayer when |
45 | invoking hostt->queuecommand() or SCSI midlayer will time it out. | 45 | invoking hostt->queuecommand() or the block layer will time it out. |
46 | 46 | ||
47 | 47 | ||
48 | [1-2-1] Completing a scmd w/ scsi_done | 48 | [1-2-1] Completing a scmd w/ scsi_done |
49 | 49 | ||
50 | For all non-EH commands, scsi_done() is the completion callback. It | 50 | For all non-EH commands, scsi_done() is the completion callback. It |
51 | does the following. | 51 | just calls blk_complete_request() to delete the block layer timer and |
52 | 52 | raise SCSI_SOFTIRQ | |
53 | 1. Delete timeout timer. If it fails, it means that timeout timer | ||
54 | has expired and is going to finish the command. Just return. | ||
55 | |||
56 | 2. Link scmd to per-cpu scsi_done_q using scmd->en_entry | ||
57 | |||
58 | 3. Raise SCSI_SOFTIRQ | ||
59 | 53 | ||
60 | SCSI_SOFTIRQ handler scsi_softirq calls scsi_decide_disposition() to | 54 | SCSI_SOFTIRQ handler scsi_softirq calls scsi_decide_disposition() to |
61 | determine what to do with the command. scsi_decide_disposition() | 55 | determine what to do with the command. scsi_decide_disposition() |
@@ -64,10 +58,12 @@ with the command. | |||
64 | 58 | ||
65 | - SUCCESS | 59 | - SUCCESS |
66 | scsi_finish_command() is invoked for the command. The | 60 | scsi_finish_command() is invoked for the command. The |
67 | function does some maintenance choirs and notify completion by | 61 | function does some maintenance chores and then calls |
68 | calling scmd->done() callback, which, for fs requests, would | 62 | scsi_io_completion() to finish the I/O. |
69 | be HLD completion callback - sd:sd_rw_intr, sr:rw_intr, | 63 | scsi_io_completion() then notifies the block layer on |
70 | st:st_intr. | 64 | the completed request by calling blk_end_request and |
65 | friends or figures out what to do with the remainder | ||
66 | of the data in case of an error. | ||
71 | 67 | ||
72 | - NEEDS_RETRY | 68 | - NEEDS_RETRY |
73 | - ADD_TO_MLQUEUE | 69 | - ADD_TO_MLQUEUE |
@@ -86,33 +82,45 @@ function | |||
86 | 1. invokes optional hostt->eh_timed_out() callback. Return value can | 82 | 1. invokes optional hostt->eh_timed_out() callback. Return value can |
87 | be one of | 83 | be one of |
88 | 84 | ||
89 | - EH_HANDLED | 85 | - BLK_EH_HANDLED |
90 | This indicates that eh_timed_out() dealt with the timeout. The | 86 | This indicates that eh_timed_out() dealt with the timeout. |
91 | scmd is passed to __scsi_done() and thus linked into per-cpu | 87 | The command is passed back to the block layer and completed |
92 | scsi_done_q. Normal command completion described in [1-2-1] | 88 | via __blk_complete_requests(). |
93 | follows. | 89 | |
90 | *NOTE* After returning BLK_EH_HANDLED the SCSI layer is | ||
91 | assumed to be finished with the command, and no other | ||
92 | functions from the SCSI layer will be called. So this | ||
93 | should typically only be returned if the eh_timed_out() | ||
94 | handler raced with normal completion. | ||
94 | 95 | ||
95 | - EH_RESET_TIMER | 96 | - BLK_EH_RESET_TIMER |
96 | This indicates that more time is required to finish the | 97 | This indicates that more time is required to finish the |
97 | command. Timer is restarted. This action is counted as a | 98 | command. Timer is restarted. This action is counted as a |
98 | retry and only allowed scmd->allowed + 1(!) times. Once the | 99 | retry and only allowed scmd->allowed + 1(!) times. Once the |
99 | limit is reached, action for EH_NOT_HANDLED is taken instead. | 100 | limit is reached, action for BLK_EH_NOT_HANDLED is taken instead. |
100 | 101 | ||
101 | *NOTE* This action is racy as the LLDD could finish the scmd | 102 | - BLK_EH_NOT_HANDLED |
102 | after the timeout has expired but before it's added back. In | 103 | eh_timed_out() callback did not handle the command. |
103 | such cases, scsi_done() would think that timeout has occurred | ||
104 | and return without doing anything. We lose completion and the | ||
105 | command will time out again. | ||
106 | |||
107 | - EH_NOT_HANDLED | ||
108 | This is the same as when eh_timed_out() callback doesn't exist. | ||
109 | Step #2 is taken. | 104 | Step #2 is taken. |
110 | 105 | ||
106 | 2. If the host supports asynchronous completion (as indicated by the | ||
107 | no_async_abort setting in the host template) scsi_abort_command() | ||
108 | is invoked to schedule an asynchrous abort. If that fails | ||
109 | Step #3 is taken. | ||
110 | |||
111 | 2. scsi_eh_scmd_add(scmd, SCSI_EH_CANCEL_CMD) is invoked for the | 111 | 2. scsi_eh_scmd_add(scmd, SCSI_EH_CANCEL_CMD) is invoked for the |
112 | command. See [1-3] for more information. | 112 | command. See [1-3] for more information. |
113 | 113 | ||
114 | [1-3] Asynchronous command aborts | ||
115 | |||
116 | After a timeout occurs a command abort is scheduled from | ||
117 | scsi_abort_command(). If the abort is successful the command | ||
118 | will either be retried (if the number of retries is not exhausted) | ||
119 | or terminated with DID_TIME_OUT. | ||
120 | Otherwise scsi_eh_scmd_add() is invoked for the command. | ||
121 | See [1-4] for more information. | ||
114 | 122 | ||
115 | [1-3] How EH takes over | 123 | [1-4] How EH takes over |
116 | 124 | ||
117 | scmds enter EH via scsi_eh_scmd_add(), which does the following. | 125 | scmds enter EH via scsi_eh_scmd_add(), which does the following. |
118 | 126 | ||
@@ -320,7 +328,8 @@ scmd->allowed. | |||
320 | 328 | ||
321 | <<scsi_eh_abort_cmds>> | 329 | <<scsi_eh_abort_cmds>> |
322 | 330 | ||
323 | This action is taken for each timed out command. | 331 | This action is taken for each timed out command when |
332 | no_async_abort is enabled in the host template. | ||
324 | hostt->eh_abort_handler() is invoked for each scmd. The | 333 | hostt->eh_abort_handler() is invoked for each scmd. The |
325 | handler returns SUCCESS if it has succeeded to make LLDD and | 334 | handler returns SUCCESS if it has succeeded to make LLDD and |
326 | all related hardware forget about the scmd. | 335 | all related hardware forget about the scmd. |
diff --git a/Documentation/scsi/scsi_mid_low_api.txt b/Documentation/scsi/scsi_mid_low_api.txt index 2b06aba4fa0f..d6a9bdeee7f2 100644 --- a/Documentation/scsi/scsi_mid_low_api.txt +++ b/Documentation/scsi/scsi_mid_low_api.txt | |||
@@ -882,8 +882,11 @@ Details: | |||
882 | * | 882 | * |
883 | * Calling context: kernel thread | 883 | * Calling context: kernel thread |
884 | * | 884 | * |
885 | * Notes: Invoked from scsi_eh thread. No other commands will be | 885 | * Notes: If 'no_async_abort' is defined this callback |
886 | * queued on current host during eh. | 886 | * will be invoked from scsi_eh thread. No other commands |
887 | * will then be queued on current host during eh. | ||
888 | * Otherwise it will be called whenever scsi_times_out() | ||
889 | * is called due to a command timeout. | ||
887 | * | 890 | * |
888 | * Optionally defined in: LLD | 891 | * Optionally defined in: LLD |
889 | **/ | 892 | **/ |
@@ -1257,6 +1260,8 @@ of interest: | |||
1257 | address space | 1260 | address space |
1258 | use_clustering - 1=>SCSI commands in mid level's queue can be merged, | 1261 | use_clustering - 1=>SCSI commands in mid level's queue can be merged, |
1259 | 0=>disallow SCSI command merging | 1262 | 0=>disallow SCSI command merging |
1263 | no_async_abort - 1=>Asynchronous aborts are not supported | ||
1264 | 0=>Timed-out commands will be aborted asynchronously | ||
1260 | hostt - pointer to driver's struct scsi_host_template from which | 1265 | hostt - pointer to driver's struct scsi_host_template from which |
1261 | this struct Scsi_Host instance was spawned | 1266 | this struct Scsi_Host instance was spawned |
1262 | hostt->proc_name - name of LLD. This is the driver name that sysfs uses | 1267 | hostt->proc_name - name of LLD. This is the driver name that sysfs uses |
diff --git a/Documentation/scsi/scsi_transport_srp/Makefile b/Documentation/scsi/scsi_transport_srp/Makefile new file mode 100644 index 000000000000..5f6b567e955c --- /dev/null +++ b/Documentation/scsi/scsi_transport_srp/Makefile | |||
@@ -0,0 +1,7 @@ | |||
1 | all: rport_state_diagram.svg rport_state_diagram.png | ||
2 | |||
3 | rport_state_diagram.svg: rport_state_diagram.dot | ||
4 | dot -Tsvg -o $@ $< | ||
5 | |||
6 | rport_state_diagram.png: rport_state_diagram.dot | ||
7 | dot -Tpng -o $@ $< | ||
diff --git a/Documentation/scsi/scsi_transport_srp/rport_state_diagram.dot b/Documentation/scsi/scsi_transport_srp/rport_state_diagram.dot new file mode 100644 index 000000000000..75d610d6411a --- /dev/null +++ b/Documentation/scsi/scsi_transport_srp/rport_state_diagram.dot | |||
@@ -0,0 +1,26 @@ | |||
1 | digraph srp_initiator { | ||
2 | node [shape = doublecircle]; running lost; | ||
3 | node [shape = circle]; | ||
4 | |||
5 | { | ||
6 | rank = min; | ||
7 | running_rta [ label = "running;\nreconnect\ntimer\nactive" ]; | ||
8 | }; | ||
9 | running [ label = "running;\nreconnect\ntimer\nstopped" ]; | ||
10 | blocked; | ||
11 | failfast [ label = "fail I/O\nfast" ]; | ||
12 | lost; | ||
13 | |||
14 | running -> running_rta [ label = "fast_io_fail_tmo = off and\ndev_loss_tmo = off;\nsrp_start_tl_fail_timers()" ]; | ||
15 | running_rta -> running [ label = "fast_io_fail_tmo = off and\ndev_loss_tmo = off;\nreconnecting succeeded" ]; | ||
16 | running -> blocked [ label = "fast_io_fail_tmo >= 0 or\ndev_loss_tmo >= 0;\nsrp_start_tl_fail_timers()" ]; | ||
17 | running -> failfast [ label = "fast_io_fail_tmo = off and\ndev_loss_tmo = off;\nreconnecting failed\n" ]; | ||
18 | blocked -> failfast [ label = "fast_io_fail_tmo\nexpired or\nreconnecting\nfailed" ]; | ||
19 | blocked -> lost [ label = "dev_loss_tmo\nexpired or\nsrp_stop_rport_timers()" ]; | ||
20 | failfast -> lost [ label = "dev_loss_tmo\nexpired or\nsrp_stop_rport_timers()" ]; | ||
21 | blocked -> running [ label = "reconnecting\nsucceeded" ]; | ||
22 | failfast -> failfast [ label = "reconnecting\nfailed" ]; | ||
23 | failfast -> running [ label = "reconnecting\nsucceeded" ]; | ||
24 | running -> lost [ label = "srp_stop_rport_timers()" ]; | ||
25 | running_rta -> lost [ label = "srp_stop_rport_timers()" ]; | ||
26 | } | ||
diff --git a/Documentation/security/IMA-templates.txt b/Documentation/security/IMA-templates.txt index a777e5f1df5b..a4e102dddfea 100644 --- a/Documentation/security/IMA-templates.txt +++ b/Documentation/security/IMA-templates.txt | |||
@@ -67,12 +67,14 @@ descriptors by adding their identifier to the format string | |||
67 | - 'd-ng': the digest of the event, calculated with an arbitrary hash | 67 | - 'd-ng': the digest of the event, calculated with an arbitrary hash |
68 | algorithm (field format: [<hash algo>:]digest, where the digest | 68 | algorithm (field format: [<hash algo>:]digest, where the digest |
69 | prefix is shown only if the hash algorithm is not SHA1 or MD5); | 69 | prefix is shown only if the hash algorithm is not SHA1 or MD5); |
70 | - 'n-ng': the name of the event, without size limitations. | 70 | - 'n-ng': the name of the event, without size limitations; |
71 | - 'sig': the file signature. | ||
71 | 72 | ||
72 | 73 | ||
73 | Below, there is the list of defined template descriptors: | 74 | Below, there is the list of defined template descriptors: |
74 | - "ima": its format is 'd|n'; | 75 | - "ima": its format is 'd|n'; |
75 | - "ima-ng" (default): its format is 'd-ng|n-ng'. | 76 | - "ima-ng" (default): its format is 'd-ng|n-ng'; |
77 | - "ima-sig": its format is 'd-ng|n-ng|sig'. | ||
76 | 78 | ||
77 | 79 | ||
78 | 80 | ||
diff --git a/Documentation/sound/alsa/soc/overview.txt b/Documentation/sound/alsa/soc/overview.txt index 138ac88c1461..ff88f52eec98 100644 --- a/Documentation/sound/alsa/soc/overview.txt +++ b/Documentation/sound/alsa/soc/overview.txt | |||
@@ -49,18 +49,23 @@ features :- | |||
49 | * Machine specific controls: Allow machines to add controls to the sound card | 49 | * Machine specific controls: Allow machines to add controls to the sound card |
50 | (e.g. volume control for speaker amplifier). | 50 | (e.g. volume control for speaker amplifier). |
51 | 51 | ||
52 | To achieve all this, ASoC basically splits an embedded audio system into 3 | 52 | To achieve all this, ASoC basically splits an embedded audio system into |
53 | components :- | 53 | multiple re-usable component drivers :- |
54 | 54 | ||
55 | * Codec driver: The codec driver is platform independent and contains audio | 55 | * Codec class drivers: The codec class driver is platform independent and |
56 | controls, audio interface capabilities, codec DAPM definition and codec IO | 56 | contains audio controls, audio interface capabilities, codec DAPM |
57 | functions. | 57 | definition and codec IO functions. This class extends to BT, FM and MODEM |
58 | ICs if required. Codec class drivers should be generic code that can run | ||
59 | on any architecture and machine. | ||
58 | 60 | ||
59 | * Platform driver: The platform driver contains the audio DMA engine and audio | 61 | * Platform class drivers: The platform class driver includes the audio DMA |
60 | interface drivers (e.g. I2S, AC97, PCM) for that platform. | 62 | engine driver, digital audio interface (DAI) drivers (e.g. I2S, AC97, PCM) |
63 | and any audio DSP drivers for that platform. | ||
61 | 64 | ||
62 | * Machine driver: The machine driver handles any machine specific controls and | 65 | * Machine class driver: The machine driver class acts as the glue that |
63 | audio events (e.g. turning on an amp at start of playback). | 66 | decribes and binds the other component drivers together to form an ALSA |
67 | "sound card device". It handles any machine specific controls and | ||
68 | machine level audio events (e.g. turning on an amp at start of playback). | ||
64 | 69 | ||
65 | 70 | ||
66 | Documentation | 71 | Documentation |
@@ -84,3 +89,7 @@ machine.txt: Machine driver internals. | |||
84 | pop_clicks.txt: How to minimise audio artifacts. | 89 | pop_clicks.txt: How to minimise audio artifacts. |
85 | 90 | ||
86 | clocking.txt: ASoC clocking for best power performance. | 91 | clocking.txt: ASoC clocking for best power performance. |
92 | |||
93 | jack.txt: ASoC jack detection. | ||
94 | |||
95 | DPCM.txt: Dynamic PCM - Describes DPCM with DSP examples. | ||
diff --git a/Documentation/spi/spi-summary b/Documentation/spi/spi-summary index f21edb983413..f72e0d1e0da8 100644 --- a/Documentation/spi/spi-summary +++ b/Documentation/spi/spi-summary | |||
@@ -34,7 +34,7 @@ SPI slave functions are usually not interoperable between vendors | |||
34 | - It may also be used to stream data in either direction (half duplex), | 34 | - It may also be used to stream data in either direction (half duplex), |
35 | or both of them at the same time (full duplex). | 35 | or both of them at the same time (full duplex). |
36 | 36 | ||
37 | - Some devices may use eight bit words. Others may different word | 37 | - Some devices may use eight bit words. Others may use different word |
38 | lengths, such as streams of 12-bit or 20-bit digital samples. | 38 | lengths, such as streams of 12-bit or 20-bit digital samples. |
39 | 39 | ||
40 | - Words are usually sent with their most significant bit (MSB) first, | 40 | - Words are usually sent with their most significant bit (MSB) first, |
@@ -121,7 +121,7 @@ active. So the master must set the clock to inactive before selecting | |||
121 | a slave, and the slave can tell the chosen polarity by sampling the | 121 | a slave, and the slave can tell the chosen polarity by sampling the |
122 | clock level when its select line goes active. That's why many devices | 122 | clock level when its select line goes active. That's why many devices |
123 | support for example both modes 0 and 3: they don't care about polarity, | 123 | support for example both modes 0 and 3: they don't care about polarity, |
124 | and alway clock data in/out on rising clock edges. | 124 | and always clock data in/out on rising clock edges. |
125 | 125 | ||
126 | 126 | ||
127 | How do these driver programming interfaces work? | 127 | How do these driver programming interfaces work? |
@@ -139,7 +139,7 @@ a command and then reading its response. | |||
139 | 139 | ||
140 | There are two types of SPI driver, here called: | 140 | There are two types of SPI driver, here called: |
141 | 141 | ||
142 | Controller drivers ... controllers may be built in to System-On-Chip | 142 | Controller drivers ... controllers may be built into System-On-Chip |
143 | processors, and often support both Master and Slave roles. | 143 | processors, and often support both Master and Slave roles. |
144 | These drivers touch hardware registers and may use DMA. | 144 | These drivers touch hardware registers and may use DMA. |
145 | Or they can be PIO bitbangers, needing just GPIO pins. | 145 | Or they can be PIO bitbangers, needing just GPIO pins. |
@@ -548,7 +548,7 @@ SPI MASTER METHODS | |||
548 | DEPRECATED METHODS | 548 | DEPRECATED METHODS |
549 | 549 | ||
550 | master->transfer(struct spi_device *spi, struct spi_message *message) | 550 | master->transfer(struct spi_device *spi, struct spi_message *message) |
551 | This must not sleep. Its responsibility is arrange that the | 551 | This must not sleep. Its responsibility is to arrange that the |
552 | transfer happens and its complete() callback is issued. The two | 552 | transfer happens and its complete() callback is issued. The two |
553 | will normally happen later, after other transfers complete, and | 553 | will normally happen later, after other transfers complete, and |
554 | if the controller is idle it will need to be kickstarted. This | 554 | if the controller is idle it will need to be kickstarted. This |
diff --git a/Documentation/static-keys.txt b/Documentation/static-keys.txt index 9f5263d3152c..c4407a41b0fc 100644 --- a/Documentation/static-keys.txt +++ b/Documentation/static-keys.txt | |||
@@ -116,7 +116,7 @@ The branch(es) can then be switched via: | |||
116 | static_key_slow_dec(&key); | 116 | static_key_slow_dec(&key); |
117 | 117 | ||
118 | Thus, 'static_key_slow_inc()' means 'make the branch true', and | 118 | Thus, 'static_key_slow_inc()' means 'make the branch true', and |
119 | 'static_key_slow_dec()' means 'make the the branch false' with appropriate | 119 | 'static_key_slow_dec()' means 'make the branch false' with appropriate |
120 | reference counting. For example, if the key is initialized true, a | 120 | reference counting. For example, if the key is initialized true, a |
121 | static_key_slow_dec(), will switch the branch to false. And a subsequent | 121 | static_key_slow_dec(), will switch the branch to false. And a subsequent |
122 | static_key_slow_inc(), will change the branch back to true. Likewise, if the | 122 | static_key_slow_inc(), will change the branch back to true. Likewise, if the |
@@ -236,7 +236,7 @@ label case adds: | |||
236 | 236 | ||
237 | If we then include the padding bytes, the jump label code saves, 16 total bytes | 237 | If we then include the padding bytes, the jump label code saves, 16 total bytes |
238 | of instruction memory for this small function. In this case the non-jump label | 238 | of instruction memory for this small function. In this case the non-jump label |
239 | function is 80 bytes long. Thus, we have have saved 20% of the instruction | 239 | function is 80 bytes long. Thus, we have saved 20% of the instruction |
240 | footprint. We can in fact improve this even further, since the 5-byte no-op | 240 | footprint. We can in fact improve this even further, since the 5-byte no-op |
241 | really can be a 2-byte no-op since we can reach the branch with a 2-byte jmp. | 241 | really can be a 2-byte no-op since we can reach the branch with a 2-byte jmp. |
242 | However, we have not yet implemented optimal no-op sizes (they are currently | 242 | However, we have not yet implemented optimal no-op sizes (they are currently |
diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt index 6d486404200e..e55124e7c40c 100644 --- a/Documentation/sysctl/kernel.txt +++ b/Documentation/sysctl/kernel.txt | |||
@@ -33,6 +33,11 @@ show up in /proc/sys/kernel: | |||
33 | - domainname | 33 | - domainname |
34 | - hostname | 34 | - hostname |
35 | - hotplug | 35 | - hotplug |
36 | - hung_task_panic | ||
37 | - hung_task_check_count | ||
38 | - hung_task_timeout_secs | ||
39 | - hung_task_warnings | ||
40 | - kexec_load_disabled | ||
36 | - kptr_restrict | 41 | - kptr_restrict |
37 | - kstack_depth_to_print [ X86 only ] | 42 | - kstack_depth_to_print [ X86 only ] |
38 | - l2cr [ PPC only ] | 43 | - l2cr [ PPC only ] |
@@ -287,6 +292,56 @@ Default value is "/sbin/hotplug". | |||
287 | 292 | ||
288 | ============================================================== | 293 | ============================================================== |
289 | 294 | ||
295 | hung_task_panic: | ||
296 | |||
297 | Controls the kernel's behavior when a hung task is detected. | ||
298 | This file shows up if CONFIG_DETECT_HUNG_TASK is enabled. | ||
299 | |||
300 | 0: continue operation. This is the default behavior. | ||
301 | |||
302 | 1: panic immediately. | ||
303 | |||
304 | ============================================================== | ||
305 | |||
306 | hung_task_check_count: | ||
307 | |||
308 | The upper bound on the number of tasks that are checked. | ||
309 | This file shows up if CONFIG_DETECT_HUNG_TASK is enabled. | ||
310 | |||
311 | ============================================================== | ||
312 | |||
313 | hung_task_timeout_secs: | ||
314 | |||
315 | Check interval. When a task in D state did not get scheduled | ||
316 | for more than this value report a warning. | ||
317 | This file shows up if CONFIG_DETECT_HUNG_TASK is enabled. | ||
318 | |||
319 | 0: means infinite timeout - no checking done. | ||
320 | |||
321 | ============================================================== | ||
322 | |||
323 | hung_task_warning: | ||
324 | |||
325 | The maximum number of warnings to report. During a check interval | ||
326 | When this value is reached, no more the warnings will be reported. | ||
327 | This file shows up if CONFIG_DETECT_HUNG_TASK is enabled. | ||
328 | |||
329 | -1: report an infinite number of warnings. | ||
330 | |||
331 | ============================================================== | ||
332 | |||
333 | kexec_load_disabled: | ||
334 | |||
335 | A toggle indicating if the kexec_load syscall has been disabled. This | ||
336 | value defaults to 0 (false: kexec_load enabled), but can be set to 1 | ||
337 | (true: kexec_load disabled). Once true, kexec can no longer be used, and | ||
338 | the toggle cannot be set back to false. This allows a kexec image to be | ||
339 | loaded before disabling the syscall, allowing a system to set up (and | ||
340 | later use) an image without it being altered. Generally used together | ||
341 | with the "modules_disabled" sysctl. | ||
342 | |||
343 | ============================================================== | ||
344 | |||
290 | kptr_restrict: | 345 | kptr_restrict: |
291 | 346 | ||
292 | This toggle indicates whether restrictions are placed on | 347 | This toggle indicates whether restrictions are placed on |
@@ -331,7 +386,7 @@ A toggle value indicating if modules are allowed to be loaded | |||
331 | in an otherwise modular kernel. This toggle defaults to off | 386 | in an otherwise modular kernel. This toggle defaults to off |
332 | (0), but can be set true (1). Once true, modules can be | 387 | (0), but can be set true (1). Once true, modules can be |
333 | neither loaded nor unloaded, and the toggle cannot be set back | 388 | neither loaded nor unloaded, and the toggle cannot be set back |
334 | to false. | 389 | to false. Generally used with the "kexec_load_disabled" toggle. |
335 | 390 | ||
336 | ============================================================== | 391 | ============================================================== |
337 | 392 | ||
diff --git a/Documentation/sysctl/vm.txt b/Documentation/sysctl/vm.txt index 1fbd4eb7b64a..d614a9b6a280 100644 --- a/Documentation/sysctl/vm.txt +++ b/Documentation/sysctl/vm.txt | |||
@@ -47,6 +47,7 @@ Currently, these files are in /proc/sys/vm: | |||
47 | - numa_zonelist_order | 47 | - numa_zonelist_order |
48 | - oom_dump_tasks | 48 | - oom_dump_tasks |
49 | - oom_kill_allocating_task | 49 | - oom_kill_allocating_task |
50 | - overcommit_kbytes | ||
50 | - overcommit_memory | 51 | - overcommit_memory |
51 | - overcommit_ratio | 52 | - overcommit_ratio |
52 | - page-cluster | 53 | - page-cluster |
@@ -574,6 +575,17 @@ The default value is 0. | |||
574 | 575 | ||
575 | ============================================================== | 576 | ============================================================== |
576 | 577 | ||
578 | overcommit_kbytes: | ||
579 | |||
580 | When overcommit_memory is set to 2, the committed address space is not | ||
581 | permitted to exceed swap plus this amount of physical RAM. See below. | ||
582 | |||
583 | Note: overcommit_kbytes is the counterpart of overcommit_ratio. Only one | ||
584 | of them may be specified at a time. Setting one disables the other (which | ||
585 | then appears as 0 when read). | ||
586 | |||
587 | ============================================================== | ||
588 | |||
577 | overcommit_memory: | 589 | overcommit_memory: |
578 | 590 | ||
579 | This value contains a flag that enables memory overcommitment. | 591 | This value contains a flag that enables memory overcommitment. |
@@ -684,7 +696,9 @@ swappiness | |||
684 | 696 | ||
685 | This control is used to define how aggressive the kernel will swap | 697 | This control is used to define how aggressive the kernel will swap |
686 | memory pages. Higher values will increase agressiveness, lower values | 698 | memory pages. Higher values will increase agressiveness, lower values |
687 | decrease the amount of swap. | 699 | decrease the amount of swap. A value of 0 instructs the kernel not to |
700 | initiate swap until the amount of free and file-backed pages is less | ||
701 | than the high water mark in a zone. | ||
688 | 702 | ||
689 | The default value is 60. | 703 | The default value is 60. |
690 | 704 | ||
diff --git a/Documentation/trace/events.txt b/Documentation/trace/events.txt index 37732a220d33..c94435df2037 100644 --- a/Documentation/trace/events.txt +++ b/Documentation/trace/events.txt | |||
@@ -287,3 +287,210 @@ their old filters): | |||
287 | prev_pid == 0 | 287 | prev_pid == 0 |
288 | # cat sched_wakeup/filter | 288 | # cat sched_wakeup/filter |
289 | common_pid == 0 | 289 | common_pid == 0 |
290 | |||
291 | 6. Event triggers | ||
292 | ================= | ||
293 | |||
294 | Trace events can be made to conditionally invoke trigger 'commands' | ||
295 | which can take various forms and are described in detail below; | ||
296 | examples would be enabling or disabling other trace events or invoking | ||
297 | a stack trace whenever the trace event is hit. Whenever a trace event | ||
298 | with attached triggers is invoked, the set of trigger commands | ||
299 | associated with that event is invoked. Any given trigger can | ||
300 | additionally have an event filter of the same form as described in | ||
301 | section 5 (Event filtering) associated with it - the command will only | ||
302 | be invoked if the event being invoked passes the associated filter. | ||
303 | If no filter is associated with the trigger, it always passes. | ||
304 | |||
305 | Triggers are added to and removed from a particular event by writing | ||
306 | trigger expressions to the 'trigger' file for the given event. | ||
307 | |||
308 | A given event can have any number of triggers associated with it, | ||
309 | subject to any restrictions that individual commands may have in that | ||
310 | regard. | ||
311 | |||
312 | Event triggers are implemented on top of "soft" mode, which means that | ||
313 | whenever a trace event has one or more triggers associated with it, | ||
314 | the event is activated even if it isn't actually enabled, but is | ||
315 | disabled in a "soft" mode. That is, the tracepoint will be called, | ||
316 | but just will not be traced, unless of course it's actually enabled. | ||
317 | This scheme allows triggers to be invoked even for events that aren't | ||
318 | enabled, and also allows the current event filter implementation to be | ||
319 | used for conditionally invoking triggers. | ||
320 | |||
321 | The syntax for event triggers is roughly based on the syntax for | ||
322 | set_ftrace_filter 'ftrace filter commands' (see the 'Filter commands' | ||
323 | section of Documentation/trace/ftrace.txt), but there are major | ||
324 | differences and the implementation isn't currently tied to it in any | ||
325 | way, so beware about making generalizations between the two. | ||
326 | |||
327 | 6.1 Expression syntax | ||
328 | --------------------- | ||
329 | |||
330 | Triggers are added by echoing the command to the 'trigger' file: | ||
331 | |||
332 | # echo 'command[:count] [if filter]' > trigger | ||
333 | |||
334 | Triggers are removed by echoing the same command but starting with '!' | ||
335 | to the 'trigger' file: | ||
336 | |||
337 | # echo '!command[:count] [if filter]' > trigger | ||
338 | |||
339 | The [if filter] part isn't used in matching commands when removing, so | ||
340 | leaving that off in a '!' command will accomplish the same thing as | ||
341 | having it in. | ||
342 | |||
343 | The filter syntax is the same as that described in the 'Event | ||
344 | filtering' section above. | ||
345 | |||
346 | For ease of use, writing to the trigger file using '>' currently just | ||
347 | adds or removes a single trigger and there's no explicit '>>' support | ||
348 | ('>' actually behaves like '>>') or truncation support to remove all | ||
349 | triggers (you have to use '!' for each one added.) | ||
350 | |||
351 | 6.2 Supported trigger commands | ||
352 | ------------------------------ | ||
353 | |||
354 | The following commands are supported: | ||
355 | |||
356 | - enable_event/disable_event | ||
357 | |||
358 | These commands can enable or disable another trace event whenever | ||
359 | the triggering event is hit. When these commands are registered, | ||
360 | the other trace event is activated, but disabled in a "soft" mode. | ||
361 | That is, the tracepoint will be called, but just will not be traced. | ||
362 | The event tracepoint stays in this mode as long as there's a trigger | ||
363 | in effect that can trigger it. | ||
364 | |||
365 | For example, the following trigger causes kmalloc events to be | ||
366 | traced when a read system call is entered, and the :1 at the end | ||
367 | specifies that this enablement happens only once: | ||
368 | |||
369 | # echo 'enable_event:kmem:kmalloc:1' > \ | ||
370 | /sys/kernel/debug/tracing/events/syscalls/sys_enter_read/trigger | ||
371 | |||
372 | The following trigger causes kmalloc events to stop being traced | ||
373 | when a read system call exits. This disablement happens on every | ||
374 | read system call exit: | ||
375 | |||
376 | # echo 'disable_event:kmem:kmalloc' > \ | ||
377 | /sys/kernel/debug/tracing/events/syscalls/sys_exit_read/trigger | ||
378 | |||
379 | The format is: | ||
380 | |||
381 | enable_event:<system>:<event>[:count] | ||
382 | disable_event:<system>:<event>[:count] | ||
383 | |||
384 | To remove the above commands: | ||
385 | |||
386 | # echo '!enable_event:kmem:kmalloc:1' > \ | ||
387 | /sys/kernel/debug/tracing/events/syscalls/sys_enter_read/trigger | ||
388 | |||
389 | # echo '!disable_event:kmem:kmalloc' > \ | ||
390 | /sys/kernel/debug/tracing/events/syscalls/sys_exit_read/trigger | ||
391 | |||
392 | Note that there can be any number of enable/disable_event triggers | ||
393 | per triggering event, but there can only be one trigger per | ||
394 | triggered event. e.g. sys_enter_read can have triggers enabling both | ||
395 | kmem:kmalloc and sched:sched_switch, but can't have two kmem:kmalloc | ||
396 | versions such as kmem:kmalloc and kmem:kmalloc:1 or 'kmem:kmalloc if | ||
397 | bytes_req == 256' and 'kmem:kmalloc if bytes_alloc == 256' (they | ||
398 | could be combined into a single filter on kmem:kmalloc though). | ||
399 | |||
400 | - stacktrace | ||
401 | |||
402 | This command dumps a stacktrace in the trace buffer whenever the | ||
403 | triggering event occurs. | ||
404 | |||
405 | For example, the following trigger dumps a stacktrace every time the | ||
406 | kmalloc tracepoint is hit: | ||
407 | |||
408 | # echo 'stacktrace' > \ | ||
409 | /sys/kernel/debug/tracing/events/kmem/kmalloc/trigger | ||
410 | |||
411 | The following trigger dumps a stacktrace the first 5 times a kmalloc | ||
412 | request happens with a size >= 64K | ||
413 | |||
414 | # echo 'stacktrace:5 if bytes_req >= 65536' > \ | ||
415 | /sys/kernel/debug/tracing/events/kmem/kmalloc/trigger | ||
416 | |||
417 | The format is: | ||
418 | |||
419 | stacktrace[:count] | ||
420 | |||
421 | To remove the above commands: | ||
422 | |||
423 | # echo '!stacktrace' > \ | ||
424 | /sys/kernel/debug/tracing/events/kmem/kmalloc/trigger | ||
425 | |||
426 | # echo '!stacktrace:5 if bytes_req >= 65536' > \ | ||
427 | /sys/kernel/debug/tracing/events/kmem/kmalloc/trigger | ||
428 | |||
429 | The latter can also be removed more simply by the following (without | ||
430 | the filter): | ||
431 | |||
432 | # echo '!stacktrace:5' > \ | ||
433 | /sys/kernel/debug/tracing/events/kmem/kmalloc/trigger | ||
434 | |||
435 | Note that there can be only one stacktrace trigger per triggering | ||
436 | event. | ||
437 | |||
438 | - snapshot | ||
439 | |||
440 | This command causes a snapshot to be triggered whenever the | ||
441 | triggering event occurs. | ||
442 | |||
443 | The following command creates a snapshot every time a block request | ||
444 | queue is unplugged with a depth > 1. If you were tracing a set of | ||
445 | events or functions at the time, the snapshot trace buffer would | ||
446 | capture those events when the trigger event occured: | ||
447 | |||
448 | # echo 'snapshot if nr_rq > 1' > \ | ||
449 | /sys/kernel/debug/tracing/events/block/block_unplug/trigger | ||
450 | |||
451 | To only snapshot once: | ||
452 | |||
453 | # echo 'snapshot:1 if nr_rq > 1' > \ | ||
454 | /sys/kernel/debug/tracing/events/block/block_unplug/trigger | ||
455 | |||
456 | To remove the above commands: | ||
457 | |||
458 | # echo '!snapshot if nr_rq > 1' > \ | ||
459 | /sys/kernel/debug/tracing/events/block/block_unplug/trigger | ||
460 | |||
461 | # echo '!snapshot:1 if nr_rq > 1' > \ | ||
462 | /sys/kernel/debug/tracing/events/block/block_unplug/trigger | ||
463 | |||
464 | Note that there can be only one snapshot trigger per triggering | ||
465 | event. | ||
466 | |||
467 | - traceon/traceoff | ||
468 | |||
469 | These commands turn tracing on and off when the specified events are | ||
470 | hit. The parameter determines how many times the tracing system is | ||
471 | turned on and off. If unspecified, there is no limit. | ||
472 | |||
473 | The following command turns tracing off the first time a block | ||
474 | request queue is unplugged with a depth > 1. If you were tracing a | ||
475 | set of events or functions at the time, you could then examine the | ||
476 | trace buffer to see the sequence of events that led up to the | ||
477 | trigger event: | ||
478 | |||
479 | # echo 'traceoff:1 if nr_rq > 1' > \ | ||
480 | /sys/kernel/debug/tracing/events/block/block_unplug/trigger | ||
481 | |||
482 | To always disable tracing when nr_rq > 1 : | ||
483 | |||
484 | # echo 'traceoff if nr_rq > 1' > \ | ||
485 | /sys/kernel/debug/tracing/events/block/block_unplug/trigger | ||
486 | |||
487 | To remove the above commands: | ||
488 | |||
489 | # echo '!traceoff:1 if nr_rq > 1' > \ | ||
490 | /sys/kernel/debug/tracing/events/block/block_unplug/trigger | ||
491 | |||
492 | # echo '!traceoff if nr_rq > 1' > \ | ||
493 | /sys/kernel/debug/tracing/events/block/block_unplug/trigger | ||
494 | |||
495 | Note that there can be only one traceon or traceoff trigger per | ||
496 | triggering event. | ||
diff --git a/Documentation/trace/postprocess/trace-vmscan-postprocess.pl b/Documentation/trace/postprocess/trace-vmscan-postprocess.pl index 4a37c4759cd2..00e425faa2fd 100644 --- a/Documentation/trace/postprocess/trace-vmscan-postprocess.pl +++ b/Documentation/trace/postprocess/trace-vmscan-postprocess.pl | |||
@@ -123,7 +123,7 @@ my $regex_writepage; | |||
123 | 123 | ||
124 | # Static regex used. Specified like this for readability and for use with /o | 124 | # Static regex used. Specified like this for readability and for use with /o |
125 | # (process_pid) (cpus ) ( time ) (tpoint ) (details) | 125 | # (process_pid) (cpus ) ( time ) (tpoint ) (details) |
126 | my $regex_traceevent = '\s*([a-zA-Z0-9-]*)\s*(\[[0-9]*\])\s*([0-9.]*):\s*([a-zA-Z_]*):\s*(.*)'; | 126 | my $regex_traceevent = '\s*([a-zA-Z0-9-]*)\s*(\[[0-9]*\])(\s*[dX.][Nnp.][Hhs.][0-9a-fA-F.]*|)\s*([0-9.]*):\s*([a-zA-Z_]*):\s*(.*)'; |
127 | my $regex_statname = '[-0-9]*\s\((.*)\).*'; | 127 | my $regex_statname = '[-0-9]*\s\((.*)\).*'; |
128 | my $regex_statppid = '[-0-9]*\s\(.*\)\s[A-Za-z]\s([0-9]*).*'; | 128 | my $regex_statppid = '[-0-9]*\s\(.*\)\s[A-Za-z]\s([0-9]*).*'; |
129 | 129 | ||
@@ -270,8 +270,8 @@ EVENT_PROCESS: | |||
270 | while ($traceevent = <STDIN>) { | 270 | while ($traceevent = <STDIN>) { |
271 | if ($traceevent =~ /$regex_traceevent/o) { | 271 | if ($traceevent =~ /$regex_traceevent/o) { |
272 | $process_pid = $1; | 272 | $process_pid = $1; |
273 | $timestamp = $3; | 273 | $timestamp = $4; |
274 | $tracepoint = $4; | 274 | $tracepoint = $5; |
275 | 275 | ||
276 | $process_pid =~ /(.*)-([0-9]*)$/; | 276 | $process_pid =~ /(.*)-([0-9]*)$/; |
277 | my $process = $1; | 277 | my $process = $1; |
@@ -299,7 +299,7 @@ EVENT_PROCESS: | |||
299 | $perprocesspid{$process_pid}->{MM_VMSCAN_DIRECT_RECLAIM_BEGIN}++; | 299 | $perprocesspid{$process_pid}->{MM_VMSCAN_DIRECT_RECLAIM_BEGIN}++; |
300 | $perprocesspid{$process_pid}->{STATE_DIRECT_BEGIN} = $timestamp; | 300 | $perprocesspid{$process_pid}->{STATE_DIRECT_BEGIN} = $timestamp; |
301 | 301 | ||
302 | $details = $5; | 302 | $details = $6; |
303 | if ($details !~ /$regex_direct_begin/o) { | 303 | if ($details !~ /$regex_direct_begin/o) { |
304 | print "WARNING: Failed to parse mm_vmscan_direct_reclaim_begin as expected\n"; | 304 | print "WARNING: Failed to parse mm_vmscan_direct_reclaim_begin as expected\n"; |
305 | print " $details\n"; | 305 | print " $details\n"; |
@@ -322,7 +322,7 @@ EVENT_PROCESS: | |||
322 | $perprocesspid{$process_pid}->{HIGH_DIRECT_RECLAIM_LATENCY}[$index] = "$order-$latency"; | 322 | $perprocesspid{$process_pid}->{HIGH_DIRECT_RECLAIM_LATENCY}[$index] = "$order-$latency"; |
323 | } | 323 | } |
324 | } elsif ($tracepoint eq "mm_vmscan_kswapd_wake") { | 324 | } elsif ($tracepoint eq "mm_vmscan_kswapd_wake") { |
325 | $details = $5; | 325 | $details = $6; |
326 | if ($details !~ /$regex_kswapd_wake/o) { | 326 | if ($details !~ /$regex_kswapd_wake/o) { |
327 | print "WARNING: Failed to parse mm_vmscan_kswapd_wake as expected\n"; | 327 | print "WARNING: Failed to parse mm_vmscan_kswapd_wake as expected\n"; |
328 | print " $details\n"; | 328 | print " $details\n"; |
@@ -356,7 +356,7 @@ EVENT_PROCESS: | |||
356 | } elsif ($tracepoint eq "mm_vmscan_wakeup_kswapd") { | 356 | } elsif ($tracepoint eq "mm_vmscan_wakeup_kswapd") { |
357 | $perprocesspid{$process_pid}->{MM_VMSCAN_WAKEUP_KSWAPD}++; | 357 | $perprocesspid{$process_pid}->{MM_VMSCAN_WAKEUP_KSWAPD}++; |
358 | 358 | ||
359 | $details = $5; | 359 | $details = $6; |
360 | if ($details !~ /$regex_wakeup_kswapd/o) { | 360 | if ($details !~ /$regex_wakeup_kswapd/o) { |
361 | print "WARNING: Failed to parse mm_vmscan_wakeup_kswapd as expected\n"; | 361 | print "WARNING: Failed to parse mm_vmscan_wakeup_kswapd as expected\n"; |
362 | print " $details\n"; | 362 | print " $details\n"; |
@@ -366,7 +366,7 @@ EVENT_PROCESS: | |||
366 | my $order = $3; | 366 | my $order = $3; |
367 | $perprocesspid{$process_pid}->{MM_VMSCAN_WAKEUP_KSWAPD_PERORDER}[$order]++; | 367 | $perprocesspid{$process_pid}->{MM_VMSCAN_WAKEUP_KSWAPD_PERORDER}[$order]++; |
368 | } elsif ($tracepoint eq "mm_vmscan_lru_isolate") { | 368 | } elsif ($tracepoint eq "mm_vmscan_lru_isolate") { |
369 | $details = $5; | 369 | $details = $6; |
370 | if ($details !~ /$regex_lru_isolate/o) { | 370 | if ($details !~ /$regex_lru_isolate/o) { |
371 | print "WARNING: Failed to parse mm_vmscan_lru_isolate as expected\n"; | 371 | print "WARNING: Failed to parse mm_vmscan_lru_isolate as expected\n"; |
372 | print " $details\n"; | 372 | print " $details\n"; |
@@ -387,7 +387,7 @@ EVENT_PROCESS: | |||
387 | } | 387 | } |
388 | $perprocesspid{$process_pid}->{HIGH_NR_CONTIG_DIRTY} += $nr_contig_dirty; | 388 | $perprocesspid{$process_pid}->{HIGH_NR_CONTIG_DIRTY} += $nr_contig_dirty; |
389 | } elsif ($tracepoint eq "mm_vmscan_lru_shrink_inactive") { | 389 | } elsif ($tracepoint eq "mm_vmscan_lru_shrink_inactive") { |
390 | $details = $5; | 390 | $details = $6; |
391 | if ($details !~ /$regex_lru_shrink_inactive/o) { | 391 | if ($details !~ /$regex_lru_shrink_inactive/o) { |
392 | print "WARNING: Failed to parse mm_vmscan_lru_shrink_inactive as expected\n"; | 392 | print "WARNING: Failed to parse mm_vmscan_lru_shrink_inactive as expected\n"; |
393 | print " $details\n"; | 393 | print " $details\n"; |
@@ -397,7 +397,7 @@ EVENT_PROCESS: | |||
397 | my $nr_reclaimed = $4; | 397 | my $nr_reclaimed = $4; |
398 | $perprocesspid{$process_pid}->{HIGH_NR_RECLAIMED} += $nr_reclaimed; | 398 | $perprocesspid{$process_pid}->{HIGH_NR_RECLAIMED} += $nr_reclaimed; |
399 | } elsif ($tracepoint eq "mm_vmscan_writepage") { | 399 | } elsif ($tracepoint eq "mm_vmscan_writepage") { |
400 | $details = $5; | 400 | $details = $6; |
401 | if ($details !~ /$regex_writepage/o) { | 401 | if ($details !~ /$regex_writepage/o) { |
402 | print "WARNING: Failed to parse mm_vmscan_writepage as expected\n"; | 402 | print "WARNING: Failed to parse mm_vmscan_writepage as expected\n"; |
403 | print " $details\n"; | 403 | print " $details\n"; |
diff --git a/Documentation/trace/uprobetracer.txt b/Documentation/trace/uprobetracer.txt index d9c3e682312c..f1cf9a34ad9d 100644 --- a/Documentation/trace/uprobetracer.txt +++ b/Documentation/trace/uprobetracer.txt | |||
@@ -19,18 +19,44 @@ user to calculate the offset of the probepoint in the object. | |||
19 | 19 | ||
20 | Synopsis of uprobe_tracer | 20 | Synopsis of uprobe_tracer |
21 | ------------------------- | 21 | ------------------------- |
22 | p[:[GRP/]EVENT] PATH:SYMBOL[+offs] [FETCHARGS] : Set a uprobe | 22 | p[:[GRP/]EVENT] PATH:OFFSET [FETCHARGS] : Set a uprobe |
23 | r[:[GRP/]EVENT] PATH:SYMBOL[+offs] [FETCHARGS] : Set a return uprobe (uretprobe) | 23 | r[:[GRP/]EVENT] PATH:OFFSET [FETCHARGS] : Set a return uprobe (uretprobe) |
24 | -:[GRP/]EVENT : Clear uprobe or uretprobe event | 24 | -:[GRP/]EVENT : Clear uprobe or uretprobe event |
25 | 25 | ||
26 | GRP : Group name. If omitted, "uprobes" is the default value. | 26 | GRP : Group name. If omitted, "uprobes" is the default value. |
27 | EVENT : Event name. If omitted, the event name is generated based | 27 | EVENT : Event name. If omitted, the event name is generated based |
28 | on SYMBOL+offs. | 28 | on PATH+OFFSET. |
29 | PATH : Path to an executable or a library. | 29 | PATH : Path to an executable or a library. |
30 | SYMBOL[+offs] : Symbol+offset where the probe is inserted. | 30 | OFFSET : Offset where the probe is inserted. |
31 | 31 | ||
32 | FETCHARGS : Arguments. Each probe can have up to 128 args. | 32 | FETCHARGS : Arguments. Each probe can have up to 128 args. |
33 | %REG : Fetch register REG | 33 | %REG : Fetch register REG |
34 | @ADDR : Fetch memory at ADDR (ADDR should be in userspace) | ||
35 | @+OFFSET : Fetch memory at OFFSET (OFFSET from same file as PATH) | ||
36 | $stackN : Fetch Nth entry of stack (N >= 0) | ||
37 | $stack : Fetch stack address. | ||
38 | $retval : Fetch return value.(*) | ||
39 | +|-offs(FETCHARG) : Fetch memory at FETCHARG +|- offs address.(**) | ||
40 | NAME=FETCHARG : Set NAME as the argument name of FETCHARG. | ||
41 | FETCHARG:TYPE : Set TYPE as the type of FETCHARG. Currently, basic types | ||
42 | (u8/u16/u32/u64/s8/s16/s32/s64), "string" and bitfield | ||
43 | are supported. | ||
44 | |||
45 | (*) only for return probe. | ||
46 | (**) this is useful for fetching a field of data structures. | ||
47 | |||
48 | Types | ||
49 | ----- | ||
50 | Several types are supported for fetch-args. Uprobe tracer will access memory | ||
51 | by given type. Prefix 's' and 'u' means those types are signed and unsigned | ||
52 | respectively. Traced arguments are shown in decimal (signed) or hex (unsigned). | ||
53 | String type is a special type, which fetches a "null-terminated" string from | ||
54 | user space. | ||
55 | Bitfield is another special type, which takes 3 parameters, bit-width, bit- | ||
56 | offset, and container-size (usually 32). The syntax is; | ||
57 | |||
58 | b<bit-width>@<bit-offset>/<container-size> | ||
59 | |||
34 | 60 | ||
35 | Event Profiling | 61 | Event Profiling |
36 | --------------- | 62 | --------------- |
diff --git a/Documentation/unaligned-memory-access.txt b/Documentation/unaligned-memory-access.txt index f866c72291bf..a445da098bc6 100644 --- a/Documentation/unaligned-memory-access.txt +++ b/Documentation/unaligned-memory-access.txt | |||
@@ -137,24 +137,34 @@ Code that causes unaligned access | |||
137 | ================================= | 137 | ================================= |
138 | 138 | ||
139 | With the above in mind, let's move onto a real life example of a function | 139 | With the above in mind, let's move onto a real life example of a function |
140 | that can cause an unaligned memory access. The following function adapted | 140 | that can cause an unaligned memory access. The following function taken |
141 | from include/linux/etherdevice.h is an optimized routine to compare two | 141 | from include/linux/etherdevice.h is an optimized routine to compare two |
142 | ethernet MAC addresses for equality. | 142 | ethernet MAC addresses for equality. |
143 | 143 | ||
144 | unsigned int compare_ether_addr(const u8 *addr1, const u8 *addr2) | 144 | bool ether_addr_equal(const u8 *addr1, const u8 *addr2) |
145 | { | 145 | { |
146 | const u16 *a = (const u16 *) addr1; | 146 | #ifdef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS |
147 | const u16 *b = (const u16 *) addr2; | 147 | u32 fold = ((*(const u32 *)addr1) ^ (*(const u32 *)addr2)) | |
148 | ((*(const u16 *)(addr1 + 4)) ^ (*(const u16 *)(addr2 + 4))); | ||
149 | |||
150 | return fold == 0; | ||
151 | #else | ||
152 | const u16 *a = (const u16 *)addr1; | ||
153 | const u16 *b = (const u16 *)addr2; | ||
148 | return ((a[0] ^ b[0]) | (a[1] ^ b[1]) | (a[2] ^ b[2])) != 0; | 154 | return ((a[0] ^ b[0]) | (a[1] ^ b[1]) | (a[2] ^ b[2])) != 0; |
155 | #endif | ||
149 | } | 156 | } |
150 | 157 | ||
151 | In the above function, the reference to a[0] causes 2 bytes (16 bits) to | 158 | In the above function, when the hardware has efficient unaligned access |
152 | be read from memory starting at address addr1. Think about what would happen | 159 | capability, there is no issue with this code. But when the hardware isn't |
153 | if addr1 was an odd address such as 0x10003. (Hint: it'd be an unaligned | 160 | able to access memory on arbitrary boundaries, the reference to a[0] causes |
154 | access.) | 161 | 2 bytes (16 bits) to be read from memory starting at address addr1. |
162 | |||
163 | Think about what would happen if addr1 was an odd address such as 0x10003. | ||
164 | (Hint: it'd be an unaligned access.) | ||
155 | 165 | ||
156 | Despite the potential unaligned access problems with the above function, it | 166 | Despite the potential unaligned access problems with the above function, it |
157 | is included in the kernel anyway but is understood to only work on | 167 | is included in the kernel anyway but is understood to only work normally on |
158 | 16-bit-aligned addresses. It is up to the caller to ensure this alignment or | 168 | 16-bit-aligned addresses. It is up to the caller to ensure this alignment or |
159 | not use this function at all. This alignment-unsafe function is still useful | 169 | not use this function at all. This alignment-unsafe function is still useful |
160 | as it is a decent optimization for the cases when you can ensure alignment, | 170 | as it is a decent optimization for the cases when you can ensure alignment, |
diff --git a/Documentation/usb/gadget_multi.txt b/Documentation/usb/gadget_multi.txt index 80f4ef0eb75b..7d66a8636cb5 100644 --- a/Documentation/usb/gadget_multi.txt +++ b/Documentation/usb/gadget_multi.txt | |||
@@ -14,7 +14,7 @@ A CDC ECM (Ethernet) function may be turned on via a Kconfig option | |||
14 | and RNDIS can be turned off. If they are both enabled the gadget will | 14 | and RNDIS can be turned off. If they are both enabled the gadget will |
15 | have two configurations -- one with RNDIS and another with CDC ECM[3]. | 15 | have two configurations -- one with RNDIS and another with CDC ECM[3]. |
16 | 16 | ||
17 | Please not that if you use non-standard configuration (that is enable | 17 | Please note that if you use non-standard configuration (that is enable |
18 | CDC ECM) you may need to change vendor and/or product ID. | 18 | CDC ECM) you may need to change vendor and/or product ID. |
19 | 19 | ||
20 | * Host drivers | 20 | * Host drivers |
diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt index a30035dd4c26..6cd63a9010fb 100644 --- a/Documentation/virtual/kvm/api.txt +++ b/Documentation/virtual/kvm/api.txt | |||
@@ -1838,6 +1838,7 @@ registers, find a list below: | |||
1838 | PPC | KVM_REG_PPC_LPCR | 64 | 1838 | PPC | KVM_REG_PPC_LPCR | 64 |
1839 | PPC | KVM_REG_PPC_PPR | 64 | 1839 | PPC | KVM_REG_PPC_PPR | 64 |
1840 | PPC | KVM_REG_PPC_ARCH_COMPAT 32 | 1840 | PPC | KVM_REG_PPC_ARCH_COMPAT 32 |
1841 | PPC | KVM_REG_PPC_DABRX | 32 | ||
1841 | PPC | KVM_REG_PPC_TM_GPR0 | 64 | 1842 | PPC | KVM_REG_PPC_TM_GPR0 | 64 |
1842 | ... | 1843 | ... |
1843 | PPC | KVM_REG_PPC_TM_GPR31 | 64 | 1844 | PPC | KVM_REG_PPC_TM_GPR31 | 64 |
@@ -2104,7 +2105,7 @@ Returns: 0 on success, -1 on error | |||
2104 | Allows setting an eventfd to directly trigger a guest interrupt. | 2105 | Allows setting an eventfd to directly trigger a guest interrupt. |
2105 | kvm_irqfd.fd specifies the file descriptor to use as the eventfd and | 2106 | kvm_irqfd.fd specifies the file descriptor to use as the eventfd and |
2106 | kvm_irqfd.gsi specifies the irqchip pin toggled by this event. When | 2107 | kvm_irqfd.gsi specifies the irqchip pin toggled by this event. When |
2107 | an event is tiggered on the eventfd, an interrupt is injected into | 2108 | an event is triggered on the eventfd, an interrupt is injected into |
2108 | the guest using the specified gsi pin. The irqfd is removed using | 2109 | the guest using the specified gsi pin. The irqfd is removed using |
2109 | the KVM_IRQFD_FLAG_DEASSIGN flag, specifying both kvm_irqfd.fd | 2110 | the KVM_IRQFD_FLAG_DEASSIGN flag, specifying both kvm_irqfd.fd |
2110 | and kvm_irqfd.gsi. | 2111 | and kvm_irqfd.gsi. |
@@ -2115,7 +2116,7 @@ interrupts. When KVM_IRQFD_FLAG_RESAMPLE is set the user must pass an | |||
2115 | additional eventfd in the kvm_irqfd.resamplefd field. When operating | 2116 | additional eventfd in the kvm_irqfd.resamplefd field. When operating |
2116 | in resample mode, posting of an interrupt through kvm_irq.fd asserts | 2117 | in resample mode, posting of an interrupt through kvm_irq.fd asserts |
2117 | the specified gsi in the irqchip. When the irqchip is resampled, such | 2118 | the specified gsi in the irqchip. When the irqchip is resampled, such |
2118 | as from an EOI, the gsi is de-asserted and the user is notifed via | 2119 | as from an EOI, the gsi is de-asserted and the user is notified via |
2119 | kvm_irqfd.resamplefd. It is the user's responsibility to re-queue | 2120 | kvm_irqfd.resamplefd. It is the user's responsibility to re-queue |
2120 | the interrupt if the device making use of it still requires service. | 2121 | the interrupt if the device making use of it still requires service. |
2121 | Note that closing the resamplefd is not sufficient to disable the | 2122 | Note that closing the resamplefd is not sufficient to disable the |
@@ -2327,7 +2328,7 @@ current state. "addr" is ignored. | |||
2327 | Capability: basic | 2328 | Capability: basic |
2328 | Architectures: arm, arm64 | 2329 | Architectures: arm, arm64 |
2329 | Type: vcpu ioctl | 2330 | Type: vcpu ioctl |
2330 | Parameters: struct struct kvm_vcpu_init (in) | 2331 | Parameters: struct kvm_vcpu_init (in) |
2331 | Returns: 0 on success; -1 on error | 2332 | Returns: 0 on success; -1 on error |
2332 | Errors: | 2333 | Errors: |
2333 | EINVAL: the target is unknown, or the combination of features is invalid. | 2334 | EINVAL: the target is unknown, or the combination of features is invalid. |
@@ -2391,7 +2392,8 @@ struct kvm_reg_list { | |||
2391 | This ioctl returns the guest registers that are supported for the | 2392 | This ioctl returns the guest registers that are supported for the |
2392 | KVM_GET_ONE_REG/KVM_SET_ONE_REG calls. | 2393 | KVM_GET_ONE_REG/KVM_SET_ONE_REG calls. |
2393 | 2394 | ||
2394 | 4.85 KVM_ARM_SET_DEVICE_ADDR | 2395 | |
2396 | 4.85 KVM_ARM_SET_DEVICE_ADDR (deprecated) | ||
2395 | 2397 | ||
2396 | Capability: KVM_CAP_ARM_SET_DEVICE_ADDR | 2398 | Capability: KVM_CAP_ARM_SET_DEVICE_ADDR |
2397 | Architectures: arm, arm64 | 2399 | Architectures: arm, arm64 |
@@ -2429,6 +2431,10 @@ must be called after calling KVM_CREATE_IRQCHIP, but before calling | |||
2429 | KVM_RUN on any of the VCPUs. Calling this ioctl twice for any of the | 2431 | KVM_RUN on any of the VCPUs. Calling this ioctl twice for any of the |
2430 | base addresses will return -EEXIST. | 2432 | base addresses will return -EEXIST. |
2431 | 2433 | ||
2434 | Note, this IOCTL is deprecated and the more flexible SET/GET_DEVICE_ATTR API | ||
2435 | should be used instead. | ||
2436 | |||
2437 | |||
2432 | 4.86 KVM_PPC_RTAS_DEFINE_TOKEN | 2438 | 4.86 KVM_PPC_RTAS_DEFINE_TOKEN |
2433 | 2439 | ||
2434 | Capability: KVM_CAP_PPC_RTAS | 2440 | Capability: KVM_CAP_PPC_RTAS |
diff --git a/Documentation/virtual/kvm/devices/arm-vgic.txt b/Documentation/virtual/kvm/devices/arm-vgic.txt new file mode 100644 index 000000000000..7f4e91b1316b --- /dev/null +++ b/Documentation/virtual/kvm/devices/arm-vgic.txt | |||
@@ -0,0 +1,73 @@ | |||
1 | ARM Virtual Generic Interrupt Controller (VGIC) | ||
2 | =============================================== | ||
3 | |||
4 | Device types supported: | ||
5 | KVM_DEV_TYPE_ARM_VGIC_V2 ARM Generic Interrupt Controller v2.0 | ||
6 | |||
7 | Only one VGIC instance may be instantiated through either this API or the | ||
8 | legacy KVM_CREATE_IRQCHIP api. The created VGIC will act as the VM interrupt | ||
9 | controller, requiring emulated user-space devices to inject interrupts to the | ||
10 | VGIC instead of directly to CPUs. | ||
11 | |||
12 | Groups: | ||
13 | KVM_DEV_ARM_VGIC_GRP_ADDR | ||
14 | Attributes: | ||
15 | KVM_VGIC_V2_ADDR_TYPE_DIST (rw, 64-bit) | ||
16 | Base address in the guest physical address space of the GIC distributor | ||
17 | register mappings. | ||
18 | |||
19 | KVM_VGIC_V2_ADDR_TYPE_CPU (rw, 64-bit) | ||
20 | Base address in the guest physical address space of the GIC virtual cpu | ||
21 | interface register mappings. | ||
22 | |||
23 | KVM_DEV_ARM_VGIC_GRP_DIST_REGS | ||
24 | Attributes: | ||
25 | The attr field of kvm_device_attr encodes two values: | ||
26 | bits: | 63 .... 40 | 39 .. 32 | 31 .... 0 | | ||
27 | values: | reserved | cpu id | offset | | ||
28 | |||
29 | All distributor regs are (rw, 32-bit) | ||
30 | |||
31 | The offset is relative to the "Distributor base address" as defined in the | ||
32 | GICv2 specs. Getting or setting such a register has the same effect as | ||
33 | reading or writing the register on the actual hardware from the cpu | ||
34 | specified with cpu id field. Note that most distributor fields are not | ||
35 | banked, but return the same value regardless of the cpu id used to access | ||
36 | the register. | ||
37 | Limitations: | ||
38 | - Priorities are not implemented, and registers are RAZ/WI | ||
39 | Errors: | ||
40 | -ENODEV: Getting or setting this register is not yet supported | ||
41 | -EBUSY: One or more VCPUs are running | ||
42 | |||
43 | KVM_DEV_ARM_VGIC_GRP_CPU_REGS | ||
44 | Attributes: | ||
45 | The attr field of kvm_device_attr encodes two values: | ||
46 | bits: | 63 .... 40 | 39 .. 32 | 31 .... 0 | | ||
47 | values: | reserved | cpu id | offset | | ||
48 | |||
49 | All CPU interface regs are (rw, 32-bit) | ||
50 | |||
51 | The offset specifies the offset from the "CPU interface base address" as | ||
52 | defined in the GICv2 specs. Getting or setting such a register has the | ||
53 | same effect as reading or writing the register on the actual hardware. | ||
54 | |||
55 | The Active Priorities Registers APRn are implementation defined, so we set a | ||
56 | fixed format for our implementation that fits with the model of a "GICv2 | ||
57 | implementation without the security extensions" which we present to the | ||
58 | guest. This interface always exposes four register APR[0-3] describing the | ||
59 | maximum possible 128 preemption levels. The semantics of the register | ||
60 | indicate if any interrupts in a given preemption level are in the active | ||
61 | state by setting the corresponding bit. | ||
62 | |||
63 | Thus, preemption level X has one or more active interrupts if and only if: | ||
64 | |||
65 | APRn[X mod 32] == 0b1, where n = X / 32 | ||
66 | |||
67 | Bits for undefined preemption levels are RAZ/WI. | ||
68 | |||
69 | Limitations: | ||
70 | - Priorities are not implemented, and registers are RAZ/WI | ||
71 | Errors: | ||
72 | -ENODEV: Getting or setting this register is not yet supported | ||
73 | -EBUSY: One or more VCPUs are running | ||
diff --git a/Documentation/virtual/kvm/hypercalls.txt b/Documentation/virtual/kvm/hypercalls.txt index 022198e389d7..c8d040e27046 100644 --- a/Documentation/virtual/kvm/hypercalls.txt +++ b/Documentation/virtual/kvm/hypercalls.txt | |||
@@ -17,6 +17,9 @@ S390: | |||
17 | S390 uses diagnose instruction as hypercall (0x500) along with hypercall | 17 | S390 uses diagnose instruction as hypercall (0x500) along with hypercall |
18 | number in R1. | 18 | number in R1. |
19 | 19 | ||
20 | For further information on the S390 diagnose call as supported by KVM, | ||
21 | refer to Documentation/virtual/kvm/s390-diag.txt. | ||
22 | |||
20 | PowerPC: | 23 | PowerPC: |
21 | It uses R3-R10 and hypercall number in R11. R4-R11 are used as output registers. | 24 | It uses R3-R10 and hypercall number in R11. R4-R11 are used as output registers. |
22 | Return value is placed in R3. | 25 | Return value is placed in R3. |
@@ -74,7 +77,7 @@ Usage example : A vcpu of a paravirtualized guest that is busywaiting in guest | |||
74 | kernel mode for an event to occur (ex: a spinlock to become available) can | 77 | kernel mode for an event to occur (ex: a spinlock to become available) can |
75 | execute HLT instruction once it has busy-waited for more than a threshold | 78 | execute HLT instruction once it has busy-waited for more than a threshold |
76 | time-interval. Execution of HLT instruction would cause the hypervisor to put | 79 | time-interval. Execution of HLT instruction would cause the hypervisor to put |
77 | the vcpu to sleep until occurence of an appropriate event. Another vcpu of the | 80 | the vcpu to sleep until occurrence of an appropriate event. Another vcpu of the |
78 | same guest can wakeup the sleeping vcpu by issuing KVM_HC_KICK_CPU hypercall, | 81 | same guest can wakeup the sleeping vcpu by issuing KVM_HC_KICK_CPU hypercall, |
79 | specifying APIC ID (a1) of the vcpu to be woken up. An additional argument (a0) | 82 | specifying APIC ID (a1) of the vcpu to be woken up. An additional argument (a0) |
80 | is used in the hypercall for future use. | 83 | is used in the hypercall for future use. |
diff --git a/Documentation/virtual/kvm/locking.txt b/Documentation/virtual/kvm/locking.txt index f8869410d40c..d68af4dc3006 100644 --- a/Documentation/virtual/kvm/locking.txt +++ b/Documentation/virtual/kvm/locking.txt | |||
@@ -112,7 +112,7 @@ The Dirty bit is lost in this case. | |||
112 | 112 | ||
113 | In order to avoid this kind of issue, we always treat the spte as "volatile" | 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, | 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. | 115 | the spte is always atomically updated in this case. |
116 | 116 | ||
117 | 3): flush tlbs due to spte updated | 117 | 3): flush tlbs due to spte updated |
118 | If the spte is updated from writable to readonly, we should flush all TLBs, | 118 | If the spte is updated from writable to readonly, we should flush all TLBs, |
@@ -125,7 +125,7 @@ be flushed caused by this reason in mmu_spte_update() since this is a common | |||
125 | function to update spte (present -> present). | 125 | function to update spte (present -> present). |
126 | 126 | ||
127 | Since the spte is "volatile" if it can be updated out of mmu-lock, we always | 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, | 128 | atomically 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(). | 129 | See the comments in spte_has_volatile_bits() and mmu_spte_update(). |
130 | 130 | ||
131 | 3. Reference | 131 | 3. Reference |
diff --git a/Documentation/virtual/kvm/ppc-pv.txt b/Documentation/virtual/kvm/ppc-pv.txt index 4cd076febb02..4643cde517c4 100644 --- a/Documentation/virtual/kvm/ppc-pv.txt +++ b/Documentation/virtual/kvm/ppc-pv.txt | |||
@@ -115,7 +115,7 @@ If any other bit changes in the MSR, please still use mtmsr(d). | |||
115 | Patched instructions | 115 | Patched instructions |
116 | ==================== | 116 | ==================== |
117 | 117 | ||
118 | The "ld" and "std" instructions are transormed to "lwz" and "stw" instructions | 118 | The "ld" and "std" instructions are transformed to "lwz" and "stw" instructions |
119 | respectively on 32 bit systems with an added offset of 4 to accommodate for big | 119 | respectively on 32 bit systems with an added offset of 4 to accommodate for big |
120 | endianness. | 120 | endianness. |
121 | 121 | ||
diff --git a/Documentation/virtual/kvm/s390-diag.txt b/Documentation/virtual/kvm/s390-diag.txt new file mode 100644 index 000000000000..f1de4fbade15 --- /dev/null +++ b/Documentation/virtual/kvm/s390-diag.txt | |||
@@ -0,0 +1,80 @@ | |||
1 | The s390 DIAGNOSE call on KVM | ||
2 | ============================= | ||
3 | |||
4 | KVM on s390 supports the DIAGNOSE call for making hypercalls, both for | ||
5 | native hypercalls and for selected hypercalls found on other s390 | ||
6 | hypervisors. | ||
7 | |||
8 | Note that bits are numbered as by the usual s390 convention (most significant | ||
9 | bit on the left). | ||
10 | |||
11 | |||
12 | General remarks | ||
13 | --------------- | ||
14 | |||
15 | DIAGNOSE calls by the guest cause a mandatory intercept. This implies | ||
16 | all supported DIAGNOSE calls need to be handled by either KVM or its | ||
17 | userspace. | ||
18 | |||
19 | All DIAGNOSE calls supported by KVM use the RS-a format: | ||
20 | |||
21 | -------------------------------------- | ||
22 | | '83' | R1 | R3 | B2 | D2 | | ||
23 | -------------------------------------- | ||
24 | 0 8 12 16 20 31 | ||
25 | |||
26 | The second-operand address (obtained by the base/displacement calculation) | ||
27 | is not used to address data. Instead, bits 48-63 of this address specify | ||
28 | the function code, and bits 0-47 are ignored. | ||
29 | |||
30 | The supported DIAGNOSE function codes vary by the userspace used. For | ||
31 | DIAGNOSE function codes not specific to KVM, please refer to the | ||
32 | documentation for the s390 hypervisors defining them. | ||
33 | |||
34 | |||
35 | DIAGNOSE function code 'X'500' - KVM virtio functions | ||
36 | ----------------------------------------------------- | ||
37 | |||
38 | If the function code specifies 0x500, various virtio-related functions | ||
39 | are performed. | ||
40 | |||
41 | General register 1 contains the virtio subfunction code. Supported | ||
42 | virtio subfunctions depend on KVM's userspace. Generally, userspace | ||
43 | provides either s390-virtio (subcodes 0-2) or virtio-ccw (subcode 3). | ||
44 | |||
45 | Upon completion of the DIAGNOSE instruction, general register 2 contains | ||
46 | the function's return code, which is either a return code or a subcode | ||
47 | specific value. | ||
48 | |||
49 | Subcode 0 - s390-virtio notification and early console printk | ||
50 | Handled by userspace. | ||
51 | |||
52 | Subcode 1 - s390-virtio reset | ||
53 | Handled by userspace. | ||
54 | |||
55 | Subcode 2 - s390-virtio set status | ||
56 | Handled by userspace. | ||
57 | |||
58 | Subcode 3 - virtio-ccw notification | ||
59 | Handled by either userspace or KVM (ioeventfd case). | ||
60 | |||
61 | General register 2 contains a subchannel-identification word denoting | ||
62 | the subchannel of the virtio-ccw proxy device to be notified. | ||
63 | |||
64 | General register 3 contains the number of the virtqueue to be notified. | ||
65 | |||
66 | General register 4 contains a 64bit identifier for KVM usage (the | ||
67 | kvm_io_bus cookie). If general register 4 does not contain a valid | ||
68 | identifier, it is ignored. | ||
69 | |||
70 | After completion of the DIAGNOSE call, general register 2 may contain | ||
71 | a 64bit identifier (in the kvm_io_bus cookie case). | ||
72 | |||
73 | See also the virtio standard for a discussion of this hypercall. | ||
74 | |||
75 | |||
76 | DIAGNOSE function code 'X'501 - KVM breakpoint | ||
77 | ---------------------------------------------- | ||
78 | |||
79 | If the function code specifies 0x501, breakpoint functions may be performed. | ||
80 | This function code is handled by userspace. | ||
diff --git a/Documentation/virtual/kvm/timekeeping.txt b/Documentation/virtual/kvm/timekeeping.txt index df8946377cb6..76808a17ad84 100644 --- a/Documentation/virtual/kvm/timekeeping.txt +++ b/Documentation/virtual/kvm/timekeeping.txt | |||
@@ -467,7 +467,7 @@ at any time. This causes problems as the passage of real time, the injection | |||
467 | of machine interrupts and the associated clock sources are no longer completely | 467 | of machine interrupts and the associated clock sources are no longer completely |
468 | synchronized with real time. | 468 | synchronized with real time. |
469 | 469 | ||
470 | This same problem can occur on native harware to a degree, as SMM mode may | 470 | This same problem can occur on native hardware to a degree, as SMM mode may |
471 | steal cycles from the naturally on X86 systems when SMM mode is used by the | 471 | steal cycles from the naturally on X86 systems when SMM mode is used by the |
472 | BIOS, but not in such an extreme fashion. However, the fact that SMM mode may | 472 | BIOS, but not in such an extreme fashion. However, the fact that SMM mode may |
473 | cause similar problems to virtualization makes it a good justification for | 473 | cause similar problems to virtualization makes it a good justification for |
diff --git a/Documentation/vm/locking b/Documentation/vm/locking deleted file mode 100644 index f61228bd6395..000000000000 --- a/Documentation/vm/locking +++ /dev/null | |||
@@ -1,130 +0,0 @@ | |||
1 | Started Oct 1999 by Kanoj Sarcar <kanojsarcar@yahoo.com> | ||
2 | |||
3 | The intent of this file is to have an uptodate, running commentary | ||
4 | from different people about how locking and synchronization is done | ||
5 | in the Linux vm code. | ||
6 | |||
7 | page_table_lock & mmap_sem | ||
8 | -------------------------------------- | ||
9 | |||
10 | Page stealers pick processes out of the process pool and scan for | ||
11 | the best process to steal pages from. To guarantee the existence | ||
12 | of the victim mm, a mm_count inc and a mmdrop are done in swap_out(). | ||
13 | Page stealers hold kernel_lock to protect against a bunch of races. | ||
14 | The vma list of the victim mm is also scanned by the stealer, | ||
15 | and the page_table_lock is used to preserve list sanity against the | ||
16 | process adding/deleting to the list. This also guarantees existence | ||
17 | of the vma. Vma existence is not guaranteed once try_to_swap_out() | ||
18 | drops the page_table_lock. To guarantee the existence of the underlying | ||
19 | file structure, a get_file is done before the swapout() method is | ||
20 | invoked. The page passed into swapout() is guaranteed not to be reused | ||
21 | for a different purpose because the page reference count due to being | ||
22 | present in the user's pte is not released till after swapout() returns. | ||
23 | |||
24 | Any code that modifies the vmlist, or the vm_start/vm_end/ | ||
25 | vm_flags:VM_LOCKED/vm_next of any vma *in the list* must prevent | ||
26 | kswapd from looking at the chain. | ||
27 | |||
28 | The rules are: | ||
29 | 1. To scan the vmlist (look but don't touch) you must hold the | ||
30 | mmap_sem with read bias, i.e. down_read(&mm->mmap_sem) | ||
31 | 2. To modify the vmlist you need to hold the mmap_sem with | ||
32 | read&write bias, i.e. down_write(&mm->mmap_sem) *AND* | ||
33 | you need to take the page_table_lock. | ||
34 | 3. The swapper takes _just_ the page_table_lock, this is done | ||
35 | because the mmap_sem can be an extremely long lived lock | ||
36 | and the swapper just cannot sleep on that. | ||
37 | 4. The exception to this rule is expand_stack, which just | ||
38 | takes the read lock and the page_table_lock, this is ok | ||
39 | because it doesn't really modify fields anybody relies on. | ||
40 | 5. You must be able to guarantee that while holding page_table_lock | ||
41 | or page_table_lock of mm A, you will not try to get either lock | ||
42 | for mm B. | ||
43 | |||
44 | The caveats are: | ||
45 | 1. find_vma() makes use of, and updates, the mmap_cache pointer hint. | ||
46 | The update of mmap_cache is racy (page stealer can race with other code | ||
47 | that invokes find_vma with mmap_sem held), but that is okay, since it | ||
48 | is a hint. This can be fixed, if desired, by having find_vma grab the | ||
49 | page_table_lock. | ||
50 | |||
51 | |||
52 | Code that add/delete elements from the vmlist chain are | ||
53 | 1. callers of insert_vm_struct | ||
54 | 2. callers of merge_segments | ||
55 | 3. callers of avl_remove | ||
56 | |||
57 | Code that changes vm_start/vm_end/vm_flags:VM_LOCKED of vma's on | ||
58 | the list: | ||
59 | 1. expand_stack | ||
60 | 2. mprotect | ||
61 | 3. mlock | ||
62 | 4. mremap | ||
63 | |||
64 | It is advisable that changes to vm_start/vm_end be protected, although | ||
65 | in some cases it is not really needed. Eg, vm_start is modified by | ||
66 | expand_stack(), it is hard to come up with a destructive scenario without | ||
67 | having the vmlist protection in this case. | ||
68 | |||
69 | The page_table_lock nests with the inode i_mmap_mutex and the kmem cache | ||
70 | c_spinlock spinlocks. This is okay, since the kmem code asks for pages after | ||
71 | dropping c_spinlock. The page_table_lock also nests with pagecache_lock and | ||
72 | pagemap_lru_lock spinlocks, and no code asks for memory with these locks | ||
73 | held. | ||
74 | |||
75 | The page_table_lock is grabbed while holding the kernel_lock spinning monitor. | ||
76 | |||
77 | The page_table_lock is a spin lock. | ||
78 | |||
79 | Note: PTL can also be used to guarantee that no new clones using the | ||
80 | mm start up ... this is a loose form of stability on mm_users. For | ||
81 | example, it is used in copy_mm to protect against a racing tlb_gather_mmu | ||
82 | single address space optimization, so that the zap_page_range (from | ||
83 | truncate) does not lose sending ipi's to cloned threads that might | ||
84 | be spawned underneath it and go to user mode to drag in pte's into tlbs. | ||
85 | |||
86 | swap_lock | ||
87 | -------------- | ||
88 | The swap devices are chained in priority order from the "swap_list" header. | ||
89 | The "swap_list" is used for the round-robin swaphandle allocation strategy. | ||
90 | The #free swaphandles is maintained in "nr_swap_pages". These two together | ||
91 | are protected by the swap_lock. | ||
92 | |||
93 | The swap_lock also protects all the device reference counts on the | ||
94 | corresponding swaphandles, maintained in the "swap_map" array, and the | ||
95 | "highest_bit" and "lowest_bit" fields. | ||
96 | |||
97 | The swap_lock is a spinlock, and is never acquired from intr level. | ||
98 | |||
99 | To prevent races between swap space deletion or async readahead swapins | ||
100 | deciding whether a swap handle is being used, ie worthy of being read in | ||
101 | from disk, and an unmap -> swap_free making the handle unused, the swap | ||
102 | delete and readahead code grabs a temp reference on the swaphandle to | ||
103 | prevent warning messages from swap_duplicate <- read_swap_cache_async. | ||
104 | |||
105 | Swap cache locking | ||
106 | ------------------ | ||
107 | Pages are added into the swap cache with kernel_lock held, to make sure | ||
108 | that multiple pages are not being added (and hence lost) by associating | ||
109 | all of them with the same swaphandle. | ||
110 | |||
111 | Pages are guaranteed not to be removed from the scache if the page is | ||
112 | "shared": ie, other processes hold reference on the page or the associated | ||
113 | swap handle. The only code that does not follow this rule is shrink_mmap, | ||
114 | which deletes pages from the swap cache if no process has a reference on | ||
115 | the page (multiple processes might have references on the corresponding | ||
116 | swap handle though). lookup_swap_cache() races with shrink_mmap, when | ||
117 | establishing a reference on a scache page, so, it must check whether the | ||
118 | page it located is still in the swapcache, or shrink_mmap deleted it. | ||
119 | (This race is due to the fact that shrink_mmap looks at the page ref | ||
120 | count with pagecache_lock, but then drops pagecache_lock before deleting | ||
121 | the page from the scache). | ||
122 | |||
123 | do_wp_page and do_swap_page have MP races in them while trying to figure | ||
124 | out whether a page is "shared", by looking at the page_count + swap_count. | ||
125 | To preserve the sum of the counts, the page lock _must_ be acquired before | ||
126 | calling is_page_shared (else processes might switch their swap_count refs | ||
127 | to the page count refs, after the page count ref has been snapshotted). | ||
128 | |||
129 | Swap device deletion code currently breaks all the scache assumptions, | ||
130 | since it grabs neither mmap_sem nor page_table_lock. | ||
diff --git a/Documentation/vm/overcommit-accounting b/Documentation/vm/overcommit-accounting index 8eaa2fc4b8fa..cbfaaa674118 100644 --- a/Documentation/vm/overcommit-accounting +++ b/Documentation/vm/overcommit-accounting | |||
@@ -14,8 +14,8 @@ The Linux kernel supports the following overcommit handling modes | |||
14 | 14 | ||
15 | 2 - Don't overcommit. The total address space commit | 15 | 2 - Don't overcommit. The total address space commit |
16 | for the system is not permitted to exceed swap + a | 16 | for the system is not permitted to exceed swap + a |
17 | configurable percentage (default is 50) of physical RAM. | 17 | configurable amount (default is 50%) of physical RAM. |
18 | Depending on the percentage you use, in most situations | 18 | Depending on the amount you use, in most situations |
19 | this means a process will not be killed while accessing | 19 | this means a process will not be killed while accessing |
20 | pages but will receive errors on memory allocation as | 20 | pages but will receive errors on memory allocation as |
21 | appropriate. | 21 | appropriate. |
@@ -26,7 +26,8 @@ The Linux kernel supports the following overcommit handling modes | |||
26 | 26 | ||
27 | The overcommit policy is set via the sysctl `vm.overcommit_memory'. | 27 | The overcommit policy is set via the sysctl `vm.overcommit_memory'. |
28 | 28 | ||
29 | The overcommit percentage is set via `vm.overcommit_ratio'. | 29 | The overcommit amount can be set via `vm.overcommit_ratio' (percentage) |
30 | or `vm.overcommit_kbytes' (absolute value). | ||
30 | 31 | ||
31 | The current overcommit limit and amount committed are viewable in | 32 | The current overcommit limit and amount committed are viewable in |
32 | /proc/meminfo as CommitLimit and Committed_AS respectively. | 33 | /proc/meminfo as CommitLimit and Committed_AS respectively. |
diff --git a/Documentation/vme_api.txt b/Documentation/vme_api.txt index 856efa35f6e3..ffe6e22a2ccd 100644 --- a/Documentation/vme_api.txt +++ b/Documentation/vme_api.txt | |||
@@ -393,4 +393,14 @@ Slot Detection | |||
393 | 393 | ||
394 | This function returns the slot ID of the provided bridge. | 394 | This function returns the slot ID of the provided bridge. |
395 | 395 | ||
396 | int vme_slot_get(struct vme_dev *dev); | 396 | int vme_slot_num(struct vme_dev *dev); |
397 | |||
398 | |||
399 | Bus Detection | ||
400 | ============= | ||
401 | |||
402 | This function returns the bus ID of the provided bridge. | ||
403 | |||
404 | int vme_bus_num(struct vme_dev *dev); | ||
405 | |||
406 | |||
diff --git a/Documentation/x86/x86_64/boot-options.txt b/Documentation/x86/x86_64/boot-options.txt index 1228b22e142b..5223479291a2 100644 --- a/Documentation/x86/x86_64/boot-options.txt +++ b/Documentation/x86/x86_64/boot-options.txt | |||
@@ -78,14 +78,6 @@ APICs | |||
78 | 78 | ||
79 | no_timer_check Don't check the IO-APIC timer. This can work around | 79 | no_timer_check Don't check the IO-APIC timer. This can work around |
80 | problems with incorrect timer initialization on some boards. | 80 | problems with incorrect timer initialization on some boards. |
81 | |||
82 | apicmaintimer Run time keeping from the local APIC timer instead | ||
83 | of using the PIT/HPET interrupt for this. This is useful | ||
84 | when the PIT/HPET interrupts are unreliable. | ||
85 | |||
86 | noapicmaintimer Don't do time keeping using the APIC timer. | ||
87 | Useful when this option was auto selected, but doesn't work. | ||
88 | |||
89 | apicpmtimer | 81 | apicpmtimer |
90 | Do APIC timer calibration using the pmtimer. Implies | 82 | Do APIC timer calibration using the pmtimer. Implies |
91 | apicmaintimer. Useful when your PIT timer is totally | 83 | apicmaintimer. Useful when your PIT timer is totally |
@@ -144,11 +136,6 @@ Non Executable Mappings | |||
144 | on Enable(default) | 136 | on Enable(default) |
145 | off Disable | 137 | off Disable |
146 | 138 | ||
147 | SMP | ||
148 | |||
149 | additional_cpus=NUM Allow NUM more CPUs for hotplug | ||
150 | (defaults are specified by the BIOS, see Documentation/x86/x86_64/cpu-hotplug-spec) | ||
151 | |||
152 | NUMA | 139 | NUMA |
153 | 140 | ||
154 | numa=off Only set up a single NUMA node spanning all memory. | 141 | numa=off Only set up a single NUMA node spanning all memory. |
@@ -289,16 +276,6 @@ Debugging | |||
289 | 276 | ||
290 | kstack=N Print N words from the kernel stack in oops dumps. | 277 | kstack=N Print N words from the kernel stack in oops dumps. |
291 | 278 | ||
292 | pagefaulttrace Dump all page faults. Only useful for extreme debugging | ||
293 | and will create a lot of output. | ||
294 | |||
295 | call_trace=[old|both|newfallback|new] | ||
296 | old: use old inexact backtracer | ||
297 | new: use new exact dwarf2 unwinder | ||
298 | both: print entries from both | ||
299 | newfallback: use new unwinder but fall back to old if it gets | ||
300 | stuck (default) | ||
301 | |||
302 | Miscellaneous | 279 | Miscellaneous |
303 | 280 | ||
304 | nogbpages | 281 | nogbpages |
diff --git a/Documentation/xtensa/atomctl.txt b/Documentation/xtensa/atomctl.txt index 10a8d1ff35ec..1da783ac200c 100644 --- a/Documentation/xtensa/atomctl.txt +++ b/Documentation/xtensa/atomctl.txt | |||
@@ -40,5 +40,5 @@ See Section 4.3.12.4 of ISA; Bits: | |||
40 | --------- --------------- ----------------- ---------------- | 40 | --------- --------------- ----------------- ---------------- |
41 | 0 Exception Exception Exception | 41 | 0 Exception Exception Exception |
42 | 1 RCW Transaction RCW Transaction RCW Transaction | 42 | 1 RCW Transaction RCW Transaction RCW Transaction |
43 | 2 Internal Operation Exception Reserved | 43 | 2 Internal Operation Internal Operation Reserved |
44 | 3 Reserved Reserved Reserved | 44 | 3 Reserved Reserved Reserved |
diff --git a/Documentation/xtensa/mmu.txt b/Documentation/xtensa/mmu.txt index 2b1af7606d57..0312fe66475c 100644 --- a/Documentation/xtensa/mmu.txt +++ b/Documentation/xtensa/mmu.txt | |||
@@ -44,3 +44,21 @@ After step 4, we jump to intended (linked) address of this code. | |||
44 | 40..5F -> 40 40..5F -> pc -> pc 40..5F -> pc | 44 | 40..5F -> 40 40..5F -> pc -> pc 40..5F -> pc |
45 | 20..3F -> 20 -> 20 20..3F -> 20 | 45 | 20..3F -> 20 -> 20 20..3F -> 20 |
46 | 00..1F -> 00 -> 00 00..1F -> 00 | 46 | 00..1F -> 00 -> 00 00..1F -> 00 |
47 | |||
48 | The default location of IO peripherals is above 0xf0000000. This may change | ||
49 | using a "ranges" property in a device tree simple-bus node. See ePAPR 1.1, §6.5 | ||
50 | for details on the syntax and semantic of simple-bus nodes. The following | ||
51 | limitations apply: | ||
52 | |||
53 | 1. Only top level simple-bus nodes are considered | ||
54 | |||
55 | 2. Only one (first) simple-bus node is considered | ||
56 | |||
57 | 3. Empty "ranges" properties are not supported | ||
58 | |||
59 | 4. Only the first triplet in the "ranges" property is considered | ||
60 | |||
61 | 5. The parent-bus-address value is rounded down to the nearest 256MB boundary | ||
62 | |||
63 | 6. The IO area covers the entire 256MB segment of parent-bus-address; the | ||
64 | "ranges" triplet length field is ignored | ||
diff --git a/Documentation/zh_CN/HOWTO b/Documentation/zh_CN/HOWTO index 7fba5aab9ef9..6c914aa87e71 100644 --- a/Documentation/zh_CN/HOWTO +++ b/Documentation/zh_CN/HOWTO | |||
@@ -112,7 +112,7 @@ Linux内核代码中包含有大量的文档。这些文档对于学习如何与 | |||
112 | 112 | ||
113 | 其他关于如何正确地生成补丁的优秀文档包括: | 113 | 其他关于如何正确地生成补丁的优秀文档包括: |
114 | "The Perfect Patch" | 114 | "The Perfect Patch" |
115 | http://userweb.kernel.org/~akpm/stuff/tpp.txt | 115 | http://www.ozlabs.org/~akpm/stuff/tpp.txt |
116 | "Linux kernel patch submission format" | 116 | "Linux kernel patch submission format" |
117 | http://linux.yyz.us/patch-format.html | 117 | http://linux.yyz.us/patch-format.html |
118 | 118 | ||
@@ -515,7 +515,7 @@ Linux内核社区并不喜欢一下接收大段的代码。修改需要被恰当 | |||
515 | 515 | ||
516 | 想了解它具体应该看起来像什么,请查阅以下文档中的“ChangeLog”章节: | 516 | 想了解它具体应该看起来像什么,请查阅以下文档中的“ChangeLog”章节: |
517 | “The Perfect Patch” | 517 | “The Perfect Patch” |
518 | http://userweb.kernel.org/~akpm/stuff/tpp.txt | 518 | http://www.ozlabs.org/~akpm/stuff/tpp.txt |
519 | 519 | ||
520 | 520 | ||
521 | 这些事情有时候做起来很难。要在任何方面都做到完美可能需要好几年时间。这是 | 521 | 这些事情有时候做起来很难。要在任何方面都做到完美可能需要好几年时间。这是 |