diff options
Diffstat (limited to 'Documentation')
357 files changed, 9411 insertions, 2028 deletions
diff --git a/Documentation/00-INDEX b/Documentation/00-INDEX index 1750fcef1ab4..cd077ca0e1b8 100644 --- a/Documentation/00-INDEX +++ b/Documentation/00-INDEX | |||
@@ -29,8 +29,6 @@ DMA-ISA-LPC.txt | |||
29 | - How to do DMA with ISA (and LPC) devices. | 29 | - How to do DMA with ISA (and LPC) devices. |
30 | DMA-attributes.txt | 30 | DMA-attributes.txt |
31 | - listing of the various possible attributes a DMA region can have | 31 | - listing of the various possible attributes a DMA region can have |
32 | dmatest.txt | ||
33 | - how to compile, configure and use the dmatest system. | ||
34 | DocBook/ | 32 | DocBook/ |
35 | - directory with DocBook templates etc. for kernel documentation. | 33 | - directory with DocBook templates etc. for kernel documentation. |
36 | EDID/ | 34 | EDID/ |
@@ -163,8 +161,6 @@ digsig.txt | |||
163 | -info on the Digital Signature Verification API | 161 | -info on the Digital Signature Verification API |
164 | dma-buf-sharing.txt | 162 | dma-buf-sharing.txt |
165 | - the DMA Buffer Sharing API Guide | 163 | - the DMA Buffer Sharing API Guide |
166 | dmaengine.txt | ||
167 | -the DMA Engine API Guide | ||
168 | dontdiff | 164 | dontdiff |
169 | - file containing a list of files that should never be diff'ed. | 165 | - file containing a list of files that should never be diff'ed. |
170 | driver-model/ | 166 | driver-model/ |
@@ -209,6 +205,8 @@ hid/ | |||
209 | - directory with information on human interface devices | 205 | - directory with information on human interface devices |
210 | highuid.txt | 206 | highuid.txt |
211 | - notes on the change from 16 bit to 32 bit user/group IDs. | 207 | - notes on the change from 16 bit to 32 bit user/group IDs. |
208 | hsi.txt | ||
209 | - HSI subsystem overview. | ||
212 | hwspinlock.txt | 210 | hwspinlock.txt |
213 | - hardware spinlock provides hardware assistance for synchronization | 211 | - hardware spinlock provides hardware assistance for synchronization |
214 | timers/ | 212 | timers/ |
@@ -277,6 +275,8 @@ kprobes.txt | |||
277 | - documents the kernel probes debugging feature. | 275 | - documents the kernel probes debugging feature. |
278 | kref.txt | 276 | kref.txt |
279 | - docs on adding reference counters (krefs) to kernel objects. | 277 | - docs on adding reference counters (krefs) to kernel objects. |
278 | kselftest.txt | ||
279 | - small unittests for (some) individual codepaths in the kernel. | ||
280 | laptops/ | 280 | laptops/ |
281 | - directory with laptop related info and laptop driver documentation. | 281 | - directory with laptop related info and laptop driver documentation. |
282 | ldm.txt | 282 | ldm.txt |
@@ -285,22 +285,22 @@ leds/ | |||
285 | - directory with info about LED handling under Linux. | 285 | - directory with info about LED handling under Linux. |
286 | local_ops.txt | 286 | local_ops.txt |
287 | - semantics and behavior of local atomic operations. | 287 | - semantics and behavior of local atomic operations. |
288 | lockdep-design.txt | ||
289 | - documentation on the runtime locking correctness validator. | ||
290 | locking/ | 288 | locking/ |
291 | - directory with info about kernel locking primitives | 289 | - directory with info about kernel locking primitives |
292 | lockstat.txt | ||
293 | - info on collecting statistics on locks (and contention). | ||
294 | lockup-watchdogs.txt | 290 | lockup-watchdogs.txt |
295 | - info on soft and hard lockup detectors (aka nmi_watchdog). | 291 | - info on soft and hard lockup detectors (aka nmi_watchdog). |
296 | logo.gif | 292 | logo.gif |
297 | - full colour GIF image of Linux logo (penguin - Tux). | 293 | - full colour GIF image of Linux logo (penguin - Tux). |
298 | logo.txt | 294 | logo.txt |
299 | - info on creator of above logo & site to get additional images from. | 295 | - info on creator of above logo & site to get additional images from. |
296 | lzo.txt | ||
297 | - kernel LZO decompressor input formats | ||
300 | m68k/ | 298 | m68k/ |
301 | - directory with info about Linux on Motorola 68k architecture. | 299 | - directory with info about Linux on Motorola 68k architecture. |
302 | magic-number.txt | 300 | magic-number.txt |
303 | - list of magic numbers used to mark/protect kernel data structures. | 301 | - list of magic numbers used to mark/protect kernel data structures. |
302 | mailbox.txt | ||
303 | - How to write drivers for the common mailbox framework (IPC). | ||
304 | md.txt | 304 | md.txt |
305 | - info on boot arguments for the multiple devices driver. | 305 | - info on boot arguments for the multiple devices driver. |
306 | media-framework.txt | 306 | media-framework.txt |
@@ -327,8 +327,6 @@ mtd/ | |||
327 | - directory with info about memory technology devices (flash) | 327 | - directory with info about memory technology devices (flash) |
328 | mono.txt | 328 | mono.txt |
329 | - how to execute Mono-based .NET binaries with the help of BINFMT_MISC. | 329 | - how to execute Mono-based .NET binaries with the help of BINFMT_MISC. |
330 | mutex-design.txt | ||
331 | - info on the generic mutex subsystem. | ||
332 | namespaces/ | 330 | namespaces/ |
333 | - directory with various information about namespaces | 331 | - directory with various information about namespaces |
334 | netlabel/ | 332 | netlabel/ |
@@ -395,10 +393,6 @@ robust-futexes.txt | |||
395 | - a description of what robust futexes are. | 393 | - a description of what robust futexes are. |
396 | rpmsg.txt | 394 | rpmsg.txt |
397 | - info on the Remote Processor Messaging (rpmsg) Framework | 395 | - info on the Remote Processor Messaging (rpmsg) Framework |
398 | rt-mutex-design.txt | ||
399 | - description of the RealTime mutex implementation design. | ||
400 | rt-mutex.txt | ||
401 | - desc. of RT-mutex subsystem with PI (Priority Inheritance) support. | ||
402 | rtc.txt | 396 | rtc.txt |
403 | - notes on how to use the Real Time Clock (aka CMOS clock) driver. | 397 | - notes on how to use the Real Time Clock (aka CMOS clock) driver. |
404 | s390/ | 398 | s390/ |
@@ -425,8 +419,6 @@ sparse.txt | |||
425 | - info on how to obtain and use the sparse tool for typechecking. | 419 | - info on how to obtain and use the sparse tool for typechecking. |
426 | spi/ | 420 | spi/ |
427 | - overview of Linux kernel Serial Peripheral Interface (SPI) support. | 421 | - overview of Linux kernel Serial Peripheral Interface (SPI) support. |
428 | spinlocks.txt | ||
429 | - info on using spinlocks to provide exclusive access in kernel. | ||
430 | stable_api_nonsense.txt | 422 | stable_api_nonsense.txt |
431 | - info on why the kernel does not have a stable in-kernel api or abi. | 423 | - info on why the kernel does not have a stable in-kernel api or abi. |
432 | stable_kernel_rules.txt | 424 | stable_kernel_rules.txt |
@@ -483,10 +475,10 @@ wimax/ | |||
483 | - directory with info about Intel Wireless Wimax Connections | 475 | - directory with info about Intel Wireless Wimax Connections |
484 | workqueue.txt | 476 | workqueue.txt |
485 | - information on the Concurrency Managed Workqueue implementation | 477 | - information on the Concurrency Managed Workqueue implementation |
486 | ww-mutex-design.txt | ||
487 | - Intro to Mutex wait/would deadlock handling.s | ||
488 | x86/x86_64/ | 478 | x86/x86_64/ |
489 | - directory with info on Linux support for AMD x86-64 (Hammer) machines. | 479 | - directory with info on Linux support for AMD x86-64 (Hammer) machines. |
480 | xillybus.txt | ||
481 | - Overview and basic ui of xillybus driver | ||
490 | xtensa/ | 482 | xtensa/ |
491 | - directory with documents relating to arch/xtensa port/implementation | 483 | - directory with documents relating to arch/xtensa port/implementation |
492 | xz.txt | 484 | xz.txt |
diff --git a/Documentation/ABI/stable/sysfs-class-tpm b/Documentation/ABI/stable/sysfs-class-tpm index a60b45e2493b..9f790eebb5d2 100644 --- a/Documentation/ABI/stable/sysfs-class-tpm +++ b/Documentation/ABI/stable/sysfs-class-tpm | |||
@@ -1,4 +1,4 @@ | |||
1 | What: /sys/class/misc/tpmX/device/ | 1 | What: /sys/class/tpm/tpmX/device/ |
2 | Date: April 2005 | 2 | Date: April 2005 |
3 | KernelVersion: 2.6.12 | 3 | KernelVersion: 2.6.12 |
4 | Contact: tpmdd-devel@lists.sf.net | 4 | Contact: tpmdd-devel@lists.sf.net |
@@ -6,7 +6,7 @@ Description: The device/ directory under a specific TPM instance exposes | |||
6 | the properties of that TPM chip | 6 | the properties of that TPM chip |
7 | 7 | ||
8 | 8 | ||
9 | What: /sys/class/misc/tpmX/device/active | 9 | What: /sys/class/tpm/tpmX/device/active |
10 | Date: April 2006 | 10 | Date: April 2006 |
11 | KernelVersion: 2.6.17 | 11 | KernelVersion: 2.6.17 |
12 | Contact: tpmdd-devel@lists.sf.net | 12 | Contact: tpmdd-devel@lists.sf.net |
@@ -18,7 +18,7 @@ Description: The "active" property prints a '1' if the TPM chip is accepting | |||
18 | section 17 for more information on which commands are | 18 | section 17 for more information on which commands are |
19 | available. | 19 | available. |
20 | 20 | ||
21 | What: /sys/class/misc/tpmX/device/cancel | 21 | What: /sys/class/tpm/tpmX/device/cancel |
22 | Date: June 2005 | 22 | Date: June 2005 |
23 | KernelVersion: 2.6.13 | 23 | KernelVersion: 2.6.13 |
24 | Contact: tpmdd-devel@lists.sf.net | 24 | Contact: tpmdd-devel@lists.sf.net |
@@ -26,7 +26,7 @@ Description: The "cancel" property allows you to cancel the currently | |||
26 | pending TPM command. Writing any value to cancel will call the | 26 | pending TPM command. Writing any value to cancel will call the |
27 | TPM vendor specific cancel operation. | 27 | TPM vendor specific cancel operation. |
28 | 28 | ||
29 | What: /sys/class/misc/tpmX/device/caps | 29 | What: /sys/class/tpm/tpmX/device/caps |
30 | Date: April 2005 | 30 | Date: April 2005 |
31 | KernelVersion: 2.6.12 | 31 | KernelVersion: 2.6.12 |
32 | Contact: tpmdd-devel@lists.sf.net | 32 | Contact: tpmdd-devel@lists.sf.net |
@@ -43,7 +43,7 @@ Description: The "caps" property contains TPM manufacturer and version info. | |||
43 | the chip supports. Firmware version is that of the chip and | 43 | the chip supports. Firmware version is that of the chip and |
44 | is manufacturer specific. | 44 | is manufacturer specific. |
45 | 45 | ||
46 | What: /sys/class/misc/tpmX/device/durations | 46 | What: /sys/class/tpm/tpmX/device/durations |
47 | Date: March 2011 | 47 | Date: March 2011 |
48 | KernelVersion: 3.1 | 48 | KernelVersion: 3.1 |
49 | Contact: tpmdd-devel@lists.sf.net | 49 | Contact: tpmdd-devel@lists.sf.net |
@@ -66,7 +66,7 @@ Description: The "durations" property shows the 3 vendor-specific values | |||
66 | scaled to be displayed in usecs. In this case "[adjusted]" | 66 | scaled to be displayed in usecs. In this case "[adjusted]" |
67 | will be displayed in place of "[original]". | 67 | will be displayed in place of "[original]". |
68 | 68 | ||
69 | What: /sys/class/misc/tpmX/device/enabled | 69 | What: /sys/class/tpm/tpmX/device/enabled |
70 | Date: April 2006 | 70 | Date: April 2006 |
71 | KernelVersion: 2.6.17 | 71 | KernelVersion: 2.6.17 |
72 | Contact: tpmdd-devel@lists.sf.net | 72 | Contact: tpmdd-devel@lists.sf.net |
@@ -75,7 +75,7 @@ Description: The "enabled" property prints a '1' if the TPM chip is enabled, | |||
75 | may be visible but produce a '0' after some operation that | 75 | may be visible but produce a '0' after some operation that |
76 | disables the TPM. | 76 | disables the TPM. |
77 | 77 | ||
78 | What: /sys/class/misc/tpmX/device/owned | 78 | What: /sys/class/tpm/tpmX/device/owned |
79 | Date: April 2006 | 79 | Date: April 2006 |
80 | KernelVersion: 2.6.17 | 80 | KernelVersion: 2.6.17 |
81 | Contact: tpmdd-devel@lists.sf.net | 81 | Contact: tpmdd-devel@lists.sf.net |
@@ -83,7 +83,7 @@ Description: The "owned" property produces a '1' if the TPM_TakeOwnership | |||
83 | ordinal has been executed successfully in the chip. A '0' | 83 | ordinal has been executed successfully in the chip. A '0' |
84 | indicates that ownership hasn't been taken. | 84 | indicates that ownership hasn't been taken. |
85 | 85 | ||
86 | What: /sys/class/misc/tpmX/device/pcrs | 86 | What: /sys/class/tpm/tpmX/device/pcrs |
87 | Date: April 2005 | 87 | Date: April 2005 |
88 | KernelVersion: 2.6.12 | 88 | KernelVersion: 2.6.12 |
89 | Contact: tpmdd-devel@lists.sf.net | 89 | Contact: tpmdd-devel@lists.sf.net |
@@ -106,7 +106,7 @@ Description: The "pcrs" property will dump the current value of all Platform | |||
106 | 1.2 chips, PCRs represent SHA-1 hashes, which are 20 bytes | 106 | 1.2 chips, PCRs represent SHA-1 hashes, which are 20 bytes |
107 | long. Use the "caps" property to determine TPM version. | 107 | long. Use the "caps" property to determine TPM version. |
108 | 108 | ||
109 | What: /sys/class/misc/tpmX/device/pubek | 109 | What: /sys/class/tpm/tpmX/device/pubek |
110 | Date: April 2005 | 110 | Date: April 2005 |
111 | KernelVersion: 2.6.12 | 111 | KernelVersion: 2.6.12 |
112 | Contact: tpmdd-devel@lists.sf.net | 112 | Contact: tpmdd-devel@lists.sf.net |
@@ -158,7 +158,7 @@ Description: The "pubek" property will return the TPM's public endorsement | |||
158 | Modulus Length: 256 (bytes) | 158 | Modulus Length: 256 (bytes) |
159 | Modulus: The 256 byte Endorsement Key modulus | 159 | Modulus: The 256 byte Endorsement Key modulus |
160 | 160 | ||
161 | What: /sys/class/misc/tpmX/device/temp_deactivated | 161 | What: /sys/class/tpm/tpmX/device/temp_deactivated |
162 | Date: April 2006 | 162 | Date: April 2006 |
163 | KernelVersion: 2.6.17 | 163 | KernelVersion: 2.6.17 |
164 | Contact: tpmdd-devel@lists.sf.net | 164 | Contact: tpmdd-devel@lists.sf.net |
@@ -167,7 +167,7 @@ Description: The "temp_deactivated" property returns a '1' if the chip has | |||
167 | cycle. Whether a warm boot (reboot) will clear a TPM chip | 167 | cycle. Whether a warm boot (reboot) will clear a TPM chip |
168 | from a temp_deactivated state is platform specific. | 168 | from a temp_deactivated state is platform specific. |
169 | 169 | ||
170 | What: /sys/class/misc/tpmX/device/timeouts | 170 | What: /sys/class/tpm/tpmX/device/timeouts |
171 | Date: March 2011 | 171 | Date: March 2011 |
172 | KernelVersion: 3.1 | 172 | KernelVersion: 3.1 |
173 | Contact: tpmdd-devel@lists.sf.net | 173 | Contact: tpmdd-devel@lists.sf.net |
diff --git a/Documentation/ABI/testing/configfs-usb-gadget-uvc b/Documentation/ABI/testing/configfs-usb-gadget-uvc new file mode 100644 index 000000000000..2f4a0051b32d --- /dev/null +++ b/Documentation/ABI/testing/configfs-usb-gadget-uvc | |||
@@ -0,0 +1,265 @@ | |||
1 | What: /config/usb-gadget/gadget/functions/uvc.name | ||
2 | Date: Dec 2014 | ||
3 | KernelVersion: 3.20 | ||
4 | Description: UVC function directory | ||
5 | |||
6 | streaming_maxburst - 0..15 (ss only) | ||
7 | streaming_maxpacket - 1..1023 (fs), 1..3072 (hs/ss) | ||
8 | streaming_interval - 1..16 | ||
9 | |||
10 | What: /config/usb-gadget/gadget/functions/uvc.name/control | ||
11 | Date: Dec 2014 | ||
12 | KernelVersion: 3.20 | ||
13 | Description: Control descriptors | ||
14 | |||
15 | What: /config/usb-gadget/gadget/functions/uvc.name/control/class | ||
16 | Date: Dec 2014 | ||
17 | KernelVersion: 3.20 | ||
18 | Description: Class descriptors | ||
19 | |||
20 | What: /config/usb-gadget/gadget/functions/uvc.name/control/class/ss | ||
21 | Date: Dec 2014 | ||
22 | KernelVersion: 3.20 | ||
23 | Description: Super speed control class descriptors | ||
24 | |||
25 | What: /config/usb-gadget/gadget/functions/uvc.name/control/class/fs | ||
26 | Date: Dec 2014 | ||
27 | KernelVersion: 3.20 | ||
28 | Description: Full speed control class descriptors | ||
29 | |||
30 | What: /config/usb-gadget/gadget/functions/uvc.name/control/terminal | ||
31 | Date: Dec 2014 | ||
32 | KernelVersion: 3.20 | ||
33 | Description: Terminal descriptors | ||
34 | |||
35 | What: /config/usb-gadget/gadget/functions/uvc.name/control/terminal/output | ||
36 | Date: Dec 2014 | ||
37 | KernelVersion: 3.20 | ||
38 | Description: Output terminal descriptors | ||
39 | |||
40 | What: /config/usb-gadget/gadget/functions/uvc.name/control/terminal/output/default | ||
41 | Date: Dec 2014 | ||
42 | KernelVersion: 3.20 | ||
43 | Description: Default output terminal descriptors | ||
44 | |||
45 | All attributes read only: | ||
46 | iTerminal - index of string descriptor | ||
47 | bSourceID - id of the terminal to which this terminal | ||
48 | is connected | ||
49 | bAssocTerminal - id of the input terminal to which this output | ||
50 | terminal is associated | ||
51 | wTerminalType - terminal type | ||
52 | bTerminalID - a non-zero id of this terminal | ||
53 | |||
54 | What: /config/usb-gadget/gadget/functions/uvc.name/control/terminal/camera | ||
55 | Date: Dec 2014 | ||
56 | KernelVersion: 3.20 | ||
57 | Description: Camera terminal descriptors | ||
58 | |||
59 | What: /config/usb-gadget/gadget/functions/uvc.name/control/terminal/camera/default | ||
60 | Date: Dec 2014 | ||
61 | KernelVersion: 3.20 | ||
62 | Description: Default camera terminal descriptors | ||
63 | |||
64 | All attributes read only: | ||
65 | bmControls - bitmap specifying which controls are | ||
66 | supported for the video stream | ||
67 | wOcularFocalLength - the value of Locular | ||
68 | wObjectiveFocalLengthMax- the value of Lmin | ||
69 | wObjectiveFocalLengthMin- the value of Lmax | ||
70 | iTerminal - index of string descriptor | ||
71 | bAssocTerminal - id of the output terminal to which | ||
72 | this terminal is connected | ||
73 | wTerminalType - terminal type | ||
74 | bTerminalID - a non-zero id of this terminal | ||
75 | |||
76 | What: /config/usb-gadget/gadget/functions/uvc.name/control/processing | ||
77 | Date: Dec 2014 | ||
78 | KernelVersion: 3.20 | ||
79 | Description: Processing unit descriptors | ||
80 | |||
81 | What: /config/usb-gadget/gadget/functions/uvc.name/control/processing/default | ||
82 | Date: Dec 2014 | ||
83 | KernelVersion: 3.20 | ||
84 | Description: Default processing unit descriptors | ||
85 | |||
86 | All attributes read only: | ||
87 | iProcessing - index of string descriptor | ||
88 | bmControls - bitmap specifying which controls are | ||
89 | supported for the video stream | ||
90 | wMaxMultiplier - maximum digital magnification x100 | ||
91 | bSourceID - id of the terminal to which this unit is | ||
92 | connected | ||
93 | bUnitID - a non-zero id of this unit | ||
94 | |||
95 | What: /config/usb-gadget/gadget/functions/uvc.name/control/header | ||
96 | Date: Dec 2014 | ||
97 | KernelVersion: 3.20 | ||
98 | Description: Control header descriptors | ||
99 | |||
100 | What: /config/usb-gadget/gadget/functions/uvc.name/control/header/name | ||
101 | Date: Dec 2014 | ||
102 | KernelVersion: 3.20 | ||
103 | Description: Specific control header descriptors | ||
104 | |||
105 | dwClockFrequency | ||
106 | bcdUVC | ||
107 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming | ||
108 | Date: Dec 2014 | ||
109 | KernelVersion: 3.20 | ||
110 | Description: Streaming descriptors | ||
111 | |||
112 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming/class | ||
113 | Date: Dec 2014 | ||
114 | KernelVersion: 3.20 | ||
115 | Description: Streaming class descriptors | ||
116 | |||
117 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming/class/ss | ||
118 | Date: Dec 2014 | ||
119 | KernelVersion: 3.20 | ||
120 | Description: Super speed streaming class descriptors | ||
121 | |||
122 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming/class/hs | ||
123 | Date: Dec 2014 | ||
124 | KernelVersion: 3.20 | ||
125 | Description: High speed streaming class descriptors | ||
126 | |||
127 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming/class/fs | ||
128 | Date: Dec 2014 | ||
129 | KernelVersion: 3.20 | ||
130 | Description: Full speed streaming class descriptors | ||
131 | |||
132 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming/color_matching | ||
133 | Date: Dec 2014 | ||
134 | KernelVersion: 3.20 | ||
135 | Description: Color matching descriptors | ||
136 | |||
137 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming/color_matching/default | ||
138 | Date: Dec 2014 | ||
139 | KernelVersion: 3.20 | ||
140 | Description: Default color matching descriptors | ||
141 | |||
142 | All attributes read only: | ||
143 | bMatrixCoefficients - matrix used to compute luma and | ||
144 | chroma values from the color primaries | ||
145 | bTransferCharacteristics- optoelectronic transfer | ||
146 | characteristic of the source picutre, | ||
147 | also called the gamma function | ||
148 | bColorPrimaries - color primaries and the reference | ||
149 | white | ||
150 | |||
151 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming/mjpeg | ||
152 | Date: Dec 2014 | ||
153 | KernelVersion: 3.20 | ||
154 | Description: MJPEG format descriptors | ||
155 | |||
156 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming/mjpeg/name | ||
157 | Date: Dec 2014 | ||
158 | KernelVersion: 3.20 | ||
159 | Description: Specific MJPEG format descriptors | ||
160 | |||
161 | All attributes read only, | ||
162 | except bmaControls and bDefaultFrameIndex: | ||
163 | bmaControls - this format's data for bmaControls in | ||
164 | the streaming header | ||
165 | bmInterfaceFlags - specifies interlace information, | ||
166 | read-only | ||
167 | bAspectRatioY - the X dimension of the picture aspect | ||
168 | ratio, read-only | ||
169 | bAspectRatioX - the Y dimension of the picture aspect | ||
170 | ratio, read-only | ||
171 | bmFlags - characteristics of this format, | ||
172 | read-only | ||
173 | bDefaultFrameIndex - optimum frame index for this stream | ||
174 | |||
175 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming/mjpeg/name/name | ||
176 | Date: Dec 2014 | ||
177 | KernelVersion: 3.20 | ||
178 | Description: Specific MJPEG frame descriptors | ||
179 | |||
180 | dwFrameInterval - indicates how frame interval can be | ||
181 | programmed; a number of values | ||
182 | separated by newline can be specified | ||
183 | dwDefaultFrameInterval - the frame interval the device would | ||
184 | like to use as default | ||
185 | dwMaxVideoFrameBufferSize- the maximum number of bytes the | ||
186 | compressor will produce for a video | ||
187 | frame or still image | ||
188 | dwMaxBitRate - the maximum bit rate at the shortest | ||
189 | frame interval in bps | ||
190 | dwMinBitRate - the minimum bit rate at the longest | ||
191 | frame interval in bps | ||
192 | wHeight - height of decoded bitmap frame in px | ||
193 | wWidth - width of decoded bitmam frame in px | ||
194 | bmCapabilities - still image support, fixed frame-rate | ||
195 | support | ||
196 | |||
197 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming/uncompressed | ||
198 | Date: Dec 2014 | ||
199 | KernelVersion: 3.20 | ||
200 | Description: Uncompressed format descriptors | ||
201 | |||
202 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming/uncompressed/name | ||
203 | Date: Dec 2014 | ||
204 | KernelVersion: 3.20 | ||
205 | Description: Specific uncompressed format descriptors | ||
206 | |||
207 | bmaControls - this format's data for bmaControls in | ||
208 | the streaming header | ||
209 | bmInterfaceFlags - specifies interlace information, | ||
210 | read-only | ||
211 | bAspectRatioY - the X dimension of the picture aspect | ||
212 | ratio, read-only | ||
213 | bAspectRatioX - the Y dimension of the picture aspect | ||
214 | ratio, read-only | ||
215 | bDefaultFrameIndex - optimum frame index for this stream | ||
216 | bBitsPerPixel - number of bits per pixel used to | ||
217 | specify color in the decoded video | ||
218 | frame | ||
219 | guidFormat - globally unique id used to identify | ||
220 | stream-encoding format | ||
221 | |||
222 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming/uncompressed/name/name | ||
223 | Date: Dec 2014 | ||
224 | KernelVersion: 3.20 | ||
225 | Description: Specific uncompressed frame descriptors | ||
226 | |||
227 | dwFrameInterval - indicates how frame interval can be | ||
228 | programmed; a number of values | ||
229 | separated by newline can be specified | ||
230 | dwDefaultFrameInterval - the frame interval the device would | ||
231 | like to use as default | ||
232 | dwMaxVideoFrameBufferSize- the maximum number of bytes the | ||
233 | compressor will produce for a video | ||
234 | frame or still image | ||
235 | dwMaxBitRate - the maximum bit rate at the shortest | ||
236 | frame interval in bps | ||
237 | dwMinBitRate - the minimum bit rate at the longest | ||
238 | frame interval in bps | ||
239 | wHeight - height of decoded bitmap frame in px | ||
240 | wWidth - width of decoded bitmam frame in px | ||
241 | bmCapabilities - still image support, fixed frame-rate | ||
242 | support | ||
243 | |||
244 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming/header | ||
245 | Date: Dec 2014 | ||
246 | KernelVersion: 3.20 | ||
247 | Description: Streaming header descriptors | ||
248 | |||
249 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming/header/name | ||
250 | Date: Dec 2014 | ||
251 | KernelVersion: 3.20 | ||
252 | Description: Specific streaming header descriptors | ||
253 | |||
254 | All attributes read only: | ||
255 | bTriggerUsage - how the host software will respond to | ||
256 | a hardware trigger interrupt event | ||
257 | bTriggerSupport - flag specifying if hardware | ||
258 | triggering is supported | ||
259 | bStillCaptureMethod - method of still image caputre | ||
260 | supported | ||
261 | bTerminalLink - id of the output terminal to which | ||
262 | the video endpoint of this interface | ||
263 | is connected | ||
264 | bmInfo - capabilities of this video streaming | ||
265 | interface | ||
diff --git a/Documentation/ABI/testing/sysfs-bus-amba b/Documentation/ABI/testing/sysfs-bus-amba new file mode 100644 index 000000000000..e7b54677cfbe --- /dev/null +++ b/Documentation/ABI/testing/sysfs-bus-amba | |||
@@ -0,0 +1,20 @@ | |||
1 | What: /sys/bus/amba/devices/.../driver_override | ||
2 | Date: September 2014 | ||
3 | Contact: Antonios Motakis <a.motakis@virtualopensystems.com> | ||
4 | Description: | ||
5 | This file allows the driver for a device to be specified which | ||
6 | will override standard OF, ACPI, ID table, and name matching. | ||
7 | When specified, only a driver with a name matching the value | ||
8 | written to driver_override will have an opportunity to bind to | ||
9 | the device. The override is specified by writing a string to the | ||
10 | driver_override file (echo vfio-amba > driver_override) and may | ||
11 | be cleared with an empty string (echo > driver_override). | ||
12 | This returns the device to standard matching rules binding. | ||
13 | Writing to driver_override does not automatically unbind the | ||
14 | device from its current driver or make any attempt to | ||
15 | automatically load the specified driver. If no driver with a | ||
16 | matching name is currently loaded in the kernel, the device will | ||
17 | not bind to any driver. This also allows devices to opt-out of | ||
18 | driver binding using a driver_override name such as "none". | ||
19 | Only a single driver may be specified in the override, there is | ||
20 | no support for parsing delimiters. | ||
diff --git a/Documentation/ABI/testing/sysfs-bus-event_source-devices-events b/Documentation/ABI/testing/sysfs-bus-event_source-devices-events index 20979f8b3edb..505f080d20a1 100644 --- a/Documentation/ABI/testing/sysfs-bus-event_source-devices-events +++ b/Documentation/ABI/testing/sysfs-bus-event_source-devices-events | |||
@@ -52,12 +52,18 @@ Description: Per-pmu performance monitoring events specific to the running syste | |||
52 | event=0x2abc | 52 | event=0x2abc |
53 | event=0x423,inv,cmask=0x3 | 53 | event=0x423,inv,cmask=0x3 |
54 | domain=0x1,offset=0x8,starting_index=0xffff | 54 | domain=0x1,offset=0x8,starting_index=0xffff |
55 | domain=0x1,offset=0x8,core=? | ||
55 | 56 | ||
56 | Each of the assignments indicates a value to be assigned to a | 57 | Each of the assignments indicates a value to be assigned to a |
57 | particular set of bits (as defined by the format file | 58 | particular set of bits (as defined by the format file |
58 | corresponding to the <term>) in the perf_event structure passed | 59 | corresponding to the <term>) in the perf_event structure passed |
59 | to the perf_open syscall. | 60 | to the perf_open syscall. |
60 | 61 | ||
62 | In the case of the last example, a value replacing "?" would | ||
63 | need to be provided by the user selecting the particular event. | ||
64 | This is referred to as "event parameterization". Event | ||
65 | parameters have the format 'param=?'. | ||
66 | |||
61 | What: /sys/bus/event_source/devices/<pmu>/events/<event>.unit | 67 | What: /sys/bus/event_source/devices/<pmu>/events/<event>.unit |
62 | Date: 2014/02/24 | 68 | Date: 2014/02/24 |
63 | Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> | 69 | Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> |
diff --git a/Documentation/ABI/testing/sysfs-bus-event_source-devices-hv_24x7 b/Documentation/ABI/testing/sysfs-bus-event_source-devices-hv_24x7 index 32f3f5f8bba2..f893337570c1 100644 --- a/Documentation/ABI/testing/sysfs-bus-event_source-devices-hv_24x7 +++ b/Documentation/ABI/testing/sysfs-bus-event_source-devices-hv_24x7 | |||
@@ -21,3 +21,25 @@ Contact: Linux on PowerPC Developer List <linuxppc-dev@lists.ozlabs.org> | |||
21 | Description: | 21 | Description: |
22 | Exposes the "version" field of the 24x7 catalog. This is also | 22 | Exposes the "version" field of the 24x7 catalog. This is also |
23 | extractable from the provided binary "catalog" sysfs entry. | 23 | extractable from the provided binary "catalog" sysfs entry. |
24 | |||
25 | What: /sys/bus/event_source/devices/hv_24x7/event_descs/<event-name> | ||
26 | Date: February 2014 | ||
27 | Contact: Linux on PowerPC Developer List <linuxppc-dev@lists.ozlabs.org> | ||
28 | Description: | ||
29 | Provides the description of a particular event as provided by | ||
30 | the firmware. If firmware does not provide a description, no | ||
31 | file will be created. | ||
32 | |||
33 | Note that the event-name lacks the domain suffix appended for | ||
34 | events in the events/ dir. | ||
35 | |||
36 | What: /sys/bus/event_source/devices/hv_24x7/event_long_descs/<event-name> | ||
37 | Date: February 2014 | ||
38 | Contact: Linux on PowerPC Developer List <linuxppc-dev@lists.ozlabs.org> | ||
39 | Description: | ||
40 | Provides the "long" description of a particular event as | ||
41 | provided by the firmware. If firmware does not provide a | ||
42 | description, no file will be created. | ||
43 | |||
44 | Note that the event-name lacks the domain suffix appended for | ||
45 | events in the events/ dir. | ||
diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio index 117521dbf2b3..9a70c31619ea 100644 --- a/Documentation/ABI/testing/sysfs-bus-iio +++ b/Documentation/ABI/testing/sysfs-bus-iio | |||
@@ -92,6 +92,18 @@ Description: | |||
92 | is required is a consistent labeling. Units after application | 92 | is required is a consistent labeling. Units after application |
93 | of scale and offset are millivolts. | 93 | of scale and offset are millivolts. |
94 | 94 | ||
95 | What: /sys/bus/iio/devices/iio:deviceX/in_currentY_raw | ||
96 | What: /sys/bus/iio/devices/iio:deviceX/in_currentY_supply_raw | ||
97 | KernelVersion: 3.17 | ||
98 | Contact: linux-iio@vger.kernel.org | ||
99 | Description: | ||
100 | Raw (unscaled no bias removal etc.) current measurement from | ||
101 | channel Y. In special cases where the channel does not | ||
102 | correspond to externally available input one of the named | ||
103 | versions may be used. The number must always be specified and | ||
104 | unique to allow association with event codes. Units after | ||
105 | application of scale and offset are milliamps. | ||
106 | |||
95 | What: /sys/bus/iio/devices/iio:deviceX/in_capacitanceY_raw | 107 | What: /sys/bus/iio/devices/iio:deviceX/in_capacitanceY_raw |
96 | KernelVersion: 3.2 | 108 | KernelVersion: 3.2 |
97 | Contact: linux-iio@vger.kernel.org | 109 | Contact: linux-iio@vger.kernel.org |
@@ -234,6 +246,8 @@ What: /sys/bus/iio/devices/iio:deviceX/in_accel_y_offset | |||
234 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_z_offset | 246 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_z_offset |
235 | What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_offset | 247 | What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_offset |
236 | What: /sys/bus/iio/devices/iio:deviceX/in_voltage_offset | 248 | What: /sys/bus/iio/devices/iio:deviceX/in_voltage_offset |
249 | What: /sys/bus/iio/devices/iio:deviceX/in_currentY_offset | ||
250 | What: /sys/bus/iio/devices/iio:deviceX/in_current_offset | ||
237 | What: /sys/bus/iio/devices/iio:deviceX/in_tempY_offset | 251 | What: /sys/bus/iio/devices/iio:deviceX/in_tempY_offset |
238 | What: /sys/bus/iio/devices/iio:deviceX/in_temp_offset | 252 | What: /sys/bus/iio/devices/iio:deviceX/in_temp_offset |
239 | What: /sys/bus/iio/devices/iio:deviceX/in_pressureY_offset | 253 | What: /sys/bus/iio/devices/iio:deviceX/in_pressureY_offset |
@@ -262,9 +276,14 @@ What: /sys/bus/iio/devices/iio:deviceX/in_voltage_scale | |||
262 | What: /sys/bus/iio/devices/iio:deviceX/in_voltage-voltage_scale | 276 | What: /sys/bus/iio/devices/iio:deviceX/in_voltage-voltage_scale |
263 | What: /sys/bus/iio/devices/iio:deviceX/out_voltageY_scale | 277 | What: /sys/bus/iio/devices/iio:deviceX/out_voltageY_scale |
264 | What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_scale | 278 | What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_scale |
279 | What: /sys/bus/iio/devices/iio:deviceX/in_currentY_scale | ||
280 | What: /sys/bus/iio/devices/iio:deviceX/in_currentY_supply_scale | ||
281 | What: /sys/bus/iio/devices/iio:deviceX/in_current_scale | ||
265 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_scale | 282 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_scale |
266 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_peak_scale | 283 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_peak_scale |
267 | What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_scale | 284 | What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_scale |
285 | What: /sys/bus/iio/devices/iio:deviceX/in_energy_scale | ||
286 | What: /sys/bus/iio/devices/iio:deviceX/in_distance_scale | ||
268 | What: /sys/bus/iio/devices/iio:deviceX/in_magn_scale | 287 | What: /sys/bus/iio/devices/iio:deviceX/in_magn_scale |
269 | What: /sys/bus/iio/devices/iio:deviceX/in_magn_x_scale | 288 | What: /sys/bus/iio/devices/iio:deviceX/in_magn_x_scale |
270 | What: /sys/bus/iio/devices/iio:deviceX/in_magn_y_scale | 289 | What: /sys/bus/iio/devices/iio:deviceX/in_magn_y_scale |
@@ -276,6 +295,7 @@ What: /sys/bus/iio/devices/iio:deviceX/in_rot_from_north_true_tilt_comp_scale | |||
276 | What: /sys/bus/iio/devices/iio:deviceX/in_pressureY_scale | 295 | What: /sys/bus/iio/devices/iio:deviceX/in_pressureY_scale |
277 | What: /sys/bus/iio/devices/iio:deviceX/in_pressure_scale | 296 | What: /sys/bus/iio/devices/iio:deviceX/in_pressure_scale |
278 | What: /sys/bus/iio/devices/iio:deviceX/in_humidityrelative_scale | 297 | What: /sys/bus/iio/devices/iio:deviceX/in_humidityrelative_scale |
298 | What: /sys/bus/iio/devices/iio:deviceX/in_velocity_sqrt(x^2+y^2+z^2)_scale | ||
279 | KernelVersion: 2.6.35 | 299 | KernelVersion: 2.6.35 |
280 | Contact: linux-iio@vger.kernel.org | 300 | Contact: linux-iio@vger.kernel.org |
281 | Description: | 301 | Description: |
@@ -323,6 +343,44 @@ Description: | |||
323 | production inaccuracies). If shared across all channels, | 343 | production inaccuracies). If shared across all channels, |
324 | <type>_calibscale is used. | 344 | <type>_calibscale is used. |
325 | 345 | ||
346 | What: /sys/bus/iio/devices/iio:deviceX/in_activity_calibgender | ||
347 | What: /sys/bus/iio/devices/iio:deviceX/in_energy_calibgender | ||
348 | What: /sys/bus/iio/devices/iio:deviceX/in_distance_calibgender | ||
349 | What: /sys/bus/iio/devices/iio:deviceX/in_velocity_calibgender | ||
350 | KernelVersion: 3.20 | ||
351 | Contact: linux-iio@vger.kernel.org | ||
352 | Description: | ||
353 | Gender of the user (e.g.: male, female) used by some pedometers | ||
354 | to compute the stride length, distance, speed and activity | ||
355 | type. | ||
356 | |||
357 | What: /sys/bus/iio/devices/iio:deviceX/in_activity_calibgender_available | ||
358 | What: /sys/bus/iio/devices/iio:deviceX/in_energy_calibgender_available | ||
359 | What: /sys/bus/iio/devices/iio:deviceX/in_distance_calibgender_available | ||
360 | What: /sys/bus/iio/devices/iio:deviceX/in_velocity_calibgender_available | ||
361 | KernelVersion: 3.20 | ||
362 | Contact: linux-iio@vger.kernel.org | ||
363 | Description: | ||
364 | Lists all available gender values (e.g.: male, female). | ||
365 | |||
366 | What: /sys/bus/iio/devices/iio:deviceX/in_activity_calibheight | ||
367 | What: /sys/bus/iio/devices/iio:deviceX/in_energy_calibheight | ||
368 | What: /sys/bus/iio/devices/iio:deviceX/in_distance_calibheight | ||
369 | What: /sys/bus/iio/devices/iio:deviceX/in_velocity_calibheight | ||
370 | KernelVersion: 3.19 | ||
371 | Contact: linux-iio@vger.kernel.org | ||
372 | Description: | ||
373 | Height of the user (in meters) used by some pedometers | ||
374 | to compute the stride length, distance, speed and activity | ||
375 | type. | ||
376 | |||
377 | What: /sys/bus/iio/devices/iio:deviceX/in_energy_calibweight | ||
378 | KernelVersion: 3.20 | ||
379 | Contact: linux-iio@vger.kernel.org | ||
380 | Description: | ||
381 | Weight of the user (in kg). It is needed by some pedometers | ||
382 | to compute the calories burnt by the user. | ||
383 | |||
326 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_scale_available | 384 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_scale_available |
327 | What: /sys/.../iio:deviceX/in_voltageX_scale_available | 385 | What: /sys/.../iio:deviceX/in_voltageX_scale_available |
328 | What: /sys/.../iio:deviceX/in_voltage-voltage_scale_available | 386 | What: /sys/.../iio:deviceX/in_voltage-voltage_scale_available |
@@ -783,6 +841,14 @@ What: /sys/.../events/in_tempY_roc_falling_period | |||
783 | What: /sys/.../events/in_accel_x&y&z_mag_falling_period | 841 | What: /sys/.../events/in_accel_x&y&z_mag_falling_period |
784 | What: /sys/.../events/in_intensity0_thresh_period | 842 | What: /sys/.../events/in_intensity0_thresh_period |
785 | What: /sys/.../events/in_proximity0_thresh_period | 843 | What: /sys/.../events/in_proximity0_thresh_period |
844 | What: /sys/.../events/in_activity_still_thresh_rising_period | ||
845 | What: /sys/.../events/in_activity_still_thresh_falling_period | ||
846 | What: /sys/.../events/in_activity_walking_thresh_rising_period | ||
847 | What: /sys/.../events/in_activity_walking_thresh_falling_period | ||
848 | What: /sys/.../events/in_activity_jogging_thresh_rising_period | ||
849 | What: /sys/.../events/in_activity_jogging_thresh_falling_period | ||
850 | What: /sys/.../events/in_activity_running_thresh_rising_period | ||
851 | What: /sys/.../events/in_activity_running_thresh_falling_period | ||
786 | KernelVersion: 2.6.37 | 852 | KernelVersion: 2.6.37 |
787 | Contact: linux-iio@vger.kernel.org | 853 | Contact: linux-iio@vger.kernel.org |
788 | Description: | 854 | Description: |
@@ -790,6 +856,40 @@ Description: | |||
790 | met before an event is generated. If direction is not | 856 | met before an event is generated. If direction is not |
791 | specified then this period applies to both directions. | 857 | specified then this period applies to both directions. |
792 | 858 | ||
859 | What: /sys/.../events/in_activity_still_thresh_rising_en | ||
860 | What: /sys/.../events/in_activity_still_thresh_falling_en | ||
861 | What: /sys/.../events/in_activity_walking_thresh_rising_en | ||
862 | What: /sys/.../events/in_activity_walking_thresh_falling_en | ||
863 | What: /sys/.../events/in_activity_jogging_thresh_rising_en | ||
864 | What: /sys/.../events/in_activity_jogging_thresh_falling_en | ||
865 | What: /sys/.../events/in_activity_running_thresh_rising_en | ||
866 | What: /sys/.../events/in_activity_running_thresh_falling_en | ||
867 | KernelVersion: 3.19 | ||
868 | Contact: linux-iio@vger.kernel.org | ||
869 | Description: | ||
870 | Enables or disables activitity events. Depending on direction | ||
871 | an event is generated when sensor ENTERS or LEAVES a given state. | ||
872 | |||
873 | What: /sys/.../events/in_activity_still_thresh_rising_value | ||
874 | What: /sys/.../events/in_activity_still_thresh_falling_value | ||
875 | What: /sys/.../events/in_activity_walking_thresh_rising_value | ||
876 | What: /sys/.../events/in_activity_walking_thresh_falling_value | ||
877 | What: /sys/.../events/in_activity_jogging_thresh_rising_value | ||
878 | What: /sys/.../events/in_activity_jogging_thresh_falling_value | ||
879 | What: /sys/.../events/in_activity_running_thresh_rising_value | ||
880 | What: /sys/.../events/in_activity_running_thresh_falling_value | ||
881 | KernelVersion: 3.19 | ||
882 | Contact: linux-iio@vger.kernel.org | ||
883 | Description: | ||
884 | Confidence value (in units as percentage) to be used | ||
885 | for deciding when an event should be generated. E.g for | ||
886 | running: If the confidence value reported by the sensor | ||
887 | is greater than in_activity_running_thresh_rising_value | ||
888 | then the sensor ENTERS running state. Conversely, if the | ||
889 | confidence value reported by the sensor is lower than | ||
890 | in_activity_running_thresh_falling_value then the sensor | ||
891 | is LEAVING running state. | ||
892 | |||
793 | What: /sys/.../iio:deviceX/events/in_accel_mag_en | 893 | What: /sys/.../iio:deviceX/events/in_accel_mag_en |
794 | What: /sys/.../iio:deviceX/events/in_accel_mag_rising_en | 894 | What: /sys/.../iio:deviceX/events/in_accel_mag_rising_en |
795 | What: /sys/.../iio:deviceX/events/in_accel_mag_falling_en | 895 | What: /sys/.../iio:deviceX/events/in_accel_mag_falling_en |
@@ -822,6 +922,25 @@ Description: | |||
822 | number or direction is not specified, applies to all channels of | 922 | number or direction is not specified, applies to all channels of |
823 | this type. | 923 | this type. |
824 | 924 | ||
925 | What: /sys/.../events/in_steps_change_en | ||
926 | KernelVersion: 3.20 | ||
927 | Contact: linux-iio@vger.kernel.org | ||
928 | Description: | ||
929 | Event generated when channel passes a threshold on the absolute | ||
930 | change in value. E.g. for steps: a step change event is | ||
931 | generated each time the user takes N steps, where N is set using | ||
932 | in_steps_change_value. | ||
933 | |||
934 | What: /sys/.../events/in_steps_change_value | ||
935 | KernelVersion: 3.20 | ||
936 | Contact: linux-iio@vger.kernel.org | ||
937 | Description: | ||
938 | Specifies the value of change threshold that the | ||
939 | device is comparing against for the events enabled by | ||
940 | <type>[Y][_name]_roc[_rising|falling|]_en. E.g. for steps: | ||
941 | if set to 3, a step change event will be generated every 3 | ||
942 | steps. | ||
943 | |||
825 | What: /sys/bus/iio/devices/iio:deviceX/trigger/current_trigger | 944 | What: /sys/bus/iio/devices/iio:deviceX/trigger/current_trigger |
826 | KernelVersion: 2.6.35 | 945 | KernelVersion: 2.6.35 |
827 | Contact: linux-iio@vger.kernel.org | 946 | Contact: linux-iio@vger.kernel.org |
@@ -956,6 +1075,16 @@ Description: | |||
956 | and the relevant _type attributes to establish the data storage | 1075 | and the relevant _type attributes to establish the data storage |
957 | format. | 1076 | format. |
958 | 1077 | ||
1078 | What: /sys/.../iio:deviceX/in_activity_still_input | ||
1079 | What: /sys/.../iio:deviceX/in_activity_walking_input | ||
1080 | What: /sys/.../iio:deviceX/in_activity_jogging_input | ||
1081 | What: /sys/.../iio:deviceX/in_activity_running_input | ||
1082 | KernelVersion: 3.19 | ||
1083 | Contact: linux-iio@vger.kernel.org | ||
1084 | Description: | ||
1085 | This attribute is used to read the confidence for an activity | ||
1086 | expressed in units as percentage. | ||
1087 | |||
959 | What: /sys/.../iio:deviceX/in_anglvel_z_quadrature_correction_raw | 1088 | What: /sys/.../iio:deviceX/in_anglvel_z_quadrature_correction_raw |
960 | KernelVersion: 2.6.38 | 1089 | KernelVersion: 2.6.38 |
961 | Contact: linux-iio@vger.kernel.org | 1090 | Contact: linux-iio@vger.kernel.org |
@@ -973,6 +1102,24 @@ Description: | |||
973 | For a list of available output power modes read | 1102 | For a list of available output power modes read |
974 | in_accel_power_mode_available. | 1103 | in_accel_power_mode_available. |
975 | 1104 | ||
1105 | What: /sys/.../iio:deviceX/in_energy_input | ||
1106 | What: /sys/.../iio:deviceX/in_energy_raw | ||
1107 | KernelVersion: 3.20 | ||
1108 | Contact: linux-iio@vger.kernel.org | ||
1109 | Description: | ||
1110 | This attribute is used to read the energy value reported by the | ||
1111 | device (e.g.: human activity sensors report energy burnt by the | ||
1112 | user). Units after application of scale are Joules. | ||
1113 | |||
1114 | What: /sys/.../iio:deviceX/in_distance_input | ||
1115 | What: /sys/.../iio:deviceX/in_distance_raw | ||
1116 | KernelVersion: 3.20 | ||
1117 | Contact: linux-iio@vger.kernel.org | ||
1118 | Description: | ||
1119 | This attribute is used to read the distance covered by the user | ||
1120 | since the last reboot while activated. Units after application | ||
1121 | of scale are meters. | ||
1122 | |||
976 | What: /sys/bus/iio/devices/iio:deviceX/store_eeprom | 1123 | What: /sys/bus/iio/devices/iio:deviceX/store_eeprom |
977 | KernelVersion: 3.4.0 | 1124 | KernelVersion: 3.4.0 |
978 | Contact: linux-iio@vger.kernel.org | 1125 | Contact: linux-iio@vger.kernel.org |
@@ -992,7 +1139,9 @@ Description: | |||
992 | reflectivity of infrared or ultrasound emitted. | 1139 | reflectivity of infrared or ultrasound emitted. |
993 | Often these sensors are unit less and as such conversion | 1140 | Often these sensors are unit less and as such conversion |
994 | to SI units is not possible. Where it is, the units should | 1141 | to SI units is not possible. Where it is, the units should |
995 | be meters. | 1142 | be meters. If such a conversion is not possible, the reported |
1143 | values should behave in the same way as a distance, i.e. lower | ||
1144 | values indicate something is closer to the sensor. | ||
996 | 1145 | ||
997 | What: /sys/.../iio:deviceX/in_illuminanceY_input | 1146 | What: /sys/.../iio:deviceX/in_illuminanceY_input |
998 | What: /sys/.../iio:deviceX/in_illuminanceY_raw | 1147 | What: /sys/.../iio:deviceX/in_illuminanceY_raw |
@@ -1024,6 +1173,12 @@ Description: | |||
1024 | This attribute is used to get/set the integration time in | 1173 | This attribute is used to get/set the integration time in |
1025 | seconds. | 1174 | seconds. |
1026 | 1175 | ||
1176 | What: /sys/.../iio:deviceX/in_velocity_sqrt(x^2+y^2+z^2)_integration_time | ||
1177 | KernelVersion: 3.20 | ||
1178 | Contact: linux-iio@vger.kernel.org | ||
1179 | Description: | ||
1180 | Number of seconds in which to compute speed. | ||
1181 | |||
1027 | What: /sys/bus/iio/devices/iio:deviceX/in_rot_quaternion_raw | 1182 | What: /sys/bus/iio/devices/iio:deviceX/in_rot_quaternion_raw |
1028 | KernelVersion: 3.15 | 1183 | KernelVersion: 3.15 |
1029 | Contact: linux-iio@vger.kernel.org | 1184 | Contact: linux-iio@vger.kernel.org |
@@ -1051,3 +1206,46 @@ Description: | |||
1051 | after application of scale and offset. If no offset or scale is | 1206 | after application of scale and offset. If no offset or scale is |
1052 | present, output should be considered as processed with the | 1207 | present, output should be considered as processed with the |
1053 | unit in milliamps. | 1208 | unit in milliamps. |
1209 | |||
1210 | What: /sys/.../iio:deviceX/in_energy_en | ||
1211 | What: /sys/.../iio:deviceX/in_distance_en | ||
1212 | What: /sys/.../iio:deviceX/in_velocity_sqrt(x^2+y^2+z^2)_en | ||
1213 | What: /sys/.../iio:deviceX/in_steps_en | ||
1214 | KernelVersion: 3.19 | ||
1215 | Contact: linux-iio@vger.kernel.org | ||
1216 | Description: | ||
1217 | Activates a device feature that runs in firmware/hardware. | ||
1218 | E.g. for steps: the pedometer saves power while not used; | ||
1219 | when activated, it will count the steps taken by the user in | ||
1220 | firmware and export them through in_steps_input. | ||
1221 | |||
1222 | What: /sys/.../iio:deviceX/in_steps_input | ||
1223 | KernelVersion: 3.19 | ||
1224 | Contact: linux-iio@vger.kernel.org | ||
1225 | Description: | ||
1226 | This attribute is used to read the number of steps taken by the user | ||
1227 | since the last reboot while activated. | ||
1228 | |||
1229 | What: /sys/.../iio:deviceX/in_velocity_sqrt(x^2+y^2+z^2)_input | ||
1230 | What: /sys/.../iio:deviceX/in_velocity_sqrt(x^2+y^2+z^2)_raw | ||
1231 | KernelVersion: 3.19 | ||
1232 | Contact: linux-iio@vger.kernel.org | ||
1233 | Description: | ||
1234 | This attribute is used to read the current speed value of the | ||
1235 | user (which is the norm or magnitude of the velocity vector). | ||
1236 | Units after application of scale are m/s. | ||
1237 | |||
1238 | What: /sys/.../iio:deviceX/in_steps_debounce_count | ||
1239 | KernelVersion: 3.20 | ||
1240 | Contact: linux-iio@vger.kernel.org | ||
1241 | Description: | ||
1242 | Specifies the number of steps that must occur within | ||
1243 | in_steps_filter_debounce_time for the pedometer to decide the | ||
1244 | consumer is making steps. | ||
1245 | |||
1246 | What: /sys/.../iio:deviceX/in_steps_debounce_time | ||
1247 | KernelVersion: 3.20 | ||
1248 | Contact: linux-iio@vger.kernel.org | ||
1249 | Description: | ||
1250 | Specifies number of seconds in which we compute the steps | ||
1251 | that occur in order to decide if the consumer is making steps. | ||
diff --git a/Documentation/ABI/testing/sysfs-class-cxl b/Documentation/ABI/testing/sysfs-class-cxl index 554405ec1955..3680364b4048 100644 --- a/Documentation/ABI/testing/sysfs-class-cxl +++ b/Documentation/ABI/testing/sysfs-class-cxl | |||
@@ -1,3 +1,9 @@ | |||
1 | Note: Attributes that are shared between devices are stored in the directory | ||
2 | pointed to by the symlink device/. | ||
3 | Example: The real path of the attribute /sys/class/cxl/afu0.0s/irqs_max is | ||
4 | /sys/class/cxl/afu0.0s/device/irqs_max, i.e. /sys/class/cxl/afu0.0/irqs_max. | ||
5 | |||
6 | |||
1 | Slave contexts (eg. /sys/class/cxl/afu0.0s): | 7 | Slave contexts (eg. /sys/class/cxl/afu0.0s): |
2 | 8 | ||
3 | What: /sys/class/cxl/<afu>/irqs_max | 9 | What: /sys/class/cxl/<afu>/irqs_max |
@@ -67,7 +73,7 @@ Contact: linuxppc-dev@lists.ozlabs.org | |||
67 | Description: read only | 73 | Description: read only |
68 | Decimal value of the current version of the kernel/user API. | 74 | Decimal value of the current version of the kernel/user API. |
69 | 75 | ||
70 | What: /sys/class/cxl/<afu>/api_version_com | 76 | What: /sys/class/cxl/<afu>/api_version_compatible |
71 | Date: September 2014 | 77 | Date: September 2014 |
72 | Contact: linuxppc-dev@lists.ozlabs.org | 78 | Contact: linuxppc-dev@lists.ozlabs.org |
73 | Description: read only | 79 | Description: read only |
@@ -75,6 +81,42 @@ Description: read only | |||
75 | this this kernel supports. | 81 | this this kernel supports. |
76 | 82 | ||
77 | 83 | ||
84 | AFU configuration records (eg. /sys/class/cxl/afu0.0/cr0): | ||
85 | |||
86 | An AFU may optionally export one or more PCIe like configuration records, known | ||
87 | as AFU configuration records, which will show up here (if present). | ||
88 | |||
89 | What: /sys/class/cxl/<afu>/cr<config num>/vendor | ||
90 | Date: February 2015 | ||
91 | Contact: linuxppc-dev@lists.ozlabs.org | ||
92 | Description: read only | ||
93 | Hexadecimal value of the vendor ID found in this AFU | ||
94 | configuration record. | ||
95 | |||
96 | What: /sys/class/cxl/<afu>/cr<config num>/device | ||
97 | Date: February 2015 | ||
98 | Contact: linuxppc-dev@lists.ozlabs.org | ||
99 | Description: read only | ||
100 | Hexadecimal value of the device ID found in this AFU | ||
101 | configuration record. | ||
102 | |||
103 | What: /sys/class/cxl/<afu>/cr<config num>/vendor | ||
104 | Date: February 2015 | ||
105 | Contact: linuxppc-dev@lists.ozlabs.org | ||
106 | Description: read only | ||
107 | Hexadecimal value of the class code found in this AFU | ||
108 | configuration record. | ||
109 | |||
110 | What: /sys/class/cxl/<afu>/cr<config num>/config | ||
111 | Date: February 2015 | ||
112 | Contact: linuxppc-dev@lists.ozlabs.org | ||
113 | Description: read only | ||
114 | This binary file provides raw access to the AFU configuration | ||
115 | record. The format is expected to match the either the standard | ||
116 | or extended configuration space defined by the PCIe | ||
117 | specification. | ||
118 | |||
119 | |||
78 | 120 | ||
79 | Master contexts (eg. /sys/class/cxl/afu0.0m) | 121 | Master contexts (eg. /sys/class/cxl/afu0.0m) |
80 | 122 | ||
@@ -106,7 +148,7 @@ Contact: linuxppc-dev@lists.ozlabs.org | |||
106 | Description: read only | 148 | Description: read only |
107 | Identifies the CAIA Version the card implements. | 149 | Identifies the CAIA Version the card implements. |
108 | 150 | ||
109 | What: /sys/class/cxl/<card>/psl_version | 151 | What: /sys/class/cxl/<card>/psl_revision |
110 | Date: September 2014 | 152 | Date: September 2014 |
111 | Contact: linuxppc-dev@lists.ozlabs.org | 153 | Contact: linuxppc-dev@lists.ozlabs.org |
112 | Description: read only | 154 | Description: read only |
@@ -127,3 +169,24 @@ Contact: linuxppc-dev@lists.ozlabs.org | |||
127 | Description: read only | 169 | Description: read only |
128 | Will return "user" or "factory" depending on the image loaded | 170 | Will return "user" or "factory" depending on the image loaded |
129 | onto the card. | 171 | onto the card. |
172 | |||
173 | What: /sys/class/cxl/<card>/load_image_on_perst | ||
174 | Date: December 2014 | ||
175 | Contact: linuxppc-dev@lists.ozlabs.org | ||
176 | Description: read/write | ||
177 | Valid entries are "none", "user", and "factory". | ||
178 | "none" means PERST will not cause image to be loaded to the | ||
179 | card. A power cycle is required to load the image. | ||
180 | "none" could be useful for debugging because the trace arrays | ||
181 | are preserved. | ||
182 | "user" and "factory" means PERST will cause either the user or | ||
183 | user or factory image to be loaded. | ||
184 | Default is to reload on PERST whichever image the card has | ||
185 | loaded. | ||
186 | |||
187 | What: /sys/class/cxl/<card>/reset | ||
188 | Date: October 2014 | ||
189 | Contact: linuxppc-dev@lists.ozlabs.org | ||
190 | Description: write only | ||
191 | Writing 1 will issue a PERST to card which may cause the card | ||
192 | to reload the FPGA depending on load_image_on_perst. | ||
diff --git a/Documentation/ABI/testing/sysfs-class-mei b/Documentation/ABI/testing/sysfs-class-mei index 0ec8b8178c41..80d9888a8ece 100644 --- a/Documentation/ABI/testing/sysfs-class-mei +++ b/Documentation/ABI/testing/sysfs-class-mei | |||
@@ -14,3 +14,18 @@ Description: | |||
14 | The /sys/class/mei/meiN directory is created for | 14 | The /sys/class/mei/meiN directory is created for |
15 | each probed mei device | 15 | each probed mei device |
16 | 16 | ||
17 | What: /sys/class/mei/meiN/fw_status | ||
18 | Date: Nov 2014 | ||
19 | KernelVersion: 3.19 | ||
20 | Contact: Tomas Winkler <tomas.winkler@intel.com> | ||
21 | Description: Display fw status registers content | ||
22 | |||
23 | The ME FW writes its status information into fw status | ||
24 | registers for BIOS and OS to monitor fw health. | ||
25 | |||
26 | The register contains running state, power management | ||
27 | state, error codes, and others. The way the registers | ||
28 | are decoded depends on PCH or SoC generation. | ||
29 | Also number of registers varies between 1 and 6 | ||
30 | depending on generation. | ||
31 | |||
diff --git a/Documentation/ABI/testing/sysfs-class-power b/Documentation/ABI/testing/sysfs-class-power index 909e7602c717..369d2a2d7d3e 100644 --- a/Documentation/ABI/testing/sysfs-class-power +++ b/Documentation/ABI/testing/sysfs-class-power | |||
@@ -32,3 +32,45 @@ Description: | |||
32 | Valid values: | 32 | Valid values: |
33 | - 5, 6 or 7 (hours), | 33 | - 5, 6 or 7 (hours), |
34 | - 0: disabled. | 34 | - 0: disabled. |
35 | |||
36 | What: /sys/class/power_supply/max77693-charger/device/fast_charge_timer | ||
37 | Date: January 2015 | ||
38 | KernelVersion: 3.19.0 | ||
39 | Contact: Krzysztof Kozlowski <k.kozlowski@samsung.com> | ||
40 | Description: | ||
41 | This entry shows and sets the maximum time the max77693 | ||
42 | charger operates in fast-charge mode. When the timer expires | ||
43 | the device will terminate fast-charge mode (charging current | ||
44 | will drop to 0 A) and will trigger interrupt. | ||
45 | |||
46 | Valid values: | ||
47 | - 4 - 16 (hours), step by 2 (rounded down) | ||
48 | - 0: disabled. | ||
49 | |||
50 | What: /sys/class/power_supply/max77693-charger/device/top_off_threshold_current | ||
51 | Date: January 2015 | ||
52 | KernelVersion: 3.19.0 | ||
53 | Contact: Krzysztof Kozlowski <k.kozlowski@samsung.com> | ||
54 | Description: | ||
55 | This entry shows and sets the charging current threshold for | ||
56 | entering top-off charging mode. When charging current in fast | ||
57 | charge mode drops below this value, the charger will trigger | ||
58 | interrupt and start top-off charging mode. | ||
59 | |||
60 | Valid values: | ||
61 | - 100000 - 200000 (microamps), step by 25000 (rounded down) | ||
62 | - 200000 - 350000 (microamps), step by 50000 (rounded down) | ||
63 | - 0: disabled. | ||
64 | |||
65 | What: /sys/class/power_supply/max77693-charger/device/top_off_timer | ||
66 | Date: January 2015 | ||
67 | KernelVersion: 3.19.0 | ||
68 | Contact: Krzysztof Kozlowski <k.kozlowski@samsung.com> | ||
69 | Description: | ||
70 | This entry shows and sets the maximum time the max77693 | ||
71 | charger operates in top-off charge mode. When the timer expires | ||
72 | the device will terminate top-off charge mode (charging current | ||
73 | will drop to 0 A) and will trigger interrupt. | ||
74 | |||
75 | Valid values: | ||
76 | - 0 - 70 (minutes), step by 10 (rounded down) | ||
diff --git a/Documentation/ABI/testing/sysfs-driver-input-axp-pek b/Documentation/ABI/testing/sysfs-driver-input-axp-pek new file mode 100644 index 000000000000..a5e671b9fa79 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-driver-input-axp-pek | |||
@@ -0,0 +1,11 @@ | |||
1 | What: /sys/class/input/input(x)/device/startup | ||
2 | Date: March 2014 | ||
3 | Contact: Carlo Caione <carlo@caione.org> | ||
4 | Description: Startup time in us. Board is powered on if the button is pressed | ||
5 | for more than <startup_time> | ||
6 | |||
7 | What: /sys/class/input/input(x)/device/shutdown | ||
8 | Date: March 2014 | ||
9 | Contact: Carlo Caione <carlo@caione.org> | ||
10 | Description: Shutdown time in us. Board is powered off if the button is pressed | ||
11 | for more than <shutdown_time> | ||
diff --git a/Documentation/ABI/testing/sysfs-driver-samsung-laptop b/Documentation/ABI/testing/sysfs-driver-samsung-laptop index 678819a3f8bf..63c1ad0212fc 100644 --- a/Documentation/ABI/testing/sysfs-driver-samsung-laptop +++ b/Documentation/ABI/testing/sysfs-driver-samsung-laptop | |||
@@ -35,3 +35,11 @@ Contact: Corentin Chary <corentin.chary@gmail.com> | |||
35 | Description: Use your USB ports to charge devices, even | 35 | Description: Use your USB ports to charge devices, even |
36 | when your laptop is powered off. | 36 | when your laptop is powered off. |
37 | 1 means enabled, 0 means disabled. | 37 | 1 means enabled, 0 means disabled. |
38 | |||
39 | What: /sys/devices/platform/samsung/lid_handling | ||
40 | Date: December 11, 2014 | ||
41 | KernelVersion: 3.19 | ||
42 | Contact: Julijonas Kikutis <julijonas.kikutis@gmail.com> | ||
43 | Description: Some Samsung laptops handle lid closing quicker and | ||
44 | only handle lid opening with this mode enabled. | ||
45 | 1 means enabled, 0 means disabled. | ||
diff --git a/Documentation/ABI/testing/sysfs-driver-toshiba_acpi b/Documentation/ABI/testing/sysfs-driver-toshiba_acpi new file mode 100644 index 000000000000..ca9c71a531c5 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-driver-toshiba_acpi | |||
@@ -0,0 +1,114 @@ | |||
1 | What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/kbd_backlight_mode | ||
2 | Date: June 8, 2014 | ||
3 | KernelVersion: 3.15 | ||
4 | Contact: Azael Avalos <coproscefalo@gmail.com> | ||
5 | Description: This file controls the keyboard backlight operation mode, valid | ||
6 | values are: | ||
7 | * 0x1 -> FN-Z | ||
8 | * 0x2 -> AUTO (also called TIMER) | ||
9 | * 0x8 -> ON | ||
10 | * 0x10 -> OFF | ||
11 | Note that the kernel 3.16 onwards this file accepts all listed | ||
12 | parameters, kernel 3.15 only accepts the first two (FN-Z and | ||
13 | AUTO). | ||
14 | Users: KToshiba | ||
15 | |||
16 | What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/kbd_backlight_timeout | ||
17 | Date: June 8, 2014 | ||
18 | KernelVersion: 3.15 | ||
19 | Contact: Azael Avalos <coproscefalo@gmail.com> | ||
20 | Description: This file controls the timeout of the keyboard backlight | ||
21 | whenever the operation mode is set to AUTO (or TIMER), | ||
22 | valid values range from 0-60. | ||
23 | Note that the kernel 3.15 only had support for the first | ||
24 | keyboard type, the kernel 3.16 added support for the second | ||
25 | type and the range accepted for type 2 is 1-60. | ||
26 | See the entry named "kbd_type" | ||
27 | Users: KToshiba | ||
28 | |||
29 | What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/position | ||
30 | Date: June 8, 2014 | ||
31 | KernelVersion: 3.15 | ||
32 | Contact: Azael Avalos <coproscefalo@gmail.com> | ||
33 | Description: This file shows the absolute position of the built-in | ||
34 | accelereometer. | ||
35 | |||
36 | What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/touchpad | ||
37 | Date: June 8, 2014 | ||
38 | KernelVersion: 3.15 | ||
39 | Contact: Azael Avalos <coproscefalo@gmail.com> | ||
40 | Description: This files controls the status of the touchpad and pointing | ||
41 | stick (if available), valid values are: | ||
42 | * 0 -> OFF | ||
43 | * 1 -> ON | ||
44 | Users: KToshiba | ||
45 | |||
46 | What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/available_kbd_modes | ||
47 | Date: August 3, 2014 | ||
48 | KernelVersion: 3.16 | ||
49 | Contact: Azael Avalos <coproscefalo@gmail.com> | ||
50 | Description: This file shows the supported keyboard backlight modes | ||
51 | the system supports, which can be: | ||
52 | * 0x1 -> FN-Z | ||
53 | * 0x2 -> AUTO (also called TIMER) | ||
54 | * 0x8 -> ON | ||
55 | * 0x10 -> OFF | ||
56 | Note that not all keyboard types support the listed modes. | ||
57 | See the entry named "available_kbd_modes" | ||
58 | Users: KToshiba | ||
59 | |||
60 | What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/kbd_type | ||
61 | Date: August 3, 2014 | ||
62 | KernelVersion: 3.16 | ||
63 | Contact: Azael Avalos <coproscefalo@gmail.com> | ||
64 | Description: This file shows the current keyboard backlight type, | ||
65 | which can be: | ||
66 | * 1 -> Type 1, supporting modes FN-Z and AUTO | ||
67 | * 2 -> Type 2, supporting modes TIMER, ON and OFF | ||
68 | Users: KToshiba | ||
69 | |||
70 | What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/version | ||
71 | Date: February, 2015 | ||
72 | KernelVersion: 3.20 | ||
73 | Contact: Azael Avalos <coproscefalo@gmail.com> | ||
74 | Description: This file shows the current version of the driver | ||
75 | |||
76 | What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/fan | ||
77 | Date: February, 2015 | ||
78 | KernelVersion: 3.20 | ||
79 | Contact: Azael Avalos <coproscefalo@gmail.com> | ||
80 | Description: This file controls the state of the internal fan, valid | ||
81 | values are: | ||
82 | * 0 -> OFF | ||
83 | * 1 -> ON | ||
84 | |||
85 | What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/kbd_function_keys | ||
86 | Date: February, 2015 | ||
87 | KernelVersion: 3.20 | ||
88 | Contact: Azael Avalos <coproscefalo@gmail.com> | ||
89 | Description: This file controls the Special Functions (hotkeys) operation | ||
90 | mode, valid values are: | ||
91 | * 0 -> Normal Operation | ||
92 | * 1 -> Special Functions | ||
93 | In the "Normal Operation" mode, the F{1-12} keys are as usual | ||
94 | and the hotkeys are accessed via FN-F{1-12}. | ||
95 | In the "Special Functions" mode, the F{1-12} keys trigger the | ||
96 | hotkey and the F{1-12} keys are accessed via FN-F{1-12}. | ||
97 | |||
98 | What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/panel_power_on | ||
99 | Date: February, 2015 | ||
100 | KernelVersion: 3.20 | ||
101 | Contact: Azael Avalos <coproscefalo@gmail.com> | ||
102 | Description: This file controls whether the laptop should turn ON whenever | ||
103 | the LID is opened, valid values are: | ||
104 | * 0 -> Disabled | ||
105 | * 1 -> Enabled | ||
106 | |||
107 | What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/usb_three | ||
108 | Date: February, 2015 | ||
109 | KernelVersion: 3.20 | ||
110 | Contact: Azael Avalos <coproscefalo@gmail.com> | ||
111 | Description: This file controls whether the USB 3 functionality, valid | ||
112 | values are: | ||
113 | * 0 -> Disabled (Acts as a regular USB 2) | ||
114 | * 1 -> Enabled (Full USB 3 functionality) | ||
diff --git a/Documentation/ABI/testing/sysfs-fs-f2fs b/Documentation/ABI/testing/sysfs-fs-f2fs index 6f9157f16725..2c4cc42006e8 100644 --- a/Documentation/ABI/testing/sysfs-fs-f2fs +++ b/Documentation/ABI/testing/sysfs-fs-f2fs | |||
@@ -74,3 +74,9 @@ Date: March 2014 | |||
74 | Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com> | 74 | Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com> |
75 | Description: | 75 | Description: |
76 | Controls the memory footprint used by f2fs. | 76 | Controls the memory footprint used by f2fs. |
77 | |||
78 | What: /sys/fs/f2fs/<disk>/trim_sections | ||
79 | Date: February 2015 | ||
80 | Contact: "Jaegeuk Kim" <jaegeuk@kernel.org> | ||
81 | Description: | ||
82 | Controls the trimming rate in batch mode. | ||
diff --git a/Documentation/ABI/testing/sysfs-kernel-livepatch b/Documentation/ABI/testing/sysfs-kernel-livepatch new file mode 100644 index 000000000000..5bf42a840b22 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-kernel-livepatch | |||
@@ -0,0 +1,44 @@ | |||
1 | What: /sys/kernel/livepatch | ||
2 | Date: Nov 2014 | ||
3 | KernelVersion: 3.19.0 | ||
4 | Contact: live-patching@vger.kernel.org | ||
5 | Description: | ||
6 | Interface for kernel live patching | ||
7 | |||
8 | The /sys/kernel/livepatch directory contains subdirectories for | ||
9 | each loaded live patch module. | ||
10 | |||
11 | What: /sys/kernel/livepatch/<patch> | ||
12 | Date: Nov 2014 | ||
13 | KernelVersion: 3.19.0 | ||
14 | Contact: live-patching@vger.kernel.org | ||
15 | Description: | ||
16 | The patch directory contains subdirectories for each kernel | ||
17 | object (vmlinux or a module) in which it patched functions. | ||
18 | |||
19 | What: /sys/kernel/livepatch/<patch>/enabled | ||
20 | Date: Nov 2014 | ||
21 | KernelVersion: 3.19.0 | ||
22 | Contact: live-patching@vger.kernel.org | ||
23 | Description: | ||
24 | A writable attribute that indicates whether the patched | ||
25 | code is currently applied. Writing 0 will disable the patch | ||
26 | while writing 1 will re-enable the patch. | ||
27 | |||
28 | What: /sys/kernel/livepatch/<patch>/<object> | ||
29 | Date: Nov 2014 | ||
30 | KernelVersion: 3.19.0 | ||
31 | Contact: live-patching@vger.kernel.org | ||
32 | Description: | ||
33 | The object directory contains subdirectories for each function | ||
34 | that is patched within the object. | ||
35 | |||
36 | What: /sys/kernel/livepatch/<patch>/<object>/<function> | ||
37 | Date: Nov 2014 | ||
38 | KernelVersion: 3.19.0 | ||
39 | Contact: live-patching@vger.kernel.org | ||
40 | Description: | ||
41 | The function directory contains attributes regarding the | ||
42 | properties and state of the patched function. | ||
43 | |||
44 | There are currently no such attributes. | ||
diff --git a/Documentation/ABI/testing/sysfs-platform-dell-laptop b/Documentation/ABI/testing/sysfs-platform-dell-laptop deleted file mode 100644 index 7969443ef0ef..000000000000 --- a/Documentation/ABI/testing/sysfs-platform-dell-laptop +++ /dev/null | |||
@@ -1,60 +0,0 @@ | |||
1 | What: /sys/class/leds/dell::kbd_backlight/als_setting | ||
2 | Date: December 2014 | ||
3 | KernelVersion: 3.19 | ||
4 | Contact: Gabriele Mazzotta <gabriele.mzt@gmail.com>, | ||
5 | Pali Rohár <pali.rohar@gmail.com> | ||
6 | Description: | ||
7 | This file allows to control the automatic keyboard | ||
8 | illumination mode on some systems that have an ambient | ||
9 | light sensor. Write 1 to this file to enable the auto | ||
10 | mode, 0 to disable it. | ||
11 | |||
12 | What: /sys/class/leds/dell::kbd_backlight/start_triggers | ||
13 | Date: December 2014 | ||
14 | KernelVersion: 3.19 | ||
15 | Contact: Gabriele Mazzotta <gabriele.mzt@gmail.com>, | ||
16 | Pali Rohár <pali.rohar@gmail.com> | ||
17 | Description: | ||
18 | This file allows to control the input triggers that | ||
19 | turn on the keyboard backlight illumination that is | ||
20 | disabled because of inactivity. | ||
21 | Read the file to see the triggers available. The ones | ||
22 | enabled are preceded by '+', those disabled by '-'. | ||
23 | |||
24 | To enable a trigger, write its name preceded by '+' to | ||
25 | this file. To disable a trigger, write its name preceded | ||
26 | by '-' instead. | ||
27 | |||
28 | For example, to enable the keyboard as trigger run: | ||
29 | echo +keyboard > /sys/class/leds/dell::kbd_backlight/start_triggers | ||
30 | To disable it: | ||
31 | echo -keyboard > /sys/class/leds/dell::kbd_backlight/start_triggers | ||
32 | |||
33 | Note that not all the available triggers can be configured. | ||
34 | |||
35 | What: /sys/class/leds/dell::kbd_backlight/stop_timeout | ||
36 | Date: December 2014 | ||
37 | KernelVersion: 3.19 | ||
38 | Contact: Gabriele Mazzotta <gabriele.mzt@gmail.com>, | ||
39 | Pali Rohár <pali.rohar@gmail.com> | ||
40 | Description: | ||
41 | This file allows to specify the interval after which the | ||
42 | keyboard illumination is disabled because of inactivity. | ||
43 | The timeouts are expressed in seconds, minutes, hours and | ||
44 | days, for which the symbols are 's', 'm', 'h' and 'd' | ||
45 | respectively. | ||
46 | |||
47 | To configure the timeout, write to this file a value along | ||
48 | with any the above units. If no unit is specified, the value | ||
49 | is assumed to be expressed in seconds. | ||
50 | |||
51 | For example, to set the timeout to 10 minutes run: | ||
52 | echo 10m > /sys/class/leds/dell::kbd_backlight/stop_timeout | ||
53 | |||
54 | Note that when this file is read, the returned value might be | ||
55 | expressed in a different unit than the one used when the timeout | ||
56 | was set. | ||
57 | |||
58 | Also note that only some timeouts are supported and that | ||
59 | some systems might fall back to a specific timeout in case | ||
60 | an invalid timeout is written to this file. | ||
diff --git a/Documentation/Changes b/Documentation/Changes index 74bdda9272a4..646cdaa6e9d1 100644 --- a/Documentation/Changes +++ b/Documentation/Changes | |||
@@ -21,8 +21,8 @@ running a Linux kernel. Also, not all tools are necessary on all | |||
21 | systems; obviously, if you don't have any ISDN hardware, for example, | 21 | systems; obviously, if you don't have any ISDN hardware, for example, |
22 | you probably needn't concern yourself with isdn4k-utils. | 22 | you probably needn't concern yourself with isdn4k-utils. |
23 | 23 | ||
24 | o Gnu C 3.2 # gcc --version | 24 | o GNU C 3.2 # gcc --version |
25 | o Gnu make 3.80 # make --version | 25 | o GNU make 3.80 # make --version |
26 | o binutils 2.12 # ld -v | 26 | o binutils 2.12 # ld -v |
27 | o util-linux 2.10o # fdformat --version | 27 | o util-linux 2.10o # fdformat --version |
28 | o module-init-tools 0.9.10 # depmod -V | 28 | o module-init-tools 0.9.10 # depmod -V |
@@ -57,7 +57,7 @@ computer. | |||
57 | Make | 57 | Make |
58 | ---- | 58 | ---- |
59 | 59 | ||
60 | You will need Gnu make 3.80 or later to build the kernel. | 60 | You will need GNU make 3.80 or later to build the kernel. |
61 | 61 | ||
62 | Binutils | 62 | Binutils |
63 | -------- | 63 | -------- |
diff --git a/Documentation/CodingStyle b/Documentation/CodingStyle index 618a33c940df..449a8a19fc21 100644 --- a/Documentation/CodingStyle +++ b/Documentation/CodingStyle | |||
@@ -527,6 +527,7 @@ values. To do the latter, you can stick the following in your .emacs file: | |||
527 | (string-match (expand-file-name "~/src/linux-trees") | 527 | (string-match (expand-file-name "~/src/linux-trees") |
528 | filename)) | 528 | filename)) |
529 | (setq indent-tabs-mode t) | 529 | (setq indent-tabs-mode t) |
530 | (setq show-trailing-whitespace t) | ||
530 | (c-set-style "linux-tabs-only"))))) | 531 | (c-set-style "linux-tabs-only"))))) |
531 | 532 | ||
532 | This will make emacs go better with the kernel coding style for C | 533 | This will make emacs go better with the kernel coding style for C |
diff --git a/Documentation/DocBook/80211.tmpl b/Documentation/DocBook/80211.tmpl index d9b9416c989f..aac9357d4866 100644 --- a/Documentation/DocBook/80211.tmpl +++ b/Documentation/DocBook/80211.tmpl | |||
@@ -113,7 +113,6 @@ | |||
113 | !Finclude/net/cfg80211.h cfg80211_beacon_data | 113 | !Finclude/net/cfg80211.h cfg80211_beacon_data |
114 | !Finclude/net/cfg80211.h cfg80211_ap_settings | 114 | !Finclude/net/cfg80211.h cfg80211_ap_settings |
115 | !Finclude/net/cfg80211.h station_parameters | 115 | !Finclude/net/cfg80211.h station_parameters |
116 | !Finclude/net/cfg80211.h station_info_flags | ||
117 | !Finclude/net/cfg80211.h rate_info_flags | 116 | !Finclude/net/cfg80211.h rate_info_flags |
118 | !Finclude/net/cfg80211.h rate_info | 117 | !Finclude/net/cfg80211.h rate_info |
119 | !Finclude/net/cfg80211.h station_info | 118 | !Finclude/net/cfg80211.h station_info |
@@ -435,7 +434,6 @@ | |||
435 | <section id="ps-client"> | 434 | <section id="ps-client"> |
436 | <title>support for powersaving clients</title> | 435 | <title>support for powersaving clients</title> |
437 | !Pinclude/net/mac80211.h AP support for powersaving clients | 436 | !Pinclude/net/mac80211.h AP support for powersaving clients |
438 | </section> | ||
439 | !Finclude/net/mac80211.h ieee80211_get_buffered_bc | 437 | !Finclude/net/mac80211.h ieee80211_get_buffered_bc |
440 | !Finclude/net/mac80211.h ieee80211_beacon_get | 438 | !Finclude/net/mac80211.h ieee80211_beacon_get |
441 | !Finclude/net/mac80211.h ieee80211_sta_eosp | 439 | !Finclude/net/mac80211.h ieee80211_sta_eosp |
@@ -444,6 +442,7 @@ | |||
444 | !Finclude/net/mac80211.h ieee80211_sta_ps_transition_ni | 442 | !Finclude/net/mac80211.h ieee80211_sta_ps_transition_ni |
445 | !Finclude/net/mac80211.h ieee80211_sta_set_buffered | 443 | !Finclude/net/mac80211.h ieee80211_sta_set_buffered |
446 | !Finclude/net/mac80211.h ieee80211_sta_block_awake | 444 | !Finclude/net/mac80211.h ieee80211_sta_block_awake |
445 | </section> | ||
447 | </chapter> | 446 | </chapter> |
448 | 447 | ||
449 | <chapter id="multi-iface"> | 448 | <chapter id="multi-iface"> |
@@ -488,8 +487,8 @@ | |||
488 | <title>RX A-MPDU aggregation</title> | 487 | <title>RX A-MPDU aggregation</title> |
489 | !Pnet/mac80211/agg-rx.c RX A-MPDU aggregation | 488 | !Pnet/mac80211/agg-rx.c RX A-MPDU aggregation |
490 | !Cnet/mac80211/agg-rx.c | 489 | !Cnet/mac80211/agg-rx.c |
491 | </sect1> | ||
492 | !Finclude/net/mac80211.h ieee80211_ampdu_mlme_action | 490 | !Finclude/net/mac80211.h ieee80211_ampdu_mlme_action |
491 | </sect1> | ||
493 | </chapter> | 492 | </chapter> |
494 | 493 | ||
495 | <chapter id="smps"> | 494 | <chapter id="smps"> |
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile index 9c7d92d03f62..b6a6a2e0dd3b 100644 --- a/Documentation/DocBook/Makefile +++ b/Documentation/DocBook/Makefile | |||
@@ -56,7 +56,7 @@ htmldocs: $(HTML) | |||
56 | 56 | ||
57 | MAN := $(patsubst %.xml, %.9, $(BOOKS)) | 57 | MAN := $(patsubst %.xml, %.9, $(BOOKS)) |
58 | mandocs: $(MAN) | 58 | mandocs: $(MAN) |
59 | $(if $(wildcard $(obj)/man/*.9),gzip -f $(obj)/man/*.9) | 59 | find $(obj)/man -name '*.9' | xargs gzip -f |
60 | 60 | ||
61 | installmandocs: mandocs | 61 | installmandocs: mandocs |
62 | mkdir -p /usr/local/man/man9/ | 62 | mkdir -p /usr/local/man/man9/ |
diff --git a/Documentation/DocBook/crypto-API.tmpl b/Documentation/DocBook/crypto-API.tmpl index c763d30f4893..04a8c24ead47 100644 --- a/Documentation/DocBook/crypto-API.tmpl +++ b/Documentation/DocBook/crypto-API.tmpl | |||
@@ -111,7 +111,7 @@ | |||
111 | <para> | 111 | <para> |
112 | This specification is intended for consumers of the kernel crypto | 112 | This specification is intended for consumers of the kernel crypto |
113 | API as well as for developers implementing ciphers. This API | 113 | API as well as for developers implementing ciphers. This API |
114 | specification, however, does not discusses all API calls available | 114 | specification, however, does not discuss all API calls available |
115 | to data transformation implementations (i.e. implementations of | 115 | to data transformation implementations (i.e. implementations of |
116 | ciphers and other transformations (such as CRC or even compression | 116 | ciphers and other transformations (such as CRC or even compression |
117 | algorithms) that can register with the kernel crypto API). | 117 | algorithms) that can register with the kernel crypto API). |
diff --git a/Documentation/DocBook/device-drivers.tmpl b/Documentation/DocBook/device-drivers.tmpl index f2130586ef5d..faf09d4a0ea8 100644 --- a/Documentation/DocBook/device-drivers.tmpl +++ b/Documentation/DocBook/device-drivers.tmpl | |||
@@ -190,23 +190,6 @@ X!Edrivers/pnp/system.c | |||
190 | !Idrivers/message/fusion/mptfc.c | 190 | !Idrivers/message/fusion/mptfc.c |
191 | !Idrivers/message/fusion/mptlan.c | 191 | !Idrivers/message/fusion/mptlan.c |
192 | </sect1> | 192 | </sect1> |
193 | <sect1><title>I2O message devices</title> | ||
194 | !Iinclude/linux/i2o.h | ||
195 | !Idrivers/message/i2o/core.h | ||
196 | !Edrivers/message/i2o/iop.c | ||
197 | !Idrivers/message/i2o/iop.c | ||
198 | !Idrivers/message/i2o/config-osm.c | ||
199 | !Edrivers/message/i2o/exec-osm.c | ||
200 | !Idrivers/message/i2o/exec-osm.c | ||
201 | !Idrivers/message/i2o/bus-osm.c | ||
202 | !Edrivers/message/i2o/device.c | ||
203 | !Idrivers/message/i2o/device.c | ||
204 | !Idrivers/message/i2o/driver.c | ||
205 | !Idrivers/message/i2o/pci.c | ||
206 | !Idrivers/message/i2o/i2o_block.c | ||
207 | !Idrivers/message/i2o/i2o_scsi.c | ||
208 | !Idrivers/message/i2o/i2o_proc.c | ||
209 | </sect1> | ||
210 | </chapter> | 193 | </chapter> |
211 | 194 | ||
212 | <chapter id="snddev"> | 195 | <chapter id="snddev"> |
diff --git a/Documentation/DocBook/drm.tmpl b/Documentation/DocBook/drm.tmpl index 4b592ffbafee..03f1985a4bd1 100644 --- a/Documentation/DocBook/drm.tmpl +++ b/Documentation/DocBook/drm.tmpl | |||
@@ -239,6 +239,14 @@ | |||
239 | Driver supports dedicated render nodes. | 239 | Driver supports dedicated render nodes. |
240 | </para></listitem> | 240 | </para></listitem> |
241 | </varlistentry> | 241 | </varlistentry> |
242 | <varlistentry> | ||
243 | <term>DRIVER_ATOMIC</term> | ||
244 | <listitem><para> | ||
245 | Driver supports atomic properties. In this case the driver | ||
246 | must implement appropriate obj->atomic_get_property() vfuncs | ||
247 | for any modeset objects with driver specific properties. | ||
248 | </para></listitem> | ||
249 | </varlistentry> | ||
242 | </variablelist> | 250 | </variablelist> |
243 | </sect3> | 251 | </sect3> |
244 | <sect3> | 252 | <sect3> |
@@ -1377,7 +1385,7 @@ int max_width, max_height;</synopsis> | |||
1377 | <itemizedlist> | 1385 | <itemizedlist> |
1378 | <listitem> | 1386 | <listitem> |
1379 | DRM_PLANE_TYPE_PRIMARY represents a "main" plane for a CRTC. Primary | 1387 | DRM_PLANE_TYPE_PRIMARY represents a "main" plane for a CRTC. Primary |
1380 | planes are the planes operated upon by by CRTC modesetting and flipping | 1388 | planes are the planes operated upon by CRTC modesetting and flipping |
1381 | operations described in <xref linkend="drm-kms-crtcops"/>. | 1389 | operations described in <xref linkend="drm-kms-crtcops"/>. |
1382 | </listitem> | 1390 | </listitem> |
1383 | <listitem> | 1391 | <listitem> |
@@ -2362,6 +2370,7 @@ void intel_crt_init(struct drm_device *dev) | |||
2362 | </sect2> | 2370 | </sect2> |
2363 | <sect2> | 2371 | <sect2> |
2364 | <title>Modeset Helper Functions Reference</title> | 2372 | <title>Modeset Helper Functions Reference</title> |
2373 | !Iinclude/drm/drm_crtc_helper.h | ||
2365 | !Edrivers/gpu/drm/drm_crtc_helper.c | 2374 | !Edrivers/gpu/drm/drm_crtc_helper.c |
2366 | !Pdrivers/gpu/drm/drm_crtc_helper.c overview | 2375 | !Pdrivers/gpu/drm/drm_crtc_helper.c overview |
2367 | </sect2> | 2376 | </sect2> |
@@ -2564,8 +2573,8 @@ void intel_crt_init(struct drm_device *dev) | |||
2564 | <td valign="top" >Description/Restrictions</td> | 2573 | <td valign="top" >Description/Restrictions</td> |
2565 | </tr> | 2574 | </tr> |
2566 | <tr> | 2575 | <tr> |
2567 | <td rowspan="25" valign="top" >DRM</td> | 2576 | <td rowspan="36" valign="top" >DRM</td> |
2568 | <td rowspan="4" valign="top" >Generic</td> | 2577 | <td rowspan="5" valign="top" >Connector</td> |
2569 | <td valign="top" >“EDID”</td> | 2578 | <td valign="top" >“EDID”</td> |
2570 | <td valign="top" >BLOB | IMMUTABLE</td> | 2579 | <td valign="top" >BLOB | IMMUTABLE</td> |
2571 | <td valign="top" >0</td> | 2580 | <td valign="top" >0</td> |
@@ -2594,7 +2603,14 @@ void intel_crt_init(struct drm_device *dev) | |||
2594 | <td valign="top" >Contains tiling information for a connector.</td> | 2603 | <td valign="top" >Contains tiling information for a connector.</td> |
2595 | </tr> | 2604 | </tr> |
2596 | <tr> | 2605 | <tr> |
2597 | <td rowspan="1" valign="top" >Plane</td> | 2606 | <td valign="top" >“CRTC_ID”</td> |
2607 | <td valign="top" >OBJECT</td> | ||
2608 | <td valign="top" >DRM_MODE_OBJECT_CRTC</td> | ||
2609 | <td valign="top" >Connector</td> | ||
2610 | <td valign="top" >CRTC that connector is attached to (atomic)</td> | ||
2611 | </tr> | ||
2612 | <tr> | ||
2613 | <td rowspan="11" valign="top" >Plane</td> | ||
2598 | <td valign="top" >“type”</td> | 2614 | <td valign="top" >“type”</td> |
2599 | <td valign="top" >ENUM | IMMUTABLE</td> | 2615 | <td valign="top" >ENUM | IMMUTABLE</td> |
2600 | <td valign="top" >{ "Overlay", "Primary", "Cursor" }</td> | 2616 | <td valign="top" >{ "Overlay", "Primary", "Cursor" }</td> |
@@ -2602,6 +2618,76 @@ void intel_crt_init(struct drm_device *dev) | |||
2602 | <td valign="top" >Plane type</td> | 2618 | <td valign="top" >Plane type</td> |
2603 | </tr> | 2619 | </tr> |
2604 | <tr> | 2620 | <tr> |
2621 | <td valign="top" >“SRC_X”</td> | ||
2622 | <td valign="top" >RANGE</td> | ||
2623 | <td valign="top" >Min=0, Max=UINT_MAX</td> | ||
2624 | <td valign="top" >Plane</td> | ||
2625 | <td valign="top" >Scanout source x coordinate in 16.16 fixed point (atomic)</td> | ||
2626 | </tr> | ||
2627 | <tr> | ||
2628 | <td valign="top" >“SRC_Y”</td> | ||
2629 | <td valign="top" >RANGE</td> | ||
2630 | <td valign="top" >Min=0, Max=UINT_MAX</td> | ||
2631 | <td valign="top" >Plane</td> | ||
2632 | <td valign="top" >Scanout source y coordinate in 16.16 fixed point (atomic)</td> | ||
2633 | </tr> | ||
2634 | <tr> | ||
2635 | <td valign="top" >“SRC_W”</td> | ||
2636 | <td valign="top" >RANGE</td> | ||
2637 | <td valign="top" >Min=0, Max=UINT_MAX</td> | ||
2638 | <td valign="top" >Plane</td> | ||
2639 | <td valign="top" >Scanout source width in 16.16 fixed point (atomic)</td> | ||
2640 | </tr> | ||
2641 | <tr> | ||
2642 | <td valign="top" >“SRC_H”</td> | ||
2643 | <td valign="top" >RANGE</td> | ||
2644 | <td valign="top" >Min=0, Max=UINT_MAX</td> | ||
2645 | <td valign="top" >Plane</td> | ||
2646 | <td valign="top" >Scanout source height in 16.16 fixed point (atomic)</td> | ||
2647 | </tr> | ||
2648 | <tr> | ||
2649 | <td valign="top" >“CRTC_X”</td> | ||
2650 | <td valign="top" >SIGNED_RANGE</td> | ||
2651 | <td valign="top" >Min=INT_MIN, Max=INT_MAX</td> | ||
2652 | <td valign="top" >Plane</td> | ||
2653 | <td valign="top" >Scanout CRTC (destination) x coordinate (atomic)</td> | ||
2654 | </tr> | ||
2655 | <tr> | ||
2656 | <td valign="top" >“CRTC_Y”</td> | ||
2657 | <td valign="top" >SIGNED_RANGE</td> | ||
2658 | <td valign="top" >Min=INT_MIN, Max=INT_MAX</td> | ||
2659 | <td valign="top" >Plane</td> | ||
2660 | <td valign="top" >Scanout CRTC (destination) y coordinate (atomic)</td> | ||
2661 | </tr> | ||
2662 | <tr> | ||
2663 | <td valign="top" >“CRTC_W”</td> | ||
2664 | <td valign="top" >RANGE</td> | ||
2665 | <td valign="top" >Min=0, Max=UINT_MAX</td> | ||
2666 | <td valign="top" >Plane</td> | ||
2667 | <td valign="top" >Scanout CRTC (destination) width (atomic)</td> | ||
2668 | </tr> | ||
2669 | <tr> | ||
2670 | <td valign="top" >“CRTC_H”</td> | ||
2671 | <td valign="top" >RANGE</td> | ||
2672 | <td valign="top" >Min=0, Max=UINT_MAX</td> | ||
2673 | <td valign="top" >Plane</td> | ||
2674 | <td valign="top" >Scanout CRTC (destination) height (atomic)</td> | ||
2675 | </tr> | ||
2676 | <tr> | ||
2677 | <td valign="top" >“FB_ID”</td> | ||
2678 | <td valign="top" >OBJECT</td> | ||
2679 | <td valign="top" >DRM_MODE_OBJECT_FB</td> | ||
2680 | <td valign="top" >Plane</td> | ||
2681 | <td valign="top" >Scanout framebuffer (atomic)</td> | ||
2682 | </tr> | ||
2683 | <tr> | ||
2684 | <td valign="top" >“CRTC_ID”</td> | ||
2685 | <td valign="top" >OBJECT</td> | ||
2686 | <td valign="top" >DRM_MODE_OBJECT_CRTC</td> | ||
2687 | <td valign="top" >Plane</td> | ||
2688 | <td valign="top" >CRTC that plane is attached to (atomic)</td> | ||
2689 | </tr> | ||
2690 | <tr> | ||
2605 | <td rowspan="2" valign="top" >DVI-I</td> | 2691 | <td rowspan="2" valign="top" >DVI-I</td> |
2606 | <td valign="top" >“subconnector”</td> | 2692 | <td valign="top" >“subconnector”</td> |
2607 | <td valign="top" >ENUM</td> | 2693 | <td valign="top" >ENUM</td> |
@@ -3883,6 +3969,7 @@ int num_ioctls;</synopsis> | |||
3883 | <title>Runtime Power Management</title> | 3969 | <title>Runtime Power Management</title> |
3884 | !Pdrivers/gpu/drm/i915/intel_runtime_pm.c runtime pm | 3970 | !Pdrivers/gpu/drm/i915/intel_runtime_pm.c runtime pm |
3885 | !Idrivers/gpu/drm/i915/intel_runtime_pm.c | 3971 | !Idrivers/gpu/drm/i915/intel_runtime_pm.c |
3972 | !Idrivers/gpu/drm/i915/intel_uncore.c | ||
3886 | </sect2> | 3973 | </sect2> |
3887 | <sect2> | 3974 | <sect2> |
3888 | <title>Interrupt Handling</title> | 3975 | <title>Interrupt Handling</title> |
@@ -3932,6 +4019,11 @@ int num_ioctls;</synopsis> | |||
3932 | </para> | 4019 | </para> |
3933 | </sect2> | 4020 | </sect2> |
3934 | <sect2> | 4021 | <sect2> |
4022 | <title>Atomic Plane Helpers</title> | ||
4023 | !Pdrivers/gpu/drm/i915/intel_atomic_plane.c atomic plane helpers | ||
4024 | !Idrivers/gpu/drm/i915/intel_atomic_plane.c | ||
4025 | </sect2> | ||
4026 | <sect2> | ||
3935 | <title>Output Probing</title> | 4027 | <title>Output Probing</title> |
3936 | <para> | 4028 | <para> |
3937 | This section covers output probing and related infrastructure like the | 4029 | This section covers output probing and related infrastructure like the |
@@ -3951,6 +4043,11 @@ int num_ioctls;</synopsis> | |||
3951 | !Idrivers/gpu/drm/i915/intel_psr.c | 4043 | !Idrivers/gpu/drm/i915/intel_psr.c |
3952 | </sect2> | 4044 | </sect2> |
3953 | <sect2> | 4045 | <sect2> |
4046 | <title>Frame Buffer Compression (FBC)</title> | ||
4047 | !Pdrivers/gpu/drm/i915/intel_fbc.c Frame Buffer Compression (FBC) | ||
4048 | !Idrivers/gpu/drm/i915/intel_fbc.c | ||
4049 | </sect2> | ||
4050 | <sect2> | ||
3954 | <title>DPIO</title> | 4051 | <title>DPIO</title> |
3955 | !Pdrivers/gpu/drm/i915/i915_reg.h DPIO | 4052 | !Pdrivers/gpu/drm/i915/i915_reg.h DPIO |
3956 | <table id="dpiox2"> | 4053 | <table id="dpiox2"> |
@@ -4054,10 +4151,31 @@ int num_ioctls;</synopsis> | |||
4054 | !Idrivers/gpu/drm/i915/i915_cmd_parser.c | 4151 | !Idrivers/gpu/drm/i915/i915_cmd_parser.c |
4055 | </sect2> | 4152 | </sect2> |
4056 | <sect2> | 4153 | <sect2> |
4154 | <title>Batchbuffer Pools</title> | ||
4155 | !Pdrivers/gpu/drm/i915/i915_gem_batch_pool.c batch pool | ||
4156 | !Idrivers/gpu/drm/i915/i915_gem_batch_pool.c | ||
4157 | </sect2> | ||
4158 | <sect2> | ||
4057 | <title>Logical Rings, Logical Ring Contexts and Execlists</title> | 4159 | <title>Logical Rings, Logical Ring Contexts and Execlists</title> |
4058 | !Pdrivers/gpu/drm/i915/intel_lrc.c Logical Rings, Logical Ring Contexts and Execlists | 4160 | !Pdrivers/gpu/drm/i915/intel_lrc.c Logical Rings, Logical Ring Contexts and Execlists |
4059 | !Idrivers/gpu/drm/i915/intel_lrc.c | 4161 | !Idrivers/gpu/drm/i915/intel_lrc.c |
4060 | </sect2> | 4162 | </sect2> |
4163 | <sect2> | ||
4164 | <title>Global GTT views</title> | ||
4165 | !Pdrivers/gpu/drm/i915/i915_gem_gtt.c Global GTT views | ||
4166 | !Idrivers/gpu/drm/i915/i915_gem_gtt.c | ||
4167 | </sect2> | ||
4168 | <sect2> | ||
4169 | <title>Buffer Object Eviction</title> | ||
4170 | <para> | ||
4171 | This section documents the interface function for evicting buffer | ||
4172 | objects to make space available in the virtual gpu address spaces. | ||
4173 | Note that this is mostly orthogonal to shrinking buffer objects | ||
4174 | caches, which has the goal to make main memory (shared with the gpu | ||
4175 | through the unified memory architecture) available. | ||
4176 | </para> | ||
4177 | !Idrivers/gpu/drm/i915/i915_gem_evict.c | ||
4178 | </sect2> | ||
4061 | </sect1> | 4179 | </sect1> |
4062 | 4180 | ||
4063 | <sect1> | 4181 | <sect1> |
diff --git a/Documentation/DocBook/kgdb.tmpl b/Documentation/DocBook/kgdb.tmpl index f77358f96930..f3abca7ec53d 100644 --- a/Documentation/DocBook/kgdb.tmpl +++ b/Documentation/DocBook/kgdb.tmpl | |||
@@ -75,7 +75,7 @@ | |||
75 | a development machine and the other is the target machine. The | 75 | a development machine and the other is the target machine. The |
76 | kernel to be debugged runs on the target machine. The development | 76 | kernel to be debugged runs on the target machine. The development |
77 | machine runs an instance of gdb against the vmlinux file which | 77 | machine runs an instance of gdb against the vmlinux file which |
78 | contains the symbols (not boot image such as bzImage, zImage, | 78 | contains the symbols (not a boot image such as bzImage, zImage, |
79 | uImage...). In gdb the developer specifies the connection | 79 | uImage...). In gdb the developer specifies the connection |
80 | parameters and connects to kgdb. The type of connection a | 80 | parameters and connects to kgdb. The type of connection a |
81 | developer makes with gdb depends on the availability of kgdb I/O | 81 | developer makes with gdb depends on the availability of kgdb I/O |
@@ -95,7 +95,7 @@ | |||
95 | <title>Kernel config options for kgdb</title> | 95 | <title>Kernel config options for kgdb</title> |
96 | <para> | 96 | <para> |
97 | To enable <symbol>CONFIG_KGDB</symbol> you should look under | 97 | To enable <symbol>CONFIG_KGDB</symbol> you should look under |
98 | "Kernel debugging" and select "KGDB: kernel debugger". | 98 | "Kernel hacking" / "Kernel debugging" and select "KGDB: kernel debugger". |
99 | </para> | 99 | </para> |
100 | <para> | 100 | <para> |
101 | While it is not a hard requirement that you have symbols in your | 101 | While it is not a hard requirement that you have symbols in your |
@@ -105,7 +105,7 @@ | |||
105 | kernel with debug info" in the config menu. | 105 | kernel with debug info" in the config menu. |
106 | </para> | 106 | </para> |
107 | <para> | 107 | <para> |
108 | It is advised, but not required that you turn on the | 108 | It is advised, but not required, that you turn on the |
109 | <symbol>CONFIG_FRAME_POINTER</symbol> kernel option which is called "Compile the | 109 | <symbol>CONFIG_FRAME_POINTER</symbol> kernel option which is called "Compile the |
110 | kernel with frame pointers" in the config menu. This option | 110 | kernel with frame pointers" in the config menu. This option |
111 | inserts code to into the compiled executable which saves the frame | 111 | inserts code to into the compiled executable which saves the frame |
@@ -181,7 +181,7 @@ | |||
181 | <para>This section describes the various runtime kernel | 181 | <para>This section describes the various runtime kernel |
182 | parameters that affect the configuration of the kernel debugger. | 182 | parameters that affect the configuration of the kernel debugger. |
183 | The following chapter covers using kdb and kgdb as well as | 183 | The following chapter covers using kdb and kgdb as well as |
184 | provides some examples of the configuration parameters.</para> | 184 | providing some examples of the configuration parameters.</para> |
185 | <sect1 id="kgdboc"> | 185 | <sect1 id="kgdboc"> |
186 | <title>Kernel parameter: kgdboc</title> | 186 | <title>Kernel parameter: kgdboc</title> |
187 | <para>The kgdboc driver was originally an abbreviation meant to | 187 | <para>The kgdboc driver was originally an abbreviation meant to |
@@ -197,6 +197,7 @@ | |||
197 | may be configured as a kernel built-in or a kernel loadable module. | 197 | may be configured as a kernel built-in or a kernel loadable module. |
198 | You can only make use of <constant>kgdbwait</constant> and early | 198 | You can only make use of <constant>kgdbwait</constant> and early |
199 | debugging if you build kgdboc into the kernel as a built-in. | 199 | debugging if you build kgdboc into the kernel as a built-in. |
200 | </para> | ||
200 | <para>Optionally you can elect to activate kms (Kernel Mode | 201 | <para>Optionally you can elect to activate kms (Kernel Mode |
201 | Setting) integration. When you use kms with kgdboc and you have a | 202 | Setting) integration. When you use kms with kgdboc and you have a |
202 | video driver that has atomic mode setting hooks, it is possible to | 203 | video driver that has atomic mode setting hooks, it is possible to |
@@ -206,7 +207,6 @@ | |||
206 | crashes or doing analysis of memory with kdb while allowing the | 207 | crashes or doing analysis of memory with kdb while allowing the |
207 | full graphics console applications to run. | 208 | full graphics console applications to run. |
208 | </para> | 209 | </para> |
209 | </para> | ||
210 | <sect2 id="kgdbocArgs"> | 210 | <sect2 id="kgdbocArgs"> |
211 | <title>kgdboc arguments</title> | 211 | <title>kgdboc arguments</title> |
212 | <para>Usage: <constant>kgdboc=[kms][[,]kbd][[,]serial_device][,baud]</constant></para> | 212 | <para>Usage: <constant>kgdboc=[kms][[,]kbd][[,]serial_device][,baud]</constant></para> |
@@ -219,8 +219,8 @@ | |||
219 | <listitem><para>kbd = Keyboard</para></listitem> | 219 | <listitem><para>kbd = Keyboard</para></listitem> |
220 | </itemizedlist> | 220 | </itemizedlist> |
221 | </para> | 221 | </para> |
222 | <para>You can configure kgdboc to use the keyboard, and or a serial | 222 | <para>You can configure kgdboc to use the keyboard, and/or a serial |
223 | device depending on if you are using kdb and or kgdb, in one of the | 223 | device depending on if you are using kdb and/or kgdb, in one of the |
224 | following scenarios. The order listed above must be observed if | 224 | following scenarios. The order listed above must be observed if |
225 | you use any of the optional configurations together. Using kms + | 225 | you use any of the optional configurations together. Using kms + |
226 | only gdb is generally not a useful combination.</para> | 226 | only gdb is generally not a useful combination.</para> |
@@ -261,11 +261,8 @@ | |||
261 | </sect3> | 261 | </sect3> |
262 | <sect3 id="kgdbocArgs3"> | 262 | <sect3 id="kgdbocArgs3"> |
263 | <title>More examples</title> | 263 | <title>More examples</title> |
264 | <para>You can configure kgdboc to use the keyboard, and or a serial | 264 | <para>You can configure kgdboc to use the keyboard, and/or a serial device |
265 | device depending on if you are using kdb and or kgdb, in one of the | 265 | depending on if you are using kdb and/or kgdb, in one of the |
266 | following scenarios.</para> | ||
267 | <para>You can configure kgdboc to use the keyboard, and or a serial device | ||
268 | depending on if you are using kdb and or kgdb, in one of the | ||
269 | following scenarios. | 266 | following scenarios. |
270 | <orderedlist> | 267 | <orderedlist> |
271 | <listitem><para>kdb and kgdb over only a serial port</para> | 268 | <listitem><para>kdb and kgdb over only a serial port</para> |
@@ -287,7 +284,6 @@ | |||
287 | </listitem> | 284 | </listitem> |
288 | </orderedlist> | 285 | </orderedlist> |
289 | </para> | 286 | </para> |
290 | </sect3> | ||
291 | <para>NOTE: Kgdboc does not support interrupting the target via the | 287 | <para>NOTE: Kgdboc does not support interrupting the target via the |
292 | gdb remote protocol. You must manually send a sysrq-g unless you | 288 | gdb remote protocol. You must manually send a sysrq-g unless you |
293 | have a proxy that splits console output to a terminal program. | 289 | have a proxy that splits console output to a terminal program. |
@@ -308,6 +304,7 @@ | |||
308 | as well as on the initial connect, or to use a debugger proxy that | 304 | as well as on the initial connect, or to use a debugger proxy that |
309 | allows an unmodified gdb to do the debugging. | 305 | allows an unmodified gdb to do the debugging. |
310 | </para> | 306 | </para> |
307 | </sect3> | ||
311 | </sect2> | 308 | </sect2> |
312 | </sect1> | 309 | </sect1> |
313 | <sect1 id="kgdbwait"> | 310 | <sect1 id="kgdbwait"> |
@@ -315,7 +312,7 @@ | |||
315 | <para> | 312 | <para> |
316 | The Kernel command line option <constant>kgdbwait</constant> makes | 313 | The Kernel command line option <constant>kgdbwait</constant> makes |
317 | kgdb wait for a debugger connection during booting of a kernel. You | 314 | kgdb wait for a debugger connection during booting of a kernel. You |
318 | can only use this option you compiled a kgdb I/O driver into the | 315 | can only use this option if you compiled a kgdb I/O driver into the |
319 | kernel and you specified the I/O driver configuration as a kernel | 316 | kernel and you specified the I/O driver configuration as a kernel |
320 | command line option. The kgdbwait parameter should always follow the | 317 | command line option. The kgdbwait parameter should always follow the |
321 | configuration parameter for the kgdb I/O driver in the kernel | 318 | configuration parameter for the kgdb I/O driver in the kernel |
@@ -353,12 +350,12 @@ | |||
353 | </para> | 350 | </para> |
354 | </listitem> | 351 | </listitem> |
355 | </orderedlist> | 352 | </orderedlist> |
353 | </para> | ||
356 | <para>IMPORTANT NOTE: You cannot use kgdboc + kgdbcon on a tty that is an | 354 | <para>IMPORTANT NOTE: You cannot use kgdboc + kgdbcon on a tty that is an |
357 | active system console. An example incorrect usage is <constant>console=ttyS0,115200 kgdboc=ttyS0 kgdbcon</constant> | 355 | active system console. An example of incorrect usage is <constant>console=ttyS0,115200 kgdboc=ttyS0 kgdbcon</constant> |
358 | </para> | 356 | </para> |
359 | <para>It is possible to use this option with kgdboc on a tty that is not a system console. | 357 | <para>It is possible to use this option with kgdboc on a tty that is not a system console. |
360 | </para> | 358 | </para> |
361 | </para> | ||
362 | </sect1> | 359 | </sect1> |
363 | <sect1 id="kgdbreboot"> | 360 | <sect1 id="kgdbreboot"> |
364 | <title>Run time parameter: kgdbreboot</title> | 361 | <title>Run time parameter: kgdbreboot</title> |
@@ -386,12 +383,12 @@ | |||
386 | <title>Quick start for kdb on a serial port</title> | 383 | <title>Quick start for kdb on a serial port</title> |
387 | <para>This is a quick example of how to use kdb.</para> | 384 | <para>This is a quick example of how to use kdb.</para> |
388 | <para><orderedlist> | 385 | <para><orderedlist> |
389 | <listitem><para>Boot kernel with arguments: | 386 | <listitem><para>Configure kgdboc at boot using kernel parameters: |
390 | <itemizedlist> | 387 | <itemizedlist> |
391 | <listitem><para><constant>console=ttyS0,115200 kgdboc=ttyS0,115200</constant></para></listitem> | 388 | <listitem><para><constant>console=ttyS0,115200 kgdboc=ttyS0,115200</constant></para></listitem> |
392 | </itemizedlist></para> | 389 | </itemizedlist></para> |
393 | <para>OR</para> | 390 | <para>OR</para> |
394 | <para>Configure kgdboc after the kernel booted; assuming you are using a serial port console: | 391 | <para>Configure kgdboc after the kernel has booted; assuming you are using a serial port console: |
395 | <itemizedlist> | 392 | <itemizedlist> |
396 | <listitem><para><constant>echo ttyS0 > /sys/module/kgdboc/parameters/kgdboc</constant></para></listitem> | 393 | <listitem><para><constant>echo ttyS0 > /sys/module/kgdboc/parameters/kgdboc</constant></para></listitem> |
397 | </itemizedlist> | 394 | </itemizedlist> |
@@ -442,12 +439,12 @@ | |||
442 | <title>Quick start for kdb using a keyboard connected console</title> | 439 | <title>Quick start for kdb using a keyboard connected console</title> |
443 | <para>This is a quick example of how to use kdb with a keyboard.</para> | 440 | <para>This is a quick example of how to use kdb with a keyboard.</para> |
444 | <para><orderedlist> | 441 | <para><orderedlist> |
445 | <listitem><para>Boot kernel with arguments: | 442 | <listitem><para>Configure kgdboc at boot using kernel parameters: |
446 | <itemizedlist> | 443 | <itemizedlist> |
447 | <listitem><para><constant>kgdboc=kbd</constant></para></listitem> | 444 | <listitem><para><constant>kgdboc=kbd</constant></para></listitem> |
448 | </itemizedlist></para> | 445 | </itemizedlist></para> |
449 | <para>OR</para> | 446 | <para>OR</para> |
450 | <para>Configure kgdboc after the kernel booted: | 447 | <para>Configure kgdboc after the kernel has booted: |
451 | <itemizedlist> | 448 | <itemizedlist> |
452 | <listitem><para><constant>echo kbd > /sys/module/kgdboc/parameters/kgdboc</constant></para></listitem> | 449 | <listitem><para><constant>echo kbd > /sys/module/kgdboc/parameters/kgdboc</constant></para></listitem> |
453 | </itemizedlist> | 450 | </itemizedlist> |
@@ -501,12 +498,12 @@ | |||
501 | <title>Connecting with gdb to a serial port</title> | 498 | <title>Connecting with gdb to a serial port</title> |
502 | <orderedlist> | 499 | <orderedlist> |
503 | <listitem><para>Configure kgdboc</para> | 500 | <listitem><para>Configure kgdboc</para> |
504 | <para>Boot kernel with arguments: | 501 | <para>Configure kgdboc at boot using kernel parameters: |
505 | <itemizedlist> | 502 | <itemizedlist> |
506 | <listitem><para><constant>kgdboc=ttyS0,115200</constant></para></listitem> | 503 | <listitem><para><constant>kgdboc=ttyS0,115200</constant></para></listitem> |
507 | </itemizedlist></para> | 504 | </itemizedlist></para> |
508 | <para>OR</para> | 505 | <para>OR</para> |
509 | <para>Configure kgdboc after the kernel booted: | 506 | <para>Configure kgdboc after the kernel has booted: |
510 | <itemizedlist> | 507 | <itemizedlist> |
511 | <listitem><para><constant>echo ttyS0 > /sys/module/kgdboc/parameters/kgdboc</constant></para></listitem> | 508 | <listitem><para><constant>echo ttyS0 > /sys/module/kgdboc/parameters/kgdboc</constant></para></listitem> |
512 | </itemizedlist></para> | 509 | </itemizedlist></para> |
@@ -536,7 +533,7 @@ | |||
536 | </para> | 533 | </para> |
537 | </listitem> | 534 | </listitem> |
538 | <listitem> | 535 | <listitem> |
539 | <para>Connect from from gdb</para> | 536 | <para>Connect from gdb</para> |
540 | <para> | 537 | <para> |
541 | Example (using a directly connected port): | 538 | Example (using a directly connected port): |
542 | </para> | 539 | </para> |
@@ -584,7 +581,7 @@ | |||
584 | <para> | 581 | <para> |
585 | There are two ways to switch from kgdb to kdb: you can use gdb to | 582 | There are two ways to switch from kgdb to kdb: you can use gdb to |
586 | issue a maintenance packet, or you can blindly type the command $3#33. | 583 | issue a maintenance packet, or you can blindly type the command $3#33. |
587 | Whenever kernel debugger stops in kgdb mode it will print the | 584 | Whenever the kernel debugger stops in kgdb mode it will print the |
588 | message <constant>KGDB or $3#33 for KDB</constant>. It is important | 585 | message <constant>KGDB or $3#33 for KDB</constant>. It is important |
589 | to note that you have to type the sequence correctly in one pass. | 586 | to note that you have to type the sequence correctly in one pass. |
590 | You cannot type a backspace or delete because kgdb will interpret | 587 | You cannot type a backspace or delete because kgdb will interpret |
@@ -704,7 +701,7 @@ Task Addr Pid Parent [*] cpu State Thread Command | |||
704 | <listitem><para>Registration and unregistration of architecture specific trap hooks</para></listitem> | 701 | <listitem><para>Registration and unregistration of architecture specific trap hooks</para></listitem> |
705 | <listitem><para>Any special exception handling and cleanup</para></listitem> | 702 | <listitem><para>Any special exception handling and cleanup</para></listitem> |
706 | <listitem><para>NMI exception handling and cleanup</para></listitem> | 703 | <listitem><para>NMI exception handling and cleanup</para></listitem> |
707 | <listitem><para>(optional)HW breakpoints</para></listitem> | 704 | <listitem><para>(optional) HW breakpoints</para></listitem> |
708 | </itemizedlist> | 705 | </itemizedlist> |
709 | </para> | 706 | </para> |
710 | </listitem> | 707 | </listitem> |
@@ -760,7 +757,7 @@ Task Addr Pid Parent [*] cpu State Thread Command | |||
760 | a kgdb I/O driver for characters when it needs input. The I/O | 757 | a kgdb I/O driver for characters when it needs input. The I/O |
761 | driver is expected to return immediately if there is no data | 758 | driver is expected to return immediately if there is no data |
762 | available. Doing so allows for the future possibility to touch | 759 | available. Doing so allows for the future possibility to touch |
763 | watch dog hardware in such a way as to have a target system not | 760 | watchdog hardware in such a way as to have a target system not |
764 | reset when these are enabled. | 761 | reset when these are enabled. |
765 | </para> | 762 | </para> |
766 | </listitem> | 763 | </listitem> |
@@ -779,21 +776,25 @@ Task Addr Pid Parent [*] cpu State Thread Command | |||
779 | their <asm/kgdb.h> file. These are: | 776 | their <asm/kgdb.h> file. These are: |
780 | <itemizedlist> | 777 | <itemizedlist> |
781 | <listitem> | 778 | <listitem> |
782 | <para> | 779 | <para> |
783 | NUMREGBYTES: The size in bytes of all of the registers, so | 780 | NUMREGBYTES: The size in bytes of all of the registers, so |
784 | that we can ensure they will all fit into a packet. | 781 | that we can ensure they will all fit into a packet. |
785 | </para> | 782 | </para> |
786 | <para> | 783 | </listitem> |
787 | BUFMAX: The size in bytes of the buffer GDB will read into. | 784 | <listitem> |
788 | This must be larger than NUMREGBYTES. | 785 | <para> |
789 | </para> | 786 | BUFMAX: The size in bytes of the buffer GDB will read into. |
790 | <para> | 787 | This must be larger than NUMREGBYTES. |
791 | CACHE_FLUSH_IS_SAFE: Set to 1 if it is always safe to call | 788 | </para> |
792 | flush_cache_range or flush_icache_range. On some architectures, | 789 | </listitem> |
793 | these functions may not be safe to call on SMP since we keep other | 790 | <listitem> |
794 | CPUs in a holding pattern. | 791 | <para> |
795 | </para> | 792 | CACHE_FLUSH_IS_SAFE: Set to 1 if it is always safe to call |
796 | </listitem> | 793 | flush_cache_range or flush_icache_range. On some architectures, |
794 | these functions may not be safe to call on SMP since we keep other | ||
795 | CPUs in a holding pattern. | ||
796 | </para> | ||
797 | </listitem> | ||
797 | </itemizedlist> | 798 | </itemizedlist> |
798 | </para> | 799 | </para> |
799 | <para> | 800 | <para> |
@@ -812,8 +813,8 @@ Task Addr Pid Parent [*] cpu State Thread Command | |||
812 | <para> | 813 | <para> |
813 | The kgdboc driver is actually a very thin driver that relies on the | 814 | The kgdboc driver is actually a very thin driver that relies on the |
814 | underlying low level to the hardware driver having "polling hooks" | 815 | underlying low level to the hardware driver having "polling hooks" |
815 | which the to which the tty driver is attached. In the initial | 816 | to which the tty driver is attached. In the initial |
816 | implementation of kgdboc it the serial_core was changed to expose a | 817 | implementation of kgdboc the serial_core was changed to expose a |
817 | low level UART hook for doing polled mode reading and writing of a | 818 | low level UART hook for doing polled mode reading and writing of a |
818 | single character while in an atomic context. When kgdb makes an I/O | 819 | single character while in an atomic context. When kgdb makes an I/O |
819 | request to the debugger, kgdboc invokes a callback in the serial | 820 | request to the debugger, kgdboc invokes a callback in the serial |
diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml index e013e4bf244c..4e9462f1ab4c 100644 --- a/Documentation/DocBook/media/v4l/controls.xml +++ b/Documentation/DocBook/media/v4l/controls.xml | |||
@@ -2692,12 +2692,11 @@ in the S5P family of SoCs by Samsung. | |||
2692 | <row><entry></entry></row> | 2692 | <row><entry></entry></row> |
2693 | <row> | 2693 | <row> |
2694 | <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE</constant> </entry> | 2694 | <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE</constant> </entry> |
2695 | <entry>integer</entry> | 2695 | <entry>boolean</entry> |
2696 | </row><row><entry spanname="descr">If the display delay is enabled then the decoder has to return a | 2696 | </row><row><entry spanname="descr">If the display delay is enabled then the decoder is forced to return a |
2697 | CAPTURE buffer after processing a certain number of OUTPUT buffers. If this number is low, then it may result in | 2697 | CAPTURE buffer (decoded frame) after processing a certain number of OUTPUT buffers. The delay can be set through |
2698 | buffers not being dequeued in display order. In addition hardware may still use those buffers as reference, thus | 2698 | <constant>V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY</constant>. This feature can be used for example |
2699 | application should not write to those buffers. This feature can be used for example for generating thumbnails of videos. | 2699 | for generating thumbnails of videos. Applicable to the H264 decoder. |
2700 | Applicable to the H264 decoder. | ||
2701 | </entry> | 2700 | </entry> |
2702 | </row> | 2701 | </row> |
2703 | <row><entry></entry></row> | 2702 | <row><entry></entry></row> |
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml index c1c62a9acc2a..f34d03ebda3a 100644 --- a/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml | |||
@@ -17,7 +17,7 @@ | |||
17 | <refsect1> | 17 | <refsect1> |
18 | <title>Description</title> | 18 | <title>Description</title> |
19 | 19 | ||
20 | <para>The following four pixel formats are raw sRGB / Bayer formats with | 20 | <para>These four pixel formats are raw sRGB / Bayer formats with |
21 | 10 bits per colour. Each colour component is stored in a 16-bit word, with 6 | 21 | 10 bits per colour. Each colour component is stored in a 16-bit word, with 6 |
22 | unused high bits filled with zeros. Each n-pixel row contains n/2 green samples | 22 | unused high bits filled with zeros. Each n-pixel row contains n/2 green samples |
23 | and n/2 blue or red samples, with alternating red and blue rows. Bytes are | 23 | and n/2 blue or red samples, with alternating red and blue rows. Bytes are |
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb10alaw8.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb10alaw8.xml index 29acc2098cc2..d2e5845e57fb 100644 --- a/Documentation/DocBook/media/v4l/pixfmt-srggb10alaw8.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-srggb10alaw8.xml | |||
@@ -25,7 +25,7 @@ | |||
25 | </refnamediv> | 25 | </refnamediv> |
26 | <refsect1> | 26 | <refsect1> |
27 | <title>Description</title> | 27 | <title>Description</title> |
28 | <para>The following four pixel formats are raw sRGB / Bayer | 28 | <para>These four pixel formats are raw sRGB / Bayer |
29 | formats with 10 bits per color compressed to 8 bits each, | 29 | formats with 10 bits per color compressed to 8 bits each, |
30 | using the A-LAW algorithm. Each color component consumes 8 | 30 | using the A-LAW algorithm. Each color component consumes 8 |
31 | bits of memory. In other respects this format is similar to | 31 | bits of memory. In other respects this format is similar to |
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml index 2d3f0b1aefe0..bde89878c5c5 100644 --- a/Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml | |||
@@ -18,7 +18,7 @@ | |||
18 | <refsect1> | 18 | <refsect1> |
19 | <title>Description</title> | 19 | <title>Description</title> |
20 | 20 | ||
21 | <para>The following four pixel formats are raw sRGB / Bayer formats | 21 | <para>These four pixel formats are raw sRGB / Bayer formats |
22 | with 10 bits per colour compressed to 8 bits each, using DPCM | 22 | with 10 bits per colour compressed to 8 bits each, using DPCM |
23 | compression. DPCM, differential pulse-code modulation, is lossy. | 23 | compression. DPCM, differential pulse-code modulation, is lossy. |
24 | Each colour component consumes 8 bits of memory. In other respects | 24 | Each colour component consumes 8 bits of memory. In other respects |
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb10p.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb10p.xml new file mode 100644 index 000000000000..30aa63581fe3 --- /dev/null +++ b/Documentation/DocBook/media/v4l/pixfmt-srggb10p.xml | |||
@@ -0,0 +1,99 @@ | |||
1 | <refentry id="pixfmt-srggb10p"> | ||
2 | <refmeta> | ||
3 | <refentrytitle>V4L2_PIX_FMT_SRGGB10P ('pRAA'), | ||
4 | V4L2_PIX_FMT_SGRBG10P ('pgAA'), | ||
5 | V4L2_PIX_FMT_SGBRG10P ('pGAA'), | ||
6 | V4L2_PIX_FMT_SBGGR10P ('pBAA'), | ||
7 | </refentrytitle> | ||
8 | &manvol; | ||
9 | </refmeta> | ||
10 | <refnamediv> | ||
11 | <refname id="V4L2-PIX-FMT-SRGGB10P"><constant>V4L2_PIX_FMT_SRGGB10P</constant></refname> | ||
12 | <refname id="V4L2-PIX-FMT-SGRBG10P"><constant>V4L2_PIX_FMT_SGRBG10P</constant></refname> | ||
13 | <refname id="V4L2-PIX-FMT-SGBRG10P"><constant>V4L2_PIX_FMT_SGBRG10P</constant></refname> | ||
14 | <refname id="V4L2-PIX-FMT-SBGGR10P"><constant>V4L2_PIX_FMT_SBGGR10P</constant></refname> | ||
15 | <refpurpose>10-bit packed Bayer formats</refpurpose> | ||
16 | </refnamediv> | ||
17 | <refsect1> | ||
18 | <title>Description</title> | ||
19 | |||
20 | <para>These four pixel formats are packed raw sRGB / | ||
21 | Bayer formats with 10 bits per colour. Every four consecutive | ||
22 | colour components are packed into 5 bytes. Each of the first 4 | ||
23 | bytes contain the 8 high order bits of the pixels, and the | ||
24 | fifth byte contains the two least significants bits of each | ||
25 | pixel, in the same order.</para> | ||
26 | |||
27 | <para>Each n-pixel row contains n/2 green samples and n/2 blue | ||
28 | or red samples, with alternating green-red and green-blue | ||
29 | rows. They are conventionally described as GRGR... BGBG..., | ||
30 | RGRG... GBGB..., etc. Below is an example of one of these | ||
31 | formats:</para> | ||
32 | |||
33 | <example> | ||
34 | <title><constant>V4L2_PIX_FMT_SBGGR10P</constant> 4 × 4 | ||
35 | pixel image</title> | ||
36 | |||
37 | <formalpara> | ||
38 | <title>Byte Order.</title> | ||
39 | <para>Each cell is one byte. | ||
40 | <informaltable frame="topbot" colsep="1" rowsep="1"> | ||
41 | <tgroup cols="5" align="center" border="1"> | ||
42 | <colspec align="left" colwidth="2*" /> | ||
43 | <tbody valign="top"> | ||
44 | <row> | ||
45 | <entry>start + 0:</entry> | ||
46 | <entry>B<subscript>00high</subscript></entry> | ||
47 | <entry>G<subscript>01high</subscript></entry> | ||
48 | <entry>B<subscript>02high</subscript></entry> | ||
49 | <entry>G<subscript>03high</subscript></entry> | ||
50 | <entry>B<subscript>00low</subscript>(bits 7--6) | ||
51 | G<subscript>01low</subscript>(bits 5--4) | ||
52 | B<subscript>02low</subscript>(bits 3--2) | ||
53 | G<subscript>03low</subscript>(bits 1--0) | ||
54 | </entry> | ||
55 | </row> | ||
56 | <row> | ||
57 | <entry>start + 5:</entry> | ||
58 | <entry>G<subscript>10high</subscript></entry> | ||
59 | <entry>R<subscript>11high</subscript></entry> | ||
60 | <entry>G<subscript>12high</subscript></entry> | ||
61 | <entry>R<subscript>13high</subscript></entry> | ||
62 | <entry>G<subscript>10low</subscript>(bits 7--6) | ||
63 | R<subscript>11low</subscript>(bits 5--4) | ||
64 | G<subscript>12low</subscript>(bits 3--2) | ||
65 | R<subscript>13low</subscript>(bits 1--0) | ||
66 | </entry> | ||
67 | </row> | ||
68 | <row> | ||
69 | <entry>start + 10:</entry> | ||
70 | <entry>B<subscript>20high</subscript></entry> | ||
71 | <entry>G<subscript>21high</subscript></entry> | ||
72 | <entry>B<subscript>22high</subscript></entry> | ||
73 | <entry>G<subscript>23high</subscript></entry> | ||
74 | <entry>B<subscript>20low</subscript>(bits 7--6) | ||
75 | G<subscript>21low</subscript>(bits 5--4) | ||
76 | B<subscript>22low</subscript>(bits 3--2) | ||
77 | G<subscript>23low</subscript>(bits 1--0) | ||
78 | </entry> | ||
79 | </row> | ||
80 | <row> | ||
81 | <entry>start + 15:</entry> | ||
82 | <entry>G<subscript>30high</subscript></entry> | ||
83 | <entry>R<subscript>31high</subscript></entry> | ||
84 | <entry>G<subscript>32high</subscript></entry> | ||
85 | <entry>R<subscript>33high</subscript></entry> | ||
86 | <entry>G<subscript>30low</subscript>(bits 7--6) | ||
87 | R<subscript>31low</subscript>(bits 5--4) | ||
88 | G<subscript>32low</subscript>(bits 3--2) | ||
89 | R<subscript>33low</subscript>(bits 1--0) | ||
90 | </entry> | ||
91 | </row> | ||
92 | </tbody> | ||
93 | </tgroup> | ||
94 | </informaltable> | ||
95 | </para> | ||
96 | </formalpara> | ||
97 | </example> | ||
98 | </refsect1> | ||
99 | </refentry> | ||
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb12.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb12.xml index 96947f17fca1..0c8e4adf417f 100644 --- a/Documentation/DocBook/media/v4l/pixfmt-srggb12.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-srggb12.xml | |||
@@ -17,7 +17,7 @@ | |||
17 | <refsect1> | 17 | <refsect1> |
18 | <title>Description</title> | 18 | <title>Description</title> |
19 | 19 | ||
20 | <para>The following four pixel formats are raw sRGB / Bayer formats with | 20 | <para>These four pixel formats are raw sRGB / Bayer formats with |
21 | 12 bits per colour. Each colour component is stored in a 16-bit word, with 4 | 21 | 12 bits per colour. Each colour component is stored in a 16-bit word, with 4 |
22 | unused high bits filled with zeros. Each n-pixel row contains n/2 green samples | 22 | unused high bits filled with zeros. Each n-pixel row contains n/2 green samples |
23 | and n/2 blue or red samples, with alternating red and blue rows. Bytes are | 23 | and n/2 blue or red samples, with alternating red and blue rows. Bytes are |
diff --git a/Documentation/DocBook/media/v4l/pixfmt.xml b/Documentation/DocBook/media/v4l/pixfmt.xml index d5eca4b8f74b..5e0352c50324 100644 --- a/Documentation/DocBook/media/v4l/pixfmt.xml +++ b/Documentation/DocBook/media/v4l/pixfmt.xml | |||
@@ -1405,6 +1405,7 @@ access the palette, this must be done with ioctls of the Linux framebuffer API.< | |||
1405 | &sub-srggb8; | 1405 | &sub-srggb8; |
1406 | &sub-sbggr16; | 1406 | &sub-sbggr16; |
1407 | &sub-srggb10; | 1407 | &sub-srggb10; |
1408 | &sub-srggb10p; | ||
1408 | &sub-srggb10alaw8; | 1409 | &sub-srggb10alaw8; |
1409 | &sub-srggb10dpcm8; | 1410 | &sub-srggb10dpcm8; |
1410 | &sub-srggb12; | 1411 | &sub-srggb12; |
diff --git a/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml b/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml index 28a8c1e1c705..a2017bfcaed2 100644 --- a/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml +++ b/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml | |||
@@ -212,11 +212,3 @@ standards set in the <structfield>standards</structfield> field. | |||
212 | &return-value; | 212 | &return-value; |
213 | </refsect1> | 213 | </refsect1> |
214 | </refentry> | 214 | </refentry> |
215 | |||
216 | <!-- | ||
217 | Local Variables: | ||
218 | mode: sgml | ||
219 | sgml-parent-document: "v4l2.sgml" | ||
220 | indent-tabs-mode: nil | ||
221 | End: | ||
222 | --> | ||
diff --git a/Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml b/Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml index b9fdfeacdbcb..6e3cadd4e1f9 100644 --- a/Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml +++ b/Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml | |||
@@ -131,11 +131,3 @@ is out of bounds or the <structfield>pad</structfield> number is invalid.</para> | |||
131 | </variablelist> | 131 | </variablelist> |
132 | </refsect1> | 132 | </refsect1> |
133 | </refentry> | 133 | </refentry> |
134 | |||
135 | <!-- | ||
136 | Local Variables: | ||
137 | mode: sgml | ||
138 | sgml-parent-document: "v4l2.sgml" | ||
139 | indent-tabs-mode: nil | ||
140 | End: | ||
141 | --> | ||
diff --git a/Documentation/DocBook/uio-howto.tmpl b/Documentation/DocBook/uio-howto.tmpl index 1fdc246e4256..cd0e452dfed5 100644 --- a/Documentation/DocBook/uio-howto.tmpl +++ b/Documentation/DocBook/uio-howto.tmpl | |||
@@ -719,7 +719,7 @@ framework to set up sysfs files for this region. Simply leave it alone. | |||
719 | </para> | 719 | </para> |
720 | </sect1> | 720 | </sect1> |
721 | 721 | ||
722 | <sect1 id="using uio_dmem_genirq"> | 722 | <sect1 id="using-uio_dmem_genirq"> |
723 | <title>Using uio_dmem_genirq for platform devices</title> | 723 | <title>Using uio_dmem_genirq for platform devices</title> |
724 | <para> | 724 | <para> |
725 | In addition to statically allocated memory ranges, they may also be | 725 | In addition to statically allocated memory ranges, they may also be |
@@ -746,16 +746,16 @@ framework to set up sysfs files for this region. Simply leave it alone. | |||
746 | following elements: | 746 | following elements: |
747 | </para> | 747 | </para> |
748 | <itemizedlist> | 748 | <itemizedlist> |
749 | <listitem><varname>struct uio_info uioinfo</varname>: The same | 749 | <listitem><para><varname>struct uio_info uioinfo</varname>: The same |
750 | structure used as the <varname>uio_pdrv_genirq</varname> platform | 750 | structure used as the <varname>uio_pdrv_genirq</varname> platform |
751 | data</listitem> | 751 | data</para></listitem> |
752 | <listitem><varname>unsigned int *dynamic_region_sizes</varname>: | 752 | <listitem><para><varname>unsigned int *dynamic_region_sizes</varname>: |
753 | Pointer to list of sizes of dynamic memory regions to be mapped into | 753 | Pointer to list of sizes of dynamic memory regions to be mapped into |
754 | user space. | 754 | user space. |
755 | </listitem> | 755 | </para></listitem> |
756 | <listitem><varname>unsigned int num_dynamic_regions</varname>: | 756 | <listitem><para><varname>unsigned int num_dynamic_regions</varname>: |
757 | Number of elements in <varname>dynamic_region_sizes</varname> array. | 757 | Number of elements in <varname>dynamic_region_sizes</varname> array. |
758 | </listitem> | 758 | </para></listitem> |
759 | </itemizedlist> | 759 | </itemizedlist> |
760 | <para> | 760 | <para> |
761 | The dynamic regions defined in the platform data will be appended to | 761 | The dynamic regions defined in the platform data will be appended to |
diff --git a/Documentation/RCU/stallwarn.txt b/Documentation/RCU/stallwarn.txt index ed186a902d31..b57c0c1cdac6 100644 --- a/Documentation/RCU/stallwarn.txt +++ b/Documentation/RCU/stallwarn.txt | |||
@@ -15,7 +15,7 @@ CONFIG_RCU_CPU_STALL_TIMEOUT | |||
15 | 21 seconds. | 15 | 21 seconds. |
16 | 16 | ||
17 | This configuration parameter may be changed at runtime via the | 17 | This configuration parameter may be changed at runtime via the |
18 | /sys/module/rcutree/parameters/rcu_cpu_stall_timeout, however | 18 | /sys/module/rcupdate/parameters/rcu_cpu_stall_timeout, however |
19 | this parameter is checked only at the beginning of a cycle. | 19 | this parameter is checked only at the beginning of a cycle. |
20 | So if you are 10 seconds into a 40-second stall, setting this | 20 | So if you are 10 seconds into a 40-second stall, setting this |
21 | sysfs parameter to (say) five will shorten the timeout for the | 21 | sysfs parameter to (say) five will shorten the timeout for the |
@@ -152,6 +152,15 @@ no non-lazy callbacks ("." is printed otherwise, as shown above) and | |||
152 | "D" indicates that dyntick-idle processing is enabled ("." is printed | 152 | "D" indicates that dyntick-idle processing is enabled ("." is printed |
153 | otherwise, for example, if disabled via the "nohz=" kernel boot parameter). | 153 | otherwise, for example, if disabled via the "nohz=" kernel boot parameter). |
154 | 154 | ||
155 | If the relevant grace-period kthread has been unable to run prior to | ||
156 | the stall warning, the following additional line is printed: | ||
157 | |||
158 | rcu_preempt kthread starved for 2023 jiffies! | ||
159 | |||
160 | Starving the grace-period kthreads of CPU time can of course result in | ||
161 | RCU CPU stall warnings even when all CPUs and tasks have passed through | ||
162 | the required quiescent states. | ||
163 | |||
155 | 164 | ||
156 | Multiple Warnings From One Stall | 165 | Multiple Warnings From One Stall |
157 | 166 | ||
@@ -187,6 +196,11 @@ o For !CONFIG_PREEMPT kernels, a CPU looping anywhere in the | |||
187 | behavior, you might need to replace some of the cond_resched() | 196 | behavior, you might need to replace some of the cond_resched() |
188 | calls with calls to cond_resched_rcu_qs(). | 197 | calls with calls to cond_resched_rcu_qs(). |
189 | 198 | ||
199 | o Anything that prevents RCU's grace-period kthreads from running. | ||
200 | This can result in the "All QSes seen" console-log message. | ||
201 | This message will include information on when the kthread last | ||
202 | ran and how often it should be expected to run. | ||
203 | |||
190 | o A CPU-bound real-time task in a CONFIG_PREEMPT kernel, which might | 204 | o A CPU-bound real-time task in a CONFIG_PREEMPT kernel, which might |
191 | happen to preempt a low-priority task in the middle of an RCU | 205 | happen to preempt a low-priority task in the middle of an RCU |
192 | read-side critical section. This is especially damaging if | 206 | read-side critical section. This is especially damaging if |
diff --git a/Documentation/RCU/trace.txt b/Documentation/RCU/trace.txt index b63b9bb3bc0c..08651da15448 100644 --- a/Documentation/RCU/trace.txt +++ b/Documentation/RCU/trace.txt | |||
@@ -56,14 +56,14 @@ rcuboost: | |||
56 | 56 | ||
57 | The output of "cat rcu/rcu_preempt/rcudata" looks as follows: | 57 | The output of "cat rcu/rcu_preempt/rcudata" looks as follows: |
58 | 58 | ||
59 | 0!c=30455 g=30456 pq=1 qp=1 dt=126535/140000000000000/0 df=2002 of=4 ql=0/0 qs=N... b=10 ci=74572 nci=0 co=1131 ca=716 | 59 | 0!c=30455 g=30456 pq=1/0 qp=1 dt=126535/140000000000000/0 df=2002 of=4 ql=0/0 qs=N... b=10 ci=74572 nci=0 co=1131 ca=716 |
60 | 1!c=30719 g=30720 pq=1 qp=0 dt=132007/140000000000000/0 df=1874 of=10 ql=0/0 qs=N... b=10 ci=123209 nci=0 co=685 ca=982 | 60 | 1!c=30719 g=30720 pq=1/0 qp=0 dt=132007/140000000000000/0 df=1874 of=10 ql=0/0 qs=N... b=10 ci=123209 nci=0 co=685 ca=982 |
61 | 2!c=30150 g=30151 pq=1 qp=1 dt=138537/140000000000000/0 df=1707 of=8 ql=0/0 qs=N... b=10 ci=80132 nci=0 co=1328 ca=1458 | 61 | 2!c=30150 g=30151 pq=1/1 qp=1 dt=138537/140000000000000/0 df=1707 of=8 ql=0/0 qs=N... b=10 ci=80132 nci=0 co=1328 ca=1458 |
62 | 3 c=31249 g=31250 pq=1 qp=0 dt=107255/140000000000000/0 df=1749 of=6 ql=0/450 qs=NRW. b=10 ci=151700 nci=0 co=509 ca=622 | 62 | 3 c=31249 g=31250 pq=1/1 qp=0 dt=107255/140000000000000/0 df=1749 of=6 ql=0/450 qs=NRW. b=10 ci=151700 nci=0 co=509 ca=622 |
63 | 4!c=29502 g=29503 pq=1 qp=1 dt=83647/140000000000000/0 df=965 of=5 ql=0/0 qs=N... b=10 ci=65643 nci=0 co=1373 ca=1521 | 63 | 4!c=29502 g=29503 pq=1/0 qp=1 dt=83647/140000000000000/0 df=965 of=5 ql=0/0 qs=N... b=10 ci=65643 nci=0 co=1373 ca=1521 |
64 | 5 c=31201 g=31202 pq=1 qp=1 dt=70422/0/0 df=535 of=7 ql=0/0 qs=.... b=10 ci=58500 nci=0 co=764 ca=698 | 64 | 5 c=31201 g=31202 pq=1/0 qp=1 dt=70422/0/0 df=535 of=7 ql=0/0 qs=.... b=10 ci=58500 nci=0 co=764 ca=698 |
65 | 6!c=30253 g=30254 pq=1 qp=1 dt=95363/140000000000000/0 df=780 of=5 ql=0/0 qs=N... b=10 ci=100607 nci=0 co=1414 ca=1353 | 65 | 6!c=30253 g=30254 pq=1/0 qp=1 dt=95363/140000000000000/0 df=780 of=5 ql=0/0 qs=N... b=10 ci=100607 nci=0 co=1414 ca=1353 |
66 | 7 c=31178 g=31178 pq=1 qp=0 dt=91536/0/0 df=547 of=4 ql=0/0 qs=.... b=10 ci=109819 nci=0 co=1115 ca=969 | 66 | 7 c=31178 g=31178 pq=1/0 qp=0 dt=91536/0/0 df=547 of=4 ql=0/0 qs=.... b=10 ci=109819 nci=0 co=1115 ca=969 |
67 | 67 | ||
68 | This file has one line per CPU, or eight for this 8-CPU system. | 68 | This file has one line per CPU, or eight for this 8-CPU system. |
69 | The fields are as follows: | 69 | The fields are as follows: |
@@ -188,14 +188,14 @@ o "ca" is the number of RCU callbacks that have been adopted by this | |||
188 | Kernels compiled with CONFIG_RCU_BOOST=y display the following from | 188 | Kernels compiled with CONFIG_RCU_BOOST=y display the following from |
189 | /debug/rcu/rcu_preempt/rcudata: | 189 | /debug/rcu/rcu_preempt/rcudata: |
190 | 190 | ||
191 | 0!c=12865 g=12866 pq=1 qp=1 dt=83113/140000000000000/0 df=288 of=11 ql=0/0 qs=N... kt=0/O ktl=944 b=10 ci=60709 nci=0 co=748 ca=871 | 191 | 0!c=12865 g=12866 pq=1/0 qp=1 dt=83113/140000000000000/0 df=288 of=11 ql=0/0 qs=N... kt=0/O ktl=944 b=10 ci=60709 nci=0 co=748 ca=871 |
192 | 1 c=14407 g=14408 pq=1 qp=0 dt=100679/140000000000000/0 df=378 of=7 ql=0/119 qs=NRW. kt=0/W ktl=9b6 b=10 ci=109740 nci=0 co=589 ca=485 | 192 | 1 c=14407 g=14408 pq=1/0 qp=0 dt=100679/140000000000000/0 df=378 of=7 ql=0/119 qs=NRW. kt=0/W ktl=9b6 b=10 ci=109740 nci=0 co=589 ca=485 |
193 | 2 c=14407 g=14408 pq=1 qp=0 dt=105486/0/0 df=90 of=9 ql=0/89 qs=NRW. kt=0/W ktl=c0c b=10 ci=83113 nci=0 co=533 ca=490 | 193 | 2 c=14407 g=14408 pq=1/0 qp=0 dt=105486/0/0 df=90 of=9 ql=0/89 qs=NRW. kt=0/W ktl=c0c b=10 ci=83113 nci=0 co=533 ca=490 |
194 | 3 c=14407 g=14408 pq=1 qp=0 dt=107138/0/0 df=142 of=8 ql=0/188 qs=NRW. kt=0/W ktl=b96 b=10 ci=121114 nci=0 co=426 ca=290 | 194 | 3 c=14407 g=14408 pq=1/0 qp=0 dt=107138/0/0 df=142 of=8 ql=0/188 qs=NRW. kt=0/W ktl=b96 b=10 ci=121114 nci=0 co=426 ca=290 |
195 | 4 c=14405 g=14406 pq=1 qp=1 dt=50238/0/0 df=706 of=7 ql=0/0 qs=.... kt=0/W ktl=812 b=10 ci=34929 nci=0 co=643 ca=114 | 195 | 4 c=14405 g=14406 pq=1/0 qp=1 dt=50238/0/0 df=706 of=7 ql=0/0 qs=.... kt=0/W ktl=812 b=10 ci=34929 nci=0 co=643 ca=114 |
196 | 5!c=14168 g=14169 pq=1 qp=0 dt=45465/140000000000000/0 df=161 of=11 ql=0/0 qs=N... kt=0/O ktl=b4d b=10 ci=47712 nci=0 co=677 ca=722 | 196 | 5!c=14168 g=14169 pq=1/0 qp=0 dt=45465/140000000000000/0 df=161 of=11 ql=0/0 qs=N... kt=0/O ktl=b4d b=10 ci=47712 nci=0 co=677 ca=722 |
197 | 6 c=14404 g=14405 pq=1 qp=0 dt=59454/0/0 df=94 of=6 ql=0/0 qs=.... kt=0/W ktl=e57 b=10 ci=55597 nci=0 co=701 ca=811 | 197 | 6 c=14404 g=14405 pq=1/0 qp=0 dt=59454/0/0 df=94 of=6 ql=0/0 qs=.... kt=0/W ktl=e57 b=10 ci=55597 nci=0 co=701 ca=811 |
198 | 7 c=14407 g=14408 pq=1 qp=1 dt=68850/0/0 df=31 of=8 ql=0/0 qs=.... kt=0/W ktl=14bd b=10 ci=77475 nci=0 co=508 ca=1042 | 198 | 7 c=14407 g=14408 pq=1/0 qp=1 dt=68850/0/0 df=31 of=8 ql=0/0 qs=.... kt=0/W ktl=14bd b=10 ci=77475 nci=0 co=508 ca=1042 |
199 | 199 | ||
200 | This is similar to the output discussed above, but contains the following | 200 | This is similar to the output discussed above, but contains the following |
201 | additional fields: | 201 | additional fields: |
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches index 1fa1caa198eb..447671bd2927 100644 --- a/Documentation/SubmittingPatches +++ b/Documentation/SubmittingPatches | |||
@@ -10,27 +10,49 @@ kernel, the process can sometimes be daunting if you're not familiar | |||
10 | with "the system." This text is a collection of suggestions which | 10 | with "the system." This text is a collection of suggestions which |
11 | can greatly increase the chances of your change being accepted. | 11 | can greatly increase the chances of your change being accepted. |
12 | 12 | ||
13 | Read Documentation/SubmitChecklist for a list of items to check | 13 | This document contains a large number of suggestions in a relatively terse |
14 | before submitting code. If you are submitting a driver, also read | 14 | format. For detailed information on how the kernel development process |
15 | Documentation/SubmittingDrivers. | 15 | works, see Documentation/development-process. Also, read |
16 | Documentation/SubmitChecklist for a list of items to check before | ||
17 | submitting code. If you are submitting a driver, also read | ||
18 | Documentation/SubmittingDrivers; for device tree binding patches, read | ||
19 | Documentation/devicetree/bindings/submitting-patches.txt. | ||
16 | 20 | ||
17 | Many of these steps describe the default behavior of the git version | 21 | Many of these steps describe the default behavior of the git version |
18 | control system; if you use git to prepare your patches, you'll find much | 22 | control system; if you use git to prepare your patches, you'll find much |
19 | of the mechanical work done for you, though you'll still need to prepare | 23 | of the mechanical work done for you, though you'll still need to prepare |
20 | and document a sensible set of patches. | 24 | and document a sensible set of patches. In general, use of git will make |
25 | your life as a kernel developer easier. | ||
21 | 26 | ||
22 | -------------------------------------------- | 27 | -------------------------------------------- |
23 | SECTION 1 - CREATING AND SENDING YOUR CHANGE | 28 | SECTION 1 - CREATING AND SENDING YOUR CHANGE |
24 | -------------------------------------------- | 29 | -------------------------------------------- |
25 | 30 | ||
26 | 31 | ||
32 | 0) Obtain a current source tree | ||
33 | ------------------------------- | ||
34 | |||
35 | If you do not have a repository with the current kernel source handy, use | ||
36 | git to obtain one. You'll want to start with the mainline repository, | ||
37 | which can be grabbed with: | ||
38 | |||
39 | git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git | ||
40 | |||
41 | Note, however, that you may not want to develop against the mainline tree | ||
42 | directly. Most subsystem maintainers run their own trees and want to see | ||
43 | patches prepared against those trees. See the "T:" entry for the subsystem | ||
44 | in the MAINTAINERS file to find that tree, or simply ask the maintainer if | ||
45 | the tree is not listed there. | ||
46 | |||
47 | It is still possible to download kernel releases via tarballs (as described | ||
48 | in the next section), but that is the hard way to do kernel development. | ||
27 | 49 | ||
28 | 1) "diff -up" | 50 | 1) "diff -up" |
29 | ------------ | 51 | ------------ |
30 | 52 | ||
31 | Use "diff -up" or "diff -uprN" to create patches. git generates patches | 53 | If you must generate your patches by hand, use "diff -up" or "diff -uprN" |
32 | in this form by default; if you're using git, you can skip this section | 54 | to create patches. Git generates patches in this form by default; if |
33 | entirely. | 55 | you're using git, you can skip this section entirely. |
34 | 56 | ||
35 | All changes to the Linux kernel occur in the form of patches, as | 57 | All changes to the Linux kernel occur in the form of patches, as |
36 | generated by diff(1). When creating your patch, make sure to create it | 58 | generated by diff(1). When creating your patch, make sure to create it |
@@ -42,7 +64,7 @@ not in any lower subdirectory. | |||
42 | 64 | ||
43 | To create a patch for a single file, it is often sufficient to do: | 65 | To create a patch for a single file, it is often sufficient to do: |
44 | 66 | ||
45 | SRCTREE= linux-2.6 | 67 | SRCTREE= linux |
46 | MYFILE= drivers/net/mydriver.c | 68 | MYFILE= drivers/net/mydriver.c |
47 | 69 | ||
48 | cd $SRCTREE | 70 | cd $SRCTREE |
@@ -55,17 +77,16 @@ To create a patch for multiple files, you should unpack a "vanilla", | |||
55 | or unmodified kernel source tree, and generate a diff against your | 77 | or unmodified kernel source tree, and generate a diff against your |
56 | own source tree. For example: | 78 | own source tree. For example: |
57 | 79 | ||
58 | MYSRC= /devel/linux-2.6 | 80 | MYSRC= /devel/linux |
59 | 81 | ||
60 | tar xvfz linux-2.6.12.tar.gz | 82 | tar xvfz linux-3.19.tar.gz |
61 | mv linux-2.6.12 linux-2.6.12-vanilla | 83 | mv linux-3.19 linux-3.19-vanilla |
62 | diff -uprN -X linux-2.6.12-vanilla/Documentation/dontdiff \ | 84 | diff -uprN -X linux-3.19-vanilla/Documentation/dontdiff \ |
63 | linux-2.6.12-vanilla $MYSRC > /tmp/patch | 85 | linux-3.19-vanilla $MYSRC > /tmp/patch |
64 | 86 | ||
65 | "dontdiff" is a list of files which are generated by the kernel during | 87 | "dontdiff" is a list of files which are generated by the kernel during |
66 | the build process, and should be ignored in any diff(1)-generated | 88 | the build process, and should be ignored in any diff(1)-generated |
67 | patch. The "dontdiff" file is included in the kernel tree in | 89 | patch. |
68 | 2.6.12 and later. | ||
69 | 90 | ||
70 | Make sure your patch does not include any extra files which do not | 91 | Make sure your patch does not include any extra files which do not |
71 | belong in a patch submission. Make sure to review your patch -after- | 92 | belong in a patch submission. Make sure to review your patch -after- |
@@ -83,6 +104,7 @@ is another popular alternative. | |||
83 | 104 | ||
84 | 105 | ||
85 | 2) Describe your changes. | 106 | 2) Describe your changes. |
107 | ------------------------- | ||
86 | 108 | ||
87 | Describe your problem. Whether your patch is a one-line bug fix or | 109 | Describe your problem. Whether your patch is a one-line bug fix or |
88 | 5000 lines of a new feature, there must be an underlying problem that | 110 | 5000 lines of a new feature, there must be an underlying problem that |
@@ -124,10 +146,10 @@ See #3, next. | |||
124 | When you submit or resubmit a patch or patch series, include the | 146 | When you submit or resubmit a patch or patch series, include the |
125 | complete patch description and justification for it. Don't just | 147 | complete patch description and justification for it. Don't just |
126 | say that this is version N of the patch (series). Don't expect the | 148 | say that this is version N of the patch (series). Don't expect the |
127 | patch merger to refer back to earlier patch versions or referenced | 149 | subsystem maintainer to refer back to earlier patch versions or referenced |
128 | URLs to find the patch description and put that into the patch. | 150 | URLs to find the patch description and put that into the patch. |
129 | I.e., the patch (series) and its description should be self-contained. | 151 | I.e., the patch (series) and its description should be self-contained. |
130 | This benefits both the patch merger(s) and reviewers. Some reviewers | 152 | This benefits both the maintainers and reviewers. Some reviewers |
131 | probably didn't even receive earlier versions of the patch. | 153 | probably didn't even receive earlier versions of the patch. |
132 | 154 | ||
133 | Describe your changes in imperative mood, e.g. "make xyzzy do frotz" | 155 | Describe your changes in imperative mood, e.g. "make xyzzy do frotz" |
@@ -156,10 +178,15 @@ Example: | |||
156 | platform_set_drvdata(), but left the variable "dev" unused, | 178 | platform_set_drvdata(), but left the variable "dev" unused, |
157 | delete it. | 179 | delete it. |
158 | 180 | ||
181 | You should also be sure to use at least the first twelve characters of the | ||
182 | SHA-1 ID. The kernel repository holds a *lot* of objects, making | ||
183 | collisions with shorter IDs a real possibility. Bear in mind that, even if | ||
184 | there is no collision with your six-character ID now, that condition may | ||
185 | change five years from now. | ||
186 | |||
159 | If your patch fixes a bug in a specific commit, e.g. you found an issue using | 187 | If your patch fixes a bug in a specific commit, e.g. you found an issue using |
160 | git-bisect, please use the 'Fixes:' tag with the first 12 characters of the | 188 | git-bisect, please use the 'Fixes:' tag with the first 12 characters of the |
161 | SHA-1 ID, and the one line summary. | 189 | SHA-1 ID, and the one line summary. For example: |
162 | Example: | ||
163 | 190 | ||
164 | Fixes: e21d2170f366 ("video: remove unnecessary platform_set_drvdata()") | 191 | Fixes: e21d2170f366 ("video: remove unnecessary platform_set_drvdata()") |
165 | 192 | ||
@@ -172,8 +199,9 @@ outputting the above style in the git log or git show commands | |||
172 | fixes = Fixes: %h (\"%s\") | 199 | fixes = Fixes: %h (\"%s\") |
173 | 200 | ||
174 | 3) Separate your changes. | 201 | 3) Separate your changes. |
202 | ------------------------- | ||
175 | 203 | ||
176 | Separate _logical changes_ into a single patch file. | 204 | Separate each _logical change_ into a separate patch. |
177 | 205 | ||
178 | For example, if your changes include both bug fixes and performance | 206 | For example, if your changes include both bug fixes and performance |
179 | enhancements for a single driver, separate those changes into two | 207 | enhancements for a single driver, separate those changes into two |
@@ -184,90 +212,116 @@ On the other hand, if you make a single change to numerous files, | |||
184 | group those changes into a single patch. Thus a single logical change | 212 | group those changes into a single patch. Thus a single logical change |
185 | is contained within a single patch. | 213 | is contained within a single patch. |
186 | 214 | ||
215 | The point to remember is that each patch should make an easily understood | ||
216 | change that can be verified by reviewers. Each patch should be justifiable | ||
217 | on its own merits. | ||
218 | |||
187 | If one patch depends on another patch in order for a change to be | 219 | If one patch depends on another patch in order for a change to be |
188 | complete, that is OK. Simply note "this patch depends on patch X" | 220 | complete, that is OK. Simply note "this patch depends on patch X" |
189 | in your patch description. | 221 | in your patch description. |
190 | 222 | ||
223 | When dividing your change into a series of patches, take special care to | ||
224 | ensure that the kernel builds and runs properly after each patch in the | ||
225 | series. Developers using "git bisect" to track down a problem can end up | ||
226 | splitting your patch series at any point; they will not thank you if you | ||
227 | introduce bugs in the middle. | ||
228 | |||
191 | If you cannot condense your patch set into a smaller set of patches, | 229 | If you cannot condense your patch set into a smaller set of patches, |
192 | then only post say 15 or so at a time and wait for review and integration. | 230 | then only post say 15 or so at a time and wait for review and integration. |
193 | 231 | ||
194 | 232 | ||
195 | 233 | ||
196 | 4) Style check your changes. | 234 | 4) Style-check your changes. |
235 | ---------------------------- | ||
197 | 236 | ||
198 | Check your patch for basic style violations, details of which can be | 237 | Check your patch for basic style violations, details of which can be |
199 | found in Documentation/CodingStyle. Failure to do so simply wastes | 238 | found in Documentation/CodingStyle. Failure to do so simply wastes |
200 | the reviewers time and will get your patch rejected, probably | 239 | the reviewers time and will get your patch rejected, probably |
201 | without even being read. | 240 | without even being read. |
202 | 241 | ||
203 | At a minimum you should check your patches with the patch style | 242 | One significant exception is when moving code from one file to |
204 | checker prior to submission (scripts/checkpatch.pl). You should | 243 | another -- in this case you should not modify the moved code at all in |
205 | be able to justify all violations that remain in your patch. | 244 | the same patch which moves it. This clearly delineates the act of |
206 | 245 | moving the code and your changes. This greatly aids review of the | |
207 | 246 | actual differences and allows tools to better track the history of | |
247 | the code itself. | ||
208 | 248 | ||
209 | 5) Select e-mail destination. | 249 | Check your patches with the patch style checker prior to submission |
250 | (scripts/checkpatch.pl). Note, though, that the style checker should be | ||
251 | viewed as a guide, not as a replacement for human judgment. If your code | ||
252 | looks better with a violation then its probably best left alone. | ||
210 | 253 | ||
211 | Look through the MAINTAINERS file and the source code, and determine | 254 | The checker reports at three levels: |
212 | if your change applies to a specific subsystem of the kernel, with | 255 | - ERROR: things that are very likely to be wrong |
213 | an assigned maintainer. If so, e-mail that person. The script | 256 | - WARNING: things requiring careful review |
214 | scripts/get_maintainer.pl can be very useful at this step. | 257 | - CHECK: things requiring thought |
215 | 258 | ||
216 | If no maintainer is listed, or the maintainer does not respond, send | 259 | You should be able to justify all violations that remain in your |
217 | your patch to the primary Linux kernel developer's mailing list, | 260 | patch. |
218 | linux-kernel@vger.kernel.org. Most kernel developers monitor this | ||
219 | e-mail list, and can comment on your changes. | ||
220 | 261 | ||
221 | 262 | ||
222 | Do not send more than 15 patches at once to the vger mailing lists!!! | 263 | 5) Select the recipients for your patch. |
264 | ---------------------------------------- | ||
223 | 265 | ||
266 | You should always copy the appropriate subsystem maintainer(s) on any patch | ||
267 | to code that they maintain; look through the MAINTAINERS file and the | ||
268 | source code revision history to see who those maintainers are. The | ||
269 | script scripts/get_maintainer.pl can be very useful at this step. If you | ||
270 | cannot find a maintainer for the subsystem your are working on, Andrew | ||
271 | Morton (akpm@linux-foundation.org) serves as a maintainer of last resort. | ||
224 | 272 | ||
225 | Linus Torvalds is the final arbiter of all changes accepted into the | 273 | You should also normally choose at least one mailing list to receive a copy |
226 | Linux kernel. His e-mail address is <torvalds@linux-foundation.org>. | 274 | of your patch set. linux-kernel@vger.kernel.org functions as a list of |
227 | He gets a lot of e-mail, so typically you should do your best to -avoid- | 275 | last resort, but the volume on that list has caused a number of developers |
228 | sending him e-mail. | 276 | to tune it out. Look in the MAINTAINERS file for a subsystem-specific |
277 | list; your patch will probably get more attention there. Please do not | ||
278 | spam unrelated lists, though. | ||
229 | 279 | ||
230 | Patches which are bug fixes, are "obvious" changes, or similarly | 280 | Many kernel-related lists are hosted on vger.kernel.org; you can find a |
231 | require little discussion should be sent or CC'd to Linus. Patches | 281 | list of them at http://vger.kernel.org/vger-lists.html. There are |
232 | which require discussion or do not have a clear advantage should | 282 | kernel-related lists hosted elsewhere as well, though. |
233 | usually be sent first to linux-kernel. Only after the patch is | ||
234 | discussed should the patch then be submitted to Linus. | ||
235 | 283 | ||
284 | Do not send more than 15 patches at once to the vger mailing lists!!! | ||
236 | 285 | ||
286 | Linus Torvalds is the final arbiter of all changes accepted into the | ||
287 | Linux kernel. His e-mail address is <torvalds@linux-foundation.org>. | ||
288 | He gets a lot of e-mail, and, at this point, very few patches go through | ||
289 | Linus directly, so typically you should do your best to -avoid- | ||
290 | sending him e-mail. | ||
237 | 291 | ||
238 | 6) Select your CC (e-mail carbon copy) list. | 292 | If you have a patch that fixes an exploitable security bug, send that patch |
293 | to security@kernel.org. For severe bugs, a short embargo may be considered | ||
294 | to allow distrbutors to get the patch out to users; in such cases, | ||
295 | obviously, the patch should not be sent to any public lists. | ||
239 | 296 | ||
240 | Unless you have a reason NOT to do so, CC linux-kernel@vger.kernel.org. | 297 | Patches that fix a severe bug in a released kernel should be directed |
298 | toward the stable maintainers by putting a line like this: | ||
241 | 299 | ||
242 | Other kernel developers besides Linus need to be aware of your change, | 300 | Cc: stable@vger.kernel.org |
243 | so that they may comment on it and offer code review and suggestions. | ||
244 | linux-kernel is the primary Linux kernel developer mailing list. | ||
245 | Other mailing lists are available for specific subsystems, such as | ||
246 | USB, framebuffer devices, the VFS, the SCSI subsystem, etc. See the | ||
247 | MAINTAINERS file for a mailing list that relates specifically to | ||
248 | your change. | ||
249 | 301 | ||
250 | Majordomo lists of VGER.KERNEL.ORG at: | 302 | into your patch. |
251 | <http://vger.kernel.org/vger-lists.html> | ||
252 | 303 | ||
253 | If changes affect userland-kernel interfaces, please send | 304 | Note, however, that some subsystem maintainers want to come to their own |
254 | the MAN-PAGES maintainer (as listed in the MAINTAINERS file) | 305 | conclusions on which patches should go to the stable trees. The networking |
255 | a man-pages patch, or at least a notification of the change, | 306 | maintainer, in particular, would rather not see individual developers |
256 | so that some information makes its way into the manual pages. | 307 | adding lines like the above to their patches. |
257 | 308 | ||
258 | Even if the maintainer did not respond in step #5, make sure to ALWAYS | 309 | If changes affect userland-kernel interfaces, please send the MAN-PAGES |
259 | copy the maintainer when you change their code. | 310 | maintainer (as listed in the MAINTAINERS file) a man-pages patch, or at |
311 | least a notification of the change, so that some information makes its way | ||
312 | into the manual pages. User-space API changes should also be copied to | ||
313 | linux-api@vger.kernel.org. | ||
260 | 314 | ||
261 | For small patches you may want to CC the Trivial Patch Monkey | 315 | For small patches you may want to CC the Trivial Patch Monkey |
262 | trivial@kernel.org which collects "trivial" patches. Have a look | 316 | trivial@kernel.org which collects "trivial" patches. Have a look |
263 | into the MAINTAINERS file for its current manager. | 317 | into the MAINTAINERS file for its current manager. |
264 | Trivial patches must qualify for one of the following rules: | 318 | Trivial patches must qualify for one of the following rules: |
265 | Spelling fixes in documentation | 319 | Spelling fixes in documentation |
266 | Spelling fixes which could break grep(1) | 320 | Spelling fixes for errors which could break grep(1) |
267 | Warning fixes (cluttering with useless warnings is bad) | 321 | Warning fixes (cluttering with useless warnings is bad) |
268 | Compilation fixes (only if they are actually correct) | 322 | Compilation fixes (only if they are actually correct) |
269 | Runtime fixes (only if they actually fix things) | 323 | Runtime fixes (only if they actually fix things) |
270 | Removing use of deprecated functions/macros (eg. check_region) | 324 | Removing use of deprecated functions/macros |
271 | Contact detail and documentation fixes | 325 | Contact detail and documentation fixes |
272 | Non-portable code replaced by portable code (even in arch-specific, | 326 | Non-portable code replaced by portable code (even in arch-specific, |
273 | since people copy, as long as it's trivial) | 327 | since people copy, as long as it's trivial) |
@@ -276,7 +330,8 @@ Trivial patches must qualify for one of the following rules: | |||
276 | 330 | ||
277 | 331 | ||
278 | 332 | ||
279 | 7) No MIME, no links, no compression, no attachments. Just plain text. | 333 | 6) No MIME, no links, no compression, no attachments. Just plain text. |
334 | ----------------------------------------------------------------------- | ||
280 | 335 | ||
281 | Linus and other kernel developers need to be able to read and comment | 336 | Linus and other kernel developers need to be able to read and comment |
282 | on the changes you are submitting. It is important for a kernel | 337 | on the changes you are submitting. It is important for a kernel |
@@ -299,54 +354,48 @@ you to re-send them using MIME. | |||
299 | See Documentation/email-clients.txt for hints about configuring | 354 | See Documentation/email-clients.txt for hints about configuring |
300 | your e-mail client so that it sends your patches untouched. | 355 | your e-mail client so that it sends your patches untouched. |
301 | 356 | ||
302 | 8) E-mail size. | 357 | 7) E-mail size. |
303 | 358 | --------------- | |
304 | When sending patches to Linus, always follow step #7. | ||
305 | 359 | ||
306 | Large changes are not appropriate for mailing lists, and some | 360 | Large changes are not appropriate for mailing lists, and some |
307 | maintainers. If your patch, uncompressed, exceeds 300 kB in size, | 361 | maintainers. If your patch, uncompressed, exceeds 300 kB in size, |
308 | it is preferred that you store your patch on an Internet-accessible | 362 | it is preferred that you store your patch on an Internet-accessible |
309 | server, and provide instead a URL (link) pointing to your patch. | 363 | server, and provide instead a URL (link) pointing to your patch. But note |
364 | that if your patch exceeds 300 kB, it almost certainly needs to be broken up | ||
365 | anyway. | ||
310 | 366 | ||
367 | 8) Respond to review comments. | ||
368 | ------------------------------ | ||
311 | 369 | ||
370 | Your patch will almost certainly get comments from reviewers on ways in | ||
371 | which the patch can be improved. You must respond to those comments; | ||
372 | ignoring reviewers is a good way to get ignored in return. Review comments | ||
373 | or questions that do not lead to a code change should almost certainly | ||
374 | bring about a comment or changelog entry so that the next reviewer better | ||
375 | understands what is going on. | ||
312 | 376 | ||
313 | 9) Name your kernel version. | 377 | Be sure to tell the reviewers what changes you are making and to thank them |
378 | for their time. Code review is a tiring and time-consuming process, and | ||
379 | reviewers sometimes get grumpy. Even in that case, though, respond | ||
380 | politely and address the problems they have pointed out. | ||
314 | 381 | ||
315 | It is important to note, either in the subject line or in the patch | ||
316 | description, the kernel version to which this patch applies. | ||
317 | 382 | ||
318 | If the patch does not apply cleanly to the latest kernel version, | 383 | 9) Don't get discouraged - or impatient. |
319 | Linus will not apply it. | 384 | ---------------------------------------- |
320 | 385 | ||
386 | After you have submitted your change, be patient and wait. Reviewers are | ||
387 | busy people and may not get to your patch right away. | ||
321 | 388 | ||
389 | Once upon a time, patches used to disappear into the void without comment, | ||
390 | but the development process works more smoothly than that now. You should | ||
391 | receive comments within a week or so; if that does not happen, make sure | ||
392 | that you have sent your patches to the right place. Wait for a minimum of | ||
393 | one week before resubmitting or pinging reviewers - possibly longer during | ||
394 | busy times like merge windows. | ||
322 | 395 | ||
323 | 10) Don't get discouraged. Re-submit. | ||
324 | 396 | ||
325 | After you have submitted your change, be patient and wait. If Linus | 397 | 10) Include PATCH in the subject |
326 | likes your change and applies it, it will appear in the next version | 398 | -------------------------------- |
327 | of the kernel that he releases. | ||
328 | |||
329 | However, if your change doesn't appear in the next version of the | ||
330 | kernel, there could be any number of reasons. It's YOUR job to | ||
331 | narrow down those reasons, correct what was wrong, and submit your | ||
332 | updated change. | ||
333 | |||
334 | It is quite common for Linus to "drop" your patch without comment. | ||
335 | That's the nature of the system. If he drops your patch, it could be | ||
336 | due to | ||
337 | * Your patch did not apply cleanly to the latest kernel version. | ||
338 | * Your patch was not sufficiently discussed on linux-kernel. | ||
339 | * A style issue (see section 2). | ||
340 | * An e-mail formatting issue (re-read this section). | ||
341 | * A technical problem with your change. | ||
342 | * He gets tons of e-mail, and yours got lost in the shuffle. | ||
343 | * You are being annoying. | ||
344 | |||
345 | When in doubt, solicit comments on linux-kernel mailing list. | ||
346 | |||
347 | |||
348 | |||
349 | 11) Include PATCH in the subject | ||
350 | 399 | ||
351 | Due to high e-mail traffic to Linus, and to linux-kernel, it is common | 400 | Due to high e-mail traffic to Linus, and to linux-kernel, it is common |
352 | convention to prefix your subject line with [PATCH]. This lets Linus | 401 | convention to prefix your subject line with [PATCH]. This lets Linus |
@@ -355,7 +404,8 @@ e-mail discussions. | |||
355 | 404 | ||
356 | 405 | ||
357 | 406 | ||
358 | 12) Sign your work | 407 | 11) Sign your work |
408 | ------------------ | ||
359 | 409 | ||
360 | To improve tracking of who did what, especially with patches that can | 410 | To improve tracking of who did what, especially with patches that can |
361 | percolate to their final resting place in the kernel through several | 411 | percolate to their final resting place in the kernel through several |
@@ -387,11 +437,11 @@ can certify the below: | |||
387 | person who certified (a), (b) or (c) and I have not modified | 437 | person who certified (a), (b) or (c) and I have not modified |
388 | it. | 438 | it. |
389 | 439 | ||
390 | (d) I understand and agree that this project and the contribution | 440 | (d) I understand and agree that this project and the contribution |
391 | are public and that a record of the contribution (including all | 441 | are public and that a record of the contribution (including all |
392 | personal information I submit with it, including my sign-off) is | 442 | personal information I submit with it, including my sign-off) is |
393 | maintained indefinitely and may be redistributed consistent with | 443 | maintained indefinitely and may be redistributed consistent with |
394 | this project or the open source license(s) involved. | 444 | this project or the open source license(s) involved. |
395 | 445 | ||
396 | then you just add a line saying | 446 | then you just add a line saying |
397 | 447 | ||
@@ -401,7 +451,7 @@ using your real name (sorry, no pseudonyms or anonymous contributions.) | |||
401 | 451 | ||
402 | Some people also put extra tags at the end. They'll just be ignored for | 452 | Some people also put extra tags at the end. They'll just be ignored for |
403 | now, but you can do this to mark internal company procedures or just | 453 | now, but you can do this to mark internal company procedures or just |
404 | point out some special detail about the sign-off. | 454 | point out some special detail about the sign-off. |
405 | 455 | ||
406 | If you are a subsystem or branch maintainer, sometimes you need to slightly | 456 | If you are a subsystem or branch maintainer, sometimes you need to slightly |
407 | modify patches you receive in order to merge them, because the code is not | 457 | modify patches you receive in order to merge them, because the code is not |
@@ -429,15 +479,15 @@ which appears in the changelog. | |||
429 | Special note to back-porters: It seems to be a common and useful practice | 479 | Special note to back-porters: It seems to be a common and useful practice |
430 | to insert an indication of the origin of a patch at the top of the commit | 480 | to insert an indication of the origin of a patch at the top of the commit |
431 | message (just after the subject line) to facilitate tracking. For instance, | 481 | message (just after the subject line) to facilitate tracking. For instance, |
432 | here's what we see in 2.6-stable : | 482 | here's what we see in a 3.x-stable release: |
433 | 483 | ||
434 | Date: Tue May 13 19:10:30 2008 +0000 | 484 | Date: Tue Oct 7 07:26:38 2014 -0400 |
435 | 485 | ||
436 | SCSI: libiscsi regression in 2.6.25: fix nop timer handling | 486 | libata: Un-break ATA blacklist |
437 | 487 | ||
438 | commit 4cf1043593db6a337f10e006c23c69e5fc93e722 upstream | 488 | commit 1c40279960bcd7d52dbdf1d466b20d24b99176c8 upstream. |
439 | 489 | ||
440 | And here's what appears in 2.4 : | 490 | And here's what might appear in an older kernel once a patch is backported: |
441 | 491 | ||
442 | Date: Tue May 13 22:12:27 2008 +0200 | 492 | Date: Tue May 13 22:12:27 2008 +0200 |
443 | 493 | ||
@@ -446,18 +496,19 @@ And here's what appears in 2.4 : | |||
446 | [backport of 2.6 commit b7acbdfbd1f277c1eb23f344f899cfa4cd0bf36a] | 496 | [backport of 2.6 commit b7acbdfbd1f277c1eb23f344f899cfa4cd0bf36a] |
447 | 497 | ||
448 | Whatever the format, this information provides a valuable help to people | 498 | Whatever the format, this information provides a valuable help to people |
449 | tracking your trees, and to people trying to trouble-shoot bugs in your | 499 | tracking your trees, and to people trying to troubleshoot bugs in your |
450 | tree. | 500 | tree. |
451 | 501 | ||
452 | 502 | ||
453 | 13) When to use Acked-by: and Cc: | 503 | 12) When to use Acked-by: and Cc: |
504 | --------------------------------- | ||
454 | 505 | ||
455 | The Signed-off-by: tag indicates that the signer was involved in the | 506 | The Signed-off-by: tag indicates that the signer was involved in the |
456 | development of the patch, or that he/she was in the patch's delivery path. | 507 | development of the patch, or that he/she was in the patch's delivery path. |
457 | 508 | ||
458 | If a person was not directly involved in the preparation or handling of a | 509 | If a person was not directly involved in the preparation or handling of a |
459 | patch but wishes to signify and record their approval of it then they can | 510 | patch but wishes to signify and record their approval of it then they can |
460 | arrange to have an Acked-by: line added to the patch's changelog. | 511 | ask to have an Acked-by: line added to the patch's changelog. |
461 | 512 | ||
462 | Acked-by: is often used by the maintainer of the affected code when that | 513 | Acked-by: is often used by the maintainer of the affected code when that |
463 | maintainer neither contributed to nor forwarded the patch. | 514 | maintainer neither contributed to nor forwarded the patch. |
@@ -465,7 +516,8 @@ maintainer neither contributed to nor forwarded the patch. | |||
465 | Acked-by: is not as formal as Signed-off-by:. It is a record that the acker | 516 | Acked-by: is not as formal as Signed-off-by:. It is a record that the acker |
466 | has at least reviewed the patch and has indicated acceptance. Hence patch | 517 | has at least reviewed the patch and has indicated acceptance. Hence patch |
467 | mergers will sometimes manually convert an acker's "yep, looks good to me" | 518 | mergers will sometimes manually convert an acker's "yep, looks good to me" |
468 | into an Acked-by:. | 519 | into an Acked-by: (but note that it is usually better to ask for an |
520 | explicit ack). | ||
469 | 521 | ||
470 | Acked-by: does not necessarily indicate acknowledgement of the entire patch. | 522 | Acked-by: does not necessarily indicate acknowledgement of the entire patch. |
471 | For example, if a patch affects multiple subsystems and has an Acked-by: from | 523 | For example, if a patch affects multiple subsystems and has an Acked-by: from |
@@ -477,11 +529,13 @@ list archives. | |||
477 | If a person has had the opportunity to comment on a patch, but has not | 529 | If a person has had the opportunity to comment on a patch, but has not |
478 | provided such comments, you may optionally add a "Cc:" tag to the patch. | 530 | provided such comments, you may optionally add a "Cc:" tag to the patch. |
479 | This is the only tag which might be added without an explicit action by the | 531 | This is the only tag which might be added without an explicit action by the |
480 | person it names. This tag documents that potentially interested parties | 532 | person it names - but it should indicate that this person was copied on the |
481 | have been included in the discussion | 533 | patch. This tag documents that potentially interested parties |
534 | have been included in the discussion. | ||
482 | 535 | ||
483 | 536 | ||
484 | 14) Using Reported-by:, Tested-by:, Reviewed-by:, Suggested-by: and Fixes: | 537 | 13) Using Reported-by:, Tested-by:, Reviewed-by:, Suggested-by: and Fixes: |
538 | -------------------------------------------------------------------------- | ||
485 | 539 | ||
486 | The Reported-by tag gives credit to people who find bugs and report them and it | 540 | The Reported-by tag gives credit to people who find bugs and report them and it |
487 | hopefully inspires them to help us again in the future. Please note that if | 541 | hopefully inspires them to help us again in the future. Please note that if |
@@ -541,7 +595,13 @@ which stable kernel versions should receive your fix. This is the preferred | |||
541 | method for indicating a bug fixed by the patch. See #2 above for more details. | 595 | method for indicating a bug fixed by the patch. See #2 above for more details. |
542 | 596 | ||
543 | 597 | ||
544 | 15) The canonical patch format | 598 | 14) The canonical patch format |
599 | ------------------------------ | ||
600 | |||
601 | This section describes how the patch itself should be formatted. Note | ||
602 | that, if you have your patches stored in a git repository, proper patch | ||
603 | formatting can be had with "git format-patch". The tools cannot create | ||
604 | the necessary text, though, so read the instructions below anyway. | ||
545 | 605 | ||
546 | The canonical patch subject line is: | 606 | The canonical patch subject line is: |
547 | 607 | ||
@@ -549,7 +609,8 @@ The canonical patch subject line is: | |||
549 | 609 | ||
550 | The canonical patch message body contains the following: | 610 | The canonical patch message body contains the following: |
551 | 611 | ||
552 | - A "from" line specifying the patch author. | 612 | - A "from" line specifying the patch author (only needed if the person |
613 | sending the patch is not the author). | ||
553 | 614 | ||
554 | - An empty line. | 615 | - An empty line. |
555 | 616 | ||
@@ -656,128 +717,63 @@ See more details on the proper patch format in the following | |||
656 | references. | 717 | references. |
657 | 718 | ||
658 | 719 | ||
659 | 16) Sending "git pull" requests (from Linus emails) | 720 | 15) Sending "git pull" requests |
660 | 721 | ------------------------------- | |
661 | Please write the git repo address and branch name alone on the same line | ||
662 | so that I can't even by mistake pull from the wrong branch, and so | ||
663 | that a triple-click just selects the whole thing. | ||
664 | |||
665 | So the proper format is something along the lines of: | ||
666 | |||
667 | "Please pull from | ||
668 | |||
669 | git://jdelvare.pck.nerim.net/jdelvare-2.6 i2c-for-linus | ||
670 | |||
671 | to get these changes:" | ||
672 | |||
673 | so that I don't have to hunt-and-peck for the address and inevitably | ||
674 | get it wrong (actually, I've only gotten it wrong a few times, and | ||
675 | checking against the diffstat tells me when I get it wrong, but I'm | ||
676 | just a lot more comfortable when I don't have to "look for" the right | ||
677 | thing to pull, and double-check that I have the right branch-name). | ||
678 | |||
679 | |||
680 | Please use "git diff -M --stat --summary" to generate the diffstat: | ||
681 | the -M enables rename detection, and the summary enables a summary of | ||
682 | new/deleted or renamed files. | ||
683 | |||
684 | With rename detection, the statistics are rather different [...] | ||
685 | because git will notice that a fair number of the changes are renames. | ||
686 | |||
687 | ----------------------------------- | ||
688 | SECTION 2 - HINTS, TIPS, AND TRICKS | ||
689 | ----------------------------------- | ||
690 | |||
691 | This section lists many of the common "rules" associated with code | ||
692 | submitted to the kernel. There are always exceptions... but you must | ||
693 | have a really good reason for doing so. You could probably call this | ||
694 | section Linus Computer Science 101. | ||
695 | |||
696 | |||
697 | |||
698 | 1) Read Documentation/CodingStyle | ||
699 | |||
700 | Nuff said. If your code deviates too much from this, it is likely | ||
701 | to be rejected without further review, and without comment. | ||
702 | |||
703 | One significant exception is when moving code from one file to | ||
704 | another -- in this case you should not modify the moved code at all in | ||
705 | the same patch which moves it. This clearly delineates the act of | ||
706 | moving the code and your changes. This greatly aids review of the | ||
707 | actual differences and allows tools to better track the history of | ||
708 | the code itself. | ||
709 | |||
710 | Check your patches with the patch style checker prior to submission | ||
711 | (scripts/checkpatch.pl). The style checker should be viewed as | ||
712 | a guide not as the final word. If your code looks better with | ||
713 | a violation then its probably best left alone. | ||
714 | |||
715 | The checker reports at three levels: | ||
716 | - ERROR: things that are very likely to be wrong | ||
717 | - WARNING: things requiring careful review | ||
718 | - CHECK: things requiring thought | ||
719 | |||
720 | You should be able to justify all violations that remain in your | ||
721 | patch. | ||
722 | |||
723 | |||
724 | |||
725 | 2) #ifdefs are ugly | ||
726 | |||
727 | Code cluttered with ifdefs is difficult to read and maintain. Don't do | ||
728 | it. Instead, put your ifdefs in a header, and conditionally define | ||
729 | 'static inline' functions, or macros, which are used in the code. | ||
730 | Let the compiler optimize away the "no-op" case. | ||
731 | |||
732 | Simple example, of poor code: | ||
733 | |||
734 | dev = alloc_etherdev (sizeof(struct funky_private)); | ||
735 | if (!dev) | ||
736 | return -ENODEV; | ||
737 | #ifdef CONFIG_NET_FUNKINESS | ||
738 | init_funky_net(dev); | ||
739 | #endif | ||
740 | |||
741 | Cleaned-up example: | ||
742 | |||
743 | (in header) | ||
744 | #ifndef CONFIG_NET_FUNKINESS | ||
745 | static inline void init_funky_net (struct net_device *d) {} | ||
746 | #endif | ||
747 | 722 | ||
748 | (in the code itself) | 723 | If you have a series of patches, it may be most convenient to have the |
749 | dev = alloc_etherdev (sizeof(struct funky_private)); | 724 | maintainer pull them directly into the subsystem repository with a |
750 | if (!dev) | 725 | "git pull" operation. Note, however, that pulling patches from a developer |
751 | return -ENODEV; | 726 | requires a higher degree of trust than taking patches from a mailing list. |
752 | init_funky_net(dev); | 727 | As a result, many subsystem maintainers are reluctant to take pull |
728 | requests, especially from new, unknown developers. If in doubt you can use | ||
729 | the pull request as the cover letter for a normal posting of the patch | ||
730 | series, giving the maintainer the option of using either. | ||
753 | 731 | ||
732 | A pull request should have [GIT] or [PULL] in the subject line. The | ||
733 | request itself should include the repository name and the branch of | ||
734 | interest on a single line; it should look something like: | ||
754 | 735 | ||
736 | Please pull from | ||
755 | 737 | ||
756 | 3) 'static inline' is better than a macro | 738 | git://jdelvare.pck.nerim.net/jdelvare-2.6 i2c-for-linus |
757 | 739 | ||
758 | Static inline functions are greatly preferred over macros. | 740 | to get these changes:" |
759 | They provide type safety, have no length limitations, no formatting | ||
760 | limitations, and under gcc they are as cheap as macros. | ||
761 | 741 | ||
762 | Macros should only be used for cases where a static inline is clearly | 742 | A pull request should also include an overall message saying what will be |
763 | suboptimal [there are a few, isolated cases of this in fast paths], | 743 | included in the request, a "git shortlog" listing of the patches |
764 | or where it is impossible to use a static inline function [such as | 744 | themselves, and a diffstat showing the overall effect of the patch series. |
765 | string-izing]. | 745 | The easiest way to get all this information together is, of course, to let |
746 | git do it for you with the "git request-pull" command. | ||
766 | 747 | ||
767 | 'static inline' is preferred over 'static __inline__', 'extern inline', | 748 | Some maintainers (including Linus) want to see pull requests from signed |
768 | and 'extern __inline__'. | 749 | commits; that increases their confidence that the request actually came |
750 | from you. Linus, in particular, will not pull from public hosting sites | ||
751 | like GitHub in the absence of a signed tag. | ||
769 | 752 | ||
753 | The first step toward creating such tags is to make a GNUPG key and get it | ||
754 | signed by one or more core kernel developers. This step can be hard for | ||
755 | new developers, but there is no way around it. Attending conferences can | ||
756 | be a good way to find developers who can sign your key. | ||
770 | 757 | ||
758 | Once you have prepared a patch series in git that you wish to have somebody | ||
759 | pull, create a signed tag with "git tag -s". This will create a new tag | ||
760 | identifying the last commit in the series and containing a signature | ||
761 | created with your private key. You will also have the opportunity to add a | ||
762 | changelog-style message to the tag; this is an ideal place to describe the | ||
763 | effects of the pull request as a whole. | ||
771 | 764 | ||
772 | 4) Don't over-design. | 765 | If the tree the maintainer will be pulling from is not the repository you |
766 | are working from, don't forget to push the signed tag explicitly to the | ||
767 | public tree. | ||
773 | 768 | ||
774 | Don't try to anticipate nebulous future cases which may or may not | 769 | When generating your pull request, use the signed tag as the target. A |
775 | be useful: "Make it as simple as you can, and no simpler." | 770 | command like this will do the trick: |
776 | 771 | ||
772 | git request-pull master git://my.public.tree/linux.git my-signed-tag | ||
777 | 773 | ||
778 | 774 | ||
779 | ---------------------- | 775 | ---------------------- |
780 | SECTION 3 - REFERENCES | 776 | SECTION 2 - REFERENCES |
781 | ---------------------- | 777 | ---------------------- |
782 | 778 | ||
783 | Andrew Morton, "The perfect patch" (tpp). | 779 | Andrew Morton, "The perfect patch" (tpp). |
diff --git a/Documentation/acpi/enumeration.txt b/Documentation/acpi/enumeration.txt index b60d2ab69497..9b121a569ab4 100644 --- a/Documentation/acpi/enumeration.txt +++ b/Documentation/acpi/enumeration.txt | |||
@@ -243,7 +243,7 @@ input driver: | |||
243 | .owner = THIS_MODULE, | 243 | .owner = THIS_MODULE, |
244 | .pm = &mpu3050_pm, | 244 | .pm = &mpu3050_pm, |
245 | .of_match_table = mpu3050_of_match, | 245 | .of_match_table = mpu3050_of_match, |
246 | .acpi_match_table ACPI_PTR(mpu3050_acpi_match), | 246 | .acpi_match_table = ACPI_PTR(mpu3050_acpi_match), |
247 | }, | 247 | }, |
248 | .probe = mpu3050_probe, | 248 | .probe = mpu3050_probe, |
249 | .remove = mpu3050_remove, | 249 | .remove = mpu3050_remove, |
diff --git a/Documentation/arm/00-INDEX b/Documentation/arm/00-INDEX index 3b08bc2b04cf..8edb9007844e 100644 --- a/Documentation/arm/00-INDEX +++ b/Documentation/arm/00-INDEX | |||
@@ -2,11 +2,15 @@ | |||
2 | - this file | 2 | - this file |
3 | Booting | 3 | Booting |
4 | - requirements for booting | 4 | - requirements for booting |
5 | CCN.txt | ||
6 | - Cache Coherent Network ring-bus and perf PMU driver. | ||
5 | Interrupts | 7 | Interrupts |
6 | - ARM Interrupt subsystem documentation | 8 | - ARM Interrupt subsystem documentation |
7 | IXP4xx | 9 | IXP4xx |
8 | - Intel IXP4xx Network processor. | 10 | - Intel IXP4xx Network processor. |
9 | msm | 11 | Makefile |
12 | - Build sourcefiles as part of the Documentation-build for arm | ||
13 | msm/ | ||
10 | - MSM specific documentation | 14 | - MSM specific documentation |
11 | Netwinder | 15 | Netwinder |
12 | - Netwinder specific documentation | 16 | - Netwinder specific documentation |
@@ -18,11 +22,9 @@ README | |||
18 | - General ARM documentation | 22 | - General ARM documentation |
19 | SA1100/ | 23 | SA1100/ |
20 | - SA1100 documentation | 24 | - SA1100 documentation |
21 | Samsung-S3C24XX | 25 | Samsung-S3C24XX/ |
22 | - S3C24XX ARM Linux Overview | 26 | - S3C24XX ARM Linux Overview |
23 | Sharp-LH | 27 | SPEAr/ |
24 | - Linux on Sharp LH79524 and LH7A40X System On a Chip (SOC) | ||
25 | SPEAr | ||
26 | - ST SPEAr platform Linux Overview | 28 | - ST SPEAr platform Linux Overview |
27 | VFP/ | 29 | VFP/ |
28 | - Release notes for Linux Kernel Vector Floating Point support code | 30 | - Release notes for Linux Kernel Vector Floating Point support code |
diff --git a/Documentation/arm/Atmel/README b/Documentation/arm/Atmel/README new file mode 100644 index 000000000000..c53a19b4aab2 --- /dev/null +++ b/Documentation/arm/Atmel/README | |||
@@ -0,0 +1,124 @@ | |||
1 | ARM Atmel SoCs (aka AT91) | ||
2 | ========================= | ||
3 | |||
4 | |||
5 | Introduction | ||
6 | ------------ | ||
7 | This document gives useful information about the ARM Atmel SoCs that are | ||
8 | currently supported in Linux Mainline (you know, the one on kernel.org). | ||
9 | |||
10 | It is important to note that the Atmel | SMART ARM-based MPU product line is | ||
11 | historically named "AT91" or "at91" throughout the Linux kernel development | ||
12 | process even if this product prefix has completely disappeared from the | ||
13 | official Atmel product name. Anyway, files, directories, git trees, | ||
14 | git branches/tags and email subject always contain this "at91" sub-string. | ||
15 | |||
16 | |||
17 | AT91 SoCs | ||
18 | --------- | ||
19 | Documentation and detailled datasheet for each product are available on | ||
20 | the Atmel website: http://www.atmel.com. | ||
21 | |||
22 | Flavors: | ||
23 | * ARM 920 based SoC | ||
24 | - at91rm9200 | ||
25 | + Datasheet | ||
26 | http://www.atmel.com/Images/doc1768.pdf | ||
27 | |||
28 | * ARM 926 based SoCs | ||
29 | - at91sam9260 | ||
30 | + Datasheet | ||
31 | http://www.atmel.com/Images/doc6221.pdf | ||
32 | |||
33 | - at91sam9xe | ||
34 | + Datasheet | ||
35 | http://www.atmel.com/Images/Atmel-6254-32-bit-ARM926EJ-S-Embedded-Microprocessor-SAM9XE_Datasheet.pdf | ||
36 | |||
37 | - at91sam9261 | ||
38 | + Datasheet | ||
39 | http://www.atmel.com/Images/doc6062.pdf | ||
40 | |||
41 | - at91sam9263 | ||
42 | + Datasheet | ||
43 | http://www.atmel.com/Images/Atmel_6249_32-bit-ARM926EJ-S-Microcontroller_SAM9263_Datasheet.pdf | ||
44 | |||
45 | - at91sam9rl | ||
46 | + Datasheet | ||
47 | http://www.atmel.com/Images/doc6289.pdf | ||
48 | |||
49 | - at91sam9g20 | ||
50 | + Datasheet | ||
51 | http://www.atmel.com/Images/doc6384.pdf | ||
52 | |||
53 | - at91sam9g45 family | ||
54 | - at91sam9g45 | ||
55 | - at91sam9g46 | ||
56 | - at91sam9m10 | ||
57 | - at91sam9m11 (device superset) | ||
58 | + Datasheet | ||
59 | http://www.atmel.com/Images/Atmel-6437-32-bit-ARM926-Embedded-Microprocessor-SAM9M11_Datasheet.pdf | ||
60 | |||
61 | - at91sam9x5 family (aka "The 5 series") | ||
62 | - at91sam9g15 | ||
63 | - at91sam9g25 | ||
64 | - at91sam9g35 | ||
65 | - at91sam9x25 | ||
66 | - at91sam9x35 | ||
67 | + Datasheet (can be considered as covering the whole family) | ||
68 | http://www.atmel.com/Images/Atmel_11055_32-bit-ARM926EJ-S-Microcontroller_SAM9X35_Datasheet.pdf | ||
69 | |||
70 | - at91sam9n12 | ||
71 | + Datasheet | ||
72 | http://www.atmel.com/Images/Atmel_11063_32-bit-ARM926EJ-S-Microcontroller_SAM9N12CN11CN12_Datasheet.pdf | ||
73 | |||
74 | * ARM Cortex-A5 based SoCs | ||
75 | - sama5d3 family | ||
76 | - sama5d31 | ||
77 | - sama5d33 | ||
78 | - sama5d34 | ||
79 | - sama5d35 | ||
80 | - sama5d36 (device superset) | ||
81 | + Datasheet | ||
82 | http://www.atmel.com/Images/Atmel-11121-32-bit-Cortex-A5-Microcontroller-SAMA5D3_Datasheet.pdf | ||
83 | |||
84 | * ARM Cortex-A5 + NEON based SoCs | ||
85 | - sama5d4 family | ||
86 | - sama5d41 | ||
87 | - sama5d42 | ||
88 | - sama5d43 | ||
89 | - sama5d44 (device superset) | ||
90 | + Datasheet | ||
91 | http://www.atmel.com/Images/Atmel-11238-32-bit-Cortex-A5-Microcontroller-SAMA5D4_Datasheet.pdf | ||
92 | |||
93 | |||
94 | Linux kernel information | ||
95 | ------------------------ | ||
96 | Linux kernel mach directory: arch/arm/mach-at91 | ||
97 | MAINTAINERS entry is: "ARM/ATMEL AT91RM9200 AND AT91SAM ARM ARCHITECTURES" | ||
98 | |||
99 | |||
100 | Device Tree for AT91 SoCs and boards | ||
101 | ------------------------------------ | ||
102 | All AT91 SoCs are converted to Device Tree. Since Linux 3.19, these products | ||
103 | must use this method to boot the Linux kernel. | ||
104 | |||
105 | Work In Progress statement: | ||
106 | Device Tree files and Device Tree bindings that apply to AT91 SoCs and boards are | ||
107 | considered as "Unstable". To be completely clear, any at91 binding can change at | ||
108 | any time. So, be sure to use a Device Tree Binary and a Kernel Image generated from | ||
109 | the same source tree. | ||
110 | Please refer to the Documentation/devicetree/bindings/ABI.txt file for a | ||
111 | definition of a "Stable" binding/ABI. | ||
112 | This statement will be removed by AT91 MAINTAINERS when appropriate. | ||
113 | |||
114 | Naming conventions and best practice: | ||
115 | - SoCs Device Tree Source Include files are named after the official name of | ||
116 | the product (at91sam9g20.dtsi or sama5d33.dtsi for instance). | ||
117 | - Device Tree Source Include files (.dtsi) are used to collect common nodes that can be | ||
118 | shared across SoCs or boards (sama5d3.dtsi or at91sam9x5cm.dtsi for instance). | ||
119 | When collecting nodes for a particular peripheral or topic, the identifier have to | ||
120 | be placed at the end of the file name, separated with a "_" (at91sam9x5_can.dtsi | ||
121 | or sama5d3_gmac.dtsi for example). | ||
122 | - board Device Tree Source files (.dts) are prefixed by the string "at91-" so | ||
123 | that they can be identified easily. Note that some files are historical exceptions | ||
124 | to this rule (sama5d3[13456]ek.dts, usb_a9g20.dts or animeo_ip.dts for example). | ||
diff --git a/Documentation/arm/Samsung-S3C24XX/DMA.txt b/Documentation/arm/Samsung-S3C24XX/DMA.txt deleted file mode 100644 index 3ed82383efea..000000000000 --- a/Documentation/arm/Samsung-S3C24XX/DMA.txt +++ /dev/null | |||
@@ -1,46 +0,0 @@ | |||
1 | S3C2410 DMA | ||
2 | =========== | ||
3 | |||
4 | Introduction | ||
5 | ------------ | ||
6 | |||
7 | The kernel provides an interface to manage DMA transfers | ||
8 | using the DMA channels in the CPU, so that the central | ||
9 | duty of managing channel mappings, and programming the | ||
10 | channel generators is in one place. | ||
11 | |||
12 | |||
13 | DMA Channel Ordering | ||
14 | -------------------- | ||
15 | |||
16 | Many of the range do not have connections for the DMA | ||
17 | channels to all sources, which means that some devices | ||
18 | have a restricted number of channels that can be used. | ||
19 | |||
20 | To allow flexibility for each CPU type and board, the | ||
21 | DMA code can be given a DMA ordering structure which | ||
22 | allows the order of channel search to be specified, as | ||
23 | well as allowing the prohibition of certain claims. | ||
24 | |||
25 | struct s3c24xx_dma_order has a list of channels, and | ||
26 | each channel within has a slot for a list of DMA | ||
27 | channel numbers. The slots are searched in order for | ||
28 | the presence of a DMA channel number with DMA_CH_VALID | ||
29 | or-ed in. | ||
30 | |||
31 | If the order has the flag DMA_CH_NEVER set, then after | ||
32 | checking the channel list, the system will return no | ||
33 | found channel, thus denying the request. | ||
34 | |||
35 | A board support file can call s3c24xx_dma_order_set() | ||
36 | to register a complete ordering set. The routine will | ||
37 | copy the data, so the original can be discarded with | ||
38 | __initdata. | ||
39 | |||
40 | |||
41 | Authour | ||
42 | ------- | ||
43 | |||
44 | Ben Dooks, | ||
45 | Copyright (c) 2007 Ben Dooks, Simtec Electronics | ||
46 | Licensed under the GPL v2 | ||
diff --git a/Documentation/arm/sti/stih418-overview.txt b/Documentation/arm/sti/stih418-overview.txt new file mode 100644 index 000000000000..1cd8fc80646d --- /dev/null +++ b/Documentation/arm/sti/stih418-overview.txt | |||
@@ -0,0 +1,20 @@ | |||
1 | STiH418 Overview | ||
2 | ================ | ||
3 | |||
4 | Introduction | ||
5 | ------------ | ||
6 | |||
7 | The STiH418 is the new generation of SoC for UHDp60 set-top boxes | ||
8 | and server/connected client application for satellite, cable, terrestrial | ||
9 | and IP-STB markets. | ||
10 | |||
11 | Features | ||
12 | - ARM Cortex-A9 1.5 GHz quad core CPU (28nm) | ||
13 | - SATA2, USB 3.0, PCIe, Gbit Ethernet | ||
14 | - HEVC L5.1 Main 10 | ||
15 | - VP9 | ||
16 | |||
17 | Document Author | ||
18 | --------------- | ||
19 | |||
20 | Maxime Coquelin <maxime.coquelin@st.com>, (c) 2015 ST Microelectronics | ||
diff --git a/Documentation/arm/sunxi/README b/Documentation/arm/sunxi/README index e68d163df33d..1fe2d7fd4108 100644 --- a/Documentation/arm/sunxi/README +++ b/Documentation/arm/sunxi/README | |||
@@ -50,7 +50,6 @@ SunXi family | |||
50 | http://dl.linux-sunxi.org/A31/A3x_release_document/A31/IC/A31%20user%20manual%20V1.1%2020130630.pdf | 50 | http://dl.linux-sunxi.org/A31/A3x_release_document/A31/IC/A31%20user%20manual%20V1.1%2020130630.pdf |
51 | 51 | ||
52 | - Allwinner A31s (sun6i) | 52 | - Allwinner A31s (sun6i) |
53 | + Not Supported | ||
54 | + Datasheet | 53 | + Datasheet |
55 | http://dl.linux-sunxi.org/A31/A3x_release_document/A31s/IC/A31s%20datasheet%20V1.3%2020131106.pdf | 54 | http://dl.linux-sunxi.org/A31/A3x_release_document/A31s/IC/A31s%20datasheet%20V1.3%2020131106.pdf |
56 | + User Manual | 55 | + User Manual |
diff --git a/Documentation/arm64/legacy_instructions.txt b/Documentation/arm64/legacy_instructions.txt index a3b3da2ec6ed..01bf3d9fac85 100644 --- a/Documentation/arm64/legacy_instructions.txt +++ b/Documentation/arm64/legacy_instructions.txt | |||
@@ -32,6 +32,9 @@ The default mode depends on the status of the instruction in the | |||
32 | architecture. Deprecated instructions should default to emulation | 32 | architecture. Deprecated instructions should default to emulation |
33 | while obsolete instructions must be undefined by default. | 33 | while obsolete instructions must be undefined by default. |
34 | 34 | ||
35 | Note: Instruction emulation may not be possible in all cases. See | ||
36 | individual instruction notes for further information. | ||
37 | |||
35 | Supported legacy instructions | 38 | Supported legacy instructions |
36 | ----------------------------- | 39 | ----------------------------- |
37 | * SWP{B} | 40 | * SWP{B} |
@@ -43,3 +46,12 @@ Default: Undef (0) | |||
43 | Node: /proc/sys/abi/cp15_barrier | 46 | Node: /proc/sys/abi/cp15_barrier |
44 | Status: Deprecated | 47 | Status: Deprecated |
45 | Default: Emulate (1) | 48 | Default: Emulate (1) |
49 | |||
50 | * SETEND | ||
51 | Node: /proc/sys/abi/setend | ||
52 | Status: Deprecated | ||
53 | Default: Emulate (1)* | ||
54 | Note: All the cpus on the system must have mixed endian support at EL0 | ||
55 | for this feature to be enabled. If a new CPU - which doesn't support mixed | ||
56 | endian - is hotplugged in after this feature has been enabled, there could | ||
57 | be unexpected results in the application. | ||
diff --git a/Documentation/blackfin/Makefile b/Documentation/blackfin/Makefile index c7e6c99bad81..03f78059d6f5 100644 --- a/Documentation/blackfin/Makefile +++ b/Documentation/blackfin/Makefile | |||
@@ -1,3 +1,5 @@ | |||
1 | ifneq ($(CONFIG_BLACKFIN),) | 1 | ifneq ($(CONFIG_BLACKFIN),) |
2 | ifneq ($(CONFIG_BFIN_GPTIMERS,) | ||
2 | obj-m := gptimers-example.o | 3 | obj-m := gptimers-example.o |
3 | endif | 4 | endif |
5 | endif | ||
diff --git a/Documentation/cachetlb.txt b/Documentation/cachetlb.txt index d79b008e4a32..3f9f808b5119 100644 --- a/Documentation/cachetlb.txt +++ b/Documentation/cachetlb.txt | |||
@@ -317,10 +317,10 @@ maps this page at its virtual address. | |||
317 | about doing this. | 317 | about doing this. |
318 | 318 | ||
319 | The idea is, first at flush_dcache_page() time, if | 319 | The idea is, first at flush_dcache_page() time, if |
320 | page->mapping->i_mmap is an empty tree and ->i_mmap_nonlinear | 320 | page->mapping->i_mmap is an empty tree, just mark the architecture |
321 | an empty list, just mark the architecture private page flag bit. | 321 | private page flag bit. Later, in update_mmu_cache(), a check is |
322 | Later, in update_mmu_cache(), a check is made of this flag bit, | 322 | made of this flag bit, and if set the flush is done and the flag |
323 | and if set the flush is done and the flag bit is cleared. | 323 | bit is cleared. |
324 | 324 | ||
325 | IMPORTANT NOTE: It is often important, if you defer the flush, | 325 | IMPORTANT NOTE: It is often important, if you defer the flush, |
326 | that the actual flush occurs on the same CPU | 326 | that the actual flush occurs on the same CPU |
diff --git a/Documentation/cgroups/00-INDEX b/Documentation/cgroups/00-INDEX index bc461b6425a7..96ce071a3633 100644 --- a/Documentation/cgroups/00-INDEX +++ b/Documentation/cgroups/00-INDEX | |||
@@ -24,3 +24,5 @@ net_prio.txt | |||
24 | - Network priority cgroups details and usages. | 24 | - Network priority cgroups details and usages. |
25 | resource_counter.txt | 25 | resource_counter.txt |
26 | - Resource Counter API. | 26 | - Resource Counter API. |
27 | unified-hierarchy.txt | ||
28 | - Description the new/next cgroup interface. | ||
diff --git a/Documentation/cgroups/unified-hierarchy.txt b/Documentation/cgroups/unified-hierarchy.txt index 4f4563277864..71daa35ec2d9 100644 --- a/Documentation/cgroups/unified-hierarchy.txt +++ b/Documentation/cgroups/unified-hierarchy.txt | |||
@@ -327,6 +327,85 @@ supported and the interface files "release_agent" and | |||
327 | - use_hierarchy is on by default and the cgroup file for the flag is | 327 | - use_hierarchy is on by default and the cgroup file for the flag is |
328 | not created. | 328 | not created. |
329 | 329 | ||
330 | - The original lower boundary, the soft limit, is defined as a limit | ||
331 | that is per default unset. As a result, the set of cgroups that | ||
332 | global reclaim prefers is opt-in, rather than opt-out. The costs | ||
333 | for optimizing these mostly negative lookups are so high that the | ||
334 | implementation, despite its enormous size, does not even provide the | ||
335 | basic desirable behavior. First off, the soft limit has no | ||
336 | hierarchical meaning. All configured groups are organized in a | ||
337 | global rbtree and treated like equal peers, regardless where they | ||
338 | are located in the hierarchy. This makes subtree delegation | ||
339 | impossible. Second, the soft limit reclaim pass is so aggressive | ||
340 | that it not just introduces high allocation latencies into the | ||
341 | system, but also impacts system performance due to overreclaim, to | ||
342 | the point where the feature becomes self-defeating. | ||
343 | |||
344 | The memory.low boundary on the other hand is a top-down allocated | ||
345 | reserve. A cgroup enjoys reclaim protection when it and all its | ||
346 | ancestors are below their low boundaries, which makes delegation of | ||
347 | subtrees possible. Secondly, new cgroups have no reserve per | ||
348 | default and in the common case most cgroups are eligible for the | ||
349 | preferred reclaim pass. This allows the new low boundary to be | ||
350 | efficiently implemented with just a minor addition to the generic | ||
351 | reclaim code, without the need for out-of-band data structures and | ||
352 | reclaim passes. Because the generic reclaim code considers all | ||
353 | cgroups except for the ones running low in the preferred first | ||
354 | reclaim pass, overreclaim of individual groups is eliminated as | ||
355 | well, resulting in much better overall workload performance. | ||
356 | |||
357 | - The original high boundary, the hard limit, is defined as a strict | ||
358 | limit that can not budge, even if the OOM killer has to be called. | ||
359 | But this generally goes against the goal of making the most out of | ||
360 | the available memory. The memory consumption of workloads varies | ||
361 | during runtime, and that requires users to overcommit. But doing | ||
362 | that with a strict upper limit requires either a fairly accurate | ||
363 | prediction of the working set size or adding slack to the limit. | ||
364 | Since working set size estimation is hard and error prone, and | ||
365 | getting it wrong results in OOM kills, most users tend to err on the | ||
366 | side of a looser limit and end up wasting precious resources. | ||
367 | |||
368 | The memory.high boundary on the other hand can be set much more | ||
369 | conservatively. When hit, it throttles allocations by forcing them | ||
370 | into direct reclaim to work off the excess, but it never invokes the | ||
371 | OOM killer. As a result, a high boundary that is chosen too | ||
372 | aggressively will not terminate the processes, but instead it will | ||
373 | lead to gradual performance degradation. The user can monitor this | ||
374 | and make corrections until the minimal memory footprint that still | ||
375 | gives acceptable performance is found. | ||
376 | |||
377 | In extreme cases, with many concurrent allocations and a complete | ||
378 | breakdown of reclaim progress within the group, the high boundary | ||
379 | can be exceeded. But even then it's mostly better to satisfy the | ||
380 | allocation from the slack available in other groups or the rest of | ||
381 | the system than killing the group. Otherwise, memory.max is there | ||
382 | to limit this type of spillover and ultimately contain buggy or even | ||
383 | malicious applications. | ||
384 | |||
385 | - The original control file names are unwieldy and inconsistent in | ||
386 | many different ways. For example, the upper boundary hit count is | ||
387 | exported in the memory.failcnt file, but an OOM event count has to | ||
388 | be manually counted by listening to memory.oom_control events, and | ||
389 | lower boundary / soft limit events have to be counted by first | ||
390 | setting a threshold for that value and then counting those events. | ||
391 | Also, usage and limit files encode their units in the filename. | ||
392 | That makes the filenames very long, even though this is not | ||
393 | information that a user needs to be reminded of every time they type | ||
394 | out those names. | ||
395 | |||
396 | To address these naming issues, as well as to signal clearly that | ||
397 | the new interface carries a new configuration model, the naming | ||
398 | conventions in it necessarily differ from the old interface. | ||
399 | |||
400 | - The original limit files indicate the state of an unset limit with a | ||
401 | Very High Number, and a configured limit can be unset by echoing -1 | ||
402 | into those files. But that very high number is implementation and | ||
403 | architecture dependent and not very descriptive. And while -1 can | ||
404 | be understood as an underflow into the highest possible value, -2 or | ||
405 | -10M etc. do not work, so it's not consistent. | ||
406 | |||
407 | memory.low, memory.high, and memory.max will use the string | ||
408 | "infinity" to indicate and set the highest possible value. | ||
330 | 409 | ||
331 | 5. Planned Changes | 410 | 5. Planned Changes |
332 | 411 | ||
diff --git a/Documentation/clk.txt b/Documentation/clk.txt index 4ff84623d5e1..0e4f90aa1c13 100644 --- a/Documentation/clk.txt +++ b/Documentation/clk.txt | |||
@@ -73,6 +73,8 @@ the operations defined in clk.h: | |||
73 | unsigned long *parent_rate); | 73 | unsigned long *parent_rate); |
74 | long (*determine_rate)(struct clk_hw *hw, | 74 | long (*determine_rate)(struct clk_hw *hw, |
75 | unsigned long rate, | 75 | unsigned long rate, |
76 | unsigned long min_rate, | ||
77 | unsigned long max_rate, | ||
76 | unsigned long *best_parent_rate, | 78 | unsigned long *best_parent_rate, |
77 | struct clk_hw **best_parent_clk); | 79 | struct clk_hw **best_parent_clk); |
78 | int (*set_parent)(struct clk_hw *hw, u8 index); | 80 | int (*set_parent)(struct clk_hw *hw, u8 index); |
diff --git a/Documentation/cpu-freq/intel-pstate.txt b/Documentation/cpu-freq/intel-pstate.txt index 765d7fc0e692..655750743fb0 100644 --- a/Documentation/cpu-freq/intel-pstate.txt +++ b/Documentation/cpu-freq/intel-pstate.txt | |||
@@ -37,6 +37,14 @@ controlling P state selection. These files have been added to | |||
37 | no_turbo: limits the driver to selecting P states below the turbo | 37 | no_turbo: limits the driver to selecting P states below the turbo |
38 | frequency range. | 38 | frequency range. |
39 | 39 | ||
40 | turbo_pct: displays the percentage of the total performance that | ||
41 | is supported by hardware that is in the turbo range. This number | ||
42 | is independent of whether turbo has been disabled or not. | ||
43 | |||
44 | num_pstates: displays the number of pstates that are supported | ||
45 | by hardware. This number is independent of whether turbo has | ||
46 | been disabled or not. | ||
47 | |||
40 | For contemporary Intel processors, the frequency is controlled by the | 48 | For contemporary Intel processors, the frequency is controlled by the |
41 | processor itself and the P-states exposed to software are related to | 49 | processor itself and the P-states exposed to software are related to |
42 | performance levels. The idea that frequency can be set to a single | 50 | performance levels. The idea that frequency can be set to a single |
diff --git a/Documentation/device-mapper/dm-crypt.txt b/Documentation/device-mapper/dm-crypt.txt index c81839b52c4d..ad697781f9ac 100644 --- a/Documentation/device-mapper/dm-crypt.txt +++ b/Documentation/device-mapper/dm-crypt.txt | |||
@@ -51,7 +51,7 @@ Parameters: <cipher> <key> <iv_offset> <device path> \ | |||
51 | Otherwise #opt_params is the number of following arguments. | 51 | Otherwise #opt_params is the number of following arguments. |
52 | 52 | ||
53 | Example of optional parameters section: | 53 | Example of optional parameters section: |
54 | 1 allow_discards | 54 | 3 allow_discards same_cpu_crypt submit_from_crypt_cpus |
55 | 55 | ||
56 | allow_discards | 56 | allow_discards |
57 | Block discard requests (a.k.a. TRIM) are passed through the crypt device. | 57 | Block discard requests (a.k.a. TRIM) are passed through the crypt device. |
@@ -63,6 +63,19 @@ allow_discards | |||
63 | used space etc.) if the discarded blocks can be located easily on the | 63 | used space etc.) if the discarded blocks can be located easily on the |
64 | device later. | 64 | device later. |
65 | 65 | ||
66 | same_cpu_crypt | ||
67 | Perform encryption using the same cpu that IO was submitted on. | ||
68 | The default is to use an unbound workqueue so that encryption work | ||
69 | is automatically balanced between available CPUs. | ||
70 | |||
71 | submit_from_crypt_cpus | ||
72 | Disable offloading writes to a separate thread after encryption. | ||
73 | There are some situations where offloading write bios from the | ||
74 | encryption threads to a single thread degrades performance | ||
75 | significantly. The default is to offload write bios to the same | ||
76 | thread because it benefits CFQ to have writes submitted using the | ||
77 | same context. | ||
78 | |||
66 | Example scripts | 79 | Example scripts |
67 | =============== | 80 | =============== |
68 | LUKS (Linux Unified Key Setup) is now the preferred way to set up disk | 81 | LUKS (Linux Unified Key Setup) is now the preferred way to set up disk |
diff --git a/Documentation/devicetree/bindings/arm/arm-boards b/Documentation/devicetree/bindings/arm/arm-boards index 556c8665fdbf..b78564b2b201 100644 --- a/Documentation/devicetree/bindings/arm/arm-boards +++ b/Documentation/devicetree/bindings/arm/arm-boards | |||
@@ -23,7 +23,7 @@ Required nodes: | |||
23 | range of 0x200 bytes. | 23 | range of 0x200 bytes. |
24 | 24 | ||
25 | - syscon: the root node of the Integrator platforms must have a | 25 | - syscon: the root node of the Integrator platforms must have a |
26 | system controller node pointong to the control registers, | 26 | system controller node pointing to the control registers, |
27 | with the compatible string | 27 | with the compatible string |
28 | "arm,integrator-ap-syscon" | 28 | "arm,integrator-ap-syscon" |
29 | "arm,integrator-cp-syscon" | 29 | "arm,integrator-cp-syscon" |
diff --git a/Documentation/devicetree/bindings/arm/armada-38x.txt b/Documentation/devicetree/bindings/arm/armada-38x.txt index ad9f8ed4d9bd..202953f1887e 100644 --- a/Documentation/devicetree/bindings/arm/armada-38x.txt +++ b/Documentation/devicetree/bindings/arm/armada-38x.txt | |||
@@ -15,6 +15,13 @@ Required root node property: | |||
15 | 15 | ||
16 | compatible: must contain "marvell,armada385" | 16 | compatible: must contain "marvell,armada385" |
17 | 17 | ||
18 | In addition, boards using the Marvell Armada 388 SoC shall have the | ||
19 | following property before the previous one: | ||
20 | |||
21 | Required root node property: | ||
22 | |||
23 | compatible: must contain "marvell,armada388" | ||
24 | |||
18 | Example: | 25 | Example: |
19 | 26 | ||
20 | compatible = "marvell,a385-rd", "marvell,armada385", "marvell,armada380"; | 27 | compatible = "marvell,a385-rd", "marvell,armada385", "marvell,armada380"; |
diff --git a/Documentation/devicetree/bindings/arm/atmel-at91.txt b/Documentation/devicetree/bindings/arm/atmel-at91.txt index 562cda9d86d9..ad319f84f560 100644 --- a/Documentation/devicetree/bindings/arm/atmel-at91.txt +++ b/Documentation/devicetree/bindings/arm/atmel-at91.txt | |||
@@ -24,6 +24,7 @@ compatible: must be one of: | |||
24 | o "atmel,at91sam9g45" | 24 | o "atmel,at91sam9g45" |
25 | o "atmel,at91sam9n12" | 25 | o "atmel,at91sam9n12" |
26 | o "atmel,at91sam9rl" | 26 | o "atmel,at91sam9rl" |
27 | o "atmel,at91sam9xe" | ||
27 | * "atmel,sama5" for SoCs using a Cortex-A5, shall be extended with the specific | 28 | * "atmel,sama5" for SoCs using a Cortex-A5, shall be extended with the specific |
28 | SoC family: | 29 | SoC family: |
29 | o "atmel,sama5d3" shall be extended with the specific SoC compatible: | 30 | o "atmel,sama5d3" shall be extended with the specific SoC compatible: |
@@ -136,3 +137,19 @@ Example: | |||
136 | compatible = "atmel,at91sam9260-rstc"; | 137 | compatible = "atmel,at91sam9260-rstc"; |
137 | reg = <0xfffffd00 0x10>; | 138 | reg = <0xfffffd00 0x10>; |
138 | }; | 139 | }; |
140 | |||
141 | Special Function Registers (SFR) | ||
142 | |||
143 | Special Function Registers (SFR) manage specific aspects of the integrated | ||
144 | memory, bridge implementations, processor and other functionality not controlled | ||
145 | elsewhere. | ||
146 | |||
147 | required properties: | ||
148 | - compatible: Should be "atmel,<chip>-sfr", "syscon". | ||
149 | <chip> can be "sama5d3" or "sama5d4". | ||
150 | - reg: Should contain registers location and length | ||
151 | |||
152 | sfr@f0038000 { | ||
153 | compatible = "atmel,sama5d3-sfr", "syscon"; | ||
154 | reg = <0xf0038000 0x60>; | ||
155 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/brcm-brcmstb.txt b/Documentation/devicetree/bindings/arm/brcm-brcmstb.txt index 3c436cc4f35d..430608ec09f0 100644 --- a/Documentation/devicetree/bindings/arm/brcm-brcmstb.txt +++ b/Documentation/devicetree/bindings/arm/brcm-brcmstb.txt | |||
@@ -79,7 +79,9 @@ reboot | |||
79 | Required properties | 79 | Required properties |
80 | 80 | ||
81 | - compatible | 81 | - compatible |
82 | The string property "brcm,brcmstb-reboot". | 82 | The string property "brcm,brcmstb-reboot" for 40nm/28nm chips with |
83 | the new SYS_CTRL interface, or "brcm,bcm7038-reboot" for 65nm | ||
84 | chips with the old SUN_TOP_CTRL interface. | ||
83 | 85 | ||
84 | - syscon | 86 | - syscon |
85 | A phandle / integer array that points to the syscon node which describes | 87 | A phandle / integer array that points to the syscon node which describes |
diff --git a/Documentation/devicetree/bindings/arm/coresight.txt b/Documentation/devicetree/bindings/arm/coresight.txt index d790f49066f3..a3089359aaa6 100644 --- a/Documentation/devicetree/bindings/arm/coresight.txt +++ b/Documentation/devicetree/bindings/arm/coresight.txt | |||
@@ -38,8 +38,6 @@ its hardware characteristcs. | |||
38 | AMBA markee): | 38 | AMBA markee): |
39 | - "arm,coresight-replicator" | 39 | - "arm,coresight-replicator" |
40 | 40 | ||
41 | * id: a unique number that will identify this replicator. | ||
42 | |||
43 | * port or ports: same as above. | 41 | * port or ports: same as above. |
44 | 42 | ||
45 | * Optional properties for ETM/PTMs: | 43 | * Optional properties for ETM/PTMs: |
@@ -94,8 +92,6 @@ Example: | |||
94 | * AMBA bus. As such no need to add "arm,primecell". | 92 | * AMBA bus. As such no need to add "arm,primecell". |
95 | */ | 93 | */ |
96 | compatible = "arm,coresight-replicator"; | 94 | compatible = "arm,coresight-replicator"; |
97 | /* this will show up in debugfs as "0.replicator" */ | ||
98 | id = <0>; | ||
99 | 95 | ||
100 | ports { | 96 | ports { |
101 | #address-cells = <1>; | 97 | #address-cells = <1>; |
diff --git a/Documentation/devicetree/bindings/arm/cpus.txt b/Documentation/devicetree/bindings/arm/cpus.txt index b2aacbe16ed9..8b9e0a95de31 100644 --- a/Documentation/devicetree/bindings/arm/cpus.txt +++ b/Documentation/devicetree/bindings/arm/cpus.txt | |||
@@ -175,6 +175,7 @@ nodes to be present and contain the properties described below. | |||
175 | "marvell,pj4a" | 175 | "marvell,pj4a" |
176 | "marvell,pj4b" | 176 | "marvell,pj4b" |
177 | "marvell,sheeva-v5" | 177 | "marvell,sheeva-v5" |
178 | "nvidia,tegra132-denver" | ||
178 | "qcom,krait" | 179 | "qcom,krait" |
179 | "qcom,scorpion" | 180 | "qcom,scorpion" |
180 | - enable-method | 181 | - enable-method |
diff --git a/Documentation/devicetree/bindings/arm/digicolor.txt b/Documentation/devicetree/bindings/arm/digicolor.txt new file mode 100644 index 000000000000..658553f40b23 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/digicolor.txt | |||
@@ -0,0 +1,6 @@ | |||
1 | Conexant Digicolor Platforms Device Tree Bindings | ||
2 | |||
3 | Each device tree must specify which Conexant Digicolor SoC it uses. | ||
4 | Must be the following compatible string: | ||
5 | |||
6 | cnxt,cx92755 | ||
diff --git a/Documentation/devicetree/bindings/arm/exynos/power_domain.txt b/Documentation/devicetree/bindings/arm/exynos/power_domain.txt index abde1ea8a119..f4445e5a2bbb 100644 --- a/Documentation/devicetree/bindings/arm/exynos/power_domain.txt +++ b/Documentation/devicetree/bindings/arm/exynos/power_domain.txt | |||
@@ -23,7 +23,7 @@ Optional Properties: | |||
23 | devices in this power domain. Maximum of 4 pairs (N = 0 to 3) | 23 | devices in this power domain. Maximum of 4 pairs (N = 0 to 3) |
24 | are supported currently. | 24 | are supported currently. |
25 | 25 | ||
26 | Node of a device using power domains must have a samsung,power-domain property | 26 | Node of a device using power domains must have a power-domains property |
27 | defined with a phandle to respective power domain. | 27 | defined with a phandle to respective power domain. |
28 | 28 | ||
29 | Example: | 29 | Example: |
diff --git a/Documentation/devicetree/bindings/arm/fsl.txt b/Documentation/devicetree/bindings/arm/fsl.txt index 4e8b7df7fc62..a5462b6b3c30 100644 --- a/Documentation/devicetree/bindings/arm/fsl.txt +++ b/Documentation/devicetree/bindings/arm/fsl.txt | |||
@@ -75,6 +75,18 @@ i.MX6q generic board | |||
75 | Required root node properties: | 75 | Required root node properties: |
76 | - compatible = "fsl,imx6q"; | 76 | - compatible = "fsl,imx6q"; |
77 | 77 | ||
78 | Freescale Vybrid Platform Device Tree Bindings | ||
79 | ---------------------------------------------- | ||
80 | |||
81 | For the Vybrid SoC familiy all variants with DDR controller are supported, | ||
82 | which is the VF5xx and VF6xx series. Out of historical reasons, in most | ||
83 | places the kernel uses vf610 to refer to the whole familiy. | ||
84 | |||
85 | Required root node compatible property (one of them): | ||
86 | - compatible = "fsl,vf500"; | ||
87 | - compatible = "fsl,vf510"; | ||
88 | - compatible = "fsl,vf600"; | ||
89 | - compatible = "fsl,vf610"; | ||
78 | 90 | ||
79 | Freescale LS1021A Platform Device Tree Bindings | 91 | Freescale LS1021A Platform Device Tree Bindings |
80 | ------------------------------------------------ | 92 | ------------------------------------------------ |
@@ -112,3 +124,11 @@ Example: | |||
112 | compatible = "fsl,ls1021a-dcfg"; | 124 | compatible = "fsl,ls1021a-dcfg"; |
113 | reg = <0x0 0x1ee0000 0x0 0x10000>; | 125 | reg = <0x0 0x1ee0000 0x0 0x10000>; |
114 | }; | 126 | }; |
127 | |||
128 | Freescale LS2085A SoC Device Tree Bindings | ||
129 | ------------------------------------------ | ||
130 | |||
131 | LS2085A ARMv8 based Simulator model | ||
132 | Required root node properties: | ||
133 | - compatible = "fsl,ls2085a-simu", "fsl,ls2085a"; | ||
134 | |||
diff --git a/Documentation/devicetree/bindings/arm/fw-cfg.txt b/Documentation/devicetree/bindings/arm/fw-cfg.txt new file mode 100644 index 000000000000..953fb640d9c4 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/fw-cfg.txt | |||
@@ -0,0 +1,72 @@ | |||
1 | * QEMU Firmware Configuration bindings for ARM | ||
2 | |||
3 | QEMU's arm-softmmu and aarch64-softmmu emulation / virtualization targets | ||
4 | provide the following Firmware Configuration interface on the "virt" machine | ||
5 | type: | ||
6 | |||
7 | - A write-only, 16-bit wide selector (or control) register, | ||
8 | - a read-write, 64-bit wide data register. | ||
9 | |||
10 | QEMU exposes the control and data register to ARM guests as memory mapped | ||
11 | registers; their location is communicated to the guest's UEFI firmware in the | ||
12 | DTB that QEMU places at the bottom of the guest's DRAM. | ||
13 | |||
14 | The guest writes a selector value (a key) to the selector register, and then | ||
15 | can read the corresponding data (produced by QEMU) via the data register. If | ||
16 | the selected entry is writable, the guest can rewrite it through the data | ||
17 | register. | ||
18 | |||
19 | The selector register takes keys in big endian byte order. | ||
20 | |||
21 | The data register allows accesses with 8, 16, 32 and 64-bit width (only at | ||
22 | offset 0 of the register). Accesses larger than a byte are interpreted as | ||
23 | arrays, bundled together only for better performance. The bytes constituting | ||
24 | such a word, in increasing address order, correspond to the bytes that would | ||
25 | have been transferred by byte-wide accesses in chronological order. | ||
26 | |||
27 | The interface allows guest firmware to download various parameters and blobs | ||
28 | that affect how the firmware works and what tables it installs for the guest | ||
29 | OS. For example, boot order of devices, ACPI tables, SMBIOS tables, kernel and | ||
30 | initrd images for direct kernel booting, virtual machine UUID, SMP information, | ||
31 | virtual NUMA topology, and so on. | ||
32 | |||
33 | The authoritative registry of the valid selector values and their meanings is | ||
34 | the QEMU source code; the structure of the data blobs corresponding to the | ||
35 | individual key values is also defined in the QEMU source code. | ||
36 | |||
37 | The presence of the registers can be verified by selecting the "signature" blob | ||
38 | with key 0x0000, and reading four bytes from the data register. The returned | ||
39 | signature is "QEMU". | ||
40 | |||
41 | The outermost protocol (involving the write / read sequences of the control and | ||
42 | data registers) is expected to be versioned, and/or described by feature bits. | ||
43 | The interface revision / feature bitmap can be retrieved with key 0x0001. The | ||
44 | blob to be read from the data register has size 4, and it is to be interpreted | ||
45 | as a uint32_t value in little endian byte order. The current value | ||
46 | (corresponding to the above outer protocol) is zero. | ||
47 | |||
48 | The guest kernel is not expected to use these registers (although it is | ||
49 | certainly allowed to); the device tree bindings are documented here because | ||
50 | this is where device tree bindings reside in general. | ||
51 | |||
52 | Required properties: | ||
53 | |||
54 | - compatible: "qemu,fw-cfg-mmio". | ||
55 | |||
56 | - reg: the MMIO region used by the device. | ||
57 | * Bytes 0x0 to 0x7 cover the data register. | ||
58 | * Bytes 0x8 to 0x9 cover the selector register. | ||
59 | * Further registers may be appended to the region in case of future interface | ||
60 | revisions / feature bits. | ||
61 | |||
62 | Example: | ||
63 | |||
64 | / { | ||
65 | #size-cells = <0x2>; | ||
66 | #address-cells = <0x2>; | ||
67 | |||
68 | fw-cfg@9020000 { | ||
69 | compatible = "qemu,fw-cfg-mmio"; | ||
70 | reg = <0x0 0x9020000 0x0 0xa>; | ||
71 | }; | ||
72 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/gic.txt b/Documentation/devicetree/bindings/arm/gic.txt index 8112d0c3675a..c97484b73e72 100644 --- a/Documentation/devicetree/bindings/arm/gic.txt +++ b/Documentation/devicetree/bindings/arm/gic.txt | |||
@@ -32,12 +32,16 @@ Main node required properties: | |||
32 | The 3rd cell is the flags, encoded as follows: | 32 | The 3rd cell is the flags, encoded as follows: |
33 | bits[3:0] trigger type and level flags. | 33 | bits[3:0] trigger type and level flags. |
34 | 1 = low-to-high edge triggered | 34 | 1 = low-to-high edge triggered |
35 | 2 = high-to-low edge triggered | 35 | 2 = high-to-low edge triggered (invalid for SPIs) |
36 | 4 = active high level-sensitive | 36 | 4 = active high level-sensitive |
37 | 8 = active low level-sensitive | 37 | 8 = active low level-sensitive (invalid for SPIs). |
38 | bits[15:8] PPI interrupt cpu mask. Each bit corresponds to each of | 38 | bits[15:8] PPI interrupt cpu mask. Each bit corresponds to each of |
39 | the 8 possible cpus attached to the GIC. A bit set to '1' indicated | 39 | the 8 possible cpus attached to the GIC. A bit set to '1' indicated |
40 | the interrupt is wired to that CPU. Only valid for PPI interrupts. | 40 | the interrupt is wired to that CPU. Only valid for PPI interrupts. |
41 | Also note that the configurability of PPI interrupts is IMPLEMENTATION | ||
42 | DEFINED and as such not guaranteed to be present (most SoC available | ||
43 | in 2014 seem to ignore the setting of this flag and use the hardware | ||
44 | default value). | ||
41 | 45 | ||
42 | - reg : Specifies base physical address(s) and size of the GIC registers. The | 46 | - reg : Specifies base physical address(s) and size of the GIC registers. The |
43 | first region is the GIC distributor register base and size. The 2nd region is | 47 | first region is the GIC distributor register base and size. The 2nd region is |
diff --git a/Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt b/Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt index f717c7b48603..35b1bd49cfa1 100644 --- a/Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt +++ b/Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt | |||
@@ -9,6 +9,10 @@ HiP04 D01 Board | |||
9 | Required root node properties: | 9 | Required root node properties: |
10 | - compatible = "hisilicon,hip04-d01"; | 10 | - compatible = "hisilicon,hip04-d01"; |
11 | 11 | ||
12 | HiP01 ca9x2 Board | ||
13 | Required root node properties: | ||
14 | - compatible = "hisilicon,hip01-ca9x2"; | ||
15 | |||
12 | 16 | ||
13 | Hisilicon system controller | 17 | Hisilicon system controller |
14 | 18 | ||
@@ -37,6 +41,27 @@ Example: | |||
37 | }; | 41 | }; |
38 | 42 | ||
39 | ----------------------------------------------------------------------- | 43 | ----------------------------------------------------------------------- |
44 | Hisilicon HiP01 system controller | ||
45 | |||
46 | Required properties: | ||
47 | - compatible : "hisilicon,hip01-sysctrl" | ||
48 | - reg : Register address and size | ||
49 | |||
50 | The HiP01 system controller is mostly compatible with hisilicon | ||
51 | system controller,but it has some specific control registers for | ||
52 | HIP01 SoC family, such as slave core boot, and also some same | ||
53 | registers located at different offset. | ||
54 | |||
55 | Example: | ||
56 | |||
57 | /* for hip01-ca9x2 */ | ||
58 | sysctrl: system-controller@10000000 { | ||
59 | compatible = "hisilicon,hip01-sysctrl", "hisilicon,sysctrl"; | ||
60 | reg = <0x10000000 0x1000>; | ||
61 | reboot-offset = <0x4>; | ||
62 | }; | ||
63 | |||
64 | ----------------------------------------------------------------------- | ||
40 | Hisilicon CPU controller | 65 | Hisilicon CPU controller |
41 | 66 | ||
42 | Required properties: | 67 | Required properties: |
diff --git a/Documentation/devicetree/bindings/arm/l2cc.txt b/Documentation/devicetree/bindings/arm/l2cc.txt index 292ef7ca3058..0dbabe9a6b0a 100644 --- a/Documentation/devicetree/bindings/arm/l2cc.txt +++ b/Documentation/devicetree/bindings/arm/l2cc.txt | |||
@@ -57,6 +57,16 @@ Optional properties: | |||
57 | - cache-id-part: cache id part number to be used if it is not present | 57 | - cache-id-part: cache id part number to be used if it is not present |
58 | on hardware | 58 | on hardware |
59 | - wt-override: If present then L2 is forced to Write through mode | 59 | - wt-override: If present then L2 is forced to Write through mode |
60 | - arm,double-linefill : Override double linefill enable setting. Enable if | ||
61 | non-zero, disable if zero. | ||
62 | - arm,double-linefill-incr : Override double linefill on INCR read. Enable | ||
63 | if non-zero, disable if zero. | ||
64 | - arm,double-linefill-wrap : Override double linefill on WRAP read. Enable | ||
65 | if non-zero, disable if zero. | ||
66 | - arm,prefetch-drop : Override prefetch drop enable setting. Enable if non-zero, | ||
67 | disable if zero. | ||
68 | - arm,prefetch-offset : Override prefetch offset value. Valid values are | ||
69 | 0-7, 15, 23, and 31. | ||
60 | 70 | ||
61 | Example: | 71 | Example: |
62 | 72 | ||
diff --git a/Documentation/devicetree/bindings/arm/mediatek.txt b/Documentation/devicetree/bindings/arm/mediatek.txt index 3be40139cfbb..dd7550a29db6 100644 --- a/Documentation/devicetree/bindings/arm/mediatek.txt +++ b/Documentation/devicetree/bindings/arm/mediatek.txt | |||
@@ -9,6 +9,7 @@ compatible: Must contain one of | |||
9 | "mediatek,mt6592" | 9 | "mediatek,mt6592" |
10 | "mediatek,mt8127" | 10 | "mediatek,mt8127" |
11 | "mediatek,mt8135" | 11 | "mediatek,mt8135" |
12 | "mediatek,mt8173" | ||
12 | 13 | ||
13 | 14 | ||
14 | Supported boards: | 15 | Supported boards: |
@@ -25,3 +26,6 @@ Supported boards: | |||
25 | - MTK mt8135 tablet EVB: | 26 | - MTK mt8135 tablet EVB: |
26 | Required root node properties: | 27 | Required root node properties: |
27 | - compatible = "mediatek,mt8135-evbp1", "mediatek,mt8135"; | 28 | - compatible = "mediatek,mt8135-evbp1", "mediatek,mt8135"; |
29 | - MTK mt8173 tablet EVB: | ||
30 | Required root node properties: | ||
31 | - compatible = "mediatek,mt8173-evb", "mediatek,mt8173"; | ||
diff --git a/Documentation/devicetree/bindings/arm/mediatek/mediatek,sysirq.txt b/Documentation/devicetree/bindings/arm/mediatek/mediatek,sysirq.txt index d680b07ec6e8..4f5a5352ccd8 100644 --- a/Documentation/devicetree/bindings/arm/mediatek/mediatek,sysirq.txt +++ b/Documentation/devicetree/bindings/arm/mediatek/mediatek,sysirq.txt | |||
@@ -5,8 +5,10 @@ interrupt. | |||
5 | 5 | ||
6 | Required properties: | 6 | Required properties: |
7 | - compatible: should be one of: | 7 | - compatible: should be one of: |
8 | "mediatek,mt8173-sysirq" | ||
8 | "mediatek,mt8135-sysirq" | 9 | "mediatek,mt8135-sysirq" |
9 | "mediatek,mt8127-sysirq" | 10 | "mediatek,mt8127-sysirq" |
11 | "mediatek,mt6592-sysirq" | ||
10 | "mediatek,mt6589-sysirq" | 12 | "mediatek,mt6589-sysirq" |
11 | "mediatek,mt6582-sysirq" | 13 | "mediatek,mt6582-sysirq" |
12 | "mediatek,mt6577-sysirq" | 14 | "mediatek,mt6577-sysirq" |
diff --git a/Documentation/devicetree/bindings/arm/msm/timer.txt b/Documentation/devicetree/bindings/arm/msm/timer.txt index c6ef8f13dc7e..74607b6c1117 100644 --- a/Documentation/devicetree/bindings/arm/msm/timer.txt +++ b/Documentation/devicetree/bindings/arm/msm/timer.txt | |||
@@ -8,7 +8,7 @@ Properties: | |||
8 | "qcom,kpss-timer" - krait subsystem | 8 | "qcom,kpss-timer" - krait subsystem |
9 | "qcom,scss-timer" - scorpion subsystem | 9 | "qcom,scss-timer" - scorpion subsystem |
10 | 10 | ||
11 | - interrupts : Interrupts for the the debug timer, the first general purpose | 11 | - interrupts : Interrupts for the debug timer, the first general purpose |
12 | timer, and optionally a second general purpose timer in that | 12 | timer, and optionally a second general purpose timer in that |
13 | order. | 13 | order. |
14 | 14 | ||
diff --git a/Documentation/devicetree/bindings/arm/rockchip.txt b/Documentation/devicetree/bindings/arm/rockchip.txt index eaa3d1a0eb05..6809e4e51ed2 100644 --- a/Documentation/devicetree/bindings/arm/rockchip.txt +++ b/Documentation/devicetree/bindings/arm/rockchip.txt | |||
@@ -9,6 +9,16 @@ Rockchip platforms device tree bindings | |||
9 | Required root node properties: | 9 | Required root node properties: |
10 | - compatible = "mundoreader,bq-curie2", "rockchip,rk3066a"; | 10 | - compatible = "mundoreader,bq-curie2", "rockchip,rk3066a"; |
11 | 11 | ||
12 | - ChipSPARK Rayeager PX2 board: | ||
13 | Required root node properties: | ||
14 | - compatible = "chipspark,rayeager-px2", "rockchip,rk3066a"; | ||
15 | |||
12 | - Radxa Rock board: | 16 | - Radxa Rock board: |
13 | Required root node properties: | 17 | Required root node properties: |
14 | - compatible = "radxa,rock", "rockchip,rk3188"; | 18 | - compatible = "radxa,rock", "rockchip,rk3188"; |
19 | |||
20 | - Firefly Firefly-RK3288 board: | ||
21 | Required root node properties: | ||
22 | - compatible = "firefly,firefly-rk3288", "rockchip,rk3288"; | ||
23 | or | ||
24 | - compatible = "firefly,firefly-rk3288-beta", "rockchip,rk3288"; | ||
diff --git a/Documentation/devicetree/bindings/arm/rockchip/pmu-sram.txt b/Documentation/devicetree/bindings/arm/rockchip/pmu-sram.txt new file mode 100644 index 000000000000..6b42fda306ff --- /dev/null +++ b/Documentation/devicetree/bindings/arm/rockchip/pmu-sram.txt | |||
@@ -0,0 +1,16 @@ | |||
1 | Rockchip SRAM for pmu: | ||
2 | ------------------------------ | ||
3 | |||
4 | The sram of pmu is used to store the function of resume from maskrom(the 1st | ||
5 | level loader). This is a common use of the "pmu-sram" because it keeps power | ||
6 | even in low power states in the system. | ||
7 | |||
8 | Required node properties: | ||
9 | - compatible : should be "rockchip,rk3288-pmu-sram" | ||
10 | - reg : physical base address and the size of the registers window | ||
11 | |||
12 | Example: | ||
13 | sram@ff720000 { | ||
14 | compatible = "rockchip,rk3288-pmu-sram", "mmio-sram"; | ||
15 | reg = <0xff720000 0x1000>; | ||
16 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/samsung/exynos-chipid.txt b/Documentation/devicetree/bindings/arm/samsung/exynos-chipid.txt new file mode 100644 index 000000000000..85c5dfd4a720 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/samsung/exynos-chipid.txt | |||
@@ -0,0 +1,12 @@ | |||
1 | SAMSUNG Exynos SoCs Chipid driver. | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : Should at least contain "samsung,exynos4210-chipid". | ||
5 | |||
6 | - reg: offset and length of the register set | ||
7 | |||
8 | Example: | ||
9 | chipid@10000000 { | ||
10 | compatible = "samsung,exynos4210-chipid"; | ||
11 | reg = <0x10000000 0x100>; | ||
12 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/samsung/pmu.txt b/Documentation/devicetree/bindings/arm/samsung/pmu.txt index 1e1979b229ff..67b211381f2b 100644 --- a/Documentation/devicetree/bindings/arm/samsung/pmu.txt +++ b/Documentation/devicetree/bindings/arm/samsung/pmu.txt | |||
@@ -10,6 +10,7 @@ Properties: | |||
10 | - "samsung,exynos5260-pmu" - for Exynos5260 SoC. | 10 | - "samsung,exynos5260-pmu" - for Exynos5260 SoC. |
11 | - "samsung,exynos5410-pmu" - for Exynos5410 SoC, | 11 | - "samsung,exynos5410-pmu" - for Exynos5410 SoC, |
12 | - "samsung,exynos5420-pmu" - for Exynos5420 SoC. | 12 | - "samsung,exynos5420-pmu" - for Exynos5420 SoC. |
13 | - "samsung,exynos7-pmu" - for Exynos7 SoC. | ||
13 | second value must be always "syscon". | 14 | second value must be always "syscon". |
14 | 15 | ||
15 | - reg : offset and length of the register set. | 16 | - reg : offset and length of the register set. |
diff --git a/Documentation/devicetree/bindings/arm/sirf.txt b/Documentation/devicetree/bindings/arm/sirf.txt index c6ba6d3c747f..7b28ee6fee91 100644 --- a/Documentation/devicetree/bindings/arm/sirf.txt +++ b/Documentation/devicetree/bindings/arm/sirf.txt | |||
@@ -3,7 +3,9 @@ CSR SiRFprimaII and SiRFmarco device tree bindings. | |||
3 | 3 | ||
4 | Required root node properties: | 4 | Required root node properties: |
5 | - compatible: | 5 | - compatible: |
6 | - "sirf,atlas6-cb" : atlas6 "cb" evaluation board | ||
7 | - "sirf,atlas6" : atlas6 device based board | ||
8 | - "sirf,atlas7-cb" : atlas7 "cb" evaluation board | ||
9 | - "sirf,atlas7" : atlas7 device based board | ||
6 | - "sirf,prima2-cb" : prima2 "cb" evaluation board | 10 | - "sirf,prima2-cb" : prima2 "cb" evaluation board |
7 | - "sirf,marco-cb" : marco "cb" evaluation board | ||
8 | - "sirf,prima2" : prima2 device based board | 11 | - "sirf,prima2" : prima2 device based board |
9 | - "sirf,marco" : marco device based board | ||
diff --git a/Documentation/devicetree/bindings/arm/sprd.txt b/Documentation/devicetree/bindings/arm/sprd.txt new file mode 100644 index 000000000000..31a629dc75b8 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/sprd.txt | |||
@@ -0,0 +1,11 @@ | |||
1 | Spreadtrum SoC Platforms Device Tree Bindings | ||
2 | ---------------------------------------------------- | ||
3 | |||
4 | Sharkl64 is a Spreadtrum's SoC Platform which is based | ||
5 | on ARM 64-bit processor. | ||
6 | |||
7 | SC9836 openphone board with SC9836 SoC based on the | ||
8 | Sharkl64 Platform shall have the following properties. | ||
9 | |||
10 | Required root node properties: | ||
11 | - compatible = "sprd,sc9836-openphone", "sprd,sc9836"; | ||
diff --git a/Documentation/devicetree/bindings/arm/sti.txt b/Documentation/devicetree/bindings/arm/sti.txt index 92f16c78bb69..d70ec358736c 100644 --- a/Documentation/devicetree/bindings/arm/sti.txt +++ b/Documentation/devicetree/bindings/arm/sti.txt | |||
@@ -13,3 +13,7 @@ Boards with the ST STiH407 SoC shall have the following properties: | |||
13 | Required root node property: | 13 | Required root node property: |
14 | compatible = "st,stih407"; | 14 | compatible = "st,stih407"; |
15 | 15 | ||
16 | Boards with the ST STiH418 SoC shall have the following properties: | ||
17 | Required root node property: | ||
18 | compatible = "st,stih418"; | ||
19 | |||
diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-ahb.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-ahb.txt index 234406d41c12..067c9790062f 100644 --- a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-ahb.txt +++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-ahb.txt | |||
@@ -1,7 +1,10 @@ | |||
1 | NVIDIA Tegra AHB | 1 | NVIDIA Tegra AHB |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : "nvidia,tegra20-ahb" or "nvidia,tegra30-ahb" | 4 | - compatible : For Tegra20, must contain "nvidia,tegra20-ahb". For |
5 | Tegra30, must contain "nvidia,tegra30-ahb". Otherwise, must contain | ||
6 | '"nvidia,<chip>-ahb", "nvidia,tegra30-ahb"' where <chip> is tegra124, | ||
7 | tegra132, or tegra210. | ||
5 | - reg : Should contain 1 register ranges(address and length) | 8 | - reg : Should contain 1 register ranges(address and length) |
6 | 9 | ||
7 | Example: | 10 | Example: |
diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt index 68ac65f82a1c..02c27004d4a8 100644 --- a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt +++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt | |||
@@ -6,7 +6,11 @@ modes. It provides power-gating controllers for SoC and CPU power-islands. | |||
6 | 6 | ||
7 | Required properties: | 7 | Required properties: |
8 | - name : Should be pmc | 8 | - name : Should be pmc |
9 | - compatible : Should contain "nvidia,tegra<chip>-pmc". | 9 | - compatible : For Tegra20, must contain "nvidia,tegra20-pmc". For Tegra30, |
10 | must contain "nvidia,tegra30-pmc". For Tegra114, must contain | ||
11 | "nvidia,tegra114-pmc". For Tegra124, must contain "nvidia,tegra124-pmc". | ||
12 | Otherwise, must contain "nvidia,<chip>-pmc", plus at least one of the | ||
13 | above, where <chip> is tegra132. | ||
10 | - reg : Offset and length of the register set for the device | 14 | - reg : Offset and length of the register set for the device |
11 | - clocks : Must contain an entry for each entry in clock-names. | 15 | - clocks : Must contain an entry for each entry in clock-names. |
12 | See ../clocks/clock-bindings.txt for details. | 16 | See ../clocks/clock-bindings.txt for details. |
@@ -47,6 +51,23 @@ Required properties when nvidia,suspend-mode=<0>: | |||
47 | sleep mode, the warm boot code will restore some PLLs, clocks and then | 51 | sleep mode, the warm boot code will restore some PLLs, clocks and then |
48 | bring up CPU0 for resuming the system. | 52 | bring up CPU0 for resuming the system. |
49 | 53 | ||
54 | Hardware-triggered thermal reset: | ||
55 | On Tegra30, Tegra114 and Tegra124, if the 'i2c-thermtrip' subnode exists, | ||
56 | hardware-triggered thermal reset will be enabled. | ||
57 | |||
58 | Required properties for hardware-triggered thermal reset (inside 'i2c-thermtrip'): | ||
59 | - nvidia,i2c-controller-id : ID of I2C controller to send poweroff command to. Valid values are | ||
60 | described in section 9.2.148 "APBDEV_PMC_SCRATCH53_0" of the | ||
61 | Tegra K1 Technical Reference Manual. | ||
62 | - nvidia,bus-addr : Bus address of the PMU on the I2C bus | ||
63 | - nvidia,reg-addr : I2C register address to write poweroff command to | ||
64 | - nvidia,reg-data : Poweroff command to write to PMU | ||
65 | |||
66 | Optional properties for hardware-triggered thermal reset (inside 'i2c-thermtrip'): | ||
67 | - nvidia,pinmux-id : Pinmux used by the hardware when issuing poweroff command. | ||
68 | Defaults to 0. Valid values are described in section 12.5.2 | ||
69 | "Pinmux Support" of the Tegra4 Technical Reference Manual. | ||
70 | |||
50 | Example: | 71 | Example: |
51 | 72 | ||
52 | / SoC dts including file | 73 | / SoC dts including file |
@@ -69,6 +90,15 @@ pmc@7000f400 { | |||
69 | / Tegra board dts file | 90 | / Tegra board dts file |
70 | { | 91 | { |
71 | ... | 92 | ... |
93 | pmc@7000f400 { | ||
94 | i2c-thermtrip { | ||
95 | nvidia,i2c-controller-id = <4>; | ||
96 | nvidia,bus-addr = <0x40>; | ||
97 | nvidia,reg-addr = <0x36>; | ||
98 | nvidia,reg-data = <0x2>; | ||
99 | }; | ||
100 | }; | ||
101 | ... | ||
72 | clocks { | 102 | clocks { |
73 | compatible = "simple-bus"; | 103 | compatible = "simple-bus"; |
74 | #address-cells = <1>; | 104 | #address-cells = <1>; |
diff --git a/Documentation/devicetree/bindings/arm/versatile-sysreg.txt b/Documentation/devicetree/bindings/arm/versatile-sysreg.txt new file mode 100644 index 000000000000..a4f15262d717 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/versatile-sysreg.txt | |||
@@ -0,0 +1,10 @@ | |||
1 | ARM Versatile system registers | ||
2 | -------------------------------------- | ||
3 | |||
4 | This is a system control registers block, providing multiple low level | ||
5 | platform functions like board detection and identification, software | ||
6 | interrupt generation, MMC and NOR Flash control etc. | ||
7 | |||
8 | Required node properties: | ||
9 | - compatible value : = "arm,versatile-sysreg", "syscon" | ||
10 | - reg : physical base address and the size of the registers window | ||
diff --git a/Documentation/devicetree/bindings/ata/ahci-platform.txt b/Documentation/devicetree/bindings/ata/ahci-platform.txt index 4ab09f2202d4..c2340eeeb97f 100644 --- a/Documentation/devicetree/bindings/ata/ahci-platform.txt +++ b/Documentation/devicetree/bindings/ata/ahci-platform.txt | |||
@@ -37,9 +37,10 @@ Required properties when using sub-nodes: | |||
37 | 37 | ||
38 | 38 | ||
39 | Sub-nodes required properties: | 39 | Sub-nodes required properties: |
40 | - reg : the port number | 40 | - reg : the port number |
41 | - phys : reference to the SATA PHY node | 41 | And at least one of the following properties: |
42 | 42 | - phys : reference to the SATA PHY node | |
43 | - target-supply : regulator for SATA target power | ||
43 | 44 | ||
44 | Examples: | 45 | Examples: |
45 | sata@ffe08000 { | 46 | sata@ffe08000 { |
@@ -68,10 +69,12 @@ With sub-nodes: | |||
68 | sata0: sata-port@0 { | 69 | sata0: sata-port@0 { |
69 | reg = <0>; | 70 | reg = <0>; |
70 | phys = <&sata_phy 0>; | 71 | phys = <&sata_phy 0>; |
72 | target-supply = <®_sata0>; | ||
71 | }; | 73 | }; |
72 | 74 | ||
73 | sata1: sata-port@1 { | 75 | sata1: sata-port@1 { |
74 | reg = <1>; | 76 | reg = <1>; |
75 | phys = <&sata_phy 1>; | 77 | phys = <&sata_phy 1>; |
78 | target-supply = <®_sata1>;; | ||
76 | }; | 79 | }; |
77 | }; | 80 | }; |
diff --git a/Documentation/devicetree/bindings/ata/cavium-compact-flash.txt b/Documentation/devicetree/bindings/ata/cavium-compact-flash.txt index 93986a5a8018..3bacc8e0931e 100644 --- a/Documentation/devicetree/bindings/ata/cavium-compact-flash.txt +++ b/Documentation/devicetree/bindings/ata/cavium-compact-flash.txt | |||
@@ -9,7 +9,7 @@ Properties: | |||
9 | 9 | ||
10 | Compatibility with many Cavium evaluation boards. | 10 | Compatibility with many Cavium evaluation boards. |
11 | 11 | ||
12 | - reg: The base address of the the CF chip select banks. Depending on | 12 | - reg: The base address of the CF chip select banks. Depending on |
13 | the device configuration, there may be one or two banks. | 13 | the device configuration, there may be one or two banks. |
14 | 14 | ||
15 | - cavium,bus-width: The width of the connection to the CF devices. Valid | 15 | - cavium,bus-width: The width of the connection to the CF devices. Valid |
diff --git a/Documentation/devicetree/bindings/ata/tegra-sata.txt b/Documentation/devicetree/bindings/ata/tegra-sata.txt index 946f2072570b..66c83c3e8915 100644 --- a/Documentation/devicetree/bindings/ata/tegra-sata.txt +++ b/Documentation/devicetree/bindings/ata/tegra-sata.txt | |||
@@ -1,7 +1,9 @@ | |||
1 | Tegra124 SoC SATA AHCI controller | 1 | Tegra124 SoC SATA AHCI controller |
2 | 2 | ||
3 | Required properties : | 3 | Required properties : |
4 | - compatible : "nvidia,tegra124-ahci". | 4 | - compatible : For Tegra124, must contain "nvidia,tegra124-ahci". Otherwise, |
5 | must contain '"nvidia,<chip>-ahci", "nvidia,tegra124-ahci"', where <chip> | ||
6 | is tegra132. | ||
5 | - reg : Should contain 2 entries: | 7 | - reg : Should contain 2 entries: |
6 | - AHCI register set (SATA BAR5) | 8 | - AHCI register set (SATA BAR5) |
7 | - SATA register set | 9 | - SATA register set |
diff --git a/Documentation/devicetree/bindings/bus/mvebu-mbus.txt b/Documentation/devicetree/bindings/bus/mvebu-mbus.txt index 5e16c3ccb061..fa6cde41b460 100644 --- a/Documentation/devicetree/bindings/bus/mvebu-mbus.txt +++ b/Documentation/devicetree/bindings/bus/mvebu-mbus.txt | |||
@@ -6,8 +6,8 @@ Required properties: | |||
6 | - compatible: Should be set to one of the following: | 6 | - compatible: Should be set to one of the following: |
7 | marvell,armada370-mbus | 7 | marvell,armada370-mbus |
8 | marvell,armadaxp-mbus | 8 | marvell,armadaxp-mbus |
9 | marvell,armada370-mbus | 9 | marvell,armada375-mbus |
10 | marvell,armadaxp-mbus | 10 | marvell,armada380-mbus |
11 | marvell,kirkwood-mbus | 11 | marvell,kirkwood-mbus |
12 | marvell,dove-mbus | 12 | marvell,dove-mbus |
13 | marvell,orion5x-88f5281-mbus | 13 | marvell,orion5x-88f5281-mbus |
diff --git a/Documentation/devicetree/bindings/c6x/dscr.txt b/Documentation/devicetree/bindings/c6x/dscr.txt index b0e97144cfb1..92672235de57 100644 --- a/Documentation/devicetree/bindings/c6x/dscr.txt +++ b/Documentation/devicetree/bindings/c6x/dscr.txt | |||
@@ -12,7 +12,7 @@ configuration register for writes. These configuration register may be used to | |||
12 | enable (and disable in some cases) SoC pin drivers, select peripheral clock | 12 | enable (and disable in some cases) SoC pin drivers, select peripheral clock |
13 | sources (internal or pin), etc. In some cases, a configuration register is | 13 | sources (internal or pin), etc. In some cases, a configuration register is |
14 | write once or the individual bits are write once. In addition to device config, | 14 | write once or the individual bits are write once. In addition to device config, |
15 | the DSCR block may provide registers which which are used to reset peripherals, | 15 | the DSCR block may provide registers which are used to reset peripherals, |
16 | provide device ID information, provide ethernet MAC addresses, as well as other | 16 | provide device ID information, provide ethernet MAC addresses, as well as other |
17 | miscellaneous functions. | 17 | miscellaneous functions. |
18 | 18 | ||
diff --git a/Documentation/devicetree/bindings/clock/alphascale,acc.txt b/Documentation/devicetree/bindings/clock/alphascale,acc.txt new file mode 100644 index 000000000000..62e67e883e76 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/alphascale,acc.txt | |||
@@ -0,0 +1,115 @@ | |||
1 | Alphascale Clock Controller | ||
2 | |||
3 | The ACC (Alphascale Clock Controller) is responsible of choising proper | ||
4 | clock source, setting deviders and clock gates. | ||
5 | |||
6 | Required properties for the ACC node: | ||
7 | - compatible: must be "alphascale,asm9260-clock-controller" | ||
8 | - reg: must contain the ACC register base and size | ||
9 | - #clock-cells : shall be set to 1. | ||
10 | |||
11 | Simple one-cell clock specifier format is used, where the only cell is used | ||
12 | as an index of the clock inside the provider. | ||
13 | It is encouraged to use dt-binding for clock index definitions. SoC specific | ||
14 | dt-binding should be included to the device tree descriptor. For example | ||
15 | Alphascale ASM9260: | ||
16 | #include <dt-bindings/clock/alphascale,asm9260.h> | ||
17 | |||
18 | This binding contains two types of clock providers: | ||
19 | _AHB_ - AHB gate; | ||
20 | _SYS_ - adjustable clock source. Not all peripheral have _SYS_ clock provider. | ||
21 | All clock specific details can be found in the SoC documentation. | ||
22 | CLKID_AHB_ROM 0 | ||
23 | CLKID_AHB_RAM 1 | ||
24 | CLKID_AHB_GPIO 2 | ||
25 | CLKID_AHB_MAC 3 | ||
26 | CLKID_AHB_EMI 4 | ||
27 | CLKID_AHB_USB0 5 | ||
28 | CLKID_AHB_USB1 6 | ||
29 | CLKID_AHB_DMA0 7 | ||
30 | CLKID_AHB_DMA1 8 | ||
31 | CLKID_AHB_UART0 9 | ||
32 | CLKID_AHB_UART1 10 | ||
33 | CLKID_AHB_UART2 11 | ||
34 | CLKID_AHB_UART3 12 | ||
35 | CLKID_AHB_UART4 13 | ||
36 | CLKID_AHB_UART5 14 | ||
37 | CLKID_AHB_UART6 15 | ||
38 | CLKID_AHB_UART7 16 | ||
39 | CLKID_AHB_UART8 17 | ||
40 | CLKID_AHB_UART9 18 | ||
41 | CLKID_AHB_I2S0 19 | ||
42 | CLKID_AHB_I2C0 20 | ||
43 | CLKID_AHB_I2C1 21 | ||
44 | CLKID_AHB_SSP0 22 | ||
45 | CLKID_AHB_IOCONFIG 23 | ||
46 | CLKID_AHB_WDT 24 | ||
47 | CLKID_AHB_CAN0 25 | ||
48 | CLKID_AHB_CAN1 26 | ||
49 | CLKID_AHB_MPWM 27 | ||
50 | CLKID_AHB_SPI0 28 | ||
51 | CLKID_AHB_SPI1 29 | ||
52 | CLKID_AHB_QEI 30 | ||
53 | CLKID_AHB_QUADSPI0 31 | ||
54 | CLKID_AHB_CAMIF 32 | ||
55 | CLKID_AHB_LCDIF 33 | ||
56 | CLKID_AHB_TIMER0 34 | ||
57 | CLKID_AHB_TIMER1 35 | ||
58 | CLKID_AHB_TIMER2 36 | ||
59 | CLKID_AHB_TIMER3 37 | ||
60 | CLKID_AHB_IRQ 38 | ||
61 | CLKID_AHB_RTC 39 | ||
62 | CLKID_AHB_NAND 40 | ||
63 | CLKID_AHB_ADC0 41 | ||
64 | CLKID_AHB_LED 42 | ||
65 | CLKID_AHB_DAC0 43 | ||
66 | CLKID_AHB_LCD 44 | ||
67 | CLKID_AHB_I2S1 45 | ||
68 | CLKID_AHB_MAC1 46 | ||
69 | |||
70 | CLKID_SYS_CPU 47 | ||
71 | CLKID_SYS_AHB 48 | ||
72 | CLKID_SYS_I2S0M 49 | ||
73 | CLKID_SYS_I2S0S 50 | ||
74 | CLKID_SYS_I2S1M 51 | ||
75 | CLKID_SYS_I2S1S 52 | ||
76 | CLKID_SYS_UART0 53 | ||
77 | CLKID_SYS_UART1 54 | ||
78 | CLKID_SYS_UART2 55 | ||
79 | CLKID_SYS_UART3 56 | ||
80 | CLKID_SYS_UART4 56 | ||
81 | CLKID_SYS_UART5 57 | ||
82 | CLKID_SYS_UART6 58 | ||
83 | CLKID_SYS_UART7 59 | ||
84 | CLKID_SYS_UART8 60 | ||
85 | CLKID_SYS_UART9 61 | ||
86 | CLKID_SYS_SPI0 62 | ||
87 | CLKID_SYS_SPI1 63 | ||
88 | CLKID_SYS_QUADSPI 64 | ||
89 | CLKID_SYS_SSP0 65 | ||
90 | CLKID_SYS_NAND 66 | ||
91 | CLKID_SYS_TRACE 67 | ||
92 | CLKID_SYS_CAMM 68 | ||
93 | CLKID_SYS_WDT 69 | ||
94 | CLKID_SYS_CLKOUT 70 | ||
95 | CLKID_SYS_MAC 71 | ||
96 | CLKID_SYS_LCD 72 | ||
97 | CLKID_SYS_ADCANA 73 | ||
98 | |||
99 | Example of clock consumer with _SYS_ and _AHB_ sinks. | ||
100 | uart4: serial@80010000 { | ||
101 | compatible = "alphascale,asm9260-uart"; | ||
102 | reg = <0x80010000 0x4000>; | ||
103 | clocks = <&acc CLKID_SYS_UART4>, <&acc CLKID_AHB_UART4>; | ||
104 | interrupts = <19>; | ||
105 | status = "disabled"; | ||
106 | }; | ||
107 | |||
108 | Clock consumer with only one, _AHB_ sink. | ||
109 | timer0: timer@80088000 { | ||
110 | compatible = "alphascale,asm9260-timer"; | ||
111 | reg = <0x80088000 0x4000>; | ||
112 | clocks = <&acc CLKID_AHB_TIMER0>; | ||
113 | interrupts = <29>; | ||
114 | }; | ||
115 | |||
diff --git a/Documentation/devicetree/bindings/clock/exynos7-clock.txt b/Documentation/devicetree/bindings/clock/exynos7-clock.txt index 6d3d5f80c1c3..6bf1e7493f61 100644 --- a/Documentation/devicetree/bindings/clock/exynos7-clock.txt +++ b/Documentation/devicetree/bindings/clock/exynos7-clock.txt | |||
@@ -34,6 +34,8 @@ Required Properties for Clock Controller: | |||
34 | - "samsung,exynos7-clock-peris" | 34 | - "samsung,exynos7-clock-peris" |
35 | - "samsung,exynos7-clock-fsys0" | 35 | - "samsung,exynos7-clock-fsys0" |
36 | - "samsung,exynos7-clock-fsys1" | 36 | - "samsung,exynos7-clock-fsys1" |
37 | - "samsung,exynos7-clock-mscl" | ||
38 | - "samsung,exynos7-clock-aud" | ||
37 | 39 | ||
38 | - reg: physical base address of the controller and the length of | 40 | - reg: physical base address of the controller and the length of |
39 | memory mapped region. | 41 | memory mapped region. |
@@ -53,6 +55,7 @@ Input clocks for top0 clock controller: | |||
53 | - dout_sclk_bus1_pll | 55 | - dout_sclk_bus1_pll |
54 | - dout_sclk_cc_pll | 56 | - dout_sclk_cc_pll |
55 | - dout_sclk_mfc_pll | 57 | - dout_sclk_mfc_pll |
58 | - dout_sclk_aud_pll | ||
56 | 59 | ||
57 | Input clocks for top1 clock controller: | 60 | Input clocks for top1 clock controller: |
58 | - fin_pll | 61 | - fin_pll |
@@ -76,6 +79,14 @@ Input clocks for peric1 clock controller: | |||
76 | - sclk_uart1 | 79 | - sclk_uart1 |
77 | - sclk_uart2 | 80 | - sclk_uart2 |
78 | - sclk_uart3 | 81 | - sclk_uart3 |
82 | - sclk_spi0 | ||
83 | - sclk_spi1 | ||
84 | - sclk_spi2 | ||
85 | - sclk_spi3 | ||
86 | - sclk_spi4 | ||
87 | - sclk_i2s1 | ||
88 | - sclk_pcm1 | ||
89 | - sclk_spdif | ||
79 | 90 | ||
80 | Input clocks for peris clock controller: | 91 | Input clocks for peris clock controller: |
81 | - fin_pll | 92 | - fin_pll |
@@ -91,3 +102,7 @@ Input clocks for fsys1 clock controller: | |||
91 | - dout_aclk_fsys1_200 | 102 | - dout_aclk_fsys1_200 |
92 | - dout_sclk_mmc0 | 103 | - dout_sclk_mmc0 |
93 | - dout_sclk_mmc1 | 104 | - dout_sclk_mmc1 |
105 | |||
106 | Input clocks for aud clock controller: | ||
107 | - fin_pll | ||
108 | - fout_aud_pll | ||
diff --git a/Documentation/devicetree/bindings/clock/nvidia,tegra124-car.txt b/Documentation/devicetree/bindings/clock/nvidia,tegra124-car.txt index ded5d6212c84..c6620bc96703 100644 --- a/Documentation/devicetree/bindings/clock/nvidia,tegra124-car.txt +++ b/Documentation/devicetree/bindings/clock/nvidia,tegra124-car.txt | |||
@@ -1,4 +1,4 @@ | |||
1 | NVIDIA Tegra124 Clock And Reset Controller | 1 | NVIDIA Tegra124 and Tegra132 Clock And Reset Controller |
2 | 2 | ||
3 | This binding uses the common clock binding: | 3 | This binding uses the common clock binding: |
4 | Documentation/devicetree/bindings/clock/clock-bindings.txt | 4 | Documentation/devicetree/bindings/clock/clock-bindings.txt |
@@ -7,14 +7,16 @@ 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. | 7 | for muxing and gating Tegra's clocks, and setting their rates. |
8 | 8 | ||
9 | Required properties : | 9 | Required properties : |
10 | - compatible : Should be "nvidia,tegra124-car" | 10 | - compatible : Should be "nvidia,tegra124-car" or "nvidia,tegra132-car" |
11 | - reg : Should contain CAR registers location and length | 11 | - reg : Should contain CAR registers location and length |
12 | - clocks : Should contain phandle and clock specifiers for two clocks: | 12 | - clocks : Should contain phandle and clock specifiers for two clocks: |
13 | the 32 KHz "32k_in", and the board-specific oscillator "osc". | 13 | the 32 KHz "32k_in", and the board-specific oscillator "osc". |
14 | - #clock-cells : Should be 1. | 14 | - #clock-cells : Should be 1. |
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 the header files |
17 | <dt-bindings/clock/tegra124-car.h>. | 17 | <dt-bindings/clock/tegra124-car-common.h> (which covers IDs common |
18 | to Tegra124 and Tegra132) and <dt-bindings/clock/tegra124-car.h> | ||
19 | (for Tegra124-specific clocks). | ||
18 | - #reset-cells : Should be 1. | 20 | - #reset-cells : Should be 1. |
19 | In clock consumers, this cell represents the bit number in the CAR's | 21 | In clock consumers, this cell represents the bit number in the CAR's |
20 | array of CLK_RST_CONTROLLER_RST_DEVICES_* registers. | 22 | array of CLK_RST_CONTROLLER_RST_DEVICES_* registers. |
diff --git a/Documentation/devicetree/bindings/clock/qcom,lcc.txt b/Documentation/devicetree/bindings/clock/qcom,lcc.txt new file mode 100644 index 000000000000..dd755be63a01 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/qcom,lcc.txt | |||
@@ -0,0 +1,21 @@ | |||
1 | Qualcomm LPASS Clock & Reset Controller Binding | ||
2 | ------------------------------------------------ | ||
3 | |||
4 | Required properties : | ||
5 | - compatible : shall contain only one of the following: | ||
6 | |||
7 | "qcom,lcc-msm8960" | ||
8 | "qcom,lcc-apq8064" | ||
9 | "qcom,lcc-ipq8064" | ||
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@28000000 { | ||
17 | compatible = "qcom,lcc-ipq8064"; | ||
18 | reg = <0x28000000 0x1000>; | ||
19 | #clock-cells = <1>; | ||
20 | #reset-cells = <1>; | ||
21 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/qoriq-clock.txt b/Documentation/devicetree/bindings/clock/qoriq-clock.txt index 266ff9d23229..df4a259a6898 100644 --- a/Documentation/devicetree/bindings/clock/qoriq-clock.txt +++ b/Documentation/devicetree/bindings/clock/qoriq-clock.txt | |||
@@ -1,6 +1,6 @@ | |||
1 | * Clock Block on Freescale CoreNet Platforms | 1 | * Clock Block on Freescale QorIQ Platforms |
2 | 2 | ||
3 | Freescale CoreNet chips take primary clocking input from the external | 3 | Freescale qoriq chips take primary clocking input from the external |
4 | SYSCLK signal. The SYSCLK input (frequency) is multiplied using | 4 | SYSCLK signal. The SYSCLK input (frequency) is multiplied using |
5 | multiple phase locked loops (PLL) to create a variety of frequencies | 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 | 6 | which can then be passed to a variety of internal logic, including |
@@ -29,6 +29,7 @@ Required properties: | |||
29 | * "fsl,t4240-clockgen" | 29 | * "fsl,t4240-clockgen" |
30 | * "fsl,b4420-clockgen" | 30 | * "fsl,b4420-clockgen" |
31 | * "fsl,b4860-clockgen" | 31 | * "fsl,b4860-clockgen" |
32 | * "fsl,ls1021a-clockgen" | ||
32 | Chassis clock strings include: | 33 | Chassis clock strings include: |
33 | * "fsl,qoriq-clockgen-1.0": for chassis 1.0 clocks | 34 | * "fsl,qoriq-clockgen-1.0": for chassis 1.0 clocks |
34 | * "fsl,qoriq-clockgen-2.0": for chassis 2.0 clocks | 35 | * "fsl,qoriq-clockgen-2.0": for chassis 2.0 clocks |
diff --git a/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt b/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt index 2e18676bd4b5..0a80fa70ca26 100644 --- a/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt +++ b/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt | |||
@@ -11,6 +11,7 @@ Required Properties: | |||
11 | 11 | ||
12 | - compatible: Must be one of the following | 12 | - compatible: Must be one of the following |
13 | - "renesas,r7s72100-mstp-clocks" for R7S72100 (RZ) MSTP gate clocks | 13 | - "renesas,r7s72100-mstp-clocks" for R7S72100 (RZ) MSTP gate clocks |
14 | - "renesas,r8a73a4-mstp-clocks" for R8A73A4 (R-Mobile APE6) MSTP gate clocks | ||
14 | - "renesas,r8a7740-mstp-clocks" for R8A7740 (R-Mobile A1) MSTP gate clocks | 15 | - "renesas,r8a7740-mstp-clocks" for R8A7740 (R-Mobile A1) MSTP gate clocks |
15 | - "renesas,r8a7779-mstp-clocks" for R8A7779 (R-Car H1) MSTP gate clocks | 16 | - "renesas,r8a7779-mstp-clocks" for R8A7779 (R-Car H1) MSTP gate clocks |
16 | - "renesas,r8a7790-mstp-clocks" for R8A7790 (R-Car H2) MSTP gate clocks | 17 | - "renesas,r8a7790-mstp-clocks" for R8A7790 (R-Car H2) MSTP gate clocks |
diff --git a/Documentation/devicetree/bindings/clock/renesas,r8a73a4-cpg-clocks.txt b/Documentation/devicetree/bindings/clock/renesas,r8a73a4-cpg-clocks.txt new file mode 100644 index 000000000000..ece92393e80d --- /dev/null +++ b/Documentation/devicetree/bindings/clock/renesas,r8a73a4-cpg-clocks.txt | |||
@@ -0,0 +1,33 @@ | |||
1 | * Renesas R8A73A4 Clock Pulse Generator (CPG) | ||
2 | |||
3 | The CPG generates core clocks for the R8A73A4 SoC. It includes five PLLs | ||
4 | and several fixed ratio dividers. | ||
5 | |||
6 | Required Properties: | ||
7 | |||
8 | - compatible: Must be "renesas,r8a73a4-cpg-clocks" | ||
9 | |||
10 | - reg: Base address and length of the memory resource used by the CPG | ||
11 | |||
12 | - clocks: Reference to the parent clocks ("extal1" and "extal2") | ||
13 | |||
14 | - #clock-cells: Must be 1 | ||
15 | |||
16 | - clock-output-names: The names of the clocks. Supported clocks are "main", | ||
17 | "pll0", "pll1", "pll2", "pll2s", "pll2h", "z", "z2", "i", "m3", "b", | ||
18 | "m1", "m2", "zx", "zs", and "hp". | ||
19 | |||
20 | |||
21 | Example | ||
22 | ------- | ||
23 | |||
24 | cpg_clocks: cpg_clocks@e6150000 { | ||
25 | compatible = "renesas,r8a73a4-cpg-clocks"; | ||
26 | reg = <0 0xe6150000 0 0x10000>; | ||
27 | clocks = <&extal1_clk>, <&extal2_clk>; | ||
28 | #clock-cells = <1>; | ||
29 | clock-output-names = "main", "pll0", "pll1", "pll2", | ||
30 | "pll2s", "pll2h", "z", "z2", | ||
31 | "i", "m3", "b", "m1", "m2", | ||
32 | "zx", "zs", "hp"; | ||
33 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/renesas,rcar-gen2-cpg-clocks.txt b/Documentation/devicetree/bindings/clock/renesas,rcar-gen2-cpg-clocks.txt index e6ad35b894f9..b02944fba9de 100644 --- a/Documentation/devicetree/bindings/clock/renesas,rcar-gen2-cpg-clocks.txt +++ b/Documentation/devicetree/bindings/clock/renesas,rcar-gen2-cpg-clocks.txt | |||
@@ -8,15 +8,18 @@ Required Properties: | |||
8 | - compatible: Must be one of | 8 | - compatible: Must be one of |
9 | - "renesas,r8a7790-cpg-clocks" for the r8a7790 CPG | 9 | - "renesas,r8a7790-cpg-clocks" for the r8a7790 CPG |
10 | - "renesas,r8a7791-cpg-clocks" for the r8a7791 CPG | 10 | - "renesas,r8a7791-cpg-clocks" for the r8a7791 CPG |
11 | - "renesas,r8a7793-cpg-clocks" for the r8a7793 CPG | ||
11 | - "renesas,r8a7794-cpg-clocks" for the r8a7794 CPG | 12 | - "renesas,r8a7794-cpg-clocks" for the r8a7794 CPG |
12 | - "renesas,rcar-gen2-cpg-clocks" for the generic R-Car Gen2 CPG | 13 | - "renesas,rcar-gen2-cpg-clocks" for the generic R-Car Gen2 CPG |
13 | 14 | ||
14 | - reg: Base address and length of the memory resource used by the CPG | 15 | - reg: Base address and length of the memory resource used by the CPG |
15 | 16 | ||
16 | - clocks: Reference to the parent clock | 17 | - clocks: References to the parent clocks: first to the EXTAL clock, second |
18 | to the USB_EXTAL clock | ||
17 | - #clock-cells: Must be 1 | 19 | - #clock-cells: Must be 1 |
18 | - clock-output-names: The names of the clocks. Supported clocks are "main", | 20 | - clock-output-names: The names of the clocks. Supported clocks are "main", |
19 | "pll0", "pll1", "pll3", "lb", "qspi", "sdh", "sd0", "sd1" and "z" | 21 | "pll0", "pll1", "pll3", "lb", "qspi", "sdh", "sd0", "sd1", "z", "rcan", and |
22 | "adsp" | ||
20 | 23 | ||
21 | 24 | ||
22 | Example | 25 | Example |
@@ -26,8 +29,9 @@ Example | |||
26 | compatible = "renesas,r8a7790-cpg-clocks", | 29 | compatible = "renesas,r8a7790-cpg-clocks", |
27 | "renesas,rcar-gen2-cpg-clocks"; | 30 | "renesas,rcar-gen2-cpg-clocks"; |
28 | reg = <0 0xe6150000 0 0x1000>; | 31 | reg = <0 0xe6150000 0 0x1000>; |
29 | clocks = <&extal_clk>; | 32 | clocks = <&extal_clk &usb_extal_clk>; |
30 | #clock-cells = <1>; | 33 | #clock-cells = <1>; |
31 | clock-output-names = "main", "pll0, "pll1", "pll3", | 34 | clock-output-names = "main", "pll0, "pll1", "pll3", |
32 | "lb", "qspi", "sdh", "sd0", "sd1", "z"; | 35 | "lb", "qspi", "sdh", "sd0", "sd1", "z", |
36 | "rcan", "adsp"; | ||
33 | }; | 37 | }; |
diff --git a/Documentation/devicetree/bindings/clock/renesas,sh73a0-cpg-clocks.txt b/Documentation/devicetree/bindings/clock/renesas,sh73a0-cpg-clocks.txt new file mode 100644 index 000000000000..a8978ec94831 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/renesas,sh73a0-cpg-clocks.txt | |||
@@ -0,0 +1,35 @@ | |||
1 | These bindings should be considered EXPERIMENTAL for now. | ||
2 | |||
3 | * Renesas SH73A0 Clock Pulse Generator (CPG) | ||
4 | |||
5 | The CPG generates core clocks for the SH73A0 SoC. It includes four PLLs | ||
6 | and several fixed ratio dividers. | ||
7 | |||
8 | Required Properties: | ||
9 | |||
10 | - compatible: Must be "renesas,sh73a0-cpg-clocks" | ||
11 | |||
12 | - reg: Base address and length of the memory resource used by the CPG | ||
13 | |||
14 | - clocks: Reference to the parent clocks ("extal1" and "extal2") | ||
15 | |||
16 | - #clock-cells: Must be 1 | ||
17 | |||
18 | - clock-output-names: The names of the clocks. Supported clocks are "main", | ||
19 | "pll0", "pll1", "pll2", "pll3", "dsi0phy", "dsi1phy", "zg", "m3", "b", | ||
20 | "m1", "m2", "z", "zx", and "hp". | ||
21 | |||
22 | |||
23 | Example | ||
24 | ------- | ||
25 | |||
26 | cpg_clocks: cpg_clocks@e6150000 { | ||
27 | compatible = "renesas,sh73a0-cpg-clocks"; | ||
28 | reg = <0 0xe6150000 0 0x10000>; | ||
29 | clocks = <&extal1_clk>, <&extal2_clk>; | ||
30 | #clock-cells = <1>; | ||
31 | clock-output-names = "main", "pll0", "pll1", "pll2", | ||
32 | "pll3", "dsi0phy", "dsi1phy", | ||
33 | "zg", "m3", "b", "m1", "m2", | ||
34 | "z", "zx", "hp"; | ||
35 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/sunxi.txt b/Documentation/devicetree/bindings/clock/sunxi.txt index 67b2b99f2b33..60b44285250d 100644 --- a/Documentation/devicetree/bindings/clock/sunxi.txt +++ b/Documentation/devicetree/bindings/clock/sunxi.txt | |||
@@ -26,7 +26,7 @@ Required properties: | |||
26 | "allwinner,sun5i-a10s-ahb-gates-clk" - for the AHB gates on A10s | 26 | "allwinner,sun5i-a10s-ahb-gates-clk" - for the AHB gates on A10s |
27 | "allwinner,sun7i-a20-ahb-gates-clk" - for the AHB gates on A20 | 27 | "allwinner,sun7i-a20-ahb-gates-clk" - for the AHB gates on A20 |
28 | "allwinner,sun6i-a31-ar100-clk" - for the AR100 on A31 | 28 | "allwinner,sun6i-a31-ar100-clk" - for the AR100 on A31 |
29 | "allwinner,sun6i-a31-ahb1-mux-clk" - for the AHB1 multiplexer on A31 | 29 | "allwinner,sun6i-a31-ahb1-clk" - for the AHB1 clock on A31 |
30 | "allwinner,sun6i-a31-ahb1-gates-clk" - for the AHB1 gates on A31 | 30 | "allwinner,sun6i-a31-ahb1-gates-clk" - for the AHB1 gates on A31 |
31 | "allwinner,sun8i-a23-ahb1-gates-clk" - for the AHB1 gates on A23 | 31 | "allwinner,sun8i-a23-ahb1-gates-clk" - for the AHB1 gates on A23 |
32 | "allwinner,sun9i-a80-ahb0-gates-clk" - for the AHB0 gates on A80 | 32 | "allwinner,sun9i-a80-ahb0-gates-clk" - for the AHB0 gates on A80 |
@@ -55,9 +55,11 @@ Required properties: | |||
55 | "allwinner,sun6i-a31-apb2-gates-clk" - for the APB2 gates on A31 | 55 | "allwinner,sun6i-a31-apb2-gates-clk" - for the APB2 gates on A31 |
56 | "allwinner,sun8i-a23-apb2-gates-clk" - for the APB2 gates on A23 | 56 | "allwinner,sun8i-a23-apb2-gates-clk" - for the APB2 gates on A23 |
57 | "allwinner,sun5i-a13-mbus-clk" - for the MBUS clock on A13 | 57 | "allwinner,sun5i-a13-mbus-clk" - for the MBUS clock on A13 |
58 | "allwinner,sun4i-a10-mmc-output-clk" - for the MMC output clock on A10 | 58 | "allwinner,sun4i-a10-mmc-clk" - for the MMC clock |
59 | "allwinner,sun4i-a10-mmc-sample-clk" - for the MMC sample clock on A10 | 59 | "allwinner,sun9i-a80-mmc-clk" - for mmc module clocks on A80 |
60 | "allwinner,sun9i-a80-mmc-config-clk" - for mmc gates + resets on A80 | ||
60 | "allwinner,sun4i-a10-mod0-clk" - for the module 0 family of clocks | 61 | "allwinner,sun4i-a10-mod0-clk" - for the module 0 family of clocks |
62 | "allwinner,sun9i-a80-mod0-clk" - for module 0 (storage) clocks on A80 | ||
61 | "allwinner,sun8i-a23-mbus-clk" - for the MBUS clock on A23 | 63 | "allwinner,sun8i-a23-mbus-clk" - for the MBUS clock on A23 |
62 | "allwinner,sun7i-a20-out-clk" - for the external output clocks | 64 | "allwinner,sun7i-a20-out-clk" - for the external output clocks |
63 | "allwinner,sun7i-a20-gmac-clk" - for the GMAC clock module on A20/A31 | 65 | "allwinner,sun7i-a20-gmac-clk" - for the GMAC clock module on A20/A31 |
@@ -73,7 +75,9 @@ Required properties for all clocks: | |||
73 | - #clock-cells : from common clock binding; shall be set to 0 except for | 75 | - #clock-cells : from common clock binding; shall be set to 0 except for |
74 | the following compatibles where it shall be set to 1: | 76 | the following compatibles where it shall be set to 1: |
75 | "allwinner,*-gates-clk", "allwinner,sun4i-pll5-clk", | 77 | "allwinner,*-gates-clk", "allwinner,sun4i-pll5-clk", |
76 | "allwinner,sun4i-pll6-clk", "allwinner,sun6i-a31-pll6-clk" | 78 | "allwinner,sun4i-pll6-clk", "allwinner,sun6i-a31-pll6-clk", |
79 | "allwinner,*-usb-clk", "allwinner,*-mmc-clk", | ||
80 | "allwinner,*-mmc-config-clk" | ||
77 | - clock-output-names : shall be the corresponding names of the outputs. | 81 | - clock-output-names : shall be the corresponding names of the outputs. |
78 | If the clock module only has one output, the name shall be the | 82 | If the clock module only has one output, the name shall be the |
79 | module name. | 83 | module name. |
@@ -81,6 +85,10 @@ Required properties for all clocks: | |||
81 | And "allwinner,*-usb-clk" clocks also require: | 85 | And "allwinner,*-usb-clk" clocks also require: |
82 | - reset-cells : shall be set to 1 | 86 | - reset-cells : shall be set to 1 |
83 | 87 | ||
88 | The "allwinner,sun9i-a80-mmc-config-clk" clock also requires: | ||
89 | - #reset-cells : shall be set to 1 | ||
90 | - resets : shall be the reset control phandle for the mmc block. | ||
91 | |||
84 | For "allwinner,sun7i-a20-gmac-clk", the parent clocks shall be fixed rate | 92 | For "allwinner,sun7i-a20-gmac-clk", the parent clocks shall be fixed rate |
85 | dummy clocks at 25 MHz and 125 MHz, respectively. See example. | 93 | dummy clocks at 25 MHz and 125 MHz, respectively. See example. |
86 | 94 | ||
@@ -95,6 +103,14 @@ For "allwinner,sun6i-a31-pll6-clk", there are 2 outputs. The first output | |||
95 | is the normal PLL6 output, or "pll6". The second output is rate doubled | 103 | is the normal PLL6 output, or "pll6". The second output is rate doubled |
96 | PLL6, or "pll6x2". | 104 | PLL6, or "pll6x2". |
97 | 105 | ||
106 | The "allwinner,*-mmc-clk" clocks have three different outputs: the | ||
107 | main clock, with the ID 0, and the output and sample clocks, with the | ||
108 | IDs 1 and 2, respectively. | ||
109 | |||
110 | The "allwinner,sun9i-a80-mmc-config-clk" clock has one clock/reset output | ||
111 | per mmc controller. The number of outputs is determined by the size of | ||
112 | the address block, which is related to the overall mmc block. | ||
113 | |||
98 | For example: | 114 | For example: |
99 | 115 | ||
100 | osc24M: clk@01c20050 { | 116 | osc24M: clk@01c20050 { |
@@ -138,11 +154,11 @@ cpu: cpu@01c20054 { | |||
138 | }; | 154 | }; |
139 | 155 | ||
140 | mmc0_clk: clk@01c20088 { | 156 | mmc0_clk: clk@01c20088 { |
141 | #clock-cells = <0>; | 157 | #clock-cells = <1>; |
142 | compatible = "allwinner,sun4i-mod0-clk"; | 158 | compatible = "allwinner,sun4i-a10-mmc-clk"; |
143 | reg = <0x01c20088 0x4>; | 159 | reg = <0x01c20088 0x4>; |
144 | clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | 160 | clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; |
145 | clock-output-names = "mmc0"; | 161 | clock-output-names = "mmc0", "mmc0_output", "mmc0_sample"; |
146 | }; | 162 | }; |
147 | 163 | ||
148 | mii_phy_tx_clk: clk@2 { | 164 | mii_phy_tx_clk: clk@2 { |
@@ -170,3 +186,16 @@ gmac_clk: clk@01c20164 { | |||
170 | clocks = <&mii_phy_tx_clk>, <&gmac_int_tx_clk>; | 186 | clocks = <&mii_phy_tx_clk>, <&gmac_int_tx_clk>; |
171 | clock-output-names = "gmac"; | 187 | clock-output-names = "gmac"; |
172 | }; | 188 | }; |
189 | |||
190 | mmc_config_clk: clk@01c13000 { | ||
191 | compatible = "allwinner,sun9i-a80-mmc-config-clk"; | ||
192 | reg = <0x01c13000 0x10>; | ||
193 | clocks = <&ahb0_gates 8>; | ||
194 | clock-names = "ahb"; | ||
195 | resets = <&ahb0_resets 8>; | ||
196 | reset-names = "ahb"; | ||
197 | #clock-cells = <1>; | ||
198 | #reset-cells = <1>; | ||
199 | clock-output-names = "mmc0_config", "mmc1_config", | ||
200 | "mmc2_config", "mmc3_config"; | ||
201 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/ti,cdce706.txt b/Documentation/devicetree/bindings/clock/ti,cdce706.txt new file mode 100644 index 000000000000..616836e7e1e2 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti,cdce706.txt | |||
@@ -0,0 +1,42 @@ | |||
1 | Bindings for Texas Instruments CDCE706 programmable 3-PLL clock | ||
2 | synthesizer/multiplier/divider. | ||
3 | |||
4 | Reference: http://www.ti.com/lit/ds/symlink/cdce706.pdf | ||
5 | |||
6 | I2C device node required properties: | ||
7 | - compatible: shall be "ti,cdce706". | ||
8 | - reg: i2c device address, shall be in range [0x68...0x6b]. | ||
9 | - #clock-cells: from common clock binding; shall be set to 1. | ||
10 | - clocks: from common clock binding; list of parent clock | ||
11 | handles, shall be reference clock(s) connected to CLK_IN0 | ||
12 | and CLK_IN1 pins. | ||
13 | - clock-names: shall be clk_in0 and/or clk_in1. Use clk_in0 | ||
14 | in case of crystal oscillator or differential signal input | ||
15 | configuration. Use clk_in0 and clk_in1 in case of independent | ||
16 | single-ended LVCMOS inputs configuration. | ||
17 | |||
18 | Example: | ||
19 | |||
20 | clocks { | ||
21 | clk54: clk54 { | ||
22 | #clock-cells = <0>; | ||
23 | compatible = "fixed-clock"; | ||
24 | clock-frequency = <54000000>; | ||
25 | }; | ||
26 | }; | ||
27 | ... | ||
28 | i2c0: i2c-master@0d090000 { | ||
29 | ... | ||
30 | cdce706: clock-synth@69 { | ||
31 | compatible = "ti,cdce706"; | ||
32 | #clock-cells = <1>; | ||
33 | reg = <0x69>; | ||
34 | clocks = <&clk54>; | ||
35 | clock-names = "clk_in0"; | ||
36 | }; | ||
37 | }; | ||
38 | ... | ||
39 | simple-audio-card,codec { | ||
40 | ... | ||
41 | clocks = <&cdce706 4>; | ||
42 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/ti/fapll.txt b/Documentation/devicetree/bindings/clock/ti/fapll.txt new file mode 100644 index 000000000000..c19b3f253b8c --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/fapll.txt | |||
@@ -0,0 +1,33 @@ | |||
1 | Binding for Texas Instruments FAPLL 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 FAPLL with usually two selectable input clocks | ||
7 | (reference clock and bypass clock), and one or more child | ||
8 | syntesizers. | ||
9 | |||
10 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
11 | |||
12 | Required properties: | ||
13 | - compatible : shall be "ti,dm816-fapll-clock" | ||
14 | - #clock-cells : from common clock binding; shall be set to 0. | ||
15 | - clocks : link phandles of parent clocks (clk-ref and clk-bypass) | ||
16 | - reg : address and length of the register set for controlling the FAPLL. | ||
17 | |||
18 | Examples: | ||
19 | main_fapll: main_fapll { | ||
20 | #clock-cells = <1>; | ||
21 | compatible = "ti,dm816-fapll-clock"; | ||
22 | reg = <0x400 0x40>; | ||
23 | clocks = <&sys_clkin_ck &sys_clkin_ck>; | ||
24 | clock-indices = <1>, <2>, <3>, <4>, <5>, | ||
25 | <6>, <7>; | ||
26 | clock-output-names = "main_pll_clk1", | ||
27 | "main_pll_clk2", | ||
28 | "main_pll_clk3", | ||
29 | "main_pll_clk4", | ||
30 | "main_pll_clk5", | ||
31 | "main_pll_clk6", | ||
32 | "main_pll_clk7"; | ||
33 | }; | ||
diff --git a/Documentation/devicetree/bindings/devfreq/event/exynos-ppmu.txt b/Documentation/devicetree/bindings/devfreq/event/exynos-ppmu.txt new file mode 100644 index 000000000000..b54bf3a2ff57 --- /dev/null +++ b/Documentation/devicetree/bindings/devfreq/event/exynos-ppmu.txt | |||
@@ -0,0 +1,110 @@ | |||
1 | |||
2 | * Samsung Exynos PPMU (Platform Performance Monitoring Unit) device | ||
3 | |||
4 | The Samsung Exynos SoC has PPMU (Platform Performance Monitoring Unit) for | ||
5 | each IP. PPMU provides the primitive values to get performance data. These | ||
6 | PPMU events provide information of the SoC's behaviors so that you may | ||
7 | use to analyze system performance, to make behaviors visible and to count | ||
8 | usages of each IP (DMC, CPU, RIGHTBUS, LEFTBUS, CAM interface, LCD, G3D, MFC). | ||
9 | The Exynos PPMU driver uses the devfreq-event class to provide event data | ||
10 | to various devfreq devices. The devfreq devices would use the event data when | ||
11 | derterming the current state of each IP. | ||
12 | |||
13 | Required properties: | ||
14 | - compatible: Should be "samsung,exynos-ppmu". | ||
15 | - reg: physical base address of each PPMU and length of memory mapped region. | ||
16 | |||
17 | Optional properties: | ||
18 | - clock-names : the name of clock used by the PPMU, "ppmu" | ||
19 | - clocks : phandles for clock specified in "clock-names" property | ||
20 | - #clock-cells: should be 1. | ||
21 | |||
22 | Example1 : PPMU nodes in exynos3250.dtsi are listed below. | ||
23 | |||
24 | ppmu_dmc0: ppmu_dmc0@106a0000 { | ||
25 | compatible = "samsung,exynos-ppmu"; | ||
26 | reg = <0x106a0000 0x2000>; | ||
27 | status = "disabled"; | ||
28 | }; | ||
29 | |||
30 | ppmu_dmc1: ppmu_dmc1@106b0000 { | ||
31 | compatible = "samsung,exynos-ppmu"; | ||
32 | reg = <0x106b0000 0x2000>; | ||
33 | status = "disabled"; | ||
34 | }; | ||
35 | |||
36 | ppmu_cpu: ppmu_cpu@106c0000 { | ||
37 | compatible = "samsung,exynos-ppmu"; | ||
38 | reg = <0x106c0000 0x2000>; | ||
39 | status = "disabled"; | ||
40 | }; | ||
41 | |||
42 | ppmu_rightbus: ppmu_rightbus@112a0000 { | ||
43 | compatible = "samsung,exynos-ppmu"; | ||
44 | reg = <0x112a0000 0x2000>; | ||
45 | clocks = <&cmu CLK_PPMURIGHT>; | ||
46 | clock-names = "ppmu"; | ||
47 | status = "disabled"; | ||
48 | }; | ||
49 | |||
50 | ppmu_leftbus: ppmu_leftbus0@116a0000 { | ||
51 | compatible = "samsung,exynos-ppmu"; | ||
52 | reg = <0x116a0000 0x2000>; | ||
53 | clocks = <&cmu CLK_PPMULEFT>; | ||
54 | clock-names = "ppmu"; | ||
55 | status = "disabled"; | ||
56 | }; | ||
57 | |||
58 | Example2 : Events of each PPMU node in exynos3250-rinato.dts are listed below. | ||
59 | |||
60 | &ppmu_dmc0 { | ||
61 | status = "okay"; | ||
62 | |||
63 | events { | ||
64 | ppmu_dmc0_3: ppmu-event3-dmc0 { | ||
65 | event-name = "ppmu-event3-dmc0"; | ||
66 | }; | ||
67 | |||
68 | ppmu_dmc0_2: ppmu-event2-dmc0 { | ||
69 | event-name = "ppmu-event2-dmc0"; | ||
70 | }; | ||
71 | |||
72 | ppmu_dmc0_1: ppmu-event1-dmc0 { | ||
73 | event-name = "ppmu-event1-dmc0"; | ||
74 | }; | ||
75 | |||
76 | ppmu_dmc0_0: ppmu-event0-dmc0 { | ||
77 | event-name = "ppmu-event0-dmc0"; | ||
78 | }; | ||
79 | }; | ||
80 | }; | ||
81 | |||
82 | &ppmu_dmc1 { | ||
83 | status = "okay"; | ||
84 | |||
85 | events { | ||
86 | ppmu_dmc1_3: ppmu-event3-dmc1 { | ||
87 | event-name = "ppmu-event3-dmc1"; | ||
88 | }; | ||
89 | }; | ||
90 | }; | ||
91 | |||
92 | &ppmu_leftbus { | ||
93 | status = "okay"; | ||
94 | |||
95 | events { | ||
96 | ppmu_leftbus_3: ppmu-event3-leftbus { | ||
97 | event-name = "ppmu-event3-leftbus"; | ||
98 | }; | ||
99 | }; | ||
100 | }; | ||
101 | |||
102 | &ppmu_rightbus { | ||
103 | status = "okay"; | ||
104 | |||
105 | events { | ||
106 | ppmu_rightbus_3: ppmu-event3-rightbus { | ||
107 | event-name = "ppmu-event3-rightbus"; | ||
108 | }; | ||
109 | }; | ||
110 | }; | ||
diff --git a/Documentation/devicetree/bindings/dma/img-mdc-dma.txt b/Documentation/devicetree/bindings/dma/img-mdc-dma.txt new file mode 100644 index 000000000000..28c1341db346 --- /dev/null +++ b/Documentation/devicetree/bindings/dma/img-mdc-dma.txt | |||
@@ -0,0 +1,57 @@ | |||
1 | * IMG Multi-threaded DMA Controller (MDC) | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Must be "img,pistachio-mdc-dma". | ||
5 | - reg: Must contain the base address and length of the MDC registers. | ||
6 | - interrupts: Must contain all the per-channel DMA interrupts. | ||
7 | - clocks: Must contain an entry for each entry in clock-names. | ||
8 | See ../clock/clock-bindings.txt for details. | ||
9 | - clock-names: Must include the following entries: | ||
10 | - sys: MDC system interface clock. | ||
11 | - img,cr-periph: Must contain a phandle to the peripheral control syscon | ||
12 | node which contains the DMA request to channel mapping registers. | ||
13 | - img,max-burst-multiplier: Must be the maximum supported burst size multiplier. | ||
14 | The maximum burst size is this value multiplied by the hardware-reported bus | ||
15 | width. | ||
16 | - #dma-cells: Must be 3: | ||
17 | - The first cell is the peripheral's DMA request line. | ||
18 | - The second cell is a bitmap specifying to which channels the DMA request | ||
19 | line may be mapped (i.e. bit N set indicates channel N is usable). | ||
20 | - The third cell is the thread ID to be used by the channel. | ||
21 | |||
22 | Optional properties: | ||
23 | - dma-channels: Number of supported DMA channels, up to 32. If not specified | ||
24 | the number reported by the hardware is used. | ||
25 | |||
26 | Example: | ||
27 | |||
28 | mdc: dma-controller@18143000 { | ||
29 | compatible = "img,pistachio-mdc-dma"; | ||
30 | reg = <0x18143000 0x1000>; | ||
31 | interrupts = <GIC_SHARED 27 IRQ_TYPE_LEVEL_HIGH>, | ||
32 | <GIC_SHARED 28 IRQ_TYPE_LEVEL_HIGH>, | ||
33 | <GIC_SHARED 29 IRQ_TYPE_LEVEL_HIGH>, | ||
34 | <GIC_SHARED 30 IRQ_TYPE_LEVEL_HIGH>, | ||
35 | <GIC_SHARED 31 IRQ_TYPE_LEVEL_HIGH>, | ||
36 | <GIC_SHARED 32 IRQ_TYPE_LEVEL_HIGH>, | ||
37 | <GIC_SHARED 33 IRQ_TYPE_LEVEL_HIGH>, | ||
38 | <GIC_SHARED 34 IRQ_TYPE_LEVEL_HIGH>, | ||
39 | <GIC_SHARED 35 IRQ_TYPE_LEVEL_HIGH>, | ||
40 | <GIC_SHARED 36 IRQ_TYPE_LEVEL_HIGH>, | ||
41 | <GIC_SHARED 37 IRQ_TYPE_LEVEL_HIGH>, | ||
42 | <GIC_SHARED 38 IRQ_TYPE_LEVEL_HIGH>; | ||
43 | clocks = <&system_clk>; | ||
44 | clock-names = "sys"; | ||
45 | |||
46 | img,max-burst-multiplier = <16>; | ||
47 | img,cr-periph = <&cr_periph>; | ||
48 | |||
49 | #dma-cells = <3>; | ||
50 | }; | ||
51 | |||
52 | spi@18100f00 { | ||
53 | ... | ||
54 | dmas = <&mdc 9 0xffffffff 0>, <&mdc 10 0xffffffff 0>; | ||
55 | dma-names = "tx", "rx"; | ||
56 | ... | ||
57 | }; | ||
diff --git a/Documentation/devicetree/bindings/dma/renesas,rcar-dmac.txt b/Documentation/devicetree/bindings/dma/renesas,rcar-dmac.txt index df0f48bcf75a..09daeef1ff22 100644 --- a/Documentation/devicetree/bindings/dma/renesas,rcar-dmac.txt +++ b/Documentation/devicetree/bindings/dma/renesas,rcar-dmac.txt | |||
@@ -1,13 +1,10 @@ | |||
1 | * Renesas R-Car DMA Controller Device Tree bindings | 1 | * Renesas R-Car DMA Controller Device Tree bindings |
2 | 2 | ||
3 | Renesas R-Car Generation 2 SoCs have have multiple multi-channel DMA | 3 | Renesas R-Car Generation 2 SoCs have multiple multi-channel DMA |
4 | controller instances named DMAC capable of serving multiple clients. Channels | 4 | controller instances named DMAC capable of serving multiple clients. Channels |
5 | can be dedicated to specific clients or shared between a large number of | 5 | can be dedicated to specific clients or shared between a large number of |
6 | clients. | 6 | clients. |
7 | 7 | ||
8 | DMA clients are connected to the DMAC ports referenced by an 8-bit identifier | ||
9 | called MID/RID. | ||
10 | |||
11 | Each DMA client is connected to one dedicated port of the DMAC, identified by | 8 | Each DMA client is connected to one dedicated port of the DMAC, identified by |
12 | an 8-bit port number called the MID/RID. A DMA controller can thus serve up to | 9 | an 8-bit port number called the MID/RID. A DMA controller can thus serve up to |
13 | 256 clients in total. When the number of hardware channels is lower than the | 10 | 256 clients in total. When the number of hardware channels is lower than the |
diff --git a/Documentation/devicetree/bindings/dma/snps-dma.txt b/Documentation/devicetree/bindings/dma/snps-dma.txt index d58675ea1abf..c261598164a7 100644 --- a/Documentation/devicetree/bindings/dma/snps-dma.txt +++ b/Documentation/devicetree/bindings/dma/snps-dma.txt | |||
@@ -38,7 +38,7 @@ Example: | |||
38 | chan_allocation_order = <1>; | 38 | chan_allocation_order = <1>; |
39 | chan_priority = <1>; | 39 | chan_priority = <1>; |
40 | block_size = <0xfff>; | 40 | block_size = <0xfff>; |
41 | data_width = <3 3 0 0>; | 41 | data_width = <3 3>; |
42 | }; | 42 | }; |
43 | 43 | ||
44 | DMA clients connected to the Designware DMA controller must use the format | 44 | DMA clients connected to the Designware DMA controller must use the format |
diff --git a/Documentation/devicetree/bindings/drm/atmel/hlcdc-dc.txt b/Documentation/devicetree/bindings/drm/atmel/hlcdc-dc.txt new file mode 100644 index 000000000000..ebc1a914bda3 --- /dev/null +++ b/Documentation/devicetree/bindings/drm/atmel/hlcdc-dc.txt | |||
@@ -0,0 +1,53 @@ | |||
1 | Device-Tree bindings for Atmel's HLCDC (High LCD Controller) DRM driver | ||
2 | |||
3 | The Atmel HLCDC Display Controller is subdevice of the HLCDC MFD device. | ||
4 | See ../mfd/atmel-hlcdc.txt for more details. | ||
5 | |||
6 | Required properties: | ||
7 | - compatible: value should be "atmel,hlcdc-display-controller" | ||
8 | - pinctrl-names: the pin control state names. Should contain "default". | ||
9 | - pinctrl-0: should contain the default pinctrl states. | ||
10 | - #address-cells: should be set to 1. | ||
11 | - #size-cells: should be set to 0. | ||
12 | |||
13 | Required children nodes: | ||
14 | Children nodes are encoding available output ports and their connections | ||
15 | to external devices using the OF graph reprensentation (see ../graph.txt). | ||
16 | At least one port node is required. | ||
17 | |||
18 | Example: | ||
19 | |||
20 | hlcdc: hlcdc@f0030000 { | ||
21 | compatible = "atmel,sama5d3-hlcdc"; | ||
22 | reg = <0xf0030000 0x2000>; | ||
23 | interrupts = <36 IRQ_TYPE_LEVEL_HIGH 0>; | ||
24 | clocks = <&lcdc_clk>, <&lcdck>, <&clk32k>; | ||
25 | clock-names = "periph_clk","sys_clk", "slow_clk"; | ||
26 | status = "disabled"; | ||
27 | |||
28 | hlcdc-display-controller { | ||
29 | compatible = "atmel,hlcdc-display-controller"; | ||
30 | pinctrl-names = "default"; | ||
31 | pinctrl-0 = <&pinctrl_lcd_base &pinctrl_lcd_rgb888>; | ||
32 | #address-cells = <1>; | ||
33 | #size-cells = <0>; | ||
34 | |||
35 | port@0 { | ||
36 | #address-cells = <1>; | ||
37 | #size-cells = <0>; | ||
38 | reg = <0>; | ||
39 | |||
40 | hlcdc_panel_output: endpoint@0 { | ||
41 | reg = <0>; | ||
42 | remote-endpoint = <&panel_input>; | ||
43 | }; | ||
44 | }; | ||
45 | }; | ||
46 | |||
47 | hlcdc_pwm: hlcdc-pwm { | ||
48 | compatible = "atmel,hlcdc-pwm"; | ||
49 | pinctrl-names = "default"; | ||
50 | pinctrl-0 = <&pinctrl_lcd_pwm>; | ||
51 | #pwm-cells = <3>; | ||
52 | }; | ||
53 | }; | ||
diff --git a/Documentation/devicetree/bindings/drm/bridge/dw_hdmi.txt b/Documentation/devicetree/bindings/drm/bridge/dw_hdmi.txt new file mode 100644 index 000000000000..a905c1413558 --- /dev/null +++ b/Documentation/devicetree/bindings/drm/bridge/dw_hdmi.txt | |||
@@ -0,0 +1,50 @@ | |||
1 | DesignWare HDMI bridge bindings | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: platform specific such as: | ||
5 | * "snps,dw-hdmi-tx" | ||
6 | * "fsl,imx6q-hdmi" | ||
7 | * "fsl,imx6dl-hdmi" | ||
8 | * "rockchip,rk3288-dw-hdmi" | ||
9 | - reg: Physical base address and length of the controller's registers. | ||
10 | - interrupts: The HDMI interrupt number | ||
11 | - clocks, clock-names : must have the phandles to the HDMI iahb and isfr clocks, | ||
12 | as described in Documentation/devicetree/bindings/clock/clock-bindings.txt, | ||
13 | the clocks are soc specific, the clock-names should be "iahb", "isfr" | ||
14 | -port@[X]: SoC specific port nodes with endpoint definitions as defined | ||
15 | in Documentation/devicetree/bindings/media/video-interfaces.txt, | ||
16 | please refer to the SoC specific binding document: | ||
17 | * Documentation/devicetree/bindings/drm/imx/hdmi.txt | ||
18 | * Documentation/devicetree/bindings/video/dw_hdmi-rockchip.txt | ||
19 | |||
20 | Optional properties | ||
21 | - reg-io-width: the width of the reg:1,4, default set to 1 if not present | ||
22 | - ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing | ||
23 | - clocks, clock-names: phandle to the HDMI CEC clock, name should be "cec" | ||
24 | |||
25 | Example: | ||
26 | hdmi: hdmi@0120000 { | ||
27 | compatible = "fsl,imx6q-hdmi"; | ||
28 | reg = <0x00120000 0x9000>; | ||
29 | interrupts = <0 115 0x04>; | ||
30 | gpr = <&gpr>; | ||
31 | clocks = <&clks 123>, <&clks 124>; | ||
32 | clock-names = "iahb", "isfr"; | ||
33 | ddc-i2c-bus = <&i2c2>; | ||
34 | |||
35 | port@0 { | ||
36 | reg = <0>; | ||
37 | |||
38 | hdmi_mux_0: endpoint { | ||
39 | remote-endpoint = <&ipu1_di0_hdmi>; | ||
40 | }; | ||
41 | }; | ||
42 | |||
43 | port@1 { | ||
44 | reg = <1>; | ||
45 | |||
46 | hdmi_mux_1: endpoint { | ||
47 | remote-endpoint = <&ipu1_di1_hdmi>; | ||
48 | }; | ||
49 | }; | ||
50 | }; | ||
diff --git a/Documentation/devicetree/bindings/drm/msm/hdmi.txt b/Documentation/devicetree/bindings/drm/msm/hdmi.txt index aca917fe2ba7..a29a55f3d937 100644 --- a/Documentation/devicetree/bindings/drm/msm/hdmi.txt +++ b/Documentation/devicetree/bindings/drm/msm/hdmi.txt | |||
@@ -2,6 +2,8 @@ Qualcomm adreno/snapdragon hdmi output | |||
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: one of the following | 4 | - compatible: one of the following |
5 | * "qcom,hdmi-tx-8084" | ||
6 | * "qcom,hdmi-tx-8074" | ||
5 | * "qcom,hdmi-tx-8660" | 7 | * "qcom,hdmi-tx-8660" |
6 | * "qcom,hdmi-tx-8960" | 8 | * "qcom,hdmi-tx-8960" |
7 | - reg: Physical base address and length of the controller's registers | 9 | - reg: Physical base address and length of the controller's registers |
diff --git a/Documentation/devicetree/bindings/fpga/altera-socfpga-fpga-mgr.txt b/Documentation/devicetree/bindings/fpga/altera-socfpga-fpga-mgr.txt new file mode 100644 index 000000000000..9b027a615486 --- /dev/null +++ b/Documentation/devicetree/bindings/fpga/altera-socfpga-fpga-mgr.txt | |||
@@ -0,0 +1,17 @@ | |||
1 | Altera SOCFPGA FPGA Manager | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : should contain "altr,socfpga-fpga-mgr" | ||
5 | - reg : base address and size for memory mapped io. | ||
6 | - The first index is for FPGA manager register access. | ||
7 | - The second index is for writing FPGA configuration data. | ||
8 | - interrupts : interrupt for the FPGA Manager device. | ||
9 | |||
10 | Example: | ||
11 | |||
12 | hps_0_fpgamgr: fpgamgr@0xff706000 { | ||
13 | compatible = "altr,socfpga-fpga-mgr"; | ||
14 | reg = <0xFF706000 0x1000 | ||
15 | 0xFFB90000 0x1000>; | ||
16 | interrupts = <0 175 4>; | ||
17 | }; | ||
diff --git a/Documentation/devicetree/bindings/fuse/nvidia,tegra20-fuse.txt b/Documentation/devicetree/bindings/fuse/nvidia,tegra20-fuse.txt index d8c98c7614d0..23e1d3194174 100644 --- a/Documentation/devicetree/bindings/fuse/nvidia,tegra20-fuse.txt +++ b/Documentation/devicetree/bindings/fuse/nvidia,tegra20-fuse.txt | |||
@@ -1,11 +1,11 @@ | |||
1 | NVIDIA Tegra20/Tegra30/Tegr114/Tegra124 fuse block. | 1 | NVIDIA Tegra20/Tegra30/Tegr114/Tegra124 fuse block. |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : should be: | 4 | - compatible : For Tegra20, must contain "nvidia,tegra20-efuse". For Tegra30, |
5 | "nvidia,tegra20-efuse" | 5 | must contain "nvidia,tegra30-efuse". For Tegra114, must contain |
6 | "nvidia,tegra30-efuse" | 6 | "nvidia,tegra114-efuse". For Tegra124, must contain "nvidia,tegra124-efuse". |
7 | "nvidia,tegra114-efuse" | 7 | Otherwise, must contain "nvidia,<chip>-efuse", plus one of the above, where |
8 | "nvidia,tegra124-efuse" | 8 | <chip> is tegra132. |
9 | Details: | 9 | Details: |
10 | nvidia,tegra20-efuse: Tegra20 requires using APB DMA to read the fuse data | 10 | nvidia,tegra20-efuse: Tegra20 requires using APB DMA to read the fuse data |
11 | due to a hardware bug. Tegra20 also lacks certain information which is | 11 | due to a hardware bug. Tegra20 also lacks certain information which is |
diff --git a/Documentation/devicetree/bindings/gpio/fujitsu,mb86s70-gpio.txt b/Documentation/devicetree/bindings/gpio/fujitsu,mb86s70-gpio.txt new file mode 100644 index 000000000000..bef353f370d8 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/fujitsu,mb86s70-gpio.txt | |||
@@ -0,0 +1,20 @@ | |||
1 | Fujitsu MB86S7x GPIO Controller | ||
2 | ------------------------------- | ||
3 | |||
4 | Required properties: | ||
5 | - compatible: Should be "fujitsu,mb86s70-gpio" | ||
6 | - reg: Base address and length of register space | ||
7 | - clocks: Specify the clock | ||
8 | - gpio-controller: Marks the device node as a gpio controller. | ||
9 | - #gpio-cells: Should be <2>. The first cell is the pin number and the | ||
10 | second cell is used to specify optional parameters: | ||
11 | - bit 0 specifies polarity (0 for normal, 1 for inverted). | ||
12 | |||
13 | Examples: | ||
14 | gpio0: gpio@31000000 { | ||
15 | compatible = "fujitsu,mb86s70-gpio"; | ||
16 | reg = <0 0x31000000 0x10000>; | ||
17 | gpio-controller; | ||
18 | #gpio-cells = <2>; | ||
19 | clocks = <&clk 0 2 1>; | ||
20 | }; | ||
diff --git a/Documentation/devicetree/bindings/gpio/gpio-max732x.txt b/Documentation/devicetree/bindings/gpio/gpio-max732x.txt new file mode 100644 index 000000000000..5fdc843b4542 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio-max732x.txt | |||
@@ -0,0 +1,59 @@ | |||
1 | * MAX732x-compatible I/O expanders | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be one of the following: | ||
5 | - "maxim,max7319": For the Maxim MAX7319 | ||
6 | - "maxim,max7320": For the Maxim MAX7320 | ||
7 | - "maxim,max7321": For the Maxim MAX7321 | ||
8 | - "maxim,max7322": For the Maxim MAX7322 | ||
9 | - "maxim,max7323": For the Maxim MAX7323 | ||
10 | - "maxim,max7324": For the Maxim MAX7324 | ||
11 | - "maxim,max7325": For the Maxim MAX7325 | ||
12 | - "maxim,max7326": For the Maxim MAX7326 | ||
13 | - "maxim,max7327": For the Maxim MAX7327 | ||
14 | - reg: I2C slave address for this device. | ||
15 | - gpio-controller: Marks the device node as a GPIO controller. | ||
16 | - #gpio-cells: Should be 2. | ||
17 | - first cell is the GPIO number | ||
18 | - second cell specifies GPIO flags, as defined in <dt-bindings/gpio/gpio.h>. | ||
19 | Only the GPIO_ACTIVE_HIGH and GPIO_ACTIVE_LOW flags are supported. | ||
20 | |||
21 | Optional properties: | ||
22 | |||
23 | The I/O expander can detect input state changes, and thus optionally act as | ||
24 | an interrupt controller. When the expander interrupt line is connected all the | ||
25 | following properties must be set. For more information please see the | ||
26 | interrupt controller device tree bindings documentation available at | ||
27 | Documentation/devicetree/bindings/interrupt-controller/interrupts.txt. | ||
28 | |||
29 | - interrupt-controller: Identifies the node as an interrupt controller. | ||
30 | - #interrupt-cells: Number of cells to encode an interrupt source, shall be 2. | ||
31 | - first cell is the pin number | ||
32 | - second cell is used to specify flags | ||
33 | - interrupt-parent: phandle of the parent interrupt controller. | ||
34 | - interrupts: Interrupt specifier for the controllers interrupt. | ||
35 | |||
36 | Please refer to gpio.txt in this directory for details of the common GPIO | ||
37 | bindings used by client devices. | ||
38 | |||
39 | Example 1. MAX7325 with interrupt support enabled (CONFIG_GPIO_MAX732X_IRQ=y): | ||
40 | |||
41 | expander: max7325@6d { | ||
42 | compatible = "maxim,max7325"; | ||
43 | reg = <0x6d>; | ||
44 | gpio-controller; | ||
45 | #gpio-cells = <2>; | ||
46 | interrupt-controller; | ||
47 | #interrupt-cells = <2>; | ||
48 | interrupt-parent = <&gpio4>; | ||
49 | interrupts = <29 IRQ_TYPE_EDGE_FALLING>; | ||
50 | }; | ||
51 | |||
52 | Example 2. MAX7325 with interrupt support disabled (CONFIG_GPIO_MAX732X_IRQ=n): | ||
53 | |||
54 | expander: max7325@6d { | ||
55 | compatible = "maxim,max7325"; | ||
56 | reg = <0x6d>; | ||
57 | gpio-controller; | ||
58 | #gpio-cells = <2>; | ||
59 | }; | ||
diff --git a/Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt b/Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt index d63194a2c848..ada4e2973323 100644 --- a/Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt +++ b/Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt | |||
@@ -39,7 +39,7 @@ Optional Properties: | |||
39 | - lines-initial-states: Bitmask that specifies the initial state of each | 39 | - lines-initial-states: Bitmask that specifies the initial state of each |
40 | line. When a bit is set to zero, the corresponding line will be initialized to | 40 | line. When a bit is set to zero, the corresponding line will be initialized to |
41 | the input (pulled-up) state. When the bit is set to one, the line will be | 41 | the input (pulled-up) state. When the bit is set to one, the line will be |
42 | initialized the the low-level output state. If the property is not specified | 42 | initialized the low-level output state. If the property is not specified |
43 | all lines will be initialized to the input state. | 43 | all lines will be initialized to the input state. |
44 | 44 | ||
45 | The I/O expander can detect input state changes, and thus optionally act as | 45 | The I/O expander can detect input state changes, and thus optionally act as |
diff --git a/Documentation/devicetree/bindings/gpio/gpio-sx150x.txt b/Documentation/devicetree/bindings/gpio/gpio-sx150x.txt new file mode 100644 index 000000000000..ba2bb84eeac3 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio-sx150x.txt | |||
@@ -0,0 +1,40 @@ | |||
1 | SEMTECH SX150x GPIO expander bindings | ||
2 | |||
3 | |||
4 | Required properties: | ||
5 | |||
6 | - compatible: should be "semtech,sx1506q", | ||
7 | "semtech,sx1508q", | ||
8 | "semtech,sx1509q". | ||
9 | |||
10 | - reg: The I2C slave address for this device. | ||
11 | |||
12 | - interrupt-parent: phandle of the parent interrupt controller. | ||
13 | |||
14 | - interrupts: Interrupt specifier for the controllers interrupt. | ||
15 | |||
16 | - #gpio-cells: Should be 2. The first cell is the GPIO number and the | ||
17 | second cell is used to specify optional parameters: | ||
18 | bit 0: polarity (0: normal, 1: inverted) | ||
19 | |||
20 | - gpio-controller: Marks the device as a GPIO controller. | ||
21 | |||
22 | - interrupt-controller: Marks the device as a interrupt controller. | ||
23 | |||
24 | The GPIO expander can optionally be used as an interrupt controller, in | ||
25 | which case it uses the default two cell specifier as described in | ||
26 | Documentation/devicetree/bindings/interrupt-controller/interrupts.txt. | ||
27 | |||
28 | Example: | ||
29 | |||
30 | i2c_gpio_expander@20{ | ||
31 | #gpio-cells = <2>; | ||
32 | #interrupt-cells = <2>; | ||
33 | compatible = "semtech,sx1506q"; | ||
34 | reg = <0x20>; | ||
35 | interrupt-parent = <&gpio_1>; | ||
36 | interrupts = <16 0>; | ||
37 | |||
38 | gpio-controller; | ||
39 | interrupt-controller; | ||
40 | }; | ||
diff --git a/Documentation/devicetree/bindings/gpio/gpio-xgene-sb.txt b/Documentation/devicetree/bindings/gpio/gpio-xgene-sb.txt new file mode 100644 index 000000000000..dae130060537 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio-xgene-sb.txt | |||
@@ -0,0 +1,32 @@ | |||
1 | APM X-Gene Standby GPIO controller bindings | ||
2 | |||
3 | This is a gpio controller in the standby domain. | ||
4 | |||
5 | There are 20 GPIO pins from 0..21. There is no GPIO_DS14 or GPIO_DS15, | ||
6 | only GPIO_DS8..GPIO_DS13 support interrupts. The IRQ mapping | ||
7 | is currently 1-to-1 on interrupts 0x28 thru 0x2d. | ||
8 | |||
9 | Required properties: | ||
10 | - compatible: "apm,xgene-gpio-sb" for the X-Gene Standby GPIO controller | ||
11 | - reg: Physical base address and size of the controller's registers | ||
12 | - #gpio-cells: Should be two. | ||
13 | - first cell is the pin number | ||
14 | - second cell is used to specify the gpio polarity: | ||
15 | 0 = active high | ||
16 | 1 = active low | ||
17 | - gpio-controller: Marks the device node as a GPIO controller. | ||
18 | - interrupts: Shall contain exactly 6 interrupts. | ||
19 | |||
20 | Example: | ||
21 | sbgpio: sbgpio@17001000 { | ||
22 | compatible = "apm,xgene-gpio-sb"; | ||
23 | reg = <0x0 0x17001000 0x0 0x400>; | ||
24 | #gpio-cells = <2>; | ||
25 | gpio-controller; | ||
26 | interrupts = <0x0 0x28 0x1>, | ||
27 | <0x0 0x29 0x1>, | ||
28 | <0x0 0x2a 0x1>, | ||
29 | <0x0 0x2b 0x1>, | ||
30 | <0x0 0x2c 0x1>, | ||
31 | <0x0 0x2d 0x1>; | ||
32 | }; | ||
diff --git a/Documentation/devicetree/bindings/gpio/gpio.txt b/Documentation/devicetree/bindings/gpio/gpio.txt index b9bd1d64cfa6..f7a158d85862 100644 --- a/Documentation/devicetree/bindings/gpio/gpio.txt +++ b/Documentation/devicetree/bindings/gpio/gpio.txt | |||
@@ -69,7 +69,8 @@ GPIO pin number, and GPIO flags as accepted by the "qe_pio_e" gpio-controller. | |||
69 | ---------------------------------- | 69 | ---------------------------------- |
70 | 70 | ||
71 | A gpio-specifier should contain a flag indicating the GPIO polarity; active- | 71 | A gpio-specifier should contain a flag indicating the GPIO polarity; active- |
72 | high or active-low. If it does, the follow best practices should be followed: | 72 | high or active-low. If it does, the following best practices should be |
73 | followed: | ||
73 | 74 | ||
74 | The gpio-specifier's polarity flag should represent the physical level at the | 75 | The gpio-specifier's polarity flag should represent the physical level at the |
75 | GPIO controller that achieves (or represents, for inputs) a logically asserted | 76 | GPIO controller that achieves (or represents, for inputs) a logically asserted |
@@ -147,7 +148,7 @@ contains information structures as follows: | |||
147 | numeric-gpio-range ::= | 148 | numeric-gpio-range ::= |
148 | <pinctrl-phandle> <gpio-base> <pinctrl-base> <count> | 149 | <pinctrl-phandle> <gpio-base> <pinctrl-base> <count> |
149 | named-gpio-range ::= <pinctrl-phandle> <gpio-base> '<0 0>' | 150 | named-gpio-range ::= <pinctrl-phandle> <gpio-base> '<0 0>' |
150 | gpio-phandle : phandle to pin controller node. | 151 | pinctrl-phandle : phandle to pin controller node |
151 | gpio-base : Base GPIO ID in the GPIO controller | 152 | gpio-base : Base GPIO ID in the GPIO controller |
152 | pinctrl-base : Base pinctrl pin ID in the pin controller | 153 | pinctrl-base : Base pinctrl pin ID in the pin controller |
153 | count : The number of GPIOs/pins in this range | 154 | count : The number of GPIOs/pins in this range |
diff --git a/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt b/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt index b2afdb27adeb..67a2e4e414a5 100644 --- a/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt +++ b/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt | |||
@@ -3,8 +3,8 @@ | |||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : Should be "intel,pxa25x-gpio", "intel,pxa26x-gpio", | 4 | - compatible : Should be "intel,pxa25x-gpio", "intel,pxa26x-gpio", |
5 | "intel,pxa27x-gpio", "intel,pxa3xx-gpio", | 5 | "intel,pxa27x-gpio", "intel,pxa3xx-gpio", |
6 | "marvell,pxa93x-gpio", "marvell,mmp-gpio" or | 6 | "marvell,pxa93x-gpio", "marvell,mmp-gpio", |
7 | "marvell,mmp2-gpio". | 7 | "marvell,mmp2-gpio" or marvell,pxa1928-gpio. |
8 | - reg : Address and length of the register set for the device | 8 | - reg : Address and length of the register set for the device |
9 | - interrupts : Should be the port interrupt shared by all gpio pins. | 9 | - interrupts : Should be the port interrupt shared by all gpio pins. |
10 | There're three gpio interrupts in arch-pxa, and they're gpio0, | 10 | There're three gpio interrupts in arch-pxa, and they're gpio0, |
diff --git a/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt b/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt index 4c32ef0b7db8..009f4bfa1590 100644 --- a/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt +++ b/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt | |||
@@ -197,7 +197,9 @@ of the following host1x client modules: | |||
197 | - sor: serial output resource | 197 | - sor: serial output resource |
198 | 198 | ||
199 | Required properties: | 199 | Required properties: |
200 | - compatible: "nvidia,tegra124-sor" | 200 | - compatible: For Tegra124, must contain "nvidia,tegra124-sor". Otherwise, |
201 | must contain '"nvidia,<chip>-sor", "nvidia,tegra124-sor"', where <chip> | ||
202 | is tegra132. | ||
201 | - reg: Physical base address and length of the controller's registers. | 203 | - reg: Physical base address and length of the controller's registers. |
202 | - interrupts: The interrupt outputs from the controller. | 204 | - interrupts: The interrupt outputs from the controller. |
203 | - clocks: Must contain an entry for each entry in clock-names. | 205 | - clocks: Must contain an entry for each entry in clock-names. |
@@ -222,7 +224,9 @@ of the following host1x client modules: | |||
222 | - nvidia,dpaux: phandle to a DispayPort AUX interface | 224 | - nvidia,dpaux: phandle to a DispayPort AUX interface |
223 | 225 | ||
224 | - dpaux: DisplayPort AUX interface | 226 | - dpaux: DisplayPort AUX interface |
225 | - compatible: "nvidia,tegra124-dpaux" | 227 | - compatible: For Tegra124, must contain "nvidia,tegra124-dpaux". Otherwise, |
228 | must contain '"nvidia,<chip>-dpaux", "nvidia,tegra124-dpaux"', where | ||
229 | <chip> is tegra132. | ||
226 | - reg: Physical base address and length of the controller's registers. | 230 | - reg: Physical base address and length of the controller's registers. |
227 | - interrupts: The interrupt outputs from the controller. | 231 | - interrupts: The interrupt outputs from the controller. |
228 | - clocks: Must contain an entry for each entry in clock-names. | 232 | - clocks: Must contain an entry for each entry in clock-names. |
diff --git a/Documentation/devicetree/bindings/gpu/st,stih4xx.txt b/Documentation/devicetree/bindings/gpu/st,stih4xx.txt index c99eb34e640b..6b1d75f1a529 100644 --- a/Documentation/devicetree/bindings/gpu/st,stih4xx.txt +++ b/Documentation/devicetree/bindings/gpu/st,stih4xx.txt | |||
@@ -83,6 +83,22 @@ sti-hda: | |||
83 | - clock-names: names of the clocks listed in clocks property in the same | 83 | - clock-names: names of the clocks listed in clocks property in the same |
84 | order. | 84 | order. |
85 | 85 | ||
86 | sti-dvo: | ||
87 | Required properties: | ||
88 | must be a child of sti-tvout | ||
89 | - compatible: "st,stih<chip>-dvo" | ||
90 | - reg: Physical base address of the IP registers and length of memory mapped region. | ||
91 | - reg-names: names of the mapped memory regions listed in regs property in | ||
92 | the same order. | ||
93 | - clocks: from common clock binding: handle hardware IP needed clocks, the | ||
94 | number of clocks may depend of the SoC type. | ||
95 | See ../clocks/clock-bindings.txt for details. | ||
96 | - clock-names: names of the clocks listed in clocks property in the same | ||
97 | order. | ||
98 | - pinctrl-0: pin control handle | ||
99 | - pinctrl-name: names of the pin control to use | ||
100 | - sti,panel: phandle of the panel connected to the DVO output | ||
101 | |||
86 | sti-hqvdp: | 102 | sti-hqvdp: |
87 | must be a child of sti-display-subsystem | 103 | must be a child of sti-display-subsystem |
88 | Required properties: | 104 | Required properties: |
@@ -198,6 +214,19 @@ Example: | |||
198 | clock-names = "pix", "hddac"; | 214 | clock-names = "pix", "hddac"; |
199 | clocks = <&clockgen_c_vcc CLK_S_PIX_HD>, <&clockgen_c_vcc CLK_S_HDDAC>; | 215 | clocks = <&clockgen_c_vcc CLK_S_PIX_HD>, <&clockgen_c_vcc CLK_S_HDDAC>; |
200 | }; | 216 | }; |
217 | |||
218 | sti-dvo@8d00400 { | ||
219 | compatible = "st,stih407-dvo"; | ||
220 | reg = <0x8d00400 0x200>; | ||
221 | reg-names = "dvo-reg"; | ||
222 | clock-names = "dvo_pix", "dvo", | ||
223 | "main_parent", "aux_parent"; | ||
224 | clocks = <&clk_s_d2_flexgen CLK_PIX_DVO>, <&clk_s_d2_flexgen CLK_DVO>, | ||
225 | <&clk_s_d2_quadfs 0>, <&clk_s_d2_quadfs 1>; | ||
226 | pinctrl-names = "default"; | ||
227 | pinctrl-0 = <&pinctrl_dvo>; | ||
228 | sti,panel = <&panel_dvo>; | ||
229 | }; | ||
201 | }; | 230 | }; |
202 | 231 | ||
203 | sti-hqvdp@9c000000 { | 232 | sti-hqvdp@9c000000 { |
diff --git a/Documentation/devicetree/bindings/graph.txt b/Documentation/devicetree/bindings/graph.txt index 1a69c078adf2..fcb1c6a4787b 100644 --- a/Documentation/devicetree/bindings/graph.txt +++ b/Documentation/devicetree/bindings/graph.txt | |||
@@ -19,7 +19,7 @@ type of the connections, they just map their existence. Specific properties | |||
19 | may be described by specialized bindings depending on the type of connection. | 19 | may be described by specialized bindings depending on the type of connection. |
20 | 20 | ||
21 | To see how this binding applies to video pipelines, for example, see | 21 | To see how this binding applies to video pipelines, for example, see |
22 | Documentation/device-tree/bindings/media/video-interfaces.txt. | 22 | Documentation/devicetree/bindings/media/video-interfaces.txt. |
23 | Here the ports describe data interfaces, and the links between them are | 23 | Here the ports describe data interfaces, and the links between them are |
24 | the connecting data buses. A single port with multiple connections can | 24 | the connecting data buses. A single port with multiple connections can |
25 | correspond to multiple devices being connected to the same physical bus. | 25 | correspond to multiple devices being connected to the same physical bus. |
diff --git a/Documentation/devicetree/bindings/i2c/brcm,iproc-i2c.txt b/Documentation/devicetree/bindings/i2c/brcm,iproc-i2c.txt new file mode 100644 index 000000000000..81f982ccca31 --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/brcm,iproc-i2c.txt | |||
@@ -0,0 +1,37 @@ | |||
1 | Broadcom iProc I2C controller | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible: | ||
6 | Must be "brcm,iproc-i2c" | ||
7 | |||
8 | - reg: | ||
9 | Define the base and range of the I/O address space that contain the iProc | ||
10 | I2C controller registers | ||
11 | |||
12 | - interrupts: | ||
13 | Should contain the I2C interrupt | ||
14 | |||
15 | - clock-frequency: | ||
16 | This is the I2C bus clock. Need to be either 100000 or 400000 | ||
17 | |||
18 | - #address-cells: | ||
19 | Always 1 (for I2C addresses) | ||
20 | |||
21 | - #size-cells: | ||
22 | Always 0 | ||
23 | |||
24 | Example: | ||
25 | i2c0: i2c@18008000 { | ||
26 | compatible = "brcm,iproc-i2c"; | ||
27 | reg = <0x18008000 0x100>; | ||
28 | #address-cells = <1>; | ||
29 | #size-cells = <0>; | ||
30 | interrupts = <GIC_SPI 85 IRQ_TYPE_NONE>; | ||
31 | clock-frequency = <100000>; | ||
32 | |||
33 | codec: wm8750@1a { | ||
34 | compatible = "wlf,wm8750"; | ||
35 | reg = <0x1a>; | ||
36 | }; | ||
37 | }; | ||
diff --git a/Documentation/devicetree/bindings/i2c/i2c-mux-pca954x.txt b/Documentation/devicetree/bindings/i2c/i2c-mux-pca954x.txt index 34a3fb6f8488..cf53d5fba20a 100644 --- a/Documentation/devicetree/bindings/i2c/i2c-mux-pca954x.txt +++ b/Documentation/devicetree/bindings/i2c/i2c-mux-pca954x.txt | |||
@@ -16,6 +16,9 @@ Required Properties: | |||
16 | Optional Properties: | 16 | Optional Properties: |
17 | 17 | ||
18 | - reset-gpios: Reference to the GPIO connected to the reset input. | 18 | - reset-gpios: Reference to the GPIO connected to the reset input. |
19 | - i2c-mux-idle-disconnect: Boolean; if defined, forces mux to disconnect all | ||
20 | children in idle state. This is necessary for example, if there are several | ||
21 | multiplexers on the bus and the devices behind them use same I2C addresses. | ||
19 | 22 | ||
20 | 23 | ||
21 | Example: | 24 | Example: |
diff --git a/Documentation/devicetree/bindings/i2c/i2c-ocores.txt b/Documentation/devicetree/bindings/i2c/i2c-ocores.txt index 1637c298a1b3..17bef9a34e50 100644 --- a/Documentation/devicetree/bindings/i2c/i2c-ocores.txt +++ b/Documentation/devicetree/bindings/i2c/i2c-ocores.txt | |||
@@ -4,24 +4,60 @@ Required properties: | |||
4 | - compatible : "opencores,i2c-ocores" or "aeroflexgaisler,i2cmst" | 4 | - compatible : "opencores,i2c-ocores" or "aeroflexgaisler,i2cmst" |
5 | - reg : bus address start and address range size of device | 5 | - reg : bus address start and address range size of device |
6 | - interrupts : interrupt number | 6 | - interrupts : interrupt number |
7 | - clock-frequency : frequency of bus clock in Hz | 7 | - clocks : handle to the controller clock; see the note below. |
8 | Mutually exclusive with opencores,ip-clock-frequency | ||
9 | - opencores,ip-clock-frequency: frequency of the controller clock in Hz; | ||
10 | see the note below. Mutually exclusive with clocks | ||
8 | - #address-cells : should be <1> | 11 | - #address-cells : should be <1> |
9 | - #size-cells : should be <0> | 12 | - #size-cells : should be <0> |
10 | 13 | ||
11 | Optional properties: | 14 | Optional properties: |
15 | - clock-frequency : frequency of bus clock in Hz; see the note below. | ||
16 | Defaults to 100 KHz when the property is not specified | ||
12 | - reg-shift : device register offsets are shifted by this value | 17 | - reg-shift : device register offsets are shifted by this value |
13 | - reg-io-width : io register width in bytes (1, 2 or 4) | 18 | - reg-io-width : io register width in bytes (1, 2 or 4) |
14 | - regstep : deprecated, use reg-shift above | 19 | - regstep : deprecated, use reg-shift above |
15 | 20 | ||
16 | Example: | 21 | Note |
22 | clock-frequency property is meant to control the bus frequency for i2c bus | ||
23 | drivers, but it was incorrectly used to specify i2c controller input clock | ||
24 | frequency. So the following rules are set to fix this situation: | ||
25 | - if clock-frequency is present and neither opencores,ip-clock-frequency nor | ||
26 | clocks are, then clock-frequency specifies i2c controller clock frequency. | ||
27 | This is to keep backwards compatibility with setups using old DTB. i2c bus | ||
28 | frequency is fixed at 100 KHz. | ||
29 | - if clocks is present it specifies i2c controller clock. clock-frequency | ||
30 | property specifies i2c bus frequency. | ||
31 | - if opencores,ip-clock-frequency is present it specifies i2c controller | ||
32 | clock frequency. clock-frequency property specifies i2c bus frequency. | ||
17 | 33 | ||
34 | Examples: | ||
35 | |||
36 | i2c0: ocores@a0000000 { | ||
37 | #address-cells = <1>; | ||
38 | #size-cells = <0>; | ||
39 | compatible = "opencores,i2c-ocores"; | ||
40 | reg = <0xa0000000 0x8>; | ||
41 | interrupts = <10>; | ||
42 | opencores,ip-clock-frequency = <20000000>; | ||
43 | |||
44 | reg-shift = <0>; /* 8 bit registers */ | ||
45 | reg-io-width = <1>; /* 8 bit read/write */ | ||
46 | |||
47 | dummy@60 { | ||
48 | compatible = "dummy"; | ||
49 | reg = <0x60>; | ||
50 | }; | ||
51 | }; | ||
52 | or | ||
18 | i2c0: ocores@a0000000 { | 53 | i2c0: ocores@a0000000 { |
19 | #address-cells = <1>; | 54 | #address-cells = <1>; |
20 | #size-cells = <0>; | 55 | #size-cells = <0>; |
21 | compatible = "opencores,i2c-ocores"; | 56 | compatible = "opencores,i2c-ocores"; |
22 | reg = <0xa0000000 0x8>; | 57 | reg = <0xa0000000 0x8>; |
23 | interrupts = <10>; | 58 | interrupts = <10>; |
24 | clock-frequency = <20000000>; | 59 | clocks = <&osc>; |
60 | clock-frequency = <400000>; /* i2c bus frequency 400 KHz */ | ||
25 | 61 | ||
26 | reg-shift = <0>; /* 8 bit registers */ | 62 | reg-shift = <0>; /* 8 bit registers */ |
27 | reg-io-width = <1>; /* 8 bit read/write */ | 63 | reg-io-width = <1>; /* 8 bit read/write */ |
diff --git a/Documentation/devicetree/bindings/i2c/i2c-rk3x.txt b/Documentation/devicetree/bindings/i2c/i2c-rk3x.txt index dde6c22ce91a..f0d71bc52e64 100644 --- a/Documentation/devicetree/bindings/i2c/i2c-rk3x.txt +++ b/Documentation/devicetree/bindings/i2c/i2c-rk3x.txt | |||
@@ -21,6 +21,17 @@ Required on RK3066, RK3188 : | |||
21 | Optional properties : | 21 | Optional properties : |
22 | 22 | ||
23 | - clock-frequency : SCL frequency to use (in Hz). If omitted, 100kHz is used. | 23 | - clock-frequency : SCL frequency to use (in Hz). If omitted, 100kHz is used. |
24 | - i2c-scl-rising-time-ns : Number of nanoseconds the SCL signal takes to rise | ||
25 | (t(r) in I2C specification). If not specified this is assumed to be | ||
26 | the maximum the specification allows(1000 ns for Standard-mode, | ||
27 | 300 ns for Fast-mode) which might cause slightly slower communication. | ||
28 | - i2c-scl-falling-time-ns : Number of nanoseconds the SCL signal takes to fall | ||
29 | (t(f) in the I2C specification). If not specified this is assumed to | ||
30 | be the maximum the specification allows (300 ns) which might cause | ||
31 | slightly slower communication. | ||
32 | - i2c-sda-falling-time-ns : Number of nanoseconds the SDA signal takes to fall | ||
33 | (t(f) in the I2C specification). If not specified we'll use the SCL | ||
34 | value since they are the same in nearly all cases. | ||
24 | 35 | ||
25 | Example: | 36 | Example: |
26 | 37 | ||
@@ -39,4 +50,7 @@ i2c0: i2c@2002d000 { | |||
39 | 50 | ||
40 | clock-names = "i2c"; | 51 | clock-names = "i2c"; |
41 | clocks = <&cru PCLK_I2C0>; | 52 | clocks = <&cru PCLK_I2C0>; |
53 | |||
54 | i2c-scl-rising-time-ns = <800>; | ||
55 | i2c-scl-falling-time-ns = <100>; | ||
42 | }; | 56 | }; |
diff --git a/Documentation/devicetree/bindings/i2c/i2c-st.txt b/Documentation/devicetree/bindings/i2c/i2c-st.txt index 437e0db3823c..4c26fda3844a 100644 --- a/Documentation/devicetree/bindings/i2c/i2c-st.txt +++ b/Documentation/devicetree/bindings/i2c/i2c-st.txt | |||
@@ -31,7 +31,7 @@ i2c0: i2c@fed40000 { | |||
31 | compatible = "st,comms-ssc4-i2c"; | 31 | compatible = "st,comms-ssc4-i2c"; |
32 | reg = <0xfed40000 0x110>; | 32 | reg = <0xfed40000 0x110>; |
33 | interrupts = <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH>; | 33 | interrupts = <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH>; |
34 | clocks = <&CLK_S_ICN_REG_0>; | 34 | clocks = <&clk_s_a0_ls CLK_ICN_REG>; |
35 | clock-names = "ssc"; | 35 | clock-names = "ssc"; |
36 | clock-frequency = <400000>; | 36 | clock-frequency = <400000>; |
37 | pinctrl-names = "default"; | 37 | pinctrl-names = "default"; |
diff --git a/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt b/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt index 87507e9ce6db..656716b72cc4 100644 --- a/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt +++ b/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt | |||
@@ -1,11 +1,11 @@ | |||
1 | NVIDIA Tegra20/Tegra30/Tegra114 I2C controller driver. | 1 | NVIDIA Tegra20/Tegra30/Tegra114 I2C controller driver. |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : should be: | 4 | - compatible : For Tegra20, must be one of "nvidia,tegra20-i2c-dvc" or |
5 | "nvidia,tegra114-i2c" | 5 | "nvidia,tegra20-i2c". For Tegra30, must be "nvidia,tegra30-i2c". |
6 | "nvidia,tegra30-i2c" | 6 | For Tegra114, must be "nvidia,tegra114-i2c". Otherwise, must be |
7 | "nvidia,tegra20-i2c" | 7 | "nvidia,<chip>-i2c", plus at least one of the above, where <chip> is |
8 | "nvidia,tegra20-i2c-dvc" | 8 | tegra124, tegra132, or tegra210. |
9 | Details of compatible are as follows: | 9 | Details of compatible are as follows: |
10 | nvidia,tegra20-i2c-dvc: Tegra20 has specific I2C controller called as DVC I2C | 10 | nvidia,tegra20-i2c-dvc: Tegra20 has specific I2C controller called as DVC I2C |
11 | controller. This only support master mode of I2C communication. Register | 11 | controller. This only support master mode of I2C communication. Register |
diff --git a/Documentation/devicetree/bindings/i2c/trivial-devices.txt b/Documentation/devicetree/bindings/i2c/trivial-devices.txt index 9f4e3824e71e..aaa8325004d2 100644 --- a/Documentation/devicetree/bindings/i2c/trivial-devices.txt +++ b/Documentation/devicetree/bindings/i2c/trivial-devices.txt | |||
@@ -9,6 +9,7 @@ document for it just like any other devices. | |||
9 | 9 | ||
10 | Compatible Vendor / Chip | 10 | Compatible Vendor / Chip |
11 | ========== ============= | 11 | ========== ============= |
12 | abracon,abb5zes3 AB-RTCMC-32.768kHz-B5ZE-S3: Real Time Clock/Calendar Module with I2C Interface | ||
12 | ad,ad7414 SMBus/I2C Digital Temperature Sensor in 6-Pin SOT with SMBus Alert and Over Temperature Pin | 13 | ad,ad7414 SMBus/I2C Digital Temperature Sensor in 6-Pin SOT with SMBus Alert and Over Temperature Pin |
13 | ad,adm9240 ADM9240: Complete System Hardware Monitor for uProcessor-Based Systems | 14 | ad,adm9240 ADM9240: Complete System Hardware Monitor for uProcessor-Based Systems |
14 | adi,adt7461 +/-1C TDM Extended Temp Range I.C | 15 | adi,adt7461 +/-1C TDM Extended Temp Range I.C |
@@ -34,6 +35,7 @@ atmel,24c512 i2c serial eeprom (24cxx) | |||
34 | atmel,24c1024 i2c serial eeprom (24cxx) | 35 | atmel,24c1024 i2c serial eeprom (24cxx) |
35 | atmel,at97sc3204t i2c trusted platform module (TPM) | 36 | atmel,at97sc3204t i2c trusted platform module (TPM) |
36 | capella,cm32181 CM32181: Ambient Light Sensor | 37 | capella,cm32181 CM32181: Ambient Light Sensor |
38 | capella,cm3232 CM3232: Ambient Light Sensor | ||
37 | catalyst,24c32 i2c serial eeprom | 39 | catalyst,24c32 i2c serial eeprom |
38 | cirrus,cs42l51 Cirrus Logic CS42L51 audio codec | 40 | cirrus,cs42l51 Cirrus Logic CS42L51 audio codec |
39 | dallas,ds1307 64 x 8, Serial, I2C Real-Time Clock | 41 | dallas,ds1307 64 x 8, Serial, I2C Real-Time Clock |
@@ -47,6 +49,7 @@ dallas,ds3232 Extremely Accurate I²C RTC with Integrated Crystal and SRAM | |||
47 | dallas,ds4510 CPU Supervisor with Nonvolatile Memory and Programmable I/O | 49 | dallas,ds4510 CPU Supervisor with Nonvolatile Memory and Programmable I/O |
48 | dallas,ds75 Digital Thermometer and Thermostat | 50 | dallas,ds75 Digital Thermometer and Thermostat |
49 | dlg,da9053 DA9053: flexible system level PMIC with multicore support | 51 | dlg,da9053 DA9053: flexible system level PMIC with multicore support |
52 | dlg,da9063 DA9063: system PMIC for quad-core application processors | ||
50 | epson,rx8025 High-Stability. I2C-Bus INTERFACE REAL TIME CLOCK MODULE | 53 | epson,rx8025 High-Stability. I2C-Bus INTERFACE REAL TIME CLOCK MODULE |
51 | epson,rx8581 I2C-BUS INTERFACE REAL TIME CLOCK MODULE | 54 | epson,rx8581 I2C-BUS INTERFACE REAL TIME CLOCK MODULE |
52 | fsl,mag3110 MAG3110: Xtrinsic High Accuracy, 3D Magnetometer | 55 | fsl,mag3110 MAG3110: Xtrinsic High Accuracy, 3D Magnetometer |
@@ -58,9 +61,8 @@ fsl,sgtl5000 SGTL5000: Ultra Low-Power Audio Codec | |||
58 | gmt,g751 G751: Digital Temperature Sensor and Thermal Watchdog with Two-Wire Interface | 61 | gmt,g751 G751: Digital Temperature Sensor and Thermal Watchdog with Two-Wire Interface |
59 | infineon,slb9635tt Infineon SLB9635 (Soft-) I2C TPM (old protocol, max 100khz) | 62 | infineon,slb9635tt Infineon SLB9635 (Soft-) I2C TPM (old protocol, max 100khz) |
60 | infineon,slb9645tt Infineon SLB9645 I2C TPM (new protocol, max 400khz) | 63 | infineon,slb9645tt Infineon SLB9645 I2C TPM (new protocol, max 400khz) |
61 | isl,isl12057 Intersil ISL12057 I2C RTC Chip | 64 | isil,isl12057 Intersil ISL12057 I2C RTC Chip |
62 | isil,isl29028 (deprecated, use isl) | 65 | isil,isl29028 Intersil ISL29028 Ambient Light and Proximity Sensor |
63 | isl,isl29028 Intersil ISL29028 Ambient Light and Proximity Sensor | ||
64 | maxim,ds1050 5 Bit Programmable, Pulse-Width Modulator | 66 | maxim,ds1050 5 Bit Programmable, Pulse-Width Modulator |
65 | maxim,max1237 Low-Power, 4-/12-Channel, 2-Wire Serial, 12-Bit ADCs | 67 | maxim,max1237 Low-Power, 4-/12-Channel, 2-Wire Serial, 12-Bit ADCs |
66 | maxim,max6625 9-Bit/12-Bit Temperature Sensors with I²C-Compatible Serial Interface | 68 | maxim,max6625 9-Bit/12-Bit Temperature Sensors with I²C-Compatible Serial Interface |
diff --git a/Documentation/devicetree/bindings/iio/adc/cc10001_adc.txt b/Documentation/devicetree/bindings/iio/adc/cc10001_adc.txt new file mode 100644 index 000000000000..904f76de9055 --- /dev/null +++ b/Documentation/devicetree/bindings/iio/adc/cc10001_adc.txt | |||
@@ -0,0 +1,22 @@ | |||
1 | * Cosmic Circuits - Analog to Digital Converter (CC-10001-ADC) | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be "cosmic,10001-adc" | ||
5 | - reg: Should contain adc registers location and length. | ||
6 | - clock-names: Should contain "adc". | ||
7 | - clocks: Should contain a clock specifier for each entry in clock-names | ||
8 | - vref-supply: The regulator supply ADC reference voltage. | ||
9 | |||
10 | Optional properties: | ||
11 | - adc-reserved-channels: Bitmask of reserved channels, | ||
12 | i.e. channels that cannot be used by the OS. | ||
13 | |||
14 | Example: | ||
15 | adc: adc@18101600 { | ||
16 | compatible = "cosmic,10001-adc"; | ||
17 | reg = <0x18101600 0x24>; | ||
18 | adc-reserved-channels = <0x2>; | ||
19 | clocks = <&adc_clk>; | ||
20 | clock-names = "adc"; | ||
21 | vref-supply = <®_1v8>; | ||
22 | }; | ||
diff --git a/Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.txt b/Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.txt new file mode 100644 index 000000000000..0fb46137f936 --- /dev/null +++ b/Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.txt | |||
@@ -0,0 +1,129 @@ | |||
1 | Qualcomm's SPMI PMIC voltage ADC | ||
2 | |||
3 | SPMI PMIC voltage ADC (VADC) provides interface to clients to read | ||
4 | voltage. The VADC is a 15-bit sigma-delta ADC. | ||
5 | |||
6 | VADC node: | ||
7 | |||
8 | - compatible: | ||
9 | Usage: required | ||
10 | Value type: <string> | ||
11 | Definition: Should contain "qcom,spmi-vadc". | ||
12 | |||
13 | - reg: | ||
14 | Usage: required | ||
15 | Value type: <prop-encoded-array> | ||
16 | Definition: VADC base address and length in the SPMI PMIC register map. | ||
17 | |||
18 | - #address-cells: | ||
19 | Usage: required | ||
20 | Value type: <u32> | ||
21 | Definition: Must be one. Child node 'reg' property should define ADC | ||
22 | channel number. | ||
23 | |||
24 | - #size-cells: | ||
25 | Usage: required | ||
26 | Value type: <u32> | ||
27 | Definition: Must be zero. | ||
28 | |||
29 | - #io-channel-cells: | ||
30 | Usage: required | ||
31 | Value type: <u32> | ||
32 | Definition: Must be one. For details about IIO bindings see: | ||
33 | Documentation/devicetree/bindings/iio/iio-bindings.txt | ||
34 | |||
35 | - interrupts: | ||
36 | Usage: optional | ||
37 | Value type: <prop-encoded-array> | ||
38 | Definition: End of conversion interrupt. | ||
39 | |||
40 | Channel node properties: | ||
41 | |||
42 | - reg: | ||
43 | Usage: required | ||
44 | Value type: <u32> | ||
45 | Definition: ADC channel number. | ||
46 | See include/dt-bindings/iio/qcom,spmi-vadc.h | ||
47 | |||
48 | - qcom,decimation: | ||
49 | Usage: optional | ||
50 | Value type: <u32> | ||
51 | Definition: This parameter is used to decrease ADC sampling rate. | ||
52 | Quicker measurements can be made by reducing decimation ratio. | ||
53 | Valid values are 512, 1024, 2048, 4096. | ||
54 | If property is not found, default value of 512 will be used. | ||
55 | |||
56 | - qcom,pre-scaling: | ||
57 | Usage: optional | ||
58 | Value type: <u32 array> | ||
59 | Definition: Used for scaling the channel input signal before the signal is | ||
60 | fed to VADC. The configuration for this node is to know the | ||
61 | pre-determined ratio and use it for post scaling. Select one from | ||
62 | the following options. | ||
63 | <1 1>, <1 3>, <1 4>, <1 6>, <1 20>, <1 8>, <10 81>, <1 10> | ||
64 | If property is not found default value depending on chip will be used. | ||
65 | |||
66 | - qcom,ratiometric: | ||
67 | Usage: optional | ||
68 | Value type: <empty> | ||
69 | Definition: Channel calibration type. If this property is specified | ||
70 | VADC will use the VDD reference (1.8V) and GND for channel | ||
71 | calibration. If property is not found, channel will be | ||
72 | calibrated with 0.625V and 1.25V reference channels, also | ||
73 | known as absolute calibration. | ||
74 | |||
75 | - qcom,hw-settle-time: | ||
76 | Usage: optional | ||
77 | Value type: <u32> | ||
78 | Definition: Time between AMUX getting configured and the ADC starting | ||
79 | conversion. Delay = 100us * (value) for value < 11, and | ||
80 | 2ms * (value - 10) otherwise. | ||
81 | Valid values are: 0, 100, 200, 300, 400, 500, 600, 700, 800, | ||
82 | 900 us and 1, 2, 4, 6, 8, 10 ms | ||
83 | If property is not found, channel will use 0us. | ||
84 | |||
85 | - qcom,avg-samples: | ||
86 | Usage: optional | ||
87 | Value type: <u32> | ||
88 | Definition: Number of samples to be used for measurement. | ||
89 | Averaging provides the option to obtain a single measurement | ||
90 | from the ADC that is an average of multiple samples. The value | ||
91 | selected is 2^(value). | ||
92 | Valid values are: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 | ||
93 | If property is not found, 1 sample will be used. | ||
94 | |||
95 | NOTE: | ||
96 | |||
97 | Following channels, also known as reference point channels, are used for | ||
98 | result calibration and their channel configuration nodes should be defined: | ||
99 | VADC_REF_625MV and/or VADC_SPARE1(based on PMIC version) VADC_REF_1250MV, | ||
100 | VADC_GND_REF and VADC_VDD_VADC. | ||
101 | |||
102 | Example: | ||
103 | |||
104 | /* VADC node */ | ||
105 | pmic_vadc: vadc@3100 { | ||
106 | compatible = "qcom,spmi-vadc"; | ||
107 | reg = <0x3100 0x100>; | ||
108 | interrupts = <0x0 0x31 0x0 IRQ_TYPE_EDGE_RISING>; | ||
109 | #address-cells = <1>; | ||
110 | #size-cells = <0>; | ||
111 | #io-channel-cells = <1>; | ||
112 | io-channel-ranges; | ||
113 | |||
114 | /* Channel node */ | ||
115 | usb_id_nopull { | ||
116 | reg = <VADC_LR_MUX10_USB_ID>; | ||
117 | qcom,decimation = <512>; | ||
118 | qcom,ratiometric; | ||
119 | qcom,hw-settle-time = <200>; | ||
120 | qcom,avg-samples = <1>; | ||
121 | qcom,pre-scaling = <1 3>; | ||
122 | }; | ||
123 | }; | ||
124 | |||
125 | /* IIO client node */ | ||
126 | usb { | ||
127 | io-channels = <&pmic_vadc VADC_LR_MUX10_USB_ID>; | ||
128 | io-channel-names = "vadc"; | ||
129 | }; | ||
diff --git a/Documentation/devicetree/bindings/iio/adc/xilinx-xadc.txt b/Documentation/devicetree/bindings/iio/adc/xilinx-xadc.txt index d9ee909d2b78..d71258e2d456 100644 --- a/Documentation/devicetree/bindings/iio/adc/xilinx-xadc.txt +++ b/Documentation/devicetree/bindings/iio/adc/xilinx-xadc.txt | |||
@@ -59,7 +59,7 @@ Optional properties: | |||
59 | Each child node represents one channel and has the following | 59 | Each child node represents one channel and has the following |
60 | properties: | 60 | properties: |
61 | Required properties: | 61 | Required properties: |
62 | * reg: Pair of pins the the channel is connected to. | 62 | * reg: Pair of pins the channel is connected to. |
63 | 0: VP/VN | 63 | 0: VP/VN |
64 | 1: VAUXP[0]/VAUXN[0] | 64 | 1: VAUXP[0]/VAUXN[0] |
65 | 2: VAUXP[1]/VAUXN[1] | 65 | 2: VAUXP[1]/VAUXN[1] |
diff --git a/Documentation/devicetree/bindings/iio/sensorhub.txt b/Documentation/devicetree/bindings/iio/sensorhub.txt new file mode 100644 index 000000000000..8d57571d5c0b --- /dev/null +++ b/Documentation/devicetree/bindings/iio/sensorhub.txt | |||
@@ -0,0 +1,25 @@ | |||
1 | Samsung Sensorhub driver | ||
2 | |||
3 | Sensorhub is a MCU which manages several sensors and also plays the role | ||
4 | of a virtual sensor device. | ||
5 | |||
6 | Required properties: | ||
7 | - compatible: "samsung,sensorhub-rinato" or "samsung,sensorhub-thermostat" | ||
8 | - spi-max-frequency: max SPI clock frequency | ||
9 | - interrupt-parent: interrupt parent | ||
10 | - interrupts: communication interrupt | ||
11 | - ap-mcu-gpios: [out] ap to sensorhub line - used during communication | ||
12 | - mcu-ap-gpios: [in] sensorhub to ap - used during communication | ||
13 | - mcu-reset-gpios: [out] sensorhub reset | ||
14 | |||
15 | Example: | ||
16 | |||
17 | shub_spi: shub { | ||
18 | compatible = "samsung,sensorhub-rinato"; | ||
19 | spi-max-frequency = <5000000>; | ||
20 | interrupt-parent = <&gpx0>; | ||
21 | interrupts = <2 0>; | ||
22 | ap-mcu-gpios = <&gpx0 0 0>; | ||
23 | mcu-ap-gpios = <&gpx0 4 0>; | ||
24 | mcu-reset-gpios = <&gpx0 5 0>; | ||
25 | }; | ||
diff --git a/Documentation/devicetree/bindings/input/e3x0-button.txt b/Documentation/devicetree/bindings/input/e3x0-button.txt new file mode 100644 index 000000000000..751665e8e47a --- /dev/null +++ b/Documentation/devicetree/bindings/input/e3x0-button.txt | |||
@@ -0,0 +1,25 @@ | |||
1 | National Instruments Ettus Research USRP E3x0 button driver | ||
2 | |||
3 | This module is part of the NI Ettus Research USRP E3x0 SDR. | ||
4 | |||
5 | This module provides a simple power button event via two interrupts. | ||
6 | |||
7 | Required properties: | ||
8 | - compatible: should be one of the following | ||
9 | - "ettus,e3x0-button": For devices such as the NI Ettus Research USRP E3x0 | ||
10 | - interrupt-parent: | ||
11 | - a phandle to the interrupt controller that it is attached to. | ||
12 | - interrupts: should be one of the following | ||
13 | - <0 30 1>, <0 31 1>: For devices such as the NI Ettus Research USRP E3x0 | ||
14 | - interrupt-names: should be one of the following | ||
15 | - "press", "release": For devices such as the NI Ettus Research USRP E3x0 | ||
16 | |||
17 | Note: Interrupt numbers might vary depending on the FPGA configuration. | ||
18 | |||
19 | Example: | ||
20 | button { | ||
21 | compatible = "ettus,e3x0-button"; | ||
22 | interrupt-parent = <&intc>; | ||
23 | interrupts = <0 30 1>, <0 31 1>; | ||
24 | interrupt-names = "press", "release"; | ||
25 | } | ||
diff --git a/Documentation/devicetree/bindings/input/regulator-haptic.txt b/Documentation/devicetree/bindings/input/regulator-haptic.txt new file mode 100644 index 000000000000..3ed1c7eb2f97 --- /dev/null +++ b/Documentation/devicetree/bindings/input/regulator-haptic.txt | |||
@@ -0,0 +1,21 @@ | |||
1 | * Regulator Haptic Device Tree Bindings | ||
2 | |||
3 | Required Properties: | ||
4 | - compatible : Should be "regulator-haptic" | ||
5 | - haptic-supply : Power supply to the haptic motor. | ||
6 | [*] refer Documentation/devicetree/bindings/regulator/regulator.txt | ||
7 | |||
8 | - max-microvolt : The maximum voltage value supplied to the haptic motor. | ||
9 | [The unit of the voltage is a micro] | ||
10 | |||
11 | - min-microvolt : The minimum voltage value supplied to the haptic motor. | ||
12 | [The unit of the voltage is a micro] | ||
13 | |||
14 | Example: | ||
15 | |||
16 | haptics { | ||
17 | compatible = "regulator-haptic"; | ||
18 | haptic-supply = <&motor_regulator>; | ||
19 | max-microvolt = <2700000>; | ||
20 | min-microvolt = <1100000>; | ||
21 | }; | ||
diff --git a/Documentation/devicetree/bindings/input/sun4i-lradc-keys.txt b/Documentation/devicetree/bindings/input/sun4i-lradc-keys.txt new file mode 100644 index 000000000000..b9c32f6fd687 --- /dev/null +++ b/Documentation/devicetree/bindings/input/sun4i-lradc-keys.txt | |||
@@ -0,0 +1,62 @@ | |||
1 | Allwinner sun4i low res adc attached tablet keys | ||
2 | ------------------------------------------------ | ||
3 | |||
4 | Required properties: | ||
5 | - compatible: "allwinner,sun4i-a10-lradc-keys" | ||
6 | - reg: mmio address range of the chip | ||
7 | - interrupts: interrupt to which the chip is connected | ||
8 | - vref-supply: powersupply for the lradc reference voltage | ||
9 | |||
10 | Each key is represented as a sub-node of "allwinner,sun4i-a10-lradc-keys": | ||
11 | |||
12 | Required subnode-properties: | ||
13 | - label: Descriptive name of the key. | ||
14 | - linux,code: Keycode to emit. | ||
15 | - channel: Channel this key is attached to, mut be 0 or 1. | ||
16 | - voltage: Voltage in µV at lradc input when this key is pressed. | ||
17 | |||
18 | Example: | ||
19 | |||
20 | #include <dt-bindings/input/input.h> | ||
21 | |||
22 | lradc: lradc@01c22800 { | ||
23 | compatible = "allwinner,sun4i-a10-lradc-keys"; | ||
24 | reg = <0x01c22800 0x100>; | ||
25 | interrupts = <31>; | ||
26 | vref-supply = <®_vcc3v0>; | ||
27 | |||
28 | button@191 { | ||
29 | label = "Volume Up"; | ||
30 | linux,code = <KEY_VOLUMEUP>; | ||
31 | channel = <0>; | ||
32 | voltage = <191274>; | ||
33 | }; | ||
34 | |||
35 | button@392 { | ||
36 | label = "Volume Down"; | ||
37 | linux,code = <KEY_VOLUMEDOWN>; | ||
38 | channel = <0>; | ||
39 | voltage = <392644>; | ||
40 | }; | ||
41 | |||
42 | button@601 { | ||
43 | label = "Menu"; | ||
44 | linux,code = <KEY_MENU>; | ||
45 | channel = <0>; | ||
46 | voltage = <601151>; | ||
47 | }; | ||
48 | |||
49 | button@795 { | ||
50 | label = "Enter"; | ||
51 | linux,code = <KEY_ENTER>; | ||
52 | channel = <0>; | ||
53 | voltage = <795090>; | ||
54 | }; | ||
55 | |||
56 | button@987 { | ||
57 | label = "Home"; | ||
58 | linux,code = <KEY_HOMEPAGE>; | ||
59 | channel = <0>; | ||
60 | voltage = <987387>; | ||
61 | }; | ||
62 | }; | ||
diff --git a/Documentation/devicetree/bindings/input/touchscreen/sun4i.txt b/Documentation/devicetree/bindings/input/touchscreen/sun4i.txt index aef57791f40b..433332d3b2ba 100644 --- a/Documentation/devicetree/bindings/input/touchscreen/sun4i.txt +++ b/Documentation/devicetree/bindings/input/touchscreen/sun4i.txt | |||
@@ -2,9 +2,10 @@ sun4i resistive touchscreen controller | |||
2 | -------------------------------------- | 2 | -------------------------------------- |
3 | 3 | ||
4 | Required properties: | 4 | Required properties: |
5 | - compatible: "allwinner,sun4i-a10-ts" | 5 | - compatible: "allwinner,sun4i-a10-ts" or "allwinner,sun6i-a31-ts" |
6 | - reg: mmio address range of the chip | 6 | - reg: mmio address range of the chip |
7 | - interrupts: interrupt to which the chip is connected | 7 | - interrupts: interrupt to which the chip is connected |
8 | - #thermal-sensor-cells: shall be 0 | ||
8 | 9 | ||
9 | Optional properties: | 10 | Optional properties: |
10 | - allwinner,ts-attached: boolean indicating that an actual touchscreen is | 11 | - allwinner,ts-attached: boolean indicating that an actual touchscreen is |
@@ -17,4 +18,5 @@ Example: | |||
17 | reg = <0x01c25000 0x100>; | 18 | reg = <0x01c25000 0x100>; |
18 | interrupts = <29>; | 19 | interrupts = <29>; |
19 | allwinner,ts-attached; | 20 | allwinner,ts-attached; |
21 | #thermal-sensor-cells = <0>; | ||
20 | }; | 22 | }; |
diff --git a/Documentation/devicetree/bindings/input/touchscreen/ti-tsc-adc.txt b/Documentation/devicetree/bindings/input/touchscreen/ti-tsc-adc.txt index 878549ba814d..6c4fb34823d3 100644 --- a/Documentation/devicetree/bindings/input/touchscreen/ti-tsc-adc.txt +++ b/Documentation/devicetree/bindings/input/touchscreen/ti-tsc-adc.txt | |||
@@ -28,6 +28,20 @@ Required properties: | |||
28 | ti,adc-channels: List of analog inputs available for ADC. | 28 | ti,adc-channels: List of analog inputs available for ADC. |
29 | AIN0 = 0, AIN1 = 1 and so on till AIN7 = 7. | 29 | AIN0 = 0, AIN1 = 1 and so on till AIN7 = 7. |
30 | 30 | ||
31 | Optional properties: | ||
32 | - child "tsc" | ||
33 | ti,charge-delay: Length of touch screen charge delay step in terms of | ||
34 | ADC clock cycles. Charge delay value should be large | ||
35 | in order to avoid false pen-up events. This value | ||
36 | effects the overall sampling speed, hence need to be | ||
37 | kept as low as possible, while avoiding false pen-up | ||
38 | event. Start from a lower value, say 0x400, and | ||
39 | increase value until false pen-up events are avoided. | ||
40 | The pen-up detection happens immediately after the | ||
41 | charge step, so this does in fact function as a | ||
42 | hardware knob for adjusting the amount of "settling | ||
43 | time". | ||
44 | |||
31 | Example: | 45 | Example: |
32 | tscadc: tscadc@44e0d000 { | 46 | tscadc: tscadc@44e0d000 { |
33 | compatible = "ti,am3359-tscadc"; | 47 | compatible = "ti,am3359-tscadc"; |
@@ -36,6 +50,7 @@ Example: | |||
36 | ti,x-plate-resistance = <200>; | 50 | ti,x-plate-resistance = <200>; |
37 | ti,coordiante-readouts = <5>; | 51 | ti,coordiante-readouts = <5>; |
38 | ti,wire-config = <0x00 0x11 0x22 0x33>; | 52 | ti,wire-config = <0x00 0x11 0x22 0x33>; |
53 | ti,charge-delay = <0x400>; | ||
39 | }; | 54 | }; |
40 | 55 | ||
41 | adc { | 56 | adc { |
diff --git a/Documentation/devicetree/bindings/input/tps65218-pwrbutton.txt b/Documentation/devicetree/bindings/input/tps65218-pwrbutton.txt new file mode 100644 index 000000000000..e30e0b93f2b3 --- /dev/null +++ b/Documentation/devicetree/bindings/input/tps65218-pwrbutton.txt | |||
@@ -0,0 +1,17 @@ | |||
1 | Texas Instruments TPS65218 power button | ||
2 | |||
3 | This driver provides a simple power button event via an Interrupt. | ||
4 | |||
5 | Required properties: | ||
6 | - compatible: should be "ti,tps65218-pwrbutton" | ||
7 | - interrupts: should be one of the following | ||
8 | - <3 IRQ_TYPE_EDGE_BOTH>: For controllers compatible with tps65218 | ||
9 | |||
10 | Example: | ||
11 | |||
12 | &tps { | ||
13 | power-button { | ||
14 | compatible = "ti,tps65218-pwrbutton"; | ||
15 | interrupts = <3 IRQ_TYPE_EDGE_BOTH>; | ||
16 | }; | ||
17 | }; | ||
diff --git a/Documentation/devicetree/bindings/interrupt-controller/digicolor-ic.txt b/Documentation/devicetree/bindings/interrupt-controller/digicolor-ic.txt new file mode 100644 index 000000000000..42d41ec84c7b --- /dev/null +++ b/Documentation/devicetree/bindings/interrupt-controller/digicolor-ic.txt | |||
@@ -0,0 +1,21 @@ | |||
1 | Conexant Digicolor Interrupt Controller | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible : should be "cnxt,cx92755-ic" | ||
6 | - reg : Specifies base physical address and size of the interrupt controller | ||
7 | registers (IC) area | ||
8 | - interrupt-controller : Identifies the node as an interrupt controller | ||
9 | - #interrupt-cells : Specifies the number of cells needed to encode an | ||
10 | interrupt source. The value shall be 1. | ||
11 | - syscon: A phandle to the syscon node describing UC registers | ||
12 | |||
13 | Example: | ||
14 | |||
15 | intc: interrupt-controller@f0000040 { | ||
16 | compatible = "cnxt,cx92755-ic"; | ||
17 | interrupt-controller; | ||
18 | #interrupt-cells = <1>; | ||
19 | reg = <0xf0000040 0x40>; | ||
20 | syscon = <&uc_regs>; | ||
21 | }; | ||
diff --git a/Documentation/devicetree/bindings/interrupt-controller/renesas,intc-irqpin.txt b/Documentation/devicetree/bindings/interrupt-controller/renesas,intc-irqpin.txt index c73acd060093..4f7946ae8adc 100644 --- a/Documentation/devicetree/bindings/interrupt-controller/renesas,intc-irqpin.txt +++ b/Documentation/devicetree/bindings/interrupt-controller/renesas,intc-irqpin.txt | |||
@@ -9,6 +9,11 @@ Required properties: | |||
9 | - "renesas,intc-irqpin-r8a7778" (R-Car M1A) | 9 | - "renesas,intc-irqpin-r8a7778" (R-Car M1A) |
10 | - "renesas,intc-irqpin-r8a7779" (R-Car H1) | 10 | - "renesas,intc-irqpin-r8a7779" (R-Car H1) |
11 | - "renesas,intc-irqpin-sh73a0" (SH-Mobile AG5) | 11 | - "renesas,intc-irqpin-sh73a0" (SH-Mobile AG5) |
12 | |||
13 | - reg: Base address and length of each register bank used by the external | ||
14 | IRQ pins driven by the interrupt controller hardware module. The base | ||
15 | addresses, length and number of required register banks varies with soctype. | ||
16 | |||
12 | - #interrupt-cells: has to be <2>: an interrupt index and flags, as defined in | 17 | - #interrupt-cells: has to be <2>: an interrupt index and flags, as defined in |
13 | interrupts.txt in this directory | 18 | interrupts.txt in this directory |
14 | 19 | ||
diff --git a/Documentation/devicetree/bindings/interrupt-controller/ti,omap-intc-irq.txt b/Documentation/devicetree/bindings/interrupt-controller/ti,omap-intc-irq.txt new file mode 100644 index 000000000000..38ce5d037722 --- /dev/null +++ b/Documentation/devicetree/bindings/interrupt-controller/ti,omap-intc-irq.txt | |||
@@ -0,0 +1,28 @@ | |||
1 | Omap2/3 intc controller | ||
2 | |||
3 | On TI omap2 and 3 the intc interrupt controller can provide | ||
4 | 96 or 128 IRQ signals to the ARM host depending on the SoC. | ||
5 | |||
6 | Required Properties: | ||
7 | - compatible: should be one of | ||
8 | "ti,omap2-intc" | ||
9 | "ti,omap3-intc" | ||
10 | "ti,dm814-intc" | ||
11 | "ti,dm816-intc" | ||
12 | "ti,am33xx-intc" | ||
13 | |||
14 | - interrupt-controller : Identifies the node as an interrupt controller | ||
15 | - #interrupt-cells : Specifies the number of cells needed to encode interrupt | ||
16 | source, should be 1 for intc | ||
17 | - interrupts: interrupt reference to primary interrupt controller | ||
18 | |||
19 | Please refer to interrupts.txt in this directory for details of the common | ||
20 | Interrupt Controllers bindings used by client devices. | ||
21 | |||
22 | Example: | ||
23 | intc: interrupt-controller@48200000 { | ||
24 | compatible = "ti,omap3-intc"; | ||
25 | interrupt-controller; | ||
26 | #interrupt-cells = <1>; | ||
27 | reg = <0x48200000 0x1000>; | ||
28 | }; | ||
diff --git a/Documentation/devicetree/bindings/iommu/renesas,ipmmu-vmsa.txt b/Documentation/devicetree/bindings/iommu/renesas,ipmmu-vmsa.txt new file mode 100644 index 000000000000..cd29083e16ec --- /dev/null +++ b/Documentation/devicetree/bindings/iommu/renesas,ipmmu-vmsa.txt | |||
@@ -0,0 +1,41 @@ | |||
1 | * Renesas VMSA-Compatible IOMMU | ||
2 | |||
3 | The IPMMU is an IOMMU implementation compatible with the ARM VMSA page tables. | ||
4 | It provides address translation for bus masters outside of the CPU, each | ||
5 | connected to the IPMMU through a port called micro-TLB. | ||
6 | |||
7 | |||
8 | Required Properties: | ||
9 | |||
10 | - compatible: Must contain "renesas,ipmmu-vmsa". | ||
11 | - reg: Base address and size of the IPMMU registers. | ||
12 | - interrupts: Specifiers for the MMU fault interrupts. For instances that | ||
13 | support secure mode two interrupts must be specified, for non-secure and | ||
14 | secure mode, in that order. For instances that don't support secure mode a | ||
15 | single interrupt must be specified. | ||
16 | |||
17 | - #iommu-cells: Must be 1. | ||
18 | |||
19 | Each bus master connected to an IPMMU must reference the IPMMU in its device | ||
20 | node with the following property: | ||
21 | |||
22 | - iommus: A reference to the IPMMU in two cells. The first cell is a phandle | ||
23 | to the IPMMU and the second cell the number of the micro-TLB that the | ||
24 | device is connected to. | ||
25 | |||
26 | |||
27 | Example: R8A7791 IPMMU-MX and VSP1-D0 bus master | ||
28 | |||
29 | ipmmu_mx: mmu@fe951000 { | ||
30 | compatible = "renasas,ipmmu-vmsa"; | ||
31 | reg = <0 0xfe951000 0 0x1000>; | ||
32 | interrupts = <0 222 IRQ_TYPE_LEVEL_HIGH>, | ||
33 | <0 221 IRQ_TYPE_LEVEL_HIGH>; | ||
34 | #iommu-cells = <1>; | ||
35 | }; | ||
36 | |||
37 | vsp1@fe928000 { | ||
38 | ... | ||
39 | iommus = <&ipmmu_mx 13>; | ||
40 | ... | ||
41 | }; | ||
diff --git a/Documentation/devicetree/bindings/iommu/samsung,sysmmu.txt b/Documentation/devicetree/bindings/iommu/samsung,sysmmu.txt index 6fa4c737af23..729543c47046 100644 --- a/Documentation/devicetree/bindings/iommu/samsung,sysmmu.txt +++ b/Documentation/devicetree/bindings/iommu/samsung,sysmmu.txt | |||
@@ -45,7 +45,7 @@ Required properties: | |||
45 | Exynos4 SoCs, there needs no "master" clock. | 45 | Exynos4 SoCs, there needs no "master" clock. |
46 | Exynos5 SoCs, some System MMUs must have "master" clocks. | 46 | Exynos5 SoCs, some System MMUs must have "master" clocks. |
47 | - clocks: Required if the System MMU is needed to gate its clock. | 47 | - clocks: Required if the System MMU is needed to gate its clock. |
48 | - samsung,power-domain: Required if the System MMU is needed to gate its power. | 48 | - power-domains: Required if the System MMU is needed to gate its power. |
49 | Please refer to the following document: | 49 | Please refer to the following document: |
50 | Documentation/devicetree/bindings/arm/exynos/power_domain.txt | 50 | Documentation/devicetree/bindings/arm/exynos/power_domain.txt |
51 | 51 | ||
@@ -54,7 +54,7 @@ Examples: | |||
54 | compatible = "samsung,exynos5-gsc"; | 54 | compatible = "samsung,exynos5-gsc"; |
55 | reg = <0x13e00000 0x1000>; | 55 | reg = <0x13e00000 0x1000>; |
56 | interrupts = <0 85 0>; | 56 | interrupts = <0 85 0>; |
57 | samsung,power-domain = <&pd_gsc>; | 57 | power-domains = <&pd_gsc>; |
58 | clocks = <&clock CLK_GSCL0>; | 58 | clocks = <&clock CLK_GSCL0>; |
59 | clock-names = "gscl"; | 59 | clock-names = "gscl"; |
60 | }; | 60 | }; |
@@ -66,5 +66,5 @@ Examples: | |||
66 | interrupts = <2 0>; | 66 | interrupts = <2 0>; |
67 | clock-names = "sysmmu", "master"; | 67 | clock-names = "sysmmu", "master"; |
68 | clocks = <&clock CLK_SMMU_GSCL0>, <&clock CLK_GSCL0>; | 68 | clocks = <&clock CLK_SMMU_GSCL0>, <&clock CLK_GSCL0>; |
69 | samsung,power-domain = <&pd_gsc>; | 69 | power-domains = <&pd_gsc>; |
70 | }; | 70 | }; |
diff --git a/Documentation/devicetree/bindings/leds/common.txt b/Documentation/devicetree/bindings/leds/common.txt index 2d88816dd550..34811c57db69 100644 --- a/Documentation/devicetree/bindings/leds/common.txt +++ b/Documentation/devicetree/bindings/leds/common.txt | |||
@@ -1,6 +1,19 @@ | |||
1 | Common leds properties. | 1 | Common leds properties. |
2 | 2 | ||
3 | LED and flash LED devices provide the same basic functionality as current | ||
4 | regulators, but extended with LED and flash LED specific features like | ||
5 | blinking patterns, flash timeout, flash faults and external flash strobe mode. | ||
6 | |||
7 | Many LED devices expose more than one current output that can be connected | ||
8 | to one or more discrete LED component. Since the arrangement of connections | ||
9 | can influence the way of the LED device initialization, the LED components | ||
10 | have to be tightly coupled with the LED device binding. They are represented | ||
11 | by child nodes of the parent LED device binding. | ||
12 | |||
3 | Optional properties for child nodes: | 13 | Optional properties for child nodes: |
14 | - led-sources : List of device current outputs the LED is connected to. The | ||
15 | outputs are identified by the numbers that must be defined | ||
16 | in the LED device binding documentation. | ||
4 | - label : The label for this LED. If omitted, the label is | 17 | - label : The label for this LED. If omitted, the label is |
5 | taken from the node name (excluding the unit address). | 18 | taken from the node name (excluding the unit address). |
6 | 19 | ||
@@ -14,6 +27,15 @@ Optional properties for child nodes: | |||
14 | "ide-disk" - LED indicates disk activity | 27 | "ide-disk" - LED indicates disk activity |
15 | "timer" - LED flashes at a fixed, configurable rate | 28 | "timer" - LED flashes at a fixed, configurable rate |
16 | 29 | ||
30 | - max-microamp : maximum intensity in microamperes of the LED | ||
31 | (torch LED for flash devices) | ||
32 | - flash-max-microamp : maximum intensity in microamperes of the | ||
33 | flash LED; it is mandatory if the LED should | ||
34 | support the flash mode | ||
35 | - flash-timeout-us : timeout in microseconds after which the flash | ||
36 | LED is turned off | ||
37 | |||
38 | |||
17 | Examples: | 39 | Examples: |
18 | 40 | ||
19 | system-status { | 41 | system-status { |
@@ -21,3 +43,11 @@ system-status { | |||
21 | linux,default-trigger = "heartbeat"; | 43 | linux,default-trigger = "heartbeat"; |
22 | ... | 44 | ... |
23 | }; | 45 | }; |
46 | |||
47 | camera-flash { | ||
48 | label = "Flash"; | ||
49 | led-sources = <0>, <1>; | ||
50 | max-microamp = <50000>; | ||
51 | flash-max-microamp = <320000>; | ||
52 | flash-timeout-us = <500000>; | ||
53 | }; | ||
diff --git a/Documentation/devicetree/bindings/mailbox/altera-mailbox.txt b/Documentation/devicetree/bindings/mailbox/altera-mailbox.txt new file mode 100644 index 000000000000..c2619797ce0c --- /dev/null +++ b/Documentation/devicetree/bindings/mailbox/altera-mailbox.txt | |||
@@ -0,0 +1,49 @@ | |||
1 | Altera Mailbox Driver | ||
2 | ===================== | ||
3 | |||
4 | Required properties: | ||
5 | - compatible : "altr,mailbox-1.0". | ||
6 | - reg : physical base address of the mailbox and length of | ||
7 | memory mapped region. | ||
8 | - #mbox-cells: Common mailbox binding property to identify the number | ||
9 | of cells required for the mailbox specifier. Should be 1. | ||
10 | |||
11 | Optional properties: | ||
12 | - interrupt-parent : interrupt source phandle. | ||
13 | - interrupts : interrupt number. The interrupt specifier format | ||
14 | depends on the interrupt controller parent. | ||
15 | |||
16 | Example: | ||
17 | mbox_tx: mailbox@0x100 { | ||
18 | compatible = "altr,mailbox-1.0"; | ||
19 | reg = <0x100 0x8>; | ||
20 | interrupt-parent = < &gic_0 >; | ||
21 | interrupts = <5>; | ||
22 | #mbox-cells = <1>; | ||
23 | }; | ||
24 | |||
25 | mbox_rx: mailbox@0x200 { | ||
26 | compatible = "altr,mailbox-1.0"; | ||
27 | reg = <0x200 0x8>; | ||
28 | interrupt-parent = < &gic_0 >; | ||
29 | interrupts = <6>; | ||
30 | #mbox-cells = <1>; | ||
31 | }; | ||
32 | |||
33 | Mailbox client | ||
34 | =============== | ||
35 | "mboxes" and the optional "mbox-names" (please see | ||
36 | Documentation/devicetree/bindings/mailbox/mailbox.txt for details). Each value | ||
37 | of the mboxes property should contain a phandle to the mailbox controller | ||
38 | device node and second argument is the channel index. It must be 0 (hardware | ||
39 | support only one channel).The equivalent "mbox-names" property value can be | ||
40 | used to give a name to the communication channel to be used by the client user. | ||
41 | |||
42 | Example: | ||
43 | mclient0: mclient0@0x400 { | ||
44 | compatible = "client-1.0"; | ||
45 | reg = <0x400 0x10>; | ||
46 | mbox-names = "mbox-tx", "mbox-rx"; | ||
47 | mboxes = <&mbox_tx 0>, | ||
48 | <&mbox_rx 0>; | ||
49 | }; | ||
diff --git a/Documentation/devicetree/bindings/media/atmel-isi.txt b/Documentation/devicetree/bindings/media/atmel-isi.txt index 17e71b7b44c6..251f008f220c 100644 --- a/Documentation/devicetree/bindings/media/atmel-isi.txt +++ b/Documentation/devicetree/bindings/media/atmel-isi.txt | |||
@@ -38,7 +38,7 @@ Example: | |||
38 | 38 | ||
39 | i2c1: i2c@f0018000 { | 39 | i2c1: i2c@f0018000 { |
40 | ov2640: camera@0x30 { | 40 | ov2640: camera@0x30 { |
41 | compatible = "omnivision,ov2640"; | 41 | compatible = "ovti,ov2640"; |
42 | reg = <0x30>; | 42 | reg = <0x30>; |
43 | 43 | ||
44 | port { | 44 | port { |
diff --git a/Documentation/devicetree/bindings/media/i2c/nokia,smia.txt b/Documentation/devicetree/bindings/media/i2c/nokia,smia.txt new file mode 100644 index 000000000000..855e1faf73e2 --- /dev/null +++ b/Documentation/devicetree/bindings/media/i2c/nokia,smia.txt | |||
@@ -0,0 +1,63 @@ | |||
1 | SMIA/SMIA++ sensor | ||
2 | |||
3 | SMIA (Standard Mobile Imaging Architecture) is an image sensor standard | ||
4 | defined jointly by Nokia and ST. SMIA++, defined by Nokia, is an extension | ||
5 | of that. These definitions are valid for both types of sensors. | ||
6 | |||
7 | More detailed documentation can be found in | ||
8 | Documentation/devicetree/bindings/media/video-interfaces.txt . | ||
9 | |||
10 | |||
11 | Mandatory properties | ||
12 | -------------------- | ||
13 | |||
14 | - compatible: "nokia,smia" | ||
15 | - reg: I2C address (0x10, or an alternative address) | ||
16 | - vana-supply: Analogue voltage supply (VANA), typically 2,8 volts (sensor | ||
17 | dependent). | ||
18 | - clocks: External clock to the sensor | ||
19 | - clock-frequency: Frequency of the external clock to the sensor | ||
20 | - link-frequencies: List of allowed data link frequencies. An array of | ||
21 | 64-bit elements. | ||
22 | |||
23 | |||
24 | Optional properties | ||
25 | ------------------- | ||
26 | |||
27 | - nokia,nvm-size: The size of the NVM, in bytes. If the size is not given, | ||
28 | the NVM contents will not be read. | ||
29 | - reset-gpios: XSHUTDOWN GPIO | ||
30 | |||
31 | |||
32 | Endpoint node mandatory properties | ||
33 | ---------------------------------- | ||
34 | |||
35 | - clock-lanes: <0> | ||
36 | - data-lanes: <1..n> | ||
37 | - remote-endpoint: A phandle to the bus receiver's endpoint node. | ||
38 | |||
39 | |||
40 | Example | ||
41 | ------- | ||
42 | |||
43 | &i2c2 { | ||
44 | clock-frequency = <400000>; | ||
45 | |||
46 | smiapp_1: camera@10 { | ||
47 | compatible = "nokia,smia"; | ||
48 | reg = <0x10>; | ||
49 | reset-gpios = <&gpio3 20 0>; | ||
50 | vana-supply = <&vaux3>; | ||
51 | clocks = <&omap3_isp 0>; | ||
52 | clock-frequency = <9600000>; | ||
53 | nokia,nvm-size = <512>; /* 8 * 64 */ | ||
54 | link-frequencies = /bits/ 64 <199200000 210000000 499200000>; | ||
55 | port { | ||
56 | smiapp_1_1: endpoint { | ||
57 | clock-lanes = <0>; | ||
58 | data-lanes = <1 2>; | ||
59 | remote-endpoint = <&csi2a_ep>; | ||
60 | }; | ||
61 | }; | ||
62 | }; | ||
63 | }; | ||
diff --git a/Documentation/devicetree/bindings/media/s5p-mfc.txt b/Documentation/devicetree/bindings/media/s5p-mfc.txt index 3e3c5f349570..2d5787eac91a 100644 --- a/Documentation/devicetree/bindings/media/s5p-mfc.txt +++ b/Documentation/devicetree/bindings/media/s5p-mfc.txt | |||
@@ -28,7 +28,7 @@ Required properties: | |||
28 | for DMA contiguous memory allocation and its size. | 28 | for DMA contiguous memory allocation and its size. |
29 | 29 | ||
30 | Optional properties: | 30 | Optional properties: |
31 | - samsung,power-domain : power-domain property defined with a phandle | 31 | - power-domains : power-domain property defined with a phandle |
32 | to respective power domain. | 32 | to respective power domain. |
33 | 33 | ||
34 | Example: | 34 | Example: |
@@ -38,7 +38,7 @@ mfc: codec@13400000 { | |||
38 | compatible = "samsung,mfc-v5"; | 38 | compatible = "samsung,mfc-v5"; |
39 | reg = <0x13400000 0x10000>; | 39 | reg = <0x13400000 0x10000>; |
40 | interrupts = <0 94 0>; | 40 | interrupts = <0 94 0>; |
41 | samsung,power-domain = <&pd_mfc>; | 41 | power-domains = <&pd_mfc>; |
42 | clocks = <&clock 273>; | 42 | clocks = <&clock 273>; |
43 | clock-names = "mfc"; | 43 | clock-names = "mfc"; |
44 | }; | 44 | }; |
diff --git a/Documentation/devicetree/bindings/media/sunxi-ir.txt b/Documentation/devicetree/bindings/media/sunxi-ir.txt index 23dd5ad07b7c..1811a067c72c 100644 --- a/Documentation/devicetree/bindings/media/sunxi-ir.txt +++ b/Documentation/devicetree/bindings/media/sunxi-ir.txt | |||
@@ -1,7 +1,7 @@ | |||
1 | Device-Tree bindings for SUNXI IR controller found in sunXi SoC family | 1 | Device-Tree bindings for SUNXI IR controller found in sunXi SoC family |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : should be "allwinner,sun4i-a10-ir"; | 4 | - compatible : "allwinner,sun4i-a10-ir" or "allwinner,sun5i-a13-ir" |
5 | - clocks : list of clock specifiers, corresponding to | 5 | - clocks : list of clock specifiers, corresponding to |
6 | entries in clock-names property; | 6 | entries in clock-names property; |
7 | - clock-names : should contain "apb" and "ir" entries; | 7 | - clock-names : should contain "apb" and "ir" entries; |
@@ -10,6 +10,7 @@ Required properties: | |||
10 | 10 | ||
11 | Optional properties: | 11 | Optional properties: |
12 | - linux,rc-map-name : Remote control map name. | 12 | - linux,rc-map-name : Remote control map name. |
13 | - resets : phandle + reset specifier pair | ||
13 | 14 | ||
14 | Example: | 15 | Example: |
15 | 16 | ||
@@ -17,6 +18,7 @@ ir0: ir@01c21800 { | |||
17 | compatible = "allwinner,sun4i-a10-ir"; | 18 | compatible = "allwinner,sun4i-a10-ir"; |
18 | clocks = <&apb0_gates 6>, <&ir0_clk>; | 19 | clocks = <&apb0_gates 6>, <&ir0_clk>; |
19 | clock-names = "apb", "ir"; | 20 | clock-names = "apb", "ir"; |
21 | resets = <&apb0_rst 1>; | ||
20 | interrupts = <0 5 1>; | 22 | interrupts = <0 5 1>; |
21 | reg = <0x01C21800 0x40>; | 23 | reg = <0x01C21800 0x40>; |
22 | linux,rc-map-name = "rc-rc6-mce"; | 24 | linux,rc-map-name = "rc-rc6-mce"; |
diff --git a/Documentation/devicetree/bindings/media/ti-am437x-vpfe.txt b/Documentation/devicetree/bindings/media/ti-am437x-vpfe.txt new file mode 100644 index 000000000000..3932e766553a --- /dev/null +++ b/Documentation/devicetree/bindings/media/ti-am437x-vpfe.txt | |||
@@ -0,0 +1,61 @@ | |||
1 | Texas Instruments AM437x CAMERA (VPFE) | ||
2 | -------------------------------------- | ||
3 | |||
4 | The Video Processing Front End (VPFE) is a key component for image capture | ||
5 | applications. The capture module provides the system interface and the | ||
6 | processing capability to connect RAW image-sensor modules and video decoders | ||
7 | to the AM437x device. | ||
8 | |||
9 | Required properties: | ||
10 | - compatible: must be "ti,am437x-vpfe" | ||
11 | - reg: physical base address and length of the registers set for the device; | ||
12 | - interrupts: should contain IRQ line for the VPFE; | ||
13 | - ti,am437x-vpfe-interface: can be one of the following, | ||
14 | 0 - Raw Bayer Interface. | ||
15 | 1 - 8 Bit BT656 Interface. | ||
16 | 2 - 10 Bit BT656 Interface. | ||
17 | 3 - YCbCr 8 Bit Interface. | ||
18 | 4 - YCbCr 16 Bit Interface. | ||
19 | |||
20 | VPFE supports a single port node with parallel bus. It should contain one | ||
21 | 'port' child node with child 'endpoint' node. Please refer to the bindings | ||
22 | defined in Documentation/devicetree/bindings/media/video-interfaces.txt. | ||
23 | |||
24 | Example: | ||
25 | vpfe: vpfe@f0034000 { | ||
26 | compatible = "ti,am437x-vpfe"; | ||
27 | reg = <0x48328000 0x2000>; | ||
28 | interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>; | ||
29 | |||
30 | pinctrl-names = "default", "sleep"; | ||
31 | pinctrl-0 = <&vpfe_pins_default>; | ||
32 | pinctrl-1 = <&vpfe_pins_sleep>; | ||
33 | |||
34 | port { | ||
35 | #address-cells = <1>; | ||
36 | #size-cells = <0>; | ||
37 | |||
38 | vpfe0_ep: endpoint { | ||
39 | remote-endpoint = <&ov2659_1>; | ||
40 | ti,am437x-vpfe-interface = <0>; | ||
41 | bus-width = <8>; | ||
42 | hsync-active = <0>; | ||
43 | vsync-active = <0>; | ||
44 | }; | ||
45 | }; | ||
46 | }; | ||
47 | |||
48 | i2c1: i2c@4802a000 { | ||
49 | |||
50 | ov2659@30 { | ||
51 | compatible = "ti,ov2659"; | ||
52 | reg = <0x30>; | ||
53 | |||
54 | port { | ||
55 | ov2659_1: endpoint { | ||
56 | remote-endpoint = <&vpfe0_ep>; | ||
57 | bus-width = <8>; | ||
58 | mclk-frequency = <12000000>; | ||
59 | }; | ||
60 | }; | ||
61 | }; | ||
diff --git a/Documentation/devicetree/bindings/media/video-interfaces.txt b/Documentation/devicetree/bindings/media/video-interfaces.txt index ce719f89dd1c..571b4c60665f 100644 --- a/Documentation/devicetree/bindings/media/video-interfaces.txt +++ b/Documentation/devicetree/bindings/media/video-interfaces.txt | |||
@@ -103,6 +103,9 @@ Optional endpoint properties | |||
103 | array contains only one entry. | 103 | array contains only one entry. |
104 | - clock-noncontinuous: a boolean property to allow MIPI CSI-2 non-continuous | 104 | - clock-noncontinuous: a boolean property to allow MIPI CSI-2 non-continuous |
105 | clock mode. | 105 | clock mode. |
106 | - link-frequencies: Allowed data bus frequencies. For MIPI CSI-2, for | ||
107 | instance, this is the actual frequency of the bus, not bits per clock per | ||
108 | lane value. An array of 64-bit unsigned integers. | ||
106 | 109 | ||
107 | 110 | ||
108 | Example | 111 | Example |
@@ -159,7 +162,7 @@ pipelines can be active: ov772x -> ceu0 or imx074 -> csi2 -> ceu0. | |||
159 | i2c0: i2c@0xfff20000 { | 162 | i2c0: i2c@0xfff20000 { |
160 | ... | 163 | ... |
161 | ov772x_1: camera@0x21 { | 164 | ov772x_1: camera@0x21 { |
162 | compatible = "omnivision,ov772x"; | 165 | compatible = "ovti,ov772x"; |
163 | reg = <0x21>; | 166 | reg = <0x21>; |
164 | vddio-supply = <®ulator1>; | 167 | vddio-supply = <®ulator1>; |
165 | vddcore-supply = <®ulator2>; | 168 | vddcore-supply = <®ulator2>; |
diff --git a/Documentation/devicetree/bindings/memory-controllers/renesas-memory-controllers.txt b/Documentation/devicetree/bindings/memory-controllers/renesas-memory-controllers.txt new file mode 100644 index 000000000000..c64b7925cd09 --- /dev/null +++ b/Documentation/devicetree/bindings/memory-controllers/renesas-memory-controllers.txt | |||
@@ -0,0 +1,44 @@ | |||
1 | DT bindings for Renesas R-Mobile and SH-Mobile memory controllers | ||
2 | ================================================================= | ||
3 | |||
4 | Renesas R-Mobile and SH-Mobile SoCs contain one or more memory controllers. | ||
5 | These memory controllers differ from one SoC variant to another, and are called | ||
6 | by different names ("DDR Bus Controller (DBSC)", "DDR3 Bus State Controller | ||
7 | (DBSC3)", "SDRAM Bus State Controller (SBSC)"). | ||
8 | |||
9 | Currently memory controller device nodes are used only to reference PM | ||
10 | domains, and prevent these PM domains from being powered down, which would | ||
11 | crash the system. | ||
12 | |||
13 | As there exist no actual drivers for these controllers yet, these bindings | ||
14 | should be considered EXPERIMENTAL for now. | ||
15 | |||
16 | Required properties: | ||
17 | - compatible: Must be one of the following SoC-specific values: | ||
18 | - "renesas,dbsc-r8a73a4" (R-Mobile APE6) | ||
19 | - "renesas,dbsc3-r8a7740" (R-Mobile A1) | ||
20 | - "renesas,sbsc-sh73a0" (SH-Mobile AG5) | ||
21 | - reg: Must contain the base address and length of the memory controller's | ||
22 | registers. | ||
23 | |||
24 | Optional properties: | ||
25 | - interrupts: Must contain a list of interrupt specifiers for memory | ||
26 | controller interrupts, if available. | ||
27 | - interrupts-names: Must contain a list of interrupt names corresponding to | ||
28 | the interrupts in the interrupts property, if available. | ||
29 | Valid interrupt names are: | ||
30 | - "sec" (secure interrupt) | ||
31 | - "temp" (normal (temperature) interrupt) | ||
32 | - power-domains: Must contain a reference to the PM domain that the memory | ||
33 | controller belongs to, if available. | ||
34 | |||
35 | Example: | ||
36 | |||
37 | sbsc1: memory-controller@fe400000 { | ||
38 | compatible = "renesas,sbsc-sh73a0"; | ||
39 | reg = <0xfe400000 0x400>; | ||
40 | interrupts = <0 35 IRQ_TYPE_LEVEL_HIGH>, | ||
41 | <0 36 IRQ_TYPE_LEVEL_HIGH>; | ||
42 | interrupt-names = "sec", "temp"; | ||
43 | power-domains = <&pd_a4bc0>; | ||
44 | }; | ||
diff --git a/Documentation/devicetree/bindings/mfd/atmel-matrix.txt b/Documentation/devicetree/bindings/mfd/atmel-matrix.txt new file mode 100644 index 000000000000..e3ef50ca02a5 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/atmel-matrix.txt | |||
@@ -0,0 +1,24 @@ | |||
1 | * Device tree bindings for Atmel Bus Matrix | ||
2 | |||
3 | The Bus Matrix registers are used to configure Atmel SoCs internal bus | ||
4 | behavior (master/slave priorities, undefined burst length type, ...) | ||
5 | |||
6 | Required properties: | ||
7 | - compatible: Should be one of the following | ||
8 | "atmel,at91sam9260-matrix", "syscon" | ||
9 | "atmel,at91sam9261-matrix", "syscon" | ||
10 | "atmel,at91sam9263-matrix", "syscon" | ||
11 | "atmel,at91sam9rl-matrix", "syscon" | ||
12 | "atmel,at91sam9g45-matrix", "syscon" | ||
13 | "atmel,at91sam9n12-matrix", "syscon" | ||
14 | "atmel,at91sam9x5-matrix", "syscon" | ||
15 | "atmel,sama5d3-matrix", "syscon" | ||
16 | - reg: Contains offset/length value of the Bus Matrix | ||
17 | memory region. | ||
18 | |||
19 | Example: | ||
20 | |||
21 | matrix: matrix@ffffec00 { | ||
22 | compatible = "atmel,sama5d3-matrix", "syscon"; | ||
23 | reg = <0xffffec00 0x200>; | ||
24 | }; | ||
diff --git a/Documentation/devicetree/bindings/mfd/atmel-smc.txt b/Documentation/devicetree/bindings/mfd/atmel-smc.txt new file mode 100644 index 000000000000..26eeed373934 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/atmel-smc.txt | |||
@@ -0,0 +1,19 @@ | |||
1 | * Device tree bindings for Atmel SMC (Static Memory Controller) | ||
2 | |||
3 | The SMC registers are used to configure Atmel EBI (External Bus Interface) | ||
4 | to interface with standard memory devices (NAND, NOR, SRAM or specialized | ||
5 | devices like FPGAs). | ||
6 | |||
7 | Required properties: | ||
8 | - compatible: Should be one of the following | ||
9 | "atmel,at91sam9260-smc", "syscon" | ||
10 | "atmel,sama5d3-smc", "syscon" | ||
11 | - reg: Contains offset/length value of the SMC memory | ||
12 | region. | ||
13 | |||
14 | Example: | ||
15 | |||
16 | smc: smc@ffffc000 { | ||
17 | compatible = "atmel,sama5d3-smc", "syscon"; | ||
18 | reg = <0xffffc000 0x1000>; | ||
19 | }; | ||
diff --git a/Documentation/devicetree/bindings/mfd/da9063.txt b/Documentation/devicetree/bindings/mfd/da9063.txt new file mode 100644 index 000000000000..42c6fa6f1c9a --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/da9063.txt | |||
@@ -0,0 +1,93 @@ | |||
1 | * Dialog DA9063 Power Management Integrated Circuit (PMIC) | ||
2 | |||
3 | DA9093 consists of a large and varied group of sub-devices (I2C Only): | ||
4 | |||
5 | Device Supply Names Description | ||
6 | ------ ------------ ----------- | ||
7 | da9063-regulator : : LDOs & BUCKs | ||
8 | da9063-rtc : : Real-Time Clock | ||
9 | da9063-watchdog : : Watchdog | ||
10 | |||
11 | ====== | ||
12 | |||
13 | Required properties: | ||
14 | |||
15 | - compatible : Should be "dlg,da9063" | ||
16 | - reg : Specifies the I2C slave address (this defaults to 0x58 but it can be | ||
17 | modified to match the chip's OTP settings). | ||
18 | - interrupt-parent : Specifies the reference to the interrupt controller for | ||
19 | the DA9063. | ||
20 | - interrupts : IRQ line information. | ||
21 | - interrupt-controller | ||
22 | |||
23 | Sub-nodes: | ||
24 | |||
25 | - regulators : This node defines the settings for the LDOs and BUCKs. The | ||
26 | DA9063 regulators are bound using their names listed below: | ||
27 | |||
28 | bcore1 : BUCK CORE1 | ||
29 | bcore2 : BUCK CORE2 | ||
30 | bpro : BUCK PRO | ||
31 | bmem : BUCK MEM | ||
32 | bio : BUCK IO | ||
33 | bperi : BUCK PERI | ||
34 | ldo1 : LDO_1 | ||
35 | ldo2 : LDO_2 | ||
36 | ldo3 : LDO_3 | ||
37 | ldo4 : LDO_4 | ||
38 | ldo5 : LDO_5 | ||
39 | ldo6 : LDO_6 | ||
40 | ldo7 : LDO_7 | ||
41 | ldo8 : LDO_8 | ||
42 | ldo9 : LDO_9 | ||
43 | ldo10 : LDO_10 | ||
44 | ldo11 : LDO_11 | ||
45 | |||
46 | The component follows the standard regulator framework and the bindings | ||
47 | details of individual regulator device can be found in: | ||
48 | Documentation/devicetree/bindings/regulator/regulator.txt | ||
49 | |||
50 | - rtc : This node defines settings for the Real-Time Clock associated with | ||
51 | the DA9063. There are currently no entries in this binding, however | ||
52 | compatible = "dlg,da9063-rtc" should be added if a node is created. | ||
53 | |||
54 | - watchdog : This node defines settings for the Watchdog timer associated | ||
55 | with the DA9063. There are currently no entries in this binding, however | ||
56 | compatible = "dlg,da9063-watchdog" should be added if a node is created. | ||
57 | |||
58 | |||
59 | Example: | ||
60 | |||
61 | pmic0: da9063@58 { | ||
62 | compatible = "dlg,da9063" | ||
63 | reg = <0x58>; | ||
64 | interrupt-parent = <&gpio6>; | ||
65 | interrupts = <11 IRQ_TYPE_LEVEL_LOW>; | ||
66 | interrupt-controller; | ||
67 | |||
68 | rtc { | ||
69 | compatible = "dlg,da9063-rtc"; | ||
70 | }; | ||
71 | |||
72 | wdt { | ||
73 | compatible = "dlg,da9063-watchdog"; | ||
74 | }; | ||
75 | |||
76 | regulators { | ||
77 | DA9063_BCORE1: bcore1 { | ||
78 | regulator-name = "BCORE1"; | ||
79 | regulator-min-microvolt = <300000>; | ||
80 | regulator-max-microvolt = <1570000>; | ||
81 | regulator-min-microamp = <500000>; | ||
82 | regulator-max-microamp = <2000000>; | ||
83 | regulator-boot-on; | ||
84 | }; | ||
85 | DA9063_LDO11: ldo11 { | ||
86 | regulator-name = "LDO_11"; | ||
87 | regulator-min-microvolt = <900000>; | ||
88 | regulator-max-microvolt = <3600000>; | ||
89 | regulator-boot-on; | ||
90 | }; | ||
91 | }; | ||
92 | }; | ||
93 | |||
diff --git a/Documentation/devicetree/bindings/mfd/max77686.txt b/Documentation/devicetree/bindings/mfd/max77686.txt index 75fdfaf41831..e39f0bc1f55e 100644 --- a/Documentation/devicetree/bindings/mfd/max77686.txt +++ b/Documentation/devicetree/bindings/mfd/max77686.txt | |||
@@ -39,6 +39,12 @@ to get matched with their hardware counterparts as follow: | |||
39 | -BUCKn : 1-4. | 39 | -BUCKn : 1-4. |
40 | Use standard regulator bindings for it ('regulator-off-in-suspend'). | 40 | Use standard regulator bindings for it ('regulator-off-in-suspend'). |
41 | 41 | ||
42 | LDO20, LDO21, LDO22, BUCK8 and BUCK9 can be configured to GPIO enable | ||
43 | control. To turn this feature on this property must be added to the regulator | ||
44 | sub-node: | ||
45 | - maxim,ena-gpios : one GPIO specifier enable control (the gpio | ||
46 | flags are actually ignored and always | ||
47 | ACTIVE_HIGH is used) | ||
42 | 48 | ||
43 | Example: | 49 | Example: |
44 | 50 | ||
@@ -65,4 +71,12 @@ Example: | |||
65 | regulator-always-on; | 71 | regulator-always-on; |
66 | regulator-boot-on; | 72 | regulator-boot-on; |
67 | }; | 73 | }; |
74 | |||
75 | buck9_reg { | ||
76 | regulator-compatible = "BUCK9"; | ||
77 | regulator-name = "CAM_ISP_CORE_1.2V"; | ||
78 | regulator-min-microvolt = <1000000>; | ||
79 | regulator-max-microvolt = <1200000>; | ||
80 | maxim,ena-gpios = <&gpm0 3 GPIO_ACTIVE_HIGH>; | ||
81 | }; | ||
68 | } | 82 | } |
diff --git a/Documentation/devicetree/bindings/mfd/max77693.txt b/Documentation/devicetree/bindings/mfd/max77693.txt index 01e9f30fe678..38e64405e98d 100644 --- a/Documentation/devicetree/bindings/mfd/max77693.txt +++ b/Documentation/devicetree/bindings/mfd/max77693.txt | |||
@@ -41,6 +41,41 @@ Optional properties: | |||
41 | To get more informations, please refer to documentaion. | 41 | To get more informations, please refer to documentaion. |
42 | [*] refer Documentation/devicetree/bindings/pwm/pwm.txt | 42 | [*] refer Documentation/devicetree/bindings/pwm/pwm.txt |
43 | 43 | ||
44 | - charger : Node configuring the charger driver. | ||
45 | If present, required properties: | ||
46 | - compatible : Must be "maxim,max77693-charger". | ||
47 | |||
48 | Optional properties (if not set, defaults will be used): | ||
49 | - maxim,constant-microvolt : Battery constant voltage in uV. The charger | ||
50 | will operate in fast charge constant current mode till battery voltage | ||
51 | reaches this level. Then the charger will switch to fast charge constant | ||
52 | voltage mode. Also vsys (system voltage) will be set to this value when | ||
53 | DC power is supplied but charger is not enabled. | ||
54 | Valid values: 3650000 - 4400000, step by 25000 (rounded down) | ||
55 | Default: 4200000 | ||
56 | |||
57 | - maxim,min-system-microvolt : Minimal system voltage in uV. | ||
58 | Valid values: 3000000 - 3700000, step by 100000 (rounded down) | ||
59 | Default: 3600000 | ||
60 | |||
61 | - maxim,thermal-regulation-celsius : Temperature in Celsius for entering | ||
62 | high temperature charging mode. If die temperature exceeds this value | ||
63 | the charging current will be reduced by 105 mA/Celsius. | ||
64 | Valid values: 70, 85, 100, 115 | ||
65 | Default: 100 | ||
66 | |||
67 | - maxim,battery-overcurrent-microamp : Overcurrent protection threshold | ||
68 | in uA (current from battery to system). | ||
69 | Valid values: 2000000 - 3500000, step by 250000 (rounded down) | ||
70 | Default: 3500000 | ||
71 | |||
72 | - maxim,charge-input-threshold-microvolt : Threshold voltage in uV for | ||
73 | triggering input voltage regulation loop. If input voltage decreases | ||
74 | below this value, the input current will be reduced to reach the | ||
75 | threshold voltage. | ||
76 | Valid values: 4300000, 4700000, 4800000, 4900000 | ||
77 | Default: 4300000 | ||
78 | |||
44 | Example: | 79 | Example: |
45 | max77693@66 { | 80 | max77693@66 { |
46 | compatible = "maxim,max77693"; | 81 | compatible = "maxim,max77693"; |
@@ -73,4 +108,14 @@ Example: | |||
73 | pwms = <&pwm 0 40000 0>; | 108 | pwms = <&pwm 0 40000 0>; |
74 | pwm-names = "haptic"; | 109 | pwm-names = "haptic"; |
75 | }; | 110 | }; |
111 | |||
112 | charger { | ||
113 | compatible = "maxim,max77693-charger"; | ||
114 | |||
115 | maxim,constant-microvolt = <4200000>; | ||
116 | maxim,min-system-microvolt = <3600000>; | ||
117 | maxim,thermal-regulation-celsius = <75>; | ||
118 | maxim,battery-overcurrent-microamp = <3000000>; | ||
119 | maxim,charge-input-threshold-microvolt = <4300000>; | ||
120 | }; | ||
76 | }; | 121 | }; |
diff --git a/Documentation/devicetree/bindings/mfd/qcom-rpm.txt b/Documentation/devicetree/bindings/mfd/qcom-rpm.txt new file mode 100644 index 000000000000..85e31980017a --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/qcom-rpm.txt | |||
@@ -0,0 +1,70 @@ | |||
1 | Qualcomm Resource Power Manager (RPM) | ||
2 | |||
3 | This driver is used to interface with the Resource Power Manager (RPM) found in | ||
4 | various Qualcomm platforms. The RPM allows each component in the system to vote | ||
5 | for state of the system resources, such as clocks, regulators and bus | ||
6 | frequencies. | ||
7 | |||
8 | - compatible: | ||
9 | Usage: required | ||
10 | Value type: <string> | ||
11 | Definition: must be one of: | ||
12 | "qcom,rpm-apq8064" | ||
13 | "qcom,rpm-msm8660" | ||
14 | "qcom,rpm-msm8960" | ||
15 | |||
16 | - reg: | ||
17 | Usage: required | ||
18 | Value type: <prop-encoded-array> | ||
19 | Definition: base address and size of the RPM's message ram | ||
20 | |||
21 | - interrupts: | ||
22 | Usage: required | ||
23 | Value type: <prop-encoded-array> | ||
24 | Definition: three entries specifying the RPM's: | ||
25 | 1. acknowledgement interrupt | ||
26 | 2. error interrupt | ||
27 | 3. wakeup interrupt | ||
28 | |||
29 | - interrupt-names: | ||
30 | Usage: required | ||
31 | Value type: <string-array> | ||
32 | Definition: must be the three strings "ack", "err" and "wakeup", in order | ||
33 | |||
34 | - #address-cells: | ||
35 | Usage: required | ||
36 | Value type: <u32> | ||
37 | Definition: must be 1 | ||
38 | |||
39 | - #size-cells: | ||
40 | Usage: required | ||
41 | Value type: <u32> | ||
42 | Definition: must be 0 | ||
43 | |||
44 | - qcom,ipc: | ||
45 | Usage: required | ||
46 | Value type: <prop-encoded-array> | ||
47 | |||
48 | Definition: three entries specifying the outgoing ipc bit used for | ||
49 | signaling the RPM: | ||
50 | - phandle to a syscon node representing the apcs registers | ||
51 | - u32 representing offset to the register within the syscon | ||
52 | - u32 representing the ipc bit within the register | ||
53 | |||
54 | |||
55 | = EXAMPLE | ||
56 | |||
57 | #include <dt-bindings/mfd/qcom-rpm.h> | ||
58 | |||
59 | rpm@108000 { | ||
60 | compatible = "qcom,rpm-msm8960"; | ||
61 | reg = <0x108000 0x1000>; | ||
62 | qcom,ipc = <&apcs 0x8 2>; | ||
63 | |||
64 | interrupts = <0 19 0>, <0 21 0>, <0 22 0>; | ||
65 | interrupt-names = "ack", "err", "wakeup"; | ||
66 | |||
67 | #address-cells = <1>; | ||
68 | #size-cells = <0>; | ||
69 | }; | ||
70 | |||
diff --git a/Documentation/devicetree/bindings/misc/fsl,qoriq-mc.txt b/Documentation/devicetree/bindings/misc/fsl,qoriq-mc.txt new file mode 100644 index 000000000000..c7a26ca8da12 --- /dev/null +++ b/Documentation/devicetree/bindings/misc/fsl,qoriq-mc.txt | |||
@@ -0,0 +1,40 @@ | |||
1 | * Freescale Management Complex | ||
2 | |||
3 | The Freescale Management Complex (fsl-mc) is a hardware resource | ||
4 | manager that manages specialized hardware objects used in | ||
5 | network-oriented packet processing applications. After the fsl-mc | ||
6 | block is enabled, pools of hardware resources are available, such as | ||
7 | queues, buffer pools, I/O interfaces. These resources are building | ||
8 | blocks that can be used to create functional hardware objects/devices | ||
9 | such as network interfaces, crypto accelerator instances, L2 switches, | ||
10 | etc. | ||
11 | |||
12 | Required properties: | ||
13 | |||
14 | - compatible | ||
15 | Value type: <string> | ||
16 | Definition: Must be "fsl,qoriq-mc". A Freescale Management Complex | ||
17 | compatible with this binding must have Block Revision | ||
18 | Registers BRR1 and BRR2 at offset 0x0BF8 and 0x0BFC in | ||
19 | the MC control register region. | ||
20 | |||
21 | - reg | ||
22 | Value type: <prop-encoded-array> | ||
23 | Definition: A standard property. Specifies one or two regions | ||
24 | defining the MC's registers: | ||
25 | |||
26 | -the first region is the command portal for the | ||
27 | this machine and must always be present | ||
28 | |||
29 | -the second region is the MC control registers. This | ||
30 | region may not be present in some scenarios, such | ||
31 | as in the device tree presented to a virtual machine. | ||
32 | |||
33 | Example: | ||
34 | |||
35 | fsl_mc: fsl-mc@80c000000 { | ||
36 | compatible = "fsl,qoriq-mc"; | ||
37 | reg = <0x00000008 0x0c000000 0 0x40>, /* MC portal base */ | ||
38 | <0x00000000 0x08340000 0 0x40000>; /* MC control reg */ | ||
39 | }; | ||
40 | |||
diff --git a/Documentation/devicetree/bindings/misc/nvidia,tegra20-apbmisc.txt b/Documentation/devicetree/bindings/misc/nvidia,tegra20-apbmisc.txt index b97b8bef1fe5..47b205cc9cc7 100644 --- a/Documentation/devicetree/bindings/misc/nvidia,tegra20-apbmisc.txt +++ b/Documentation/devicetree/bindings/misc/nvidia,tegra20-apbmisc.txt | |||
@@ -1,11 +1,10 @@ | |||
1 | NVIDIA Tegra20/Tegra30/Tegr114/Tegra124 apbmisc block | 1 | NVIDIA Tegra20/Tegra30/Tegr114/Tegra124 apbmisc block |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : should be: | 4 | - compatible : For Tegra20, must be "nvidia,tegra20-apbmisc". For Tegra30, |
5 | "nvidia,tegra20-apbmisc" | 5 | must be "nvidia,tegra30-apbmisc". Otherwise, must contain |
6 | "nvidia,tegra30-apbmisc" | 6 | "nvidia,<chip>-apbmisc", plus one of the above, where <chip> is tegra114, |
7 | "nvidia,tegra114-apbmisc" | 7 | tegra124, tegra132. |
8 | "nvidia,tegra124-apbmisc" | ||
9 | - reg: Should contain 2 entries: the first entry gives the physical address | 8 | - reg: Should contain 2 entries: the first entry gives the physical address |
10 | and length of the registers which contain revision and debug features. | 9 | and length of the registers which contain revision and debug features. |
11 | The second entry gives the physical address and length of the | 10 | The second entry gives the physical address and length of the |
diff --git a/Documentation/devicetree/bindings/mmc/mmc-pwrseq-emmc.txt b/Documentation/devicetree/bindings/mmc/mmc-pwrseq-emmc.txt new file mode 100644 index 000000000000..0cb827bf9435 --- /dev/null +++ b/Documentation/devicetree/bindings/mmc/mmc-pwrseq-emmc.txt | |||
@@ -0,0 +1,25 @@ | |||
1 | * The simple eMMC hardware reset provider | ||
2 | |||
3 | The purpose of this driver is to perform standard eMMC hw reset | ||
4 | procedure, as descibed by Jedec 4.4 specification. This procedure is | ||
5 | performed just after MMC core enabled power to the given mmc host (to | ||
6 | fix possible issues if bootloader has left eMMC card in initialized or | ||
7 | unknown state), and before performing complete system reboot (also in | ||
8 | case of emergency reboot call). The latter is needed on boards, which | ||
9 | doesn't have hardware reset logic connected to emmc card and (limited or | ||
10 | broken) ROM bootloaders are unable to read second stage from the emmc | ||
11 | card if the card is left in unknown or already initialized state. | ||
12 | |||
13 | Required properties: | ||
14 | - compatible : contains "mmc-pwrseq-emmc". | ||
15 | - reset-gpios : contains a GPIO specifier. The reset GPIO is asserted | ||
16 | and then deasserted to perform eMMC card reset. To perform | ||
17 | reset procedure as described in Jedec 4.4 specification, the | ||
18 | gpio line should be defined as GPIO_ACTIVE_LOW. | ||
19 | |||
20 | Example: | ||
21 | |||
22 | sdhci0_pwrseq { | ||
23 | compatible = "mmc-pwrseq-emmc"; | ||
24 | reset-gpios = <&gpio1 12 GPIO_ACTIVE_LOW>; | ||
25 | } | ||
diff --git a/Documentation/devicetree/bindings/mmc/mmc-pwrseq-simple.txt b/Documentation/devicetree/bindings/mmc/mmc-pwrseq-simple.txt new file mode 100644 index 000000000000..a462c50f19a8 --- /dev/null +++ b/Documentation/devicetree/bindings/mmc/mmc-pwrseq-simple.txt | |||
@@ -0,0 +1,25 @@ | |||
1 | * The simple MMC power sequence provider | ||
2 | |||
3 | The purpose of the simple MMC power sequence provider is to supports a set of | ||
4 | common properties between various SOC designs. It thus enables us to use the | ||
5 | same provider for several SOC designs. | ||
6 | |||
7 | Required properties: | ||
8 | - compatible : contains "mmc-pwrseq-simple". | ||
9 | |||
10 | Optional properties: | ||
11 | - reset-gpios : contains a list of GPIO specifiers. The reset GPIOs are asserted | ||
12 | at initialization and prior we start the power up procedure of the card. | ||
13 | They will be de-asserted right after the power has been provided to the | ||
14 | card. | ||
15 | - clocks : Must contain an entry for the entry in clock-names. | ||
16 | See ../clocks/clock-bindings.txt for details. | ||
17 | - clock-names : Must include the following entry: | ||
18 | "ext_clock" (External clock provided to the card). | ||
19 | |||
20 | Example: | ||
21 | |||
22 | sdhci0_pwrseq { | ||
23 | compatible = "mmc-pwrseq-simple"; | ||
24 | reset-gpios = <&gpio1 12 0>; | ||
25 | } | ||
diff --git a/Documentation/devicetree/bindings/mmc/mmc.txt b/Documentation/devicetree/bindings/mmc/mmc.txt index b52628b18a53..438899e8829b 100644 --- a/Documentation/devicetree/bindings/mmc/mmc.txt +++ b/Documentation/devicetree/bindings/mmc/mmc.txt | |||
@@ -64,7 +64,43 @@ Optional SDIO properties: | |||
64 | - keep-power-in-suspend: Preserves card power during a suspend/resume cycle | 64 | - keep-power-in-suspend: Preserves card power during a suspend/resume cycle |
65 | - enable-sdio-wakeup: Enables wake up of host system on SDIO IRQ assertion | 65 | - enable-sdio-wakeup: Enables wake up of host system on SDIO IRQ assertion |
66 | 66 | ||
67 | Example: | 67 | |
68 | MMC power sequences: | ||
69 | -------------------- | ||
70 | |||
71 | System on chip designs may specify a specific MMC power sequence. To | ||
72 | successfully detect an (e)MMC/SD/SDIO card, that power sequence must be | ||
73 | maintained while initializing the card. | ||
74 | |||
75 | Optional property: | ||
76 | - mmc-pwrseq: phandle to the MMC power sequence node. See "mmc-pwrseq-*" | ||
77 | for documentation of MMC power sequence bindings. | ||
78 | |||
79 | |||
80 | Use of Function subnodes | ||
81 | ------------------------ | ||
82 | |||
83 | On embedded systems the cards connected to a host may need additional | ||
84 | properties. These can be specified in subnodes to the host controller node. | ||
85 | The subnodes are identified by the standard 'reg' property. | ||
86 | Which information exactly can be specified depends on the bindings for the | ||
87 | SDIO function driver for the subnode, as specified by the compatible string. | ||
88 | |||
89 | Required host node properties when using function subnodes: | ||
90 | - #address-cells: should be one. The cell is the slot id. | ||
91 | - #size-cells: should be zero. | ||
92 | |||
93 | Required function subnode properties: | ||
94 | - compatible: name of SDIO function following generic names recommended practice | ||
95 | - reg: Must contain the SDIO function number of the function this subnode | ||
96 | describes. A value of 0 denotes the memory SD function, values from | ||
97 | 1 to 7 denote the SDIO functions. | ||
98 | |||
99 | |||
100 | Examples | ||
101 | -------- | ||
102 | |||
103 | Basic example: | ||
68 | 104 | ||
69 | sdhci@ab000000 { | 105 | sdhci@ab000000 { |
70 | compatible = "sdhci"; | 106 | compatible = "sdhci"; |
@@ -77,4 +113,28 @@ sdhci@ab000000 { | |||
77 | max-frequency = <50000000>; | 113 | max-frequency = <50000000>; |
78 | keep-power-in-suspend; | 114 | keep-power-in-suspend; |
79 | enable-sdio-wakeup; | 115 | enable-sdio-wakeup; |
116 | mmc-pwrseq = <&sdhci0_pwrseq> | ||
80 | } | 117 | } |
118 | |||
119 | Example with sdio function subnode: | ||
120 | |||
121 | mmc3: mmc@01c12000 { | ||
122 | #address-cells = <1>; | ||
123 | #size-cells = <0>; | ||
124 | |||
125 | pinctrl-names = "default"; | ||
126 | pinctrl-0 = <&mmc3_pins_a>; | ||
127 | vmmc-supply = <®_vmmc3>; | ||
128 | bus-width = <4>; | ||
129 | non-removable; | ||
130 | mmc-pwrseq = <&sdhci0_pwrseq> | ||
131 | status = "okay"; | ||
132 | |||
133 | brcmf: bcrmf@1 { | ||
134 | reg = <1>; | ||
135 | compatible = "brcm,bcm43xx-fmac"; | ||
136 | interrupt-parent = <&pio>; | ||
137 | interrupts = <10 8>; /* PH10 / EINT10 */ | ||
138 | interrupt-names = "host-wake"; | ||
139 | }; | ||
140 | }; | ||
diff --git a/Documentation/devicetree/bindings/mmc/nvidia,tegra20-sdhci.txt b/Documentation/devicetree/bindings/mmc/nvidia,tegra20-sdhci.txt index f357c16ea815..15b8368ee1f2 100644 --- a/Documentation/devicetree/bindings/mmc/nvidia,tegra20-sdhci.txt +++ b/Documentation/devicetree/bindings/mmc/nvidia,tegra20-sdhci.txt | |||
@@ -7,7 +7,11 @@ This file documents differences between the core properties described | |||
7 | by mmc.txt and the properties used by the sdhci-tegra driver. | 7 | 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 : For Tegra20, must contain "nvidia,tegra20-sdhci". |
11 | For Tegra30, must contain "nvidia,tegra30-sdhci". For Tegra114, | ||
12 | must contain "nvidia,tegra114-sdhci". For Tegra124, must contain | ||
13 | "nvidia,tegra124-sdhci". Otherwise, must contain "nvidia,<chip>-sdhci", | ||
14 | plus one of the above, where <chip> is tegra132 or tegra210. | ||
11 | - clocks : Must contain one entry, for the module clock. | 15 | - clocks : Must contain one entry, for the module clock. |
12 | See ../clocks/clock-bindings.txt for details. | 16 | See ../clocks/clock-bindings.txt for details. |
13 | - resets : Must contain an entry for each entry in reset-names. | 17 | - resets : Must contain an entry for each entry in reset-names. |
diff --git a/Documentation/devicetree/bindings/mmc/sdhci-fujitsu.txt b/Documentation/devicetree/bindings/mmc/sdhci-fujitsu.txt new file mode 100644 index 000000000000..de2c53cff4f1 --- /dev/null +++ b/Documentation/devicetree/bindings/mmc/sdhci-fujitsu.txt | |||
@@ -0,0 +1,30 @@ | |||
1 | * Fujitsu SDHCI controller | ||
2 | |||
3 | This file documents differences between the core properties in mmc.txt | ||
4 | and the properties used by the sdhci_f_sdh30 driver. | ||
5 | |||
6 | Required properties: | ||
7 | - compatible: "fujitsu,mb86s70-sdhci-3.0" | ||
8 | - clocks: Must contain an entry for each entry in clock-names. It is a | ||
9 | list of phandles and clock-specifier pairs. | ||
10 | See ../clocks/clock-bindings.txt for details. | ||
11 | - clock-names: Should contain the following two entries: | ||
12 | "iface" - clock used for sdhci interface | ||
13 | "core" - core clock for sdhci controller | ||
14 | |||
15 | Optional properties: | ||
16 | - vqmmc-supply: phandle to the regulator device tree node, mentioned | ||
17 | as the VCCQ/VDD_IO supply in the eMMC/SD specs. | ||
18 | |||
19 | Example: | ||
20 | |||
21 | sdhci1: mmc@36600000 { | ||
22 | compatible = "fujitsu,mb86s70-sdhci-3.0"; | ||
23 | reg = <0 0x36600000 0x1000>; | ||
24 | interrupts = <0 172 0x4>, | ||
25 | <0 173 0x4>; | ||
26 | bus-width = <4>; | ||
27 | vqmmc-supply = <&vccq_sdhci1>; | ||
28 | clocks = <&clock 2 2 0>, <&clock 2 3 0>; | ||
29 | clock-names = "iface", "core"; | ||
30 | }; | ||
diff --git a/Documentation/devicetree/bindings/mmc/sdhci-pxa.txt b/Documentation/devicetree/bindings/mmc/sdhci-pxa.txt index 4dd6deb90719..3d1b449d6097 100644 --- a/Documentation/devicetree/bindings/mmc/sdhci-pxa.txt +++ b/Documentation/devicetree/bindings/mmc/sdhci-pxa.txt | |||
@@ -9,9 +9,13 @@ Required properties: | |||
9 | - reg: | 9 | - reg: |
10 | * for "mrvl,pxav2-mmc" and "mrvl,pxav3-mmc", one register area for | 10 | * for "mrvl,pxav2-mmc" and "mrvl,pxav3-mmc", one register area for |
11 | the SDHCI registers. | 11 | the SDHCI registers. |
12 | * for "marvell,armada-380-sdhci", two register areas. The first one | 12 | |
13 | for the SDHCI registers themselves, and the second one for the | 13 | * for "marvell,armada-380-sdhci", three register areas. The first |
14 | AXI/Mbus bridge registers of the SDHCI unit. | 14 | one for the SDHCI registers themselves, the second one for the |
15 | AXI/Mbus bridge registers of the SDHCI unit, the third one for the | ||
16 | SDIO3 Configuration register | ||
17 | - reg names: should be "sdhci", "mbus", "conf-sdio3". only mandatory | ||
18 | for "marvell,armada-380-sdhci" | ||
15 | - clocks: Array of clocks required for SDHCI; requires at least one for | 19 | - clocks: Array of clocks required for SDHCI; requires at least one for |
16 | I/O clock. | 20 | I/O clock. |
17 | - clock-names: Array of names corresponding to clocks property; shall be | 21 | - clock-names: Array of names corresponding to clocks property; shall be |
@@ -35,7 +39,10 @@ sdhci@d4280800 { | |||
35 | 39 | ||
36 | sdhci@d8000 { | 40 | sdhci@d8000 { |
37 | compatible = "marvell,armada-380-sdhci"; | 41 | compatible = "marvell,armada-380-sdhci"; |
38 | reg = <0xd8000 0x1000>, <0xdc000 0x100>; | 42 | reg-names = "sdhci", "mbus", "conf-sdio3"; |
43 | reg = <0xd8000 0x1000>, | ||
44 | <0xdc000 0x100>; | ||
45 | <0x18454 0x4>; | ||
39 | interrupts = <0 25 0x4>; | 46 | interrupts = <0 25 0x4>; |
40 | clocks = <&gateclk 17>; | 47 | clocks = <&gateclk 17>; |
41 | clock-names = "io"; | 48 | clock-names = "io"; |
diff --git a/Documentation/devicetree/bindings/mmc/sunxi-mmc.txt b/Documentation/devicetree/bindings/mmc/sunxi-mmc.txt index 91b3a3467150..4bf41d833804 100644 --- a/Documentation/devicetree/bindings/mmc/sunxi-mmc.txt +++ b/Documentation/devicetree/bindings/mmc/sunxi-mmc.txt | |||
@@ -10,8 +10,8 @@ Absolute maximum transfer rate is 200MB/s | |||
10 | Required properties: | 10 | Required properties: |
11 | - compatible : "allwinner,sun4i-a10-mmc" or "allwinner,sun5i-a13-mmc" | 11 | - compatible : "allwinner,sun4i-a10-mmc" or "allwinner,sun5i-a13-mmc" |
12 | - reg : mmc controller base registers | 12 | - reg : mmc controller base registers |
13 | - clocks : a list with 2 phandle + clock specifier pairs | 13 | - clocks : a list with 4 phandle + clock specifier pairs |
14 | - clock-names : must contain "ahb" and "mmc" | 14 | - clock-names : must contain "ahb", "mmc", "output" and "sample" |
15 | - interrupts : mmc controller interrupt | 15 | - interrupts : mmc controller interrupt |
16 | 16 | ||
17 | Optional properties: | 17 | Optional properties: |
@@ -25,8 +25,8 @@ Examples: | |||
25 | mmc0: mmc@01c0f000 { | 25 | mmc0: mmc@01c0f000 { |
26 | compatible = "allwinner,sun5i-a13-mmc"; | 26 | compatible = "allwinner,sun5i-a13-mmc"; |
27 | reg = <0x01c0f000 0x1000>; | 27 | reg = <0x01c0f000 0x1000>; |
28 | clocks = <&ahb_gates 8>, <&mmc0_clk>; | 28 | clocks = <&ahb_gates 8>, <&mmc0_clk>, <&mmc0_output_clk>, <&mmc0_sample_clk>; |
29 | clock-names = "ahb", "mod"; | 29 | clock-names = "ahb", "mod", "output", "sample"; |
30 | interrupts = <0 32 4>; | 30 | interrupts = <0 32 4>; |
31 | status = "disabled"; | 31 | status = "disabled"; |
32 | }; | 32 | }; |
diff --git a/Documentation/devicetree/bindings/mtd/atmel-nand.txt b/Documentation/devicetree/bindings/mtd/atmel-nand.txt index 1fe6dde98499..7d4c8eb775a5 100644 --- a/Documentation/devicetree/bindings/mtd/atmel-nand.txt +++ b/Documentation/devicetree/bindings/mtd/atmel-nand.txt | |||
@@ -1,7 +1,7 @@ | |||
1 | Atmel NAND flash | 1 | Atmel NAND flash |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : "atmel,at91rm9200-nand". | 4 | - compatible : should be "atmel,at91rm9200-nand" or "atmel,sama5d4-nand". |
5 | - reg : should specify localbus address and size used for the chip, | 5 | - reg : should specify localbus address and size used for the chip, |
6 | and hardware ECC controller if available. | 6 | and hardware ECC controller if available. |
7 | If the hardware ECC is PMECC, it should contain address and size for | 7 | If the hardware ECC is PMECC, it should contain address and size for |
diff --git a/Documentation/devicetree/bindings/mtd/fsl-quadspi.txt b/Documentation/devicetree/bindings/mtd/fsl-quadspi.txt index 823d13412195..4461dc71cb10 100644 --- a/Documentation/devicetree/bindings/mtd/fsl-quadspi.txt +++ b/Documentation/devicetree/bindings/mtd/fsl-quadspi.txt | |||
@@ -1,7 +1,7 @@ | |||
1 | * Freescale Quad Serial Peripheral Interface(QuadSPI) | 1 | * Freescale Quad Serial Peripheral Interface(QuadSPI) |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : Should be "fsl,vf610-qspi" | 4 | - compatible : Should be "fsl,vf610-qspi" or "fsl,imx6sx-qspi" |
5 | - reg : the first contains the register location and length, | 5 | - reg : the first contains the register location and length, |
6 | the second contains the memory mapping address and length | 6 | the second contains the memory mapping address and length |
7 | - reg-names: Should contain the reg names "QuadSPI" and "QuadSPI-memory" | 7 | - reg-names: Should contain the reg names "QuadSPI" and "QuadSPI-memory" |
diff --git a/Documentation/devicetree/bindings/mtd/fsmc-nand.txt b/Documentation/devicetree/bindings/mtd/fsmc-nand.txt index ec42935f3908..5235cbc551b0 100644 --- a/Documentation/devicetree/bindings/mtd/fsmc-nand.txt +++ b/Documentation/devicetree/bindings/mtd/fsmc-nand.txt | |||
@@ -9,7 +9,7 @@ Required properties: | |||
9 | Optional properties: | 9 | Optional properties: |
10 | - bank-width : Width (in bytes) of the device. If not present, the width | 10 | - bank-width : Width (in bytes) of the device. If not present, the width |
11 | defaults to 1 byte | 11 | defaults to 1 byte |
12 | - nand-skip-bbtscan: Indicates the the BBT scanning should be skipped | 12 | - nand-skip-bbtscan: Indicates the BBT scanning should be skipped |
13 | - timings: array of 6 bytes for NAND timings. The meanings of these bytes | 13 | - timings: array of 6 bytes for NAND timings. The meanings of these bytes |
14 | are: | 14 | are: |
15 | byte 0 TCLR : CLE to RE delay in number of AHB clock cycles, only 4 bits | 15 | byte 0 TCLR : CLE to RE delay in number of AHB clock cycles, only 4 bits |
diff --git a/Documentation/devicetree/bindings/mtd/gpmi-nand.txt b/Documentation/devicetree/bindings/mtd/gpmi-nand.txt index a011fdf61dbf..d02acaff3c35 100644 --- a/Documentation/devicetree/bindings/mtd/gpmi-nand.txt +++ b/Documentation/devicetree/bindings/mtd/gpmi-nand.txt | |||
@@ -1,7 +1,7 @@ | |||
1 | * Freescale General-Purpose Media Interface (GPMI) | 1 | * Freescale General-Purpose Media Interface (GPMI) |
2 | 2 | ||
3 | The GPMI nand controller provides an interface to control the | 3 | The GPMI nand controller provides an interface to control the |
4 | NAND flash chips. We support only one NAND chip now. | 4 | NAND flash chips. |
5 | 5 | ||
6 | Required properties: | 6 | Required properties: |
7 | - compatible : should be "fsl,<chip>-gpmi-nand" | 7 | - compatible : should be "fsl,<chip>-gpmi-nand" |
diff --git a/Documentation/devicetree/bindings/mtd/hisi504-nand.txt b/Documentation/devicetree/bindings/mtd/hisi504-nand.txt new file mode 100644 index 000000000000..2e35f0662912 --- /dev/null +++ b/Documentation/devicetree/bindings/mtd/hisi504-nand.txt | |||
@@ -0,0 +1,47 @@ | |||
1 | Hisilicon Hip04 Soc NAND controller DT binding | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible: Should be "hisilicon,504-nfc". | ||
6 | - reg: The first contains base physical address and size of | ||
7 | NAND controller's registers. The second contains base | ||
8 | physical address and size of NAND controller's buffer. | ||
9 | - interrupts: Interrupt number for nfc. | ||
10 | - nand-bus-width: See nand.txt. | ||
11 | - nand-ecc-mode: Support none and hw ecc mode. | ||
12 | - #address-cells: Partition address, should be set 1. | ||
13 | - #size-cells: Partition size, should be set 1. | ||
14 | |||
15 | Optional properties: | ||
16 | |||
17 | - nand-ecc-strength: Number of bits to correct per ECC step. | ||
18 | - nand-ecc-step-size: Number of data bytes covered by a single ECC step. | ||
19 | |||
20 | The following ECC strength and step size are currently supported: | ||
21 | |||
22 | - nand-ecc-strength = <16>, nand-ecc-step-size = <1024> | ||
23 | |||
24 | Flash chip may optionally contain additional sub-nodes describing partitions of | ||
25 | the address space. See partition.txt for more detail. | ||
26 | |||
27 | Example: | ||
28 | |||
29 | nand: nand@4020000 { | ||
30 | compatible = "hisilicon,504-nfc"; | ||
31 | reg = <0x4020000 0x10000>, <0x5000000 0x1000>; | ||
32 | interrupts = <0 379 4>; | ||
33 | nand-bus-width = <8>; | ||
34 | nand-ecc-mode = "hw"; | ||
35 | nand-ecc-strength = <16>; | ||
36 | nand-ecc-step-size = <1024>; | ||
37 | #address-cells = <1>; | ||
38 | #size-cells = <1>; | ||
39 | |||
40 | partition@0 { | ||
41 | label = "nand_text"; | ||
42 | reg = <0x00000000 0x00400000>; | ||
43 | }; | ||
44 | |||
45 | ... | ||
46 | |||
47 | }; | ||
diff --git a/Documentation/devicetree/bindings/mtd/mtd-physmap.txt b/Documentation/devicetree/bindings/mtd/mtd-physmap.txt index 6b9f680cb579..4a0a48bf4ecb 100644 --- a/Documentation/devicetree/bindings/mtd/mtd-physmap.txt +++ b/Documentation/devicetree/bindings/mtd/mtd-physmap.txt | |||
@@ -36,6 +36,11 @@ are defined: | |||
36 | - vendor-id : Contains the flash chip's vendor id (1 byte). | 36 | - vendor-id : Contains the flash chip's vendor id (1 byte). |
37 | - device-id : Contains the flash chip's device id (1 byte). | 37 | - device-id : Contains the flash chip's device id (1 byte). |
38 | 38 | ||
39 | For ROM compatible devices (and ROM fallback from cfi-flash), the following | ||
40 | additional (optional) property is defined: | ||
41 | |||
42 | - erase-size : The chip's physical erase block size in bytes. | ||
43 | |||
39 | The device tree may optionally contain sub-nodes describing partitions of the | 44 | The device tree may optionally contain sub-nodes describing partitions of the |
40 | address space. See partition.txt for more detail. | 45 | address space. See partition.txt for more detail. |
41 | 46 | ||
diff --git a/Documentation/devicetree/bindings/net/amd-xgbe-phy.txt b/Documentation/devicetree/bindings/net/amd-xgbe-phy.txt index 42409bfe04c4..33df3932168e 100644 --- a/Documentation/devicetree/bindings/net/amd-xgbe-phy.txt +++ b/Documentation/devicetree/bindings/net/amd-xgbe-phy.txt | |||
@@ -7,17 +7,38 @@ Required properties: | |||
7 | - SerDes Rx/Tx registers | 7 | - SerDes Rx/Tx registers |
8 | - SerDes integration registers (1/2) | 8 | - SerDes integration registers (1/2) |
9 | - SerDes integration registers (2/2) | 9 | - SerDes integration registers (2/2) |
10 | - interrupt-parent: Should be the phandle for the interrupt controller | ||
11 | that services interrupts for this device | ||
12 | - interrupts: Should contain the amd-xgbe-phy interrupt. | ||
10 | 13 | ||
11 | Optional properties: | 14 | Optional properties: |
12 | - amd,speed-set: Speed capabilities of the device | 15 | - amd,speed-set: Speed capabilities of the device |
13 | 0 - 1GbE and 10GbE (default) | 16 | 0 - 1GbE and 10GbE (default) |
14 | 1 - 2.5GbE and 10GbE | 17 | 1 - 2.5GbE and 10GbE |
15 | 18 | ||
19 | The following optional properties are represented by an array with each | ||
20 | value corresponding to a particular speed. The first array value represents | ||
21 | the setting for the 1GbE speed, the second value for the 2.5GbE speed and | ||
22 | the third value for the 10GbE speed. All three values are required if the | ||
23 | property is used. | ||
24 | - amd,serdes-blwc: Baseline wandering correction enablement | ||
25 | 0 - Off | ||
26 | 1 - On | ||
27 | - amd,serdes-cdr-rate: CDR rate speed selection | ||
28 | - amd,serdes-pq-skew: PQ (data sampling) skew | ||
29 | - amd,serdes-tx-amp: TX amplitude boost | ||
30 | |||
16 | Example: | 31 | Example: |
17 | xgbe_phy@e1240800 { | 32 | xgbe_phy@e1240800 { |
18 | compatible = "amd,xgbe-phy-seattle-v1a", "ethernet-phy-ieee802.3-c45"; | 33 | compatible = "amd,xgbe-phy-seattle-v1a", "ethernet-phy-ieee802.3-c45"; |
19 | reg = <0 0xe1240800 0 0x00400>, | 34 | reg = <0 0xe1240800 0 0x00400>, |
20 | <0 0xe1250000 0 0x00060>, | 35 | <0 0xe1250000 0 0x00060>, |
21 | <0 0xe1250080 0 0x00004>; | 36 | <0 0xe1250080 0 0x00004>; |
37 | interrupt-parent = <&gic>; | ||
38 | interrupts = <0 323 4>; | ||
22 | amd,speed-set = <0>; | 39 | amd,speed-set = <0>; |
40 | amd,serdes-blwc = <1>, <1>, <0>; | ||
41 | amd,serdes-cdr-rate = <2>, <2>, <7>; | ||
42 | amd,serdes-pq-skew = <10>, <10>, <30>; | ||
43 | amd,serdes-tx-amp = <15>, <15>, <10>; | ||
23 | }; | 44 | }; |
diff --git a/Documentation/devicetree/bindings/net/broadcom-systemport.txt b/Documentation/devicetree/bindings/net/broadcom-systemport.txt index aa7ad622259d..877da34145b0 100644 --- a/Documentation/devicetree/bindings/net/broadcom-systemport.txt +++ b/Documentation/devicetree/bindings/net/broadcom-systemport.txt | |||
@@ -3,7 +3,7 @@ | |||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: should be one of "brcm,systemport-v1.00" or "brcm,systemport" | 4 | - compatible: should be one of "brcm,systemport-v1.00" or "brcm,systemport" |
5 | - reg: address and length of the register set for the device. | 5 | - reg: address and length of the register set for the device. |
6 | - interrupts: interrupts for the device, first cell must be for the the rx | 6 | - interrupts: interrupts for the device, first cell must be for the rx |
7 | interrupts, and the second cell should be for the transmit queues. An | 7 | interrupts, and the second cell should be for the transmit queues. An |
8 | optional third interrupt cell for Wake-on-LAN can be specified | 8 | optional third interrupt cell for Wake-on-LAN can be specified |
9 | - local-mac-address: Ethernet MAC address (48 bits) of this adapter | 9 | - local-mac-address: Ethernet MAC address (48 bits) of this adapter |
diff --git a/Documentation/devicetree/bindings/net/davicom-dm9000.txt b/Documentation/devicetree/bindings/net/davicom-dm9000.txt index 28767ed7c1bd..5224bf05f6f8 100644 --- a/Documentation/devicetree/bindings/net/davicom-dm9000.txt +++ b/Documentation/devicetree/bindings/net/davicom-dm9000.txt | |||
@@ -11,6 +11,8 @@ Required properties: | |||
11 | Optional properties: | 11 | Optional properties: |
12 | - davicom,no-eeprom : Configuration EEPROM is not available | 12 | - davicom,no-eeprom : Configuration EEPROM is not available |
13 | - davicom,ext-phy : Use external PHY | 13 | - davicom,ext-phy : Use external PHY |
14 | - reset-gpios : phandle of gpio that will be used to reset chip during probe | ||
15 | - vcc-supply : phandle of regulator that will be used to enable power to chip | ||
14 | 16 | ||
15 | Example: | 17 | Example: |
16 | 18 | ||
@@ -21,4 +23,6 @@ Example: | |||
21 | interrupts = <7 4>; | 23 | interrupts = <7 4>; |
22 | local-mac-address = [00 00 de ad be ef]; | 24 | local-mac-address = [00 00 de ad be ef]; |
23 | davicom,no-eeprom; | 25 | davicom,no-eeprom; |
26 | reset-gpios = <&gpf 12 GPIO_ACTIVE_LOW>; | ||
27 | vcc-supply = <ð0_power>; | ||
24 | }; | 28 | }; |
diff --git a/Documentation/devicetree/bindings/net/davinci_emac.txt b/Documentation/devicetree/bindings/net/davinci_emac.txt index 032808843f90..24c5cdaba8d2 100644 --- a/Documentation/devicetree/bindings/net/davinci_emac.txt +++ b/Documentation/devicetree/bindings/net/davinci_emac.txt | |||
@@ -4,7 +4,8 @@ This file provides information, what the device node | |||
4 | for the davinci_emac interface contains. | 4 | for the davinci_emac interface contains. |
5 | 5 | ||
6 | Required properties: | 6 | Required properties: |
7 | - compatible: "ti,davinci-dm6467-emac" or "ti,am3517-emac" | 7 | - compatible: "ti,davinci-dm6467-emac", "ti,am3517-emac" or |
8 | "ti,dm816-emac" | ||
8 | - reg: Offset and length of the register set for the device | 9 | - reg: Offset and length of the register set for the device |
9 | - ti,davinci-ctrl-reg-offset: offset to control register | 10 | - ti,davinci-ctrl-reg-offset: offset to control register |
10 | - ti,davinci-ctrl-mod-reg-offset: offset to control module register | 11 | - ti,davinci-ctrl-mod-reg-offset: offset to control module register |
diff --git a/Documentation/devicetree/bindings/net/fsl-fec.txt b/Documentation/devicetree/bindings/net/fsl-fec.txt index 0c8775c45798..a9eb611bee68 100644 --- a/Documentation/devicetree/bindings/net/fsl-fec.txt +++ b/Documentation/devicetree/bindings/net/fsl-fec.txt | |||
@@ -22,6 +22,8 @@ Optional properties: | |||
22 | - fsl,num-rx-queues : The property is valid for enet-avb IP, which supports | 22 | - fsl,num-rx-queues : The property is valid for enet-avb IP, which supports |
23 | hw multi queues. Should specify the rx queue number, otherwise set rx queue | 23 | hw multi queues. Should specify the rx queue number, otherwise set rx queue |
24 | number to 1. | 24 | number to 1. |
25 | - fsl,magic-packet : If present, indicates that the hardware supports waking | ||
26 | up via magic packet. | ||
25 | 27 | ||
26 | Optional subnodes: | 28 | Optional subnodes: |
27 | - mdio : specifies the mdio bus in the FEC, used as a container for phy nodes | 29 | - mdio : specifies the mdio bus in the FEC, used as a container for phy nodes |
diff --git a/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt b/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt index be6ea8960f20..1e97532a0b79 100644 --- a/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt +++ b/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt | |||
@@ -8,7 +8,16 @@ of how to define a PHY. | |||
8 | Required properties: | 8 | Required properties: |
9 | - reg : Offset and length of the register set for the device | 9 | - reg : Offset and length of the register set for the device |
10 | - compatible : Should define the compatible device type for the | 10 | - compatible : Should define the compatible device type for the |
11 | mdio. Currently, this is most likely to be "fsl,gianfar-mdio" | 11 | mdio. Currently supported strings/devices are: |
12 | - "fsl,gianfar-tbi" | ||
13 | - "fsl,gianfar-mdio" | ||
14 | - "fsl,etsec2-tbi" | ||
15 | - "fsl,etsec2-mdio" | ||
16 | - "fsl,ucc-mdio" | ||
17 | - "fsl,fman-mdio" | ||
18 | When device_type is "mdio", the following strings are also considered: | ||
19 | - "gianfar" | ||
20 | - "ucc_geth_phy" | ||
12 | 21 | ||
13 | Example: | 22 | Example: |
14 | 23 | ||
diff --git a/Documentation/devicetree/bindings/net/hisilicon-hip04-net.txt b/Documentation/devicetree/bindings/net/hisilicon-hip04-net.txt new file mode 100644 index 000000000000..988fc694b663 --- /dev/null +++ b/Documentation/devicetree/bindings/net/hisilicon-hip04-net.txt | |||
@@ -0,0 +1,88 @@ | |||
1 | Hisilicon hip04 Ethernet Controller | ||
2 | |||
3 | * Ethernet controller node | ||
4 | |||
5 | Required properties: | ||
6 | - compatible: should be "hisilicon,hip04-mac". | ||
7 | - reg: address and length of the register set for the device. | ||
8 | - interrupts: interrupt for the device. | ||
9 | - port-handle: <phandle port channel> | ||
10 | phandle, specifies a reference to the syscon ppe node | ||
11 | port, port number connected to the controller | ||
12 | channel, recv channel start from channel * number (RX_DESC_NUM) | ||
13 | - phy-mode: see ethernet.txt [1]. | ||
14 | |||
15 | Optional properties: | ||
16 | - phy-handle: see ethernet.txt [1]. | ||
17 | |||
18 | [1] Documentation/devicetree/bindings/net/ethernet.txt | ||
19 | |||
20 | |||
21 | * Ethernet ppe node: | ||
22 | Control rx & tx fifos of all ethernet controllers. | ||
23 | Have 2048 recv channels shared by all ethernet controllers, only if no overlap. | ||
24 | Each controller's recv channel start from channel * number (RX_DESC_NUM). | ||
25 | |||
26 | Required properties: | ||
27 | - compatible: "hisilicon,hip04-ppe", "syscon". | ||
28 | - reg: address and length of the register set for the device. | ||
29 | |||
30 | |||
31 | * MDIO bus node: | ||
32 | |||
33 | Required properties: | ||
34 | |||
35 | - compatible: should be "hisilicon,hip04-mdio". | ||
36 | - Inherits from MDIO bus node binding [2] | ||
37 | [2] Documentation/devicetree/bindings/net/phy.txt | ||
38 | |||
39 | Example: | ||
40 | mdio { | ||
41 | compatible = "hisilicon,hip04-mdio"; | ||
42 | reg = <0x28f1000 0x1000>; | ||
43 | #address-cells = <1>; | ||
44 | #size-cells = <0>; | ||
45 | |||
46 | phy0: ethernet-phy@0 { | ||
47 | compatible = "ethernet-phy-ieee802.3-c22"; | ||
48 | reg = <0>; | ||
49 | marvell,reg-init = <18 0x14 0 0x8001>; | ||
50 | }; | ||
51 | |||
52 | phy1: ethernet-phy@1 { | ||
53 | compatible = "ethernet-phy-ieee802.3-c22"; | ||
54 | reg = <1>; | ||
55 | marvell,reg-init = <18 0x14 0 0x8001>; | ||
56 | }; | ||
57 | }; | ||
58 | |||
59 | ppe: ppe@28c0000 { | ||
60 | compatible = "hisilicon,hip04-ppe", "syscon"; | ||
61 | reg = <0x28c0000 0x10000>; | ||
62 | }; | ||
63 | |||
64 | fe: ethernet@28b0000 { | ||
65 | compatible = "hisilicon,hip04-mac"; | ||
66 | reg = <0x28b0000 0x10000>; | ||
67 | interrupts = <0 413 4>; | ||
68 | phy-mode = "mii"; | ||
69 | port-handle = <&ppe 31 0>; | ||
70 | }; | ||
71 | |||
72 | ge0: ethernet@2800000 { | ||
73 | compatible = "hisilicon,hip04-mac"; | ||
74 | reg = <0x2800000 0x10000>; | ||
75 | interrupts = <0 402 4>; | ||
76 | phy-mode = "sgmii"; | ||
77 | port-handle = <&ppe 0 1>; | ||
78 | phy-handle = <&phy0>; | ||
79 | }; | ||
80 | |||
81 | ge8: ethernet@2880000 { | ||
82 | compatible = "hisilicon,hip04-mac"; | ||
83 | reg = <0x2880000 0x10000>; | ||
84 | interrupts = <0 410 4>; | ||
85 | phy-mode = "sgmii"; | ||
86 | port-handle = <&ppe 8 2>; | ||
87 | phy-handle = <&phy1>; | ||
88 | }; | ||
diff --git a/Documentation/devicetree/bindings/net/keystone-netcp.txt b/Documentation/devicetree/bindings/net/keystone-netcp.txt new file mode 100644 index 000000000000..f9c07710478d --- /dev/null +++ b/Documentation/devicetree/bindings/net/keystone-netcp.txt | |||
@@ -0,0 +1,197 @@ | |||
1 | This document describes the device tree bindings associated with the | ||
2 | keystone network coprocessor(NetCP) driver support. | ||
3 | |||
4 | The network coprocessor (NetCP) is a hardware accelerator that processes | ||
5 | Ethernet packets. NetCP has a gigabit Ethernet (GbE) subsytem with a ethernet | ||
6 | switch sub-module to send and receive packets. NetCP also includes a packet | ||
7 | accelerator (PA) module to perform packet classification operations such as | ||
8 | header matching, and packet modification operations such as checksum | ||
9 | generation. NetCP can also optionally include a Security Accelerator (SA) | ||
10 | capable of performing IPSec operations on ingress/egress packets. | ||
11 | |||
12 | Keystone II SoC's also have a 10 Gigabit Ethernet Subsystem (XGbE) which | ||
13 | includes a 3-port Ethernet switch sub-module capable of 10Gb/s and 1Gb/s rates | ||
14 | per Ethernet port. | ||
15 | |||
16 | Keystone NetCP driver has a plug-in module architecture where each of the NetCP | ||
17 | sub-modules exist as a loadable kernel module which plug in to the netcp core. | ||
18 | These sub-modules are represented as "netcp-devices" in the dts bindings. It is | ||
19 | mandatory to have the ethernet switch sub-module for the ethernet interface to | ||
20 | be operational. Any other sub-module like the PA is optional. | ||
21 | |||
22 | NetCP Ethernet SubSystem Layout: | ||
23 | |||
24 | ----------------------------- | ||
25 | NetCP subsystem(10G or 1G) | ||
26 | ----------------------------- | ||
27 | | | ||
28 | |-> NetCP Devices -> | | ||
29 | | |-> GBE/XGBE Switch | ||
30 | | | | ||
31 | | |-> Packet Accelerator | ||
32 | | | | ||
33 | | |-> Security Accelerator | ||
34 | | | ||
35 | | | ||
36 | | | ||
37 | |-> NetCP Interfaces -> | | ||
38 | |-> Ethernet Port 0 | ||
39 | | | ||
40 | |-> Ethernet Port 1 | ||
41 | | | ||
42 | |-> Ethernet Port 2 | ||
43 | | | ||
44 | |-> Ethernet Port 3 | ||
45 | |||
46 | |||
47 | NetCP subsystem properties: | ||
48 | Required properties: | ||
49 | - compatible: Should be "ti,netcp-1.0" | ||
50 | - clocks: phandle to the reference clocks for the subsystem. | ||
51 | - dma-id: Navigator packet dma instance id. | ||
52 | |||
53 | Optional properties: | ||
54 | - reg: register location and the size for the following register | ||
55 | regions in the specified order. | ||
56 | - Efuse MAC address register | ||
57 | - dma-coherent: Present if dma operations are coherent | ||
58 | - big-endian: Keystone devices can be operated in a mode where the DSP is in | ||
59 | the big endian mode. In such cases enable this option. This | ||
60 | option should also be enabled if the ARM is operated in | ||
61 | big endian mode with the DSP in little endian. | ||
62 | |||
63 | NetCP device properties: Device specification for NetCP sub-modules. | ||
64 | 1Gb/10Gb (gbe/xgbe) ethernet switch sub-module specifications. | ||
65 | Required properties: | ||
66 | - label: Must be "netcp-gbe" for 1Gb & "netcp-xgbe" for 10Gb. | ||
67 | - reg: register location and the size for the following register | ||
68 | regions in the specified order. | ||
69 | - subsystem registers | ||
70 | - serdes registers | ||
71 | - tx-channel: the navigator packet dma channel name for tx. | ||
72 | - tx-queue: the navigator queue number associated with the tx dma channel. | ||
73 | - interfaces: specification for each of the switch port to be registered as a | ||
74 | network interface in the stack. | ||
75 | -- slave-port: Switch port number, 0 based numbering. | ||
76 | -- link-interface: type of link interface, supported options are | ||
77 | - mac<->mac auto negotiate mode: 0 | ||
78 | - mac<->phy mode: 1 | ||
79 | - mac<->mac forced mode: 2 | ||
80 | - mac<->fiber mode: 3 | ||
81 | - mac<->phy mode with no mdio: 4 | ||
82 | - 10Gb mac<->phy mode : 10 | ||
83 | - 10Gb mac<->mac forced mode : 11 | ||
84 | ----phy-handle: phandle to PHY device | ||
85 | |||
86 | Optional properties: | ||
87 | - enable-ale: NetCP driver keeps the address learning feature in the ethernet | ||
88 | switch module disabled. This attribute is to enable the address | ||
89 | learning. | ||
90 | - secondary-slave-ports: specification for each of the switch port not be | ||
91 | registered as a network interface. NetCP driver | ||
92 | will only initialize these ports and attach PHY | ||
93 | driver to them if needed. | ||
94 | |||
95 | NetCP interface properties: Interface specification for NetCP sub-modules. | ||
96 | Required properties: | ||
97 | - rx-channel: the navigator packet dma channel name for rx. | ||
98 | - rx-queue: the navigator queue number associated with rx dma channel. | ||
99 | - rx-pool: specifies the number of descriptors to be used & the region-id | ||
100 | for creating the rx descriptor pool. | ||
101 | - tx-pool: specifies the number of descriptors to be used & the region-id | ||
102 | for creating the tx descriptor pool. | ||
103 | - rx-queue-depth: number of descriptors in each of the free descriptor | ||
104 | queue (FDQ) for the pktdma Rx flow. There can be at | ||
105 | present a maximum of 4 queues per Rx flow. | ||
106 | - rx-buffer-size: the buffer size for each of the Rx flow FDQ. | ||
107 | - tx-completion-queue: the navigator queue number where the descriptors are | ||
108 | recycled after Tx DMA completion. | ||
109 | |||
110 | Optional properties: | ||
111 | - efuse-mac: If this is 1, then the MAC address for the interface is | ||
112 | obtained from the device efuse mac address register | ||
113 | - local-mac-address: the driver is designed to use the of_get_mac_address api | ||
114 | only if efuse-mac is 0. When efuse-mac is 0, the MAC | ||
115 | address is obtained from local-mac-address. If this | ||
116 | attribute is not present, then the driver will use a | ||
117 | random MAC address. | ||
118 | - "netcp-device label": phandle to the device specification for each of NetCP | ||
119 | sub-module attached to this interface. | ||
120 | |||
121 | Example binding: | ||
122 | |||
123 | netcp: netcp@2090000 { | ||
124 | reg = <0x2620110 0x8>; | ||
125 | reg-names = "efuse"; | ||
126 | compatible = "ti,netcp-1.0"; | ||
127 | #address-cells = <1>; | ||
128 | #size-cells = <1>; | ||
129 | ranges; | ||
130 | |||
131 | clocks = <&papllclk>, <&clkcpgmac>, <&chipclk12>; | ||
132 | dma-coherent; | ||
133 | /* big-endian; */ | ||
134 | dma-id = <0>; | ||
135 | |||
136 | netcp-devices { | ||
137 | #address-cells = <1>; | ||
138 | #size-cells = <1>; | ||
139 | ranges; | ||
140 | gbe@0x2090000 { | ||
141 | label = "netcp-gbe"; | ||
142 | reg = <0x2090000 0xf00>; | ||
143 | /* enable-ale; */ | ||
144 | tx-queue = <648>; | ||
145 | tx-channel = <8>; | ||
146 | |||
147 | interfaces { | ||
148 | gbe0: interface-0 { | ||
149 | slave-port = <0>; | ||
150 | link-interface = <4>; | ||
151 | }; | ||
152 | gbe1: interface-1 { | ||
153 | slave-port = <1>; | ||
154 | link-interface = <4>; | ||
155 | }; | ||
156 | }; | ||
157 | |||
158 | secondary-slave-ports { | ||
159 | port-2 { | ||
160 | slave-port = <2>; | ||
161 | link-interface = <2>; | ||
162 | }; | ||
163 | port-3 { | ||
164 | slave-port = <3>; | ||
165 | link-interface = <2>; | ||
166 | }; | ||
167 | }; | ||
168 | }; | ||
169 | }; | ||
170 | |||
171 | netcp-interfaces { | ||
172 | interface-0 { | ||
173 | rx-channel = <22>; | ||
174 | rx-pool = <1024 12>; | ||
175 | tx-pool = <1024 12>; | ||
176 | rx-queue-depth = <128 128 0 0>; | ||
177 | rx-buffer-size = <1518 4096 0 0>; | ||
178 | rx-queue = <8704>; | ||
179 | tx-completion-queue = <8706>; | ||
180 | efuse-mac = <1>; | ||
181 | netcp-gbe = <&gbe0>; | ||
182 | |||
183 | }; | ||
184 | interface-1 { | ||
185 | rx-channel = <23>; | ||
186 | rx-pool = <1024 12>; | ||
187 | tx-pool = <1024 12>; | ||
188 | rx-queue-depth = <128 128 0 0>; | ||
189 | rx-buffer-size = <1518 4096 0 0>; | ||
190 | rx-queue = <8705>; | ||
191 | tx-completion-queue = <8707>; | ||
192 | efuse-mac = <0>; | ||
193 | local-mac-address = [02 18 31 7e 3e 6f]; | ||
194 | netcp-gbe = <&gbe1>; | ||
195 | }; | ||
196 | }; | ||
197 | }; | ||
diff --git a/Documentation/devicetree/bindings/net/nfc/st21nfca.txt b/Documentation/devicetree/bindings/net/nfc/st21nfca.txt index e4faa2e8dfeb..7bb2e213d6f9 100644 --- a/Documentation/devicetree/bindings/net/nfc/st21nfca.txt +++ b/Documentation/devicetree/bindings/net/nfc/st21nfca.txt | |||
@@ -1,7 +1,7 @@ | |||
1 | * STMicroelectronics SAS. ST21NFCA NFC Controller | 1 | * STMicroelectronics SAS. ST21NFCA NFC Controller |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: Should be "st,st21nfca_i2c". | 4 | - compatible: Should be "st,st21nfca-i2c". |
5 | - clock-frequency: I²C work frequency. | 5 | - clock-frequency: I²C work frequency. |
6 | - reg: address on the bus | 6 | - reg: address on the bus |
7 | - interrupt-parent: phandle for the interrupt gpio controller | 7 | - interrupt-parent: phandle for the interrupt gpio controller |
@@ -11,6 +11,10 @@ Required properties: | |||
11 | Optional SoC Specific Properties: | 11 | Optional SoC Specific Properties: |
12 | - pinctrl-names: Contains only one value - "default". | 12 | - pinctrl-names: Contains only one value - "default". |
13 | - pintctrl-0: Specifies the pin control groups used for this controller. | 13 | - pintctrl-0: Specifies the pin control groups used for this controller. |
14 | - ese-present: Specifies that an ese is physically connected to the nfc | ||
15 | controller. | ||
16 | - uicc-present: Specifies that the uicc swp signal can be physically | ||
17 | connected to the nfc controller. | ||
14 | 18 | ||
15 | Example (for ARM-based BeagleBoard xM with ST21NFCA on I2C2): | 19 | Example (for ARM-based BeagleBoard xM with ST21NFCA on I2C2): |
16 | 20 | ||
@@ -20,7 +24,7 @@ Example (for ARM-based BeagleBoard xM with ST21NFCA on I2C2): | |||
20 | 24 | ||
21 | st21nfca: st21nfca@1 { | 25 | st21nfca: st21nfca@1 { |
22 | 26 | ||
23 | compatible = "st,st21nfca_i2c"; | 27 | compatible = "st,st21nfca-i2c"; |
24 | 28 | ||
25 | reg = <0x01>; | 29 | reg = <0x01>; |
26 | clock-frequency = <400000>; | 30 | clock-frequency = <400000>; |
@@ -29,5 +33,8 @@ Example (for ARM-based BeagleBoard xM with ST21NFCA on I2C2): | |||
29 | interrupts = <2 IRQ_TYPE_LEVEL_LOW>; | 33 | interrupts = <2 IRQ_TYPE_LEVEL_LOW>; |
30 | 34 | ||
31 | enable-gpios = <&gpio5 29 GPIO_ACTIVE_HIGH>; | 35 | enable-gpios = <&gpio5 29 GPIO_ACTIVE_HIGH>; |
36 | |||
37 | ese-present; | ||
38 | uicc-present; | ||
32 | }; | 39 | }; |
33 | }; | 40 | }; |
diff --git a/Documentation/devicetree/bindings/net/nfc/st21nfcb.txt b/Documentation/devicetree/bindings/net/nfc/st21nfcb.txt index 9005608cbbd1..bb237072dbe9 100644 --- a/Documentation/devicetree/bindings/net/nfc/st21nfcb.txt +++ b/Documentation/devicetree/bindings/net/nfc/st21nfcb.txt | |||
@@ -1,7 +1,7 @@ | |||
1 | * STMicroelectronics SAS. ST21NFCB NFC Controller | 1 | * STMicroelectronics SAS. ST21NFCB NFC Controller |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: Should be "st,st21nfcb_i2c". | 4 | - compatible: Should be "st,st21nfcb-i2c". |
5 | - clock-frequency: I²C work frequency. | 5 | - clock-frequency: I²C work frequency. |
6 | - reg: address on the bus | 6 | - reg: address on the bus |
7 | - interrupt-parent: phandle for the interrupt gpio controller | 7 | - interrupt-parent: phandle for the interrupt gpio controller |
@@ -20,7 +20,7 @@ Example (for ARM-based BeagleBoard xM with ST21NFCB on I2C2): | |||
20 | 20 | ||
21 | st21nfcb: st21nfcb@8 { | 21 | st21nfcb: st21nfcb@8 { |
22 | 22 | ||
23 | compatible = "st,st21nfcb_i2c"; | 23 | compatible = "st,st21nfcb-i2c"; |
24 | 24 | ||
25 | reg = <0x08>; | 25 | reg = <0x08>; |
26 | clock-frequency = <400000>; | 26 | clock-frequency = <400000>; |
diff --git a/Documentation/devicetree/bindings/net/rockchip-dwmac.txt b/Documentation/devicetree/bindings/net/rockchip-dwmac.txt new file mode 100644 index 000000000000..21fd199e89b5 --- /dev/null +++ b/Documentation/devicetree/bindings/net/rockchip-dwmac.txt | |||
@@ -0,0 +1,68 @@ | |||
1 | Rockchip SoC RK3288 10/100/1000 Ethernet driver(GMAC) | ||
2 | |||
3 | The device node has following properties. | ||
4 | |||
5 | Required properties: | ||
6 | - compatible: Can be "rockchip,rk3288-gmac". | ||
7 | - reg: addresses and length of the register sets for the device. | ||
8 | - interrupts: Should contain the GMAC interrupts. | ||
9 | - interrupt-names: Should contain the interrupt names "macirq". | ||
10 | - rockchip,grf: phandle to the syscon grf used to control speed and mode. | ||
11 | - clocks: <&cru SCLK_MAC>: clock selector for main clock, from PLL or PHY. | ||
12 | <&cru SCLK_MAC_PLL>: PLL clock for SCLK_MAC | ||
13 | <&cru SCLK_MAC_RX>: clock gate for RX | ||
14 | <&cru SCLK_MAC_TX>: clock gate for TX | ||
15 | <&cru SCLK_MACREF>: clock gate for RMII referce clock | ||
16 | <&cru SCLK_MACREF_OUT> clock gate for RMII reference clock output | ||
17 | <&cru ACLK_GMAC>: AXI clock gate for GMAC | ||
18 | <&cru PCLK_GMAC>: APB clock gate for GMAC | ||
19 | - clock-names: One name for each entry in the clocks property. | ||
20 | - phy-mode: See ethernet.txt file in the same directory. | ||
21 | - pinctrl-names: Names corresponding to the numbered pinctrl states. | ||
22 | - pinctrl-0: pin-control mode. can be <&rgmii_pins> or <&rmii_pins>. | ||
23 | - clock_in_out: For RGMII, it must be "input", means main clock(125MHz) | ||
24 | is not sourced from SoC's PLL, but input from PHY; For RMII, "input" means | ||
25 | PHY provides the reference clock(50MHz), "output" means GMAC provides the | ||
26 | reference clock. | ||
27 | - snps,reset-gpio gpio number for phy reset. | ||
28 | - snps,reset-active-low boolean flag to indicate if phy reset is active low. | ||
29 | - assigned-clocks: main clock, should be <&cru SCLK_MAC>; | ||
30 | - assigned-clock-parents = parent of main clock. | ||
31 | can be <&ext_gmac> or <&cru SCLK_MAC_PLL>. | ||
32 | |||
33 | Optional properties: | ||
34 | - tx_delay: Delay value for TXD timing. Range value is 0~0x7F, 0x30 as default. | ||
35 | - rx_delay: Delay value for RXD timing. Range value is 0~0x7F, 0x10 as default. | ||
36 | - phy-supply: phandle to a regulator if the PHY needs one | ||
37 | |||
38 | Example: | ||
39 | |||
40 | gmac: ethernet@ff290000 { | ||
41 | compatible = "rockchip,rk3288-gmac"; | ||
42 | reg = <0xff290000 0x10000>; | ||
43 | interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>; | ||
44 | interrupt-names = "macirq"; | ||
45 | rockchip,grf = <&grf>; | ||
46 | clocks = <&cru SCLK_MAC>, | ||
47 | <&cru SCLK_MAC_RX>, <&cru SCLK_MAC_TX>, | ||
48 | <&cru SCLK_MACREF>, <&cru SCLK_MACREF_OUT>, | ||
49 | <&cru ACLK_GMAC>, <&cru PCLK_GMAC>; | ||
50 | clock-names = "stmmaceth", | ||
51 | "mac_clk_rx", "mac_clk_tx", | ||
52 | "clk_mac_ref", "clk_mac_refout", | ||
53 | "aclk_mac", "pclk_mac"; | ||
54 | phy-mode = "rgmii"; | ||
55 | pinctrl-names = "default"; | ||
56 | pinctrl-0 = <&rgmii_pins /*&rmii_pins*/>; | ||
57 | |||
58 | clock_in_out = "input"; | ||
59 | snps,reset-gpio = <&gpio4 7 0>; | ||
60 | snps,reset-active-low; | ||
61 | |||
62 | assigned-clocks = <&cru SCLK_MAC>; | ||
63 | assigned-clock-parents = <&ext_gmac>; | ||
64 | tx_delay = <0x30>; | ||
65 | rx_delay = <0x10>; | ||
66 | |||
67 | status = "ok"; | ||
68 | }; | ||
diff --git a/Documentation/devicetree/bindings/net/sti-dwmac.txt b/Documentation/devicetree/bindings/net/sti-dwmac.txt index 6762a6b5da7e..d05c1e1fd9b6 100644 --- a/Documentation/devicetree/bindings/net/sti-dwmac.txt +++ b/Documentation/devicetree/bindings/net/sti-dwmac.txt | |||
@@ -9,14 +9,10 @@ The device node has following properties. | |||
9 | Required properties: | 9 | Required properties: |
10 | - compatible : Can be "st,stih415-dwmac", "st,stih416-dwmac", | 10 | - compatible : Can be "st,stih415-dwmac", "st,stih416-dwmac", |
11 | "st,stih407-dwmac", "st,stid127-dwmac". | 11 | "st,stih407-dwmac", "st,stid127-dwmac". |
12 | - reg : Offset of the glue configuration register map in system | 12 | - st,syscon : Should be phandle/offset pair. The phandle to the syscon node which |
13 | configuration regmap pointed by st,syscon property and size. | 13 | encompases the glue register, and the offset of the control register. |
14 | - st,syscon : Should be phandle to system configuration node which | ||
15 | encompases this glue registers. | ||
16 | - st,gmac_en: this is to enable the gmac into a dedicated sysctl control | 14 | - st,gmac_en: this is to enable the gmac into a dedicated sysctl control |
17 | register available on STiH407 SoC. | 15 | register available on STiH407 SoC. |
18 | - sti-ethconf: this is the gmac glue logic register to enable the GMAC, | ||
19 | select among the different modes and program the clk retiming. | ||
20 | - pinctrl-0: pin-control for all the MII mode supported. | 16 | - pinctrl-0: pin-control for all the MII mode supported. |
21 | 17 | ||
22 | Optional properties: | 18 | Optional properties: |
@@ -40,10 +36,10 @@ ethernet0: dwmac@9630000 { | |||
40 | device_type = "network"; | 36 | device_type = "network"; |
41 | status = "disabled"; | 37 | status = "disabled"; |
42 | compatible = "st,stih407-dwmac", "snps,dwmac", "snps,dwmac-3.710"; | 38 | compatible = "st,stih407-dwmac", "snps,dwmac", "snps,dwmac-3.710"; |
43 | reg = <0x9630000 0x8000>, <0x80 0x4>; | 39 | reg = <0x9630000 0x8000>; |
44 | reg-names = "stmmaceth", "sti-ethconf"; | 40 | reg-names = "stmmaceth"; |
45 | 41 | ||
46 | st,syscon = <&syscfg_sbc_reg>; | 42 | st,syscon = <&syscfg_sbc_reg 0x80>; |
47 | st,gmac_en; | 43 | st,gmac_en; |
48 | resets = <&softreset STIH407_ETH1_SOFTRESET>; | 44 | resets = <&softreset STIH407_ETH1_SOFTRESET>; |
49 | reset-names = "stmmaceth"; | 45 | reset-names = "stmmaceth"; |
diff --git a/Documentation/devicetree/bindings/net/stmmac.txt b/Documentation/devicetree/bindings/net/stmmac.txt index c41afd963edf..8ca65cec52ae 100644 --- a/Documentation/devicetree/bindings/net/stmmac.txt +++ b/Documentation/devicetree/bindings/net/stmmac.txt | |||
@@ -43,6 +43,7 @@ Optional properties: | |||
43 | available this clock is used for programming the Timestamp Addend Register. | 43 | available this clock is used for programming the Timestamp Addend Register. |
44 | If not passed then the system clock will be used and this is fine on some | 44 | If not passed then the system clock will be used and this is fine on some |
45 | platforms. | 45 | platforms. |
46 | - snps,burst_len: The AXI burst lenth value of the AXI BUS MODE register. | ||
46 | 47 | ||
47 | Examples: | 48 | Examples: |
48 | 49 | ||
diff --git a/Documentation/devicetree/bindings/net/wireless/qcom,ath10k.txt b/Documentation/devicetree/bindings/net/wireless/qcom,ath10k.txt new file mode 100644 index 000000000000..edefc26c6204 --- /dev/null +++ b/Documentation/devicetree/bindings/net/wireless/qcom,ath10k.txt | |||
@@ -0,0 +1,30 @@ | |||
1 | * Qualcomm Atheros ath10k wireless devices | ||
2 | |||
3 | For ath10k devices the calibration data can be provided through Device | ||
4 | Tree. The node is a child node of the PCI controller. | ||
5 | |||
6 | Required properties: | ||
7 | -compatible : Should be "qcom,ath10k" | ||
8 | |||
9 | Optional properties: | ||
10 | - qcom,ath10k-calibration-data : calibration data as an array, the | ||
11 | length can vary between hw versions | ||
12 | |||
13 | |||
14 | Example: | ||
15 | |||
16 | pci { | ||
17 | pcie@0 { | ||
18 | reg = <0 0 0 0 0>; | ||
19 | #interrupt-cells = <1>; | ||
20 | #size-cells = <2>; | ||
21 | #address-cells = <3>; | ||
22 | device_type = "pci"; | ||
23 | |||
24 | ath10k@0,0 { | ||
25 | reg = <0 0 0 0 0>; | ||
26 | device_type = "pci"; | ||
27 | qcom,ath10k-calibration-data = [ 01 02 03 ... ]; | ||
28 | }; | ||
29 | }; | ||
30 | }; | ||
diff --git a/Documentation/devicetree/bindings/panel/avic,tm070ddh03.txt b/Documentation/devicetree/bindings/panel/avic,tm070ddh03.txt new file mode 100644 index 000000000000..b6f2f3e8f44e --- /dev/null +++ b/Documentation/devicetree/bindings/panel/avic,tm070ddh03.txt | |||
@@ -0,0 +1,7 @@ | |||
1 | Shanghai AVIC Optoelectronics 7" 1024x600 color TFT-LCD panel | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: should be "avic,tm070ddh03" | ||
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/giantplus,gpg482739qs5.txt b/Documentation/devicetree/bindings/panel/giantplus,gpg482739qs5.txt new file mode 100644 index 000000000000..24b0b624434b --- /dev/null +++ b/Documentation/devicetree/bindings/panel/giantplus,gpg482739qs5.txt | |||
@@ -0,0 +1,7 @@ | |||
1 | GiantPlus GPG48273QS5 4.3" (480x272) WQVGA TFT LCD panel | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: should be "giantplus,gpg48273qs5" | ||
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/pci/nvidia,tegra20-pcie.txt b/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt index d763e047c6ae..75321ae23c08 100644 --- a/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt +++ b/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt | |||
@@ -1,10 +1,10 @@ | |||
1 | NVIDIA Tegra PCIe controller | 1 | NVIDIA Tegra PCIe controller |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: Must be one of: | 4 | - compatible: For Tegra20, must contain "nvidia,tegra20-pcie". For Tegra30, |
5 | - "nvidia,tegra20-pcie" | 5 | "nvidia,tegra30-pcie". For Tegra124, must contain "nvidia,tegra124-pcie". |
6 | - "nvidia,tegra30-pcie" | 6 | Otherwise, must contain "nvidia,<chip>-pcie", plus one of the above, where |
7 | - "nvidia,tegra124-pcie" | 7 | <chip> is tegra132 or tegra210. |
8 | - device_type: Must be "pci" | 8 | - device_type: Must be "pci" |
9 | - reg: A list of physical base address and length for each set of controller | 9 | - reg: A list of physical base address and length for each set of controller |
10 | registers. Must contain an entry for each entry in the reg-names property. | 10 | registers. Must contain an entry for each entry in the reg-names property. |
diff --git a/Documentation/devicetree/bindings/pci/versatile.txt b/Documentation/devicetree/bindings/pci/versatile.txt new file mode 100644 index 000000000000..ebd1e7d0403e --- /dev/null +++ b/Documentation/devicetree/bindings/pci/versatile.txt | |||
@@ -0,0 +1,59 @@ | |||
1 | * ARM Versatile Platform Baseboard PCI interface | ||
2 | |||
3 | PCI host controller found on the ARM Versatile PB board's FPGA. | ||
4 | |||
5 | Required properties: | ||
6 | - compatible: should contain "arm,versatile-pci" to identify the Versatile PCI | ||
7 | controller. | ||
8 | - reg: base addresses and lengths of the pci controller. There must be 3 | ||
9 | entries: | ||
10 | - Versatile-specific registers | ||
11 | - Self Config space | ||
12 | - Config space | ||
13 | - #address-cells: set to <3> | ||
14 | - #size-cells: set to <2> | ||
15 | - device_type: set to "pci" | ||
16 | - bus-range: set to <0 0xff> | ||
17 | - ranges: ranges for the PCI memory and I/O regions | ||
18 | - #interrupt-cells: set to <1> | ||
19 | - interrupt-map-mask and interrupt-map: standard PCI properties to define | ||
20 | the mapping of the PCI interface to interrupt numbers. | ||
21 | |||
22 | Example: | ||
23 | |||
24 | pci-controller@10001000 { | ||
25 | compatible = "arm,versatile-pci"; | ||
26 | device_type = "pci"; | ||
27 | reg = <0x10001000 0x1000 | ||
28 | 0x41000000 0x10000 | ||
29 | 0x42000000 0x100000>; | ||
30 | bus-range = <0 0xff>; | ||
31 | #address-cells = <3>; | ||
32 | #size-cells = <2>; | ||
33 | #interrupt-cells = <1>; | ||
34 | |||
35 | ranges = <0x01000000 0 0x00000000 0x43000000 0 0x00010000 /* downstream I/O */ | ||
36 | 0x02000000 0 0x50000000 0x50000000 0 0x10000000 /* non-prefetchable memory */ | ||
37 | 0x42000000 0 0x60000000 0x60000000 0 0x10000000>; /* prefetchable memory */ | ||
38 | |||
39 | interrupt-map-mask = <0x1800 0 0 7>; | ||
40 | interrupt-map = <0x1800 0 0 1 &sic 28 | ||
41 | 0x1800 0 0 2 &sic 29 | ||
42 | 0x1800 0 0 3 &sic 30 | ||
43 | 0x1800 0 0 4 &sic 27 | ||
44 | |||
45 | 0x1000 0 0 1 &sic 27 | ||
46 | 0x1000 0 0 2 &sic 28 | ||
47 | 0x1000 0 0 3 &sic 29 | ||
48 | 0x1000 0 0 4 &sic 30 | ||
49 | |||
50 | 0x0800 0 0 1 &sic 30 | ||
51 | 0x0800 0 0 2 &sic 27 | ||
52 | 0x0800 0 0 3 &sic 28 | ||
53 | 0x0800 0 0 4 &sic 29 | ||
54 | |||
55 | 0x0000 0 0 1 &sic 29 | ||
56 | 0x0000 0 0 2 &sic 30 | ||
57 | 0x0000 0 0 3 &sic 27 | ||
58 | 0x0000 0 0 4 &sic 28>; | ||
59 | }; | ||
diff --git a/Documentation/devicetree/bindings/phy/phy-miphy28lp.txt b/Documentation/devicetree/bindings/phy/phy-miphy28lp.txt index 46a135dae6b3..89caa885d08c 100644 --- a/Documentation/devicetree/bindings/phy/phy-miphy28lp.txt +++ b/Documentation/devicetree/bindings/phy/phy-miphy28lp.txt | |||
@@ -26,6 +26,7 @@ Required properties (port (child) node): | |||
26 | filled in "reg". It can also contain the offset of the system configuration | 26 | filled in "reg". It can also contain the offset of the system configuration |
27 | registers used as glue-logic to setup the device for SATA/PCIe or USB3 | 27 | registers used as glue-logic to setup the device for SATA/PCIe or USB3 |
28 | devices. | 28 | devices. |
29 | - st,syscfg : Offset of the parent configuration register. | ||
29 | - resets : phandle to the parent reset controller. | 30 | - resets : phandle to the parent reset controller. |
30 | - reset-names : Associated name must be "miphy-sw-rst". | 31 | - reset-names : Associated name must be "miphy-sw-rst". |
31 | 32 | ||
@@ -54,18 +55,12 @@ example: | |||
54 | phy_port0: port@9b22000 { | 55 | phy_port0: port@9b22000 { |
55 | reg = <0x9b22000 0xff>, | 56 | reg = <0x9b22000 0xff>, |
56 | <0x9b09000 0xff>, | 57 | <0x9b09000 0xff>, |
57 | <0x9b04000 0xff>, | 58 | <0x9b04000 0xff>; |
58 | <0x114 0x4>, /* sysctrl MiPHY cntrl */ | ||
59 | <0x818 0x4>, /* sysctrl MiPHY status*/ | ||
60 | <0xe0 0x4>, /* sysctrl PCIe */ | ||
61 | <0xec 0x4>; /* sysctrl SATA */ | ||
62 | reg-names = "sata-up", | 59 | reg-names = "sata-up", |
63 | "pcie-up", | 60 | "pcie-up", |
64 | "pipew", | 61 | "pipew"; |
65 | "miphy-ctrl-glue", | 62 | |
66 | "miphy-status-glue", | 63 | st,syscfg = <0x114 0x818 0xe0 0xec>; |
67 | "pcie-glue", | ||
68 | "sata-glue"; | ||
69 | #phy-cells = <1>; | 64 | #phy-cells = <1>; |
70 | st,osc-rdy; | 65 | st,osc-rdy; |
71 | reset-names = "miphy-sw-rst"; | 66 | reset-names = "miphy-sw-rst"; |
@@ -75,18 +70,13 @@ example: | |||
75 | phy_port1: port@9b2a000 { | 70 | phy_port1: port@9b2a000 { |
76 | reg = <0x9b2a000 0xff>, | 71 | reg = <0x9b2a000 0xff>, |
77 | <0x9b19000 0xff>, | 72 | <0x9b19000 0xff>, |
78 | <0x9b14000 0xff>, | 73 | <0x9b14000 0xff>; |
79 | <0x118 0x4>, | ||
80 | <0x81c 0x4>, | ||
81 | <0xe4 0x4>, | ||
82 | <0xf0 0x4>; | ||
83 | reg-names = "sata-up", | 74 | reg-names = "sata-up", |
84 | "pcie-up", | 75 | "pcie-up", |
85 | "pipew", | 76 | "pipew"; |
86 | "miphy-ctrl-glue", | 77 | |
87 | "miphy-status-glue", | 78 | st,syscfg = <0x118 0x81c 0xe4 0xf0>; |
88 | "pcie-glue", | 79 | |
89 | "sata-glue"; | ||
90 | #phy-cells = <1>; | 80 | #phy-cells = <1>; |
91 | st,osc-force-ext; | 81 | st,osc-force-ext; |
92 | reset-names = "miphy-sw-rst"; | 82 | reset-names = "miphy-sw-rst"; |
@@ -95,13 +85,12 @@ example: | |||
95 | 85 | ||
96 | phy_port2: port@8f95000 { | 86 | phy_port2: port@8f95000 { |
97 | reg = <0x8f95000 0xff>, | 87 | reg = <0x8f95000 0xff>, |
98 | <0x8f90000 0xff>, | 88 | <0x8f90000 0xff>; |
99 | <0x11c 0x4>, | ||
100 | <0x820 0x4>; | ||
101 | reg-names = "pipew", | 89 | reg-names = "pipew", |
102 | "usb3-up", | 90 | "usb3-up"; |
103 | "miphy-ctrl-glue", | 91 | |
104 | "miphy-status-glue"; | 92 | st,syscfg = <0x11c 0x820>; |
93 | |||
105 | #phy-cells = <1>; | 94 | #phy-cells = <1>; |
106 | reset-names = "miphy-sw-rst"; | 95 | reset-names = "miphy-sw-rst"; |
107 | resets = <&softreset STIH407_MIPHY2_SOFTRESET>; | 96 | resets = <&softreset STIH407_MIPHY2_SOFTRESET>; |
@@ -125,4 +114,4 @@ example: | |||
125 | 114 | ||
126 | Macro definitions for the supported miphy configuration can be found in: | 115 | Macro definitions for the supported miphy configuration can be found in: |
127 | 116 | ||
128 | include/dt-bindings/phy/phy-miphy28lp.h | 117 | include/dt-bindings/phy/phy.h |
diff --git a/Documentation/devicetree/bindings/phy/phy-miphy365x.txt b/Documentation/devicetree/bindings/phy/phy-miphy365x.txt index 42c880886cf7..9802d5d911aa 100644 --- a/Documentation/devicetree/bindings/phy/phy-miphy365x.txt +++ b/Documentation/devicetree/bindings/phy/phy-miphy365x.txt | |||
@@ -6,8 +6,10 @@ for SATA and PCIe. | |||
6 | 6 | ||
7 | Required properties (controller (parent) node): | 7 | Required properties (controller (parent) node): |
8 | - compatible : Should be "st,miphy365x-phy" | 8 | - compatible : Should be "st,miphy365x-phy" |
9 | - st,syscfg : Should be a phandle of the system configuration register group | 9 | - st,syscfg : Phandle / integer array property. Phandle of sysconfig group |
10 | which contain the SATA, PCIe mode setting bits | 10 | containing the miphy registers and integer array should contain |
11 | an entry for each port sub-node, specifying the control | ||
12 | register offset inside the sysconfig group. | ||
11 | 13 | ||
12 | Required nodes : A sub-node is required for each channel the controller | 14 | Required nodes : A sub-node is required for each channel the controller |
13 | provides. Address range information including the usual | 15 | provides. Address range information including the usual |
@@ -26,7 +28,6 @@ Required properties (port (child) node): | |||
26 | registers filled in "reg": | 28 | registers filled in "reg": |
27 | - sata: For SATA devices | 29 | - sata: For SATA devices |
28 | - pcie: For PCIe devices | 30 | - pcie: For PCIe devices |
29 | - syscfg: To specify the syscfg based config register | ||
30 | 31 | ||
31 | Optional properties (port (child) node): | 32 | Optional properties (port (child) node): |
32 | - st,sata-gen : Generation of locally attached SATA IP. Expected values | 33 | - st,sata-gen : Generation of locally attached SATA IP. Expected values |
@@ -39,20 +40,20 @@ Example: | |||
39 | 40 | ||
40 | miphy365x_phy: miphy365x@fe382000 { | 41 | miphy365x_phy: miphy365x@fe382000 { |
41 | compatible = "st,miphy365x-phy"; | 42 | compatible = "st,miphy365x-phy"; |
42 | st,syscfg = <&syscfg_rear>; | 43 | st,syscfg = <&syscfg_rear 0x824 0x828>; |
43 | #address-cells = <1>; | 44 | #address-cells = <1>; |
44 | #size-cells = <1>; | 45 | #size-cells = <1>; |
45 | ranges; | 46 | ranges; |
46 | 47 | ||
47 | phy_port0: port@fe382000 { | 48 | phy_port0: port@fe382000 { |
48 | reg = <0xfe382000 0x100>, <0xfe394000 0x100>, <0x824 0x4>; | 49 | reg = <0xfe382000 0x100>, <0xfe394000 0x100>; |
49 | reg-names = "sata", "pcie", "syscfg"; | 50 | reg-names = "sata", "pcie"; |
50 | #phy-cells = <1>; | 51 | #phy-cells = <1>; |
51 | st,sata-gen = <3>; | 52 | st,sata-gen = <3>; |
52 | }; | 53 | }; |
53 | 54 | ||
54 | phy_port1: port@fe38a000 { | 55 | phy_port1: port@fe38a000 { |
55 | reg = <0xfe38a000 0x100>, <0xfe804000 0x100>, <0x828 0x4>;; | 56 | reg = <0xfe38a000 0x100>, <0xfe804000 0x100>;; |
56 | reg-names = "sata", "pcie", "syscfg"; | 57 | reg-names = "sata", "pcie", "syscfg"; |
57 | #phy-cells = <1>; | 58 | #phy-cells = <1>; |
58 | st,pcie-tx-pol-inv; | 59 | st,pcie-tx-pol-inv; |
diff --git a/Documentation/devicetree/bindings/phy/phy-stih407-usb.txt b/Documentation/devicetree/bindings/phy/phy-stih407-usb.txt index 1ef8228db73b..de6a706abcdb 100644 --- a/Documentation/devicetree/bindings/phy/phy-stih407-usb.txt +++ b/Documentation/devicetree/bindings/phy/phy-stih407-usb.txt | |||
@@ -5,10 +5,7 @@ host controllers (when controlling usb2/1.1 devices) available on STiH407 SoC fa | |||
5 | 5 | ||
6 | Required properties: | 6 | Required properties: |
7 | - compatible : should be "st,stih407-usb2-phy" | 7 | - compatible : should be "st,stih407-usb2-phy" |
8 | - reg : contain the offset and length of the system configuration registers | 8 | - st,syscfg : phandle of sysconfig bank plus integer array containing phyparam and phyctrl register offsets |
9 | used as glue logic to control & parameter phy | ||
10 | - reg-names : the names of the system configuration registers in "reg", should be "param" and "reg" | ||
11 | - st,syscfg : sysconfig register to manage phy parameter at driver level | ||
12 | - resets : list of phandle and reset specifier pairs. There should be two entries, one | 9 | - resets : list of phandle and reset specifier pairs. There should be two entries, one |
13 | for the whole phy and one for the port | 10 | for the whole phy and one for the port |
14 | - reset-names : list of reset signal names. Should be "global" and "port" | 11 | - reset-names : list of reset signal names. Should be "global" and "port" |
@@ -19,11 +16,8 @@ Example: | |||
19 | 16 | ||
20 | usb2_picophy0: usbpicophy@f8 { | 17 | usb2_picophy0: usbpicophy@f8 { |
21 | compatible = "st,stih407-usb2-phy"; | 18 | compatible = "st,stih407-usb2-phy"; |
22 | reg = <0xf8 0x04>, /* syscfg 5062 */ | ||
23 | <0xf4 0x04>; /* syscfg 5061 */ | ||
24 | reg-names = "param", "ctrl"; | ||
25 | #phy-cells = <0>; | 19 | #phy-cells = <0>; |
26 | st,syscfg = <&syscfg_core>; | 20 | st,syscfg = <&syscfg_core 0x100 0xf4>; |
27 | resets = <&softreset STIH407_PICOPHY_SOFTRESET>, | 21 | resets = <&softreset STIH407_PICOPHY_SOFTRESET>, |
28 | <&picophyreset STIH407_PICOPHY0_RESET>; | 22 | <&picophyreset STIH407_PICOPHY0_RESET>; |
29 | reset-names = "global", "port"; | 23 | reset-names = "global", "port"; |
diff --git a/Documentation/devicetree/bindings/phy/rockchip-usb-phy.txt b/Documentation/devicetree/bindings/phy/rockchip-usb-phy.txt new file mode 100644 index 000000000000..826454ac43bb --- /dev/null +++ b/Documentation/devicetree/bindings/phy/rockchip-usb-phy.txt | |||
@@ -0,0 +1,37 @@ | |||
1 | ROCKCHIP USB2 PHY | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: rockchip,rk3288-usb-phy | ||
5 | - rockchip,grf : phandle to the syscon managing the "general | ||
6 | register files" | ||
7 | - #address-cells: should be 1 | ||
8 | - #size-cells: should be 0 | ||
9 | |||
10 | Sub-nodes: | ||
11 | Each PHY should be represented as a sub-node. | ||
12 | |||
13 | Sub-nodes | ||
14 | required properties: | ||
15 | - #phy-cells: should be 0 | ||
16 | - reg: PHY configure reg address offset in GRF | ||
17 | "0x320" - for PHY attach to OTG controller | ||
18 | "0x334" - for PHY attach to HOST0 controller | ||
19 | "0x348" - for PHY attach to HOST1 controller | ||
20 | |||
21 | Optional Properties: | ||
22 | - clocks : phandle + clock specifier for the phy clocks | ||
23 | - clock-names: string, clock name, must be "phyclk" | ||
24 | |||
25 | Example: | ||
26 | |||
27 | usbphy: phy { | ||
28 | compatible = "rockchip,rk3288-usb-phy"; | ||
29 | rockchip,grf = <&grf>; | ||
30 | #address-cells = <1>; | ||
31 | #size-cells = <0>; | ||
32 | |||
33 | usbphy0: usb-phy0 { | ||
34 | #phy-cells = <0>; | ||
35 | reg = <0x320>; | ||
36 | }; | ||
37 | }; | ||
diff --git a/Documentation/devicetree/bindings/phy/samsung-phy.txt b/Documentation/devicetree/bindings/phy/samsung-phy.txt index d5bad920827f..91e38cfe1f8f 100644 --- a/Documentation/devicetree/bindings/phy/samsung-phy.txt +++ b/Documentation/devicetree/bindings/phy/samsung-phy.txt | |||
@@ -3,8 +3,8 @@ Samsung S5P/EXYNOS SoC series MIPI CSIS/DSIM DPHY | |||
3 | 3 | ||
4 | Required properties: | 4 | Required properties: |
5 | - compatible : should be "samsung,s5pv210-mipi-video-phy"; | 5 | - compatible : should be "samsung,s5pv210-mipi-video-phy"; |
6 | - reg : offset and length of the MIPI DPHY register set; | ||
7 | - #phy-cells : from the generic phy bindings, must be 1; | 6 | - #phy-cells : from the generic phy bindings, must be 1; |
7 | - syscon - phandle to the PMU system controller; | ||
8 | 8 | ||
9 | For "samsung,s5pv210-mipi-video-phy" compatible PHYs the second cell in | 9 | For "samsung,s5pv210-mipi-video-phy" compatible PHYs the second cell in |
10 | the PHY specifier identifies the PHY and its meaning is as follows: | 10 | the PHY specifier identifies the PHY and its meaning is as follows: |
diff --git a/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt index 93ce12eb422a..fdd8046e650a 100644 --- a/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt | |||
@@ -11,6 +11,7 @@ Required properties: | |||
11 | "allwinner,sun5i-a10s-pinctrl" | 11 | "allwinner,sun5i-a10s-pinctrl" |
12 | "allwinner,sun5i-a13-pinctrl" | 12 | "allwinner,sun5i-a13-pinctrl" |
13 | "allwinner,sun6i-a31-pinctrl" | 13 | "allwinner,sun6i-a31-pinctrl" |
14 | "allwinner,sun6i-a31s-pinctrl" | ||
14 | "allwinner,sun6i-a31-r-pinctrl" | 15 | "allwinner,sun6i-a31-r-pinctrl" |
15 | "allwinner,sun7i-a20-pinctrl" | 16 | "allwinner,sun7i-a20-pinctrl" |
16 | "allwinner,sun8i-a23-pinctrl" | 17 | "allwinner,sun8i-a23-pinctrl" |
diff --git a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-pinmux.txt b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-pinmux.txt index 189814e7cdc7..ecb5c0d25218 100644 --- a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-pinmux.txt +++ b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-pinmux.txt | |||
@@ -6,7 +6,8 @@ nvidia,tegra30-pinmux.txt. In fact, this document assumes that binding as | |||
6 | a baseline, and only documents the differences between the two bindings. | 6 | a baseline, and only documents the differences between the two bindings. |
7 | 7 | ||
8 | Required properties: | 8 | Required properties: |
9 | - compatible: "nvidia,tegra124-pinmux" | 9 | - compatible: For Tegra124, must contain "nvidia,tegra124-pinmux". For |
10 | Tegra132, must contain '"nvidia,tegra132-pinmux", "nvidia-tegra124-pinmux"'. | ||
10 | - reg: Should contain a list of base address and size pairs for: | 11 | - reg: Should contain a list of base address and size pairs for: |
11 | -- first entry - the drive strength and pad control registers. | 12 | -- first entry - the drive strength and pad control registers. |
12 | -- second entry - the pinmux registers | 13 | -- second entry - the pinmux registers |
diff --git a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-xusb-padctl.txt b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-xusb-padctl.txt index 2f9c0bd66457..30676ded85bb 100644 --- a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-xusb-padctl.txt +++ b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-xusb-padctl.txt | |||
@@ -13,7 +13,9 @@ how to describe and reference PHYs in device trees. | |||
13 | 13 | ||
14 | Required properties: | 14 | Required properties: |
15 | -------------------- | 15 | -------------------- |
16 | - compatible: should be "nvidia,tegra124-xusb-padctl" | 16 | - compatible: For Tegra124, must contain "nvidia,tegra124-xusb-padctl". |
17 | Otherwise, must contain '"nvidia,<chip>-xusb-padctl", | ||
18 | "nvidia-tegra124-xusb-padctl"', where <chip> is tegra132 or tegra210. | ||
17 | - reg: Physical base address and length of the controller's registers. | 19 | - reg: Physical base address and length of the controller's registers. |
18 | - resets: Must contain an entry for each entry in reset-names. | 20 | - resets: Must contain an entry for each entry in reset-names. |
19 | See ../reset/reset.txt for details. | 21 | See ../reset/reset.txt for details. |
diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,msm8916-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,msm8916-pinctrl.txt new file mode 100644 index 000000000000..498caff6029e --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/qcom,msm8916-pinctrl.txt | |||
@@ -0,0 +1,186 @@ | |||
1 | Qualcomm MSM8916 TLMM block | ||
2 | |||
3 | This binding describes the Top Level Mode Multiplexer block found in the | ||
4 | MSM8916 platform. | ||
5 | |||
6 | - compatible: | ||
7 | Usage: required | ||
8 | Value type: <string> | ||
9 | Definition: must be "qcom,msm8916-pinctrl" | ||
10 | |||
11 | - reg: | ||
12 | Usage: required | ||
13 | Value type: <prop-encoded-array> | ||
14 | Definition: the base address and size of the TLMM register space. | ||
15 | |||
16 | - interrupts: | ||
17 | Usage: required | ||
18 | Value type: <prop-encoded-array> | ||
19 | Definition: should specify the TLMM summary IRQ. | ||
20 | |||
21 | - interrupt-controller: | ||
22 | Usage: required | ||
23 | Value type: <none> | ||
24 | Definition: identifies this node as an interrupt controller | ||
25 | |||
26 | - #interrupt-cells: | ||
27 | Usage: required | ||
28 | Value type: <u32> | ||
29 | Definition: must be 2. Specifying the pin number and flags, as defined | ||
30 | in <dt-bindings/interrupt-controller/irq.h> | ||
31 | |||
32 | - gpio-controller: | ||
33 | Usage: required | ||
34 | Value type: <none> | ||
35 | Definition: identifies this node as a gpio controller | ||
36 | |||
37 | - #gpio-cells: | ||
38 | Usage: required | ||
39 | Value type: <u32> | ||
40 | Definition: must be 2. Specifying the pin number and flags, as defined | ||
41 | in <dt-bindings/gpio/gpio.h> | ||
42 | |||
43 | Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for | ||
44 | a general description of GPIO and interrupt bindings. | ||
45 | |||
46 | Please refer to pinctrl-bindings.txt in this directory for details of the | ||
47 | common pinctrl bindings used by client devices, including the meaning of the | ||
48 | phrase "pin configuration node". | ||
49 | |||
50 | The pin configuration nodes act as a container for an arbitrary number of | ||
51 | subnodes. Each of these subnodes represents some desired configuration for a | ||
52 | pin, a group, or a list of pins or groups. This configuration can include the | ||
53 | mux function to select on those pin(s)/group(s), and various pin configuration | ||
54 | parameters, such as pull-up, drive strength, etc. | ||
55 | |||
56 | |||
57 | PIN CONFIGURATION NODES: | ||
58 | |||
59 | The name of each subnode is not important; all subnodes should be enumerated | ||
60 | and processed purely based on their content. | ||
61 | |||
62 | Each subnode only affects those parameters that are explicitly listed. In | ||
63 | other words, a subnode that lists a mux function but no pin configuration | ||
64 | parameters implies no information about any pin configuration parameters. | ||
65 | Similarly, a pin subnode that describes a pullup parameter implies no | ||
66 | information about e.g. the mux function. | ||
67 | |||
68 | |||
69 | The following generic properties as defined in pinctrl-bindings.txt are valid | ||
70 | to specify in a pin configuration subnode: | ||
71 | |||
72 | - pins: | ||
73 | Usage: required | ||
74 | Value type: <string-array> | ||
75 | Definition: List of gpio pins affected by the properties specified in | ||
76 | this subnode. Valid pins are: | ||
77 | gpio0-gpio121, | ||
78 | sdc1_clk, | ||
79 | sdc1_cmd, | ||
80 | sdc1_data | ||
81 | sdc2_clk, | ||
82 | sdc2_cmd, | ||
83 | sdc2_data, | ||
84 | qdsd_cmd, | ||
85 | qdsd_data0, | ||
86 | qdsd_data1, | ||
87 | qdsd_data2, | ||
88 | qdsd_data3 | ||
89 | |||
90 | - function: | ||
91 | Usage: required | ||
92 | Value type: <string> | ||
93 | Definition: Specify the alternative function to be configured for the | ||
94 | specified pins. Functions are only valid for gpio pins. | ||
95 | Valid values are: | ||
96 | adsp_ext, alsp_int, atest_bbrx0, atest_bbrx1, atest_char, atest_char0, | ||
97 | atest_char1, atest_char2, atest_char3, atest_combodac, atest_gpsadc0, | ||
98 | atest_gpsadc1, atest_tsens, atest_wlan0, atest_wlan1, backlight_en, | ||
99 | bimc_dte0,bimc_dte1, blsp_i2c1, blsp_i2c2, blsp_i2c3, blsp_i2c4, | ||
100 | blsp_i2c5, blsp_i2c6, blsp_spi1, blsp_spi1_cs1, blsp_spi1_cs2, | ||
101 | blsp_spi1_cs3, blsp_spi2, blsp_spi2_cs1, blsp_spi2_cs2, blsp_spi2_cs3, | ||
102 | blsp_spi3, blsp_spi3_cs1, blsp_spi3_cs2, blsp_spi3_cs3, blsp_spi4, | ||
103 | blsp_spi5, blsp_spi6, blsp_uart1, blsp_uart2, blsp_uim1, blsp_uim2, | ||
104 | cam1_rst, cam1_standby, cam_mclk0, cam_mclk1, cci_async, cci_i2c, | ||
105 | cci_timer0, cci_timer1, cci_timer2, cdc_pdm0, codec_mad, dbg_out, | ||
106 | display_5v, dmic0_clk, dmic0_data, dsi_rst, ebi0_wrcdc, euro_us, | ||
107 | ext_lpass, flash_strobe, gcc_gp1_clk_a, gcc_gp1_clk_b, gcc_gp2_clk_a, | ||
108 | gcc_gp2_clk_b, gcc_gp3_clk_a, gcc_gp3_clk_b, gpio, gsm0_tx0, gsm0_tx1, | ||
109 | gsm1_tx0, gsm1_tx1, gyro_accl, kpsns0, kpsns1, kpsns2, ldo_en, | ||
110 | ldo_update, mag_int, mdp_vsync, modem_tsync, m_voc, nav_pps, nav_tsync, | ||
111 | pa_indicator, pbs0, pbs1, pbs2, pri_mi2s, pri_mi2s_ws, prng_rosc, | ||
112 | pwr_crypto_enabled_a, pwr_crypto_enabled_b, pwr_modem_enabled_a, | ||
113 | pwr_modem_enabled_b, pwr_nav_enabled_a, pwr_nav_enabled_b, | ||
114 | qdss_ctitrig_in_a0, qdss_ctitrig_in_a1, qdss_ctitrig_in_b0, | ||
115 | qdss_ctitrig_in_b1, qdss_ctitrig_out_a0, qdss_ctitrig_out_a1, | ||
116 | qdss_ctitrig_out_b0, qdss_ctitrig_out_b1, qdss_traceclk_a, | ||
117 | qdss_traceclk_b, qdss_tracectl_a, qdss_tracectl_b, qdss_tracedata_a, | ||
118 | qdss_tracedata_b, reset_n, sd_card, sd_write, sec_mi2s, smb_int, | ||
119 | ssbi_wtr0, ssbi_wtr1, uim1, uim2, uim3, uim_batt, wcss_bt, wcss_fm, | ||
120 | wcss_wlan, webcam1_rst | ||
121 | |||
122 | - bias-disable: | ||
123 | Usage: optional | ||
124 | Value type: <none> | ||
125 | Definition: The specified pins should be configued as no pull. | ||
126 | |||
127 | - bias-pull-down: | ||
128 | Usage: optional | ||
129 | Value type: <none> | ||
130 | Definition: The specified pins should be configued as pull down. | ||
131 | |||
132 | - bias-pull-up: | ||
133 | Usage: optional | ||
134 | Value type: <none> | ||
135 | Definition: The specified pins should be configued as pull up. | ||
136 | |||
137 | - output-high: | ||
138 | Usage: optional | ||
139 | Value type: <none> | ||
140 | Definition: The specified pins are configured in output mode, driven | ||
141 | high. | ||
142 | Not valid for sdc pins. | ||
143 | |||
144 | - output-low: | ||
145 | Usage: optional | ||
146 | Value type: <none> | ||
147 | Definition: The specified pins are configured in output mode, driven | ||
148 | low. | ||
149 | Not valid for sdc pins. | ||
150 | |||
151 | - drive-strength: | ||
152 | Usage: optional | ||
153 | Value type: <u32> | ||
154 | Definition: Selects the drive strength for the specified pins, in mA. | ||
155 | Valid values are: 2, 4, 6, 8, 10, 12, 14 and 16 | ||
156 | |||
157 | Example: | ||
158 | |||
159 | tlmm: pinctrl@1000000 { | ||
160 | compatible = "qcom,msm8916-pinctrl"; | ||
161 | reg = <0x1000000 0x300000>; | ||
162 | interrupts = <0 208 0>; | ||
163 | gpio-controller; | ||
164 | #gpio-cells = <2>; | ||
165 | interrupt-controller; | ||
166 | #interrupt-cells = <2>; | ||
167 | |||
168 | uart2: uart2-default { | ||
169 | mux { | ||
170 | pins = "gpio4", "gpio5"; | ||
171 | function = "blsp_uart2"; | ||
172 | }; | ||
173 | |||
174 | tx { | ||
175 | pins = "gpio4"; | ||
176 | drive-strength = <4>; | ||
177 | bias-disable; | ||
178 | }; | ||
179 | |||
180 | rx { | ||
181 | pins = "gpio5"; | ||
182 | drive-strength = <2>; | ||
183 | bias-pull-up; | ||
184 | }; | ||
185 | }; | ||
186 | }; | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt index daef6fad6a5f..bfe72ec055e3 100644 --- a/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt | |||
@@ -1,7 +1,7 @@ | |||
1 | * Renesas Pin Function Controller (GPIO and Pin Mux/Config) | 1 | * Renesas Pin Function Controller (GPIO and Pin Mux/Config) |
2 | 2 | ||
3 | The Pin Function Controller (PFC) is a Pin Mux/Config controller. On SH7372, | 3 | The Pin Function Controller (PFC) is a Pin Mux/Config controller. On SH73A0, |
4 | SH73A0, R8A73A4 and R8A7740 it also acts as a GPIO controller. | 4 | R8A73A4 and R8A7740 it also acts as a GPIO controller. |
5 | 5 | ||
6 | 6 | ||
7 | Pin Control | 7 | Pin Control |
@@ -10,13 +10,13 @@ Pin Control | |||
10 | Required Properties: | 10 | Required Properties: |
11 | 11 | ||
12 | - compatible: should be one of the following. | 12 | - compatible: should be one of the following. |
13 | - "renesas,pfc-emev2": for EMEV2 (EMMA Mobile EV2) compatible pin-controller. | ||
13 | - "renesas,pfc-r8a73a4": for R8A73A4 (R-Mobile APE6) compatible pin-controller. | 14 | - "renesas,pfc-r8a73a4": for R8A73A4 (R-Mobile APE6) compatible pin-controller. |
14 | - "renesas,pfc-r8a7740": for R8A7740 (R-Mobile A1) compatible pin-controller. | 15 | - "renesas,pfc-r8a7740": for R8A7740 (R-Mobile A1) compatible pin-controller. |
15 | - "renesas,pfc-r8a7778": for R8A7778 (R-Mobile M1) compatible pin-controller. | 16 | - "renesas,pfc-r8a7778": for R8A7778 (R-Mobile M1) compatible pin-controller. |
16 | - "renesas,pfc-r8a7779": for R8A7779 (R-Car H1) compatible pin-controller. | 17 | - "renesas,pfc-r8a7779": for R8A7779 (R-Car H1) compatible pin-controller. |
17 | - "renesas,pfc-r8a7790": for R8A7790 (R-Car H2) compatible pin-controller. | 18 | - "renesas,pfc-r8a7790": for R8A7790 (R-Car H2) compatible pin-controller. |
18 | - "renesas,pfc-r8a7791": for R8A7791 (R-Car M2) compatible pin-controller. | 19 | - "renesas,pfc-r8a7791": for R8A7791 (R-Car M2) compatible pin-controller. |
19 | - "renesas,pfc-sh7372": for SH7372 (SH-Mobile AP4) compatible pin-controller. | ||
20 | - "renesas,pfc-sh73a0": for SH73A0 (SH-Mobile AG5) compatible pin-controller. | 20 | - "renesas,pfc-sh73a0": for SH73A0 (SH-Mobile AG5) compatible pin-controller. |
21 | 21 | ||
22 | - reg: Base address and length of each memory resource used by the pin | 22 | - reg: Base address and length of each memory resource used by the pin |
@@ -75,8 +75,7 @@ bias-disable, bias-pull-up and bias-pull-down. | |||
75 | GPIO | 75 | GPIO |
76 | ---- | 76 | ---- |
77 | 77 | ||
78 | On SH7372, SH73A0, R8A73A4 and R8A7740 the PFC node is also a GPIO controller | 78 | On SH73A0, R8A73A4 and R8A7740 the PFC node is also a GPIO controller node. |
79 | node. | ||
80 | 79 | ||
81 | Required Properties: | 80 | Required Properties: |
82 | 81 | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt index 8425838a6dff..9d2a995293e6 100644 --- a/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt | |||
@@ -171,6 +171,18 @@ Aliases: | |||
171 | All the pin controller nodes should be represented in the aliases node using | 171 | All the pin controller nodes should be represented in the aliases node using |
172 | the following format 'pinctrl{n}' where n is a unique number for the alias. | 172 | the following format 'pinctrl{n}' where n is a unique number for the alias. |
173 | 173 | ||
174 | Aliases for controllers compatible with "samsung,exynos7-pinctrl": | ||
175 | - pinctrl0: pin controller of ALIVE block, | ||
176 | - pinctrl1: pin controller of BUS0 block, | ||
177 | - pinctrl2: pin controller of NFC block, | ||
178 | - pinctrl3: pin controller of TOUCH block, | ||
179 | - pinctrl4: pin controller of FF block, | ||
180 | - pinctrl5: pin controller of ESE block, | ||
181 | - pinctrl6: pin controller of FSYS0 block, | ||
182 | - pinctrl7: pin controller of FSYS1 block, | ||
183 | - pinctrl8: pin controller of BUS1 block, | ||
184 | - pinctrl9: pin controller of AUDIO block, | ||
185 | |||
174 | Example: A pin-controller node with pin banks: | 186 | Example: A pin-controller node with pin banks: |
175 | 187 | ||
176 | pinctrl_0: pinctrl@11400000 { | 188 | pinctrl_0: pinctrl@11400000 { |
diff --git a/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt b/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt index 6b33b9f18e88..f63fcb3ed352 100644 --- a/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt +++ b/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt | |||
@@ -16,17 +16,22 @@ mux function to select on those pin(s)/group(s), and various pin configuration | |||
16 | parameters, such as input, output, pull up, pull down... | 16 | parameters, such as input, output, pull up, pull down... |
17 | 17 | ||
18 | The name of each subnode is not important; all subnodes should be enumerated | 18 | The name of each subnode is not important; all subnodes should be enumerated |
19 | and processed purely based on their content. | 19 | and processed purely based on their content. The subnodes use the generic |
20 | pin multiplexing node layout from the standard pin control bindings | ||
21 | (see pinctrl-bindings.txt): | ||
20 | 22 | ||
21 | Required subnode-properties: | 23 | Required pin multiplexing subnode properties: |
22 | - ste,pins : An array of strings. Each string contains the name of a pin or | 24 | - function: A string containing the name of the function to mux to the |
23 | group. | ||
24 | |||
25 | Optional subnode-properties: | ||
26 | - ste,function: A string containing the name of the function to mux to the | ||
27 | pin or group. | 25 | pin or group. |
26 | - groups : An array of strings. Each string contains the name of a pin | ||
27 | group that will be combined with the function to form a multiplexing | ||
28 | set-up. | ||
28 | 29 | ||
29 | - ste,config: Handle of pin configuration node (e.g. ste,config = <&slpm_in_wkup_pdis>) | 30 | Required pin configuration subnode properties: |
31 | - pins: A string array describing the pins affected by the configuration | ||
32 | in the node. | ||
33 | - ste,config: Handle of pin configuration node | ||
34 | (e.g. ste,config = <&slpm_in_wkup_pdis>) | ||
30 | 35 | ||
31 | - ste,input : <0/1/2> | 36 | - ste,input : <0/1/2> |
32 | 0: input with no pull | 37 | 0: input with no pull |
@@ -97,32 +102,32 @@ Example board file extract: | |||
97 | uart0 { | 102 | uart0 { |
98 | uart0_default_mux: uart0_mux { | 103 | uart0_default_mux: uart0_mux { |
99 | u0_default_mux { | 104 | u0_default_mux { |
100 | ste,function = "u0"; | 105 | function = "u0"; |
101 | ste,pins = "u0_a_1"; | 106 | pins = "u0_a_1"; |
102 | }; | 107 | }; |
103 | }; | 108 | }; |
104 | uart0_default_mode: uart0_default { | 109 | uart0_default_mode: uart0_default { |
105 | uart0_default_cfg1 { | 110 | uart0_default_cfg1 { |
106 | ste,pins = "GPIO0", "GPIO2"; | 111 | pins = "GPIO0", "GPIO2"; |
107 | ste,input = <1>; | 112 | ste,input = <1>; |
108 | }; | 113 | }; |
109 | 114 | ||
110 | uart0_default_cfg2 { | 115 | uart0_default_cfg2 { |
111 | ste,pins = "GPIO1", "GPIO3"; | 116 | pins = "GPIO1", "GPIO3"; |
112 | ste,output = <1>; | 117 | ste,output = <1>; |
113 | }; | 118 | }; |
114 | }; | 119 | }; |
115 | uart0_sleep_mode: uart0_sleep { | 120 | uart0_sleep_mode: uart0_sleep { |
116 | uart0_sleep_cfg1 { | 121 | uart0_sleep_cfg1 { |
117 | ste,pins = "GPIO0", "GPIO2"; | 122 | pins = "GPIO0", "GPIO2"; |
118 | ste,config = <&slpm_in_wkup_pdis>; | 123 | ste,config = <&slpm_in_wkup_pdis>; |
119 | }; | 124 | }; |
120 | uart0_sleep_cfg2 { | 125 | uart0_sleep_cfg2 { |
121 | ste,pins = "GPIO1"; | 126 | pins = "GPIO1"; |
122 | ste,config = <&slpm_out_hi_wkup_pdis>; | 127 | ste,config = <&slpm_out_hi_wkup_pdis>; |
123 | }; | 128 | }; |
124 | uart0_sleep_cfg3 { | 129 | uart0_sleep_cfg3 { |
125 | ste,pins = "GPIO3"; | 130 | pins = "GPIO3"; |
126 | ste,config = <&slpm_out_wkup_pdis>; | 131 | ste,config = <&slpm_out_wkup_pdis>; |
127 | }; | 132 | }; |
128 | }; | 133 | }; |
diff --git a/Documentation/devicetree/bindings/pinctrl/xlnx,zynq-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/xlnx,zynq-pinctrl.txt new file mode 100644 index 000000000000..b7b55a964f65 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/xlnx,zynq-pinctrl.txt | |||
@@ -0,0 +1,104 @@ | |||
1 | Binding for Xilinx Zynq Pinctrl | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "xlnx,zynq-pinctrl" | ||
5 | - syscon: phandle to SLCR | ||
6 | - reg: Offset and length of pinctrl space in SLCR | ||
7 | |||
8 | Please refer to pinctrl-bindings.txt in this directory for details of the | ||
9 | common pinctrl bindings used by client devices, including the meaning of the | ||
10 | phrase "pin configuration node". | ||
11 | |||
12 | Zynq's pin configuration nodes act as a container for an arbitrary number of | ||
13 | subnodes. Each of these subnodes represents some desired configuration for a | ||
14 | pin, a group, or a list of pins or groups. This configuration can include the | ||
15 | mux function to select on those pin(s)/group(s), and various pin configuration | ||
16 | parameters, such as pull-up, slew rate, etc. | ||
17 | |||
18 | Each configuration node can consist of multiple nodes describing the pinmux and | ||
19 | pinconf options. Those nodes can be pinmux nodes or pinconf nodes. | ||
20 | |||
21 | The name of each subnode is not important; all subnodes should be enumerated | ||
22 | and processed purely based on their content. | ||
23 | |||
24 | Required properties for pinmux nodes are: | ||
25 | - groups: A list of pinmux groups. | ||
26 | - function: The name of a pinmux function to activate for the specified set | ||
27 | of groups. | ||
28 | |||
29 | Required properties for configuration nodes: | ||
30 | One of: | ||
31 | - pins: a list of pin names | ||
32 | - groups: A list of pinmux groups. | ||
33 | |||
34 | The following generic properties as defined in pinctrl-bindings.txt are valid | ||
35 | to specify in a pinmux subnode: | ||
36 | groups, function | ||
37 | |||
38 | The following generic properties as defined in pinctrl-bindings.txt are valid | ||
39 | to specify in a pinconf subnode: | ||
40 | groups, pins, bias-disable, bias-high-impedance, bias-pull-up, slew-rate, | ||
41 | low-power-disable, low-power-enable | ||
42 | |||
43 | Valid arguments for 'slew-rate' are '0' and '1' to select between slow and fast | ||
44 | respectively. | ||
45 | |||
46 | Valid values for groups are: | ||
47 | ethernet0_0_grp, ethernet1_0_grp, mdio0_0_grp, mdio1_0_grp, | ||
48 | qspi0_0_grp, qspi1_0_grp, qspi_fbclk, qspi_cs1_grp, spi0_0_grp, | ||
49 | spi0_1_grp - spi0_2_grp, spi1_0_grp - spi1_3_grp, sdio0_0_grp - sdio0_2_grp, | ||
50 | sdio1_0_grp - sdio1_3_grp, sdio0_emio_wp, sdio0_emio_cd, sdio1_emio_wp, | ||
51 | sdio1_emio_cd, smc0_nor, smc0_nor_cs1_grp, smc0_nor_addr25_grp, smc0_nand, | ||
52 | can0_0_grp - can0_10_grp, can1_0_grp - can1_11_grp, uart0_0_grp - uart0_10_grp, | ||
53 | uart1_0_grp - uart1_11_grp, i2c0_0_grp - i2c0_10_grp, i2c1_0_grp - i2c1_10_grp, | ||
54 | ttc0_0_grp - ttc0_2_grp, ttc1_0_grp - ttc1_2_grp, swdt0_0_grp - swdt0_4_grp, | ||
55 | gpio0_0_grp - gpio0_53_grp, usb0_0_grp, usb1_0_grp | ||
56 | |||
57 | Valid values for pins are: | ||
58 | MIO0 - MIO53 | ||
59 | |||
60 | Valid values for function are: | ||
61 | ethernet0, ethernet1, mdio0, mdio1, qspi0, qspi1, qspi_fbclk, qspi_cs1, | ||
62 | spi0, spi1, sdio0, sdio0_pc, sdio0_cd, sdio0_wp, | ||
63 | sdio1, sdio1_pc, sdio1_cd, sdio1_wp, | ||
64 | smc0_nor, smc0_nor_cs1, smc0_nor_addr25, smc0_nand, can0, can1, uart0, uart1, | ||
65 | i2c0, i2c1, ttc0, ttc1, swdt0, gpio0, usb0, usb1 | ||
66 | |||
67 | The following driver-specific properties as defined here are valid to specify in | ||
68 | a pin configuration subnode: | ||
69 | - io-standard: Configure the pin to use the selected IO standard according to | ||
70 | this mapping: | ||
71 | 1: LVCMOS18 | ||
72 | 2: LVCMOS25 | ||
73 | 3: LVCMOS33 | ||
74 | 4: HSTL | ||
75 | |||
76 | Example: | ||
77 | pinctrl0: pinctrl@700 { | ||
78 | compatible = "xlnx,pinctrl-zynq"; | ||
79 | reg = <0x700 0x200>; | ||
80 | syscon = <&slcr>; | ||
81 | |||
82 | pinctrl_uart1_default: uart1-default { | ||
83 | mux { | ||
84 | groups = "uart1_10_grp"; | ||
85 | function = "uart1"; | ||
86 | }; | ||
87 | |||
88 | conf { | ||
89 | groups = "uart1_10_grp"; | ||
90 | slew-rate = <0>; | ||
91 | io-standard = <1>; | ||
92 | }; | ||
93 | |||
94 | conf-rx { | ||
95 | pins = "MIO49"; | ||
96 | bias-high-impedance; | ||
97 | }; | ||
98 | |||
99 | conf-tx { | ||
100 | pins = "MIO48"; | ||
101 | bias-disable; | ||
102 | }; | ||
103 | }; | ||
104 | }; | ||
diff --git a/Documentation/devicetree/bindings/power/ltc2941.txt b/Documentation/devicetree/bindings/power/ltc2941.txt new file mode 100644 index 000000000000..ea42ae12d924 --- /dev/null +++ b/Documentation/devicetree/bindings/power/ltc2941.txt | |||
@@ -0,0 +1,27 @@ | |||
1 | binding for LTC2941 and LTC2943 battery gauges | ||
2 | |||
3 | Both the LTC2941 and LTC2943 measure battery capacity. | ||
4 | The LTC2943 is compatible with the LTC2941, it adds voltage and | ||
5 | temperature monitoring, and uses a slightly different conversion | ||
6 | formula for the charge counter. | ||
7 | |||
8 | Required properties: | ||
9 | - compatible: Should contain "ltc2941" or "ltc2943" which also indicates the | ||
10 | type of I2C chip attached. | ||
11 | - reg: The 7-bit I2C address. | ||
12 | - lltc,resistor-sense: The sense resistor value in milli-ohms. Can be a 32-bit | ||
13 | negative value when the battery has been connected to the wrong end of the | ||
14 | resistor. | ||
15 | - lltc,prescaler-exponent: The prescaler exponent as explained in the datasheet. | ||
16 | This determines the range and accuracy of the gauge. The value is programmed | ||
17 | into the chip only if it differs from the current setting. The setting is | ||
18 | lost when the battery is disconnected. | ||
19 | |||
20 | Example from the Topic Miami Florida board: | ||
21 | |||
22 | fuelgauge: ltc2943@64 { | ||
23 | compatible = "ltc2943"; | ||
24 | reg = <0x64>; | ||
25 | lltc,resistor-sense = <15>; | ||
26 | lltc,prescaler-exponent = <5>; /* 2^(2*5) = 1024 */ | ||
27 | }; | ||
diff --git a/Documentation/devicetree/bindings/power/renesas,sysc-rmobile.txt b/Documentation/devicetree/bindings/power/renesas,sysc-rmobile.txt new file mode 100644 index 000000000000..cc3b1f0a9b1a --- /dev/null +++ b/Documentation/devicetree/bindings/power/renesas,sysc-rmobile.txt | |||
@@ -0,0 +1,99 @@ | |||
1 | DT bindings for the Renesas R-Mobile System Controller | ||
2 | |||
3 | == System Controller Node == | ||
4 | |||
5 | The R-Mobile System Controller provides the following functions: | ||
6 | - Boot mode management, | ||
7 | - Reset generation, | ||
8 | - Power management. | ||
9 | |||
10 | Required properties: | ||
11 | - compatible: Should be "renesas,sysc-<soctype>", "renesas,sysc-rmobile" as | ||
12 | fallback. | ||
13 | Examples with soctypes are: | ||
14 | - "renesas,sysc-r8a7740" (R-Mobile A1) | ||
15 | - "renesas,sysc-sh73a0" (SH-Mobile AG5) | ||
16 | - reg: Two address start and address range blocks for the device: | ||
17 | - The first block refers to the normally accessible registers, | ||
18 | - the second block refers to the registers protected by the HPB | ||
19 | semaphore. | ||
20 | |||
21 | Optional nodes: | ||
22 | - pm-domains: This node contains a hierarchy of PM domain nodes, which should | ||
23 | match the Power Area Hierarchy in the Power Domain Specifications section of | ||
24 | the device's datasheet. | ||
25 | |||
26 | |||
27 | == PM Domain Nodes == | ||
28 | |||
29 | Each of the PM domain nodes represents a PM domain, as documented by the | ||
30 | generic PM domain bindings in | ||
31 | Documentation/devicetree/bindings/power/power_domain.txt. | ||
32 | |||
33 | The nodes should be named by the real power area names, and thus their names | ||
34 | should be unique. | ||
35 | |||
36 | Required properties: | ||
37 | - #power-domain-cells: Must be 0. | ||
38 | |||
39 | Optional properties: | ||
40 | - reg: If the PM domain is not always-on, this property must contain the bit | ||
41 | index number for the corresponding power area in the various Power | ||
42 | Control and Status Registers. The parent's node must contain the | ||
43 | following two properties: | ||
44 | - #address-cells: Must be 1, | ||
45 | - #size-cells: Must be 0. | ||
46 | If the PM domain is always-on, this property must be omitted. | ||
47 | |||
48 | |||
49 | Example: | ||
50 | |||
51 | This shows a subset of the r8a7740 PM domain hierarchy, containing the | ||
52 | C5 "always-on" domain, 2 of its subdomains (A4S and A4SU), and the A3SP domain, | ||
53 | which is a subdomain of A4S. | ||
54 | |||
55 | sysc: system-controller@e6180000 { | ||
56 | compatible = "renesas,sysc-r8a7740", "renesas,sysc-rmobile"; | ||
57 | reg = <0xe6180000 0x8000>, <0xe6188000 0x8000>; | ||
58 | |||
59 | pm-domains { | ||
60 | pd_c5: c5 { | ||
61 | #address-cells = <1>; | ||
62 | #size-cells = <0>; | ||
63 | #power-domain-cells = <0>; | ||
64 | |||
65 | pd_a4s: a4s@10 { | ||
66 | reg = <10>; | ||
67 | #address-cells = <1>; | ||
68 | #size-cells = <0>; | ||
69 | #power-domain-cells = <0>; | ||
70 | |||
71 | pd_a3sp: a3sp@11 { | ||
72 | reg = <11>; | ||
73 | #power-domain-cells = <0>; | ||
74 | }; | ||
75 | }; | ||
76 | |||
77 | pd_a4su: a4su@20 { | ||
78 | reg = <20>; | ||
79 | #power-domain-cells = <0>; | ||
80 | }; | ||
81 | }; | ||
82 | }; | ||
83 | }; | ||
84 | |||
85 | |||
86 | == PM Domain Consumers == | ||
87 | |||
88 | Hardware blocks belonging to a PM domain should contain a "power-domains" | ||
89 | property that is a phandle pointing to the corresponding PM domain node. | ||
90 | |||
91 | Example: | ||
92 | |||
93 | tpu: pwm@e6600000 { | ||
94 | compatible = "renesas,tpu-r8a7740", "renesas,tpu"; | ||
95 | reg = <0xe6600000 0x100>; | ||
96 | clocks = <&mstp3_clks R8A7740_CLK_TPU0>; | ||
97 | power-domains = <&pd_a3sp>; | ||
98 | #pwm-cells = <3>; | ||
99 | }; | ||
diff --git a/Documentation/devicetree/bindings/power/reset/ltc2952-poweroff.txt b/Documentation/devicetree/bindings/power/reset/ltc2952-poweroff.txt index 0c94c637f63b..cd2d7f58a9d7 100644 --- a/Documentation/devicetree/bindings/power/reset/ltc2952-poweroff.txt +++ b/Documentation/devicetree/bindings/power/reset/ltc2952-poweroff.txt | |||
@@ -1,20 +1,23 @@ | |||
1 | Binding for the LTC2952 PowerPath controller | 1 | Binding for the LTC2952 PowerPath controller |
2 | 2 | ||
3 | This chip is used to externally trigger a system shut down. Once the trigger has | 3 | This chip is used to externally trigger a system shut down. Once the trigger has |
4 | been sent, the chips' watchdog has to be reset to gracefully shut down. | 4 | been sent, the chip's watchdog has to be reset to gracefully shut down. |
5 | If the Linux systems decides to shut down it powers off the platform via the | 5 | A full powerdown can be triggered via the kill signal. |
6 | kill signal. | ||
7 | 6 | ||
8 | Required properties: | 7 | Required properties: |
9 | 8 | ||
10 | - compatible: Must contain: "lltc,ltc2952" | 9 | - compatible: Must contain: "lltc,ltc2952" |
11 | - trigger-gpios: phandle + gpio-specifier for the GPIO connected to the | ||
12 | chip's trigger line | ||
13 | - watchdog-gpios: phandle + gpio-specifier for the GPIO connected to the | 10 | - watchdog-gpios: phandle + gpio-specifier for the GPIO connected to the |
14 | chip's watchdog line | 11 | chip's watchdog line |
15 | - kill-gpios: phandle + gpio-specifier for the GPIO connected to the | 12 | - kill-gpios: phandle + gpio-specifier for the GPIO connected to the |
16 | chip's kill line | 13 | chip's kill line |
17 | 14 | ||
15 | Optional properties: | ||
16 | - trigger-gpios: phandle + gpio-specifier for the GPIO connected to the | ||
17 | chip's trigger line. If this property is not set, the | ||
18 | trigger function is ignored and the chip is kept alive | ||
19 | until an explicit kill signal is received | ||
20 | |||
18 | Example: | 21 | Example: |
19 | 22 | ||
20 | ltc2952 { | 23 | ltc2952 { |
diff --git a/Documentation/devicetree/bindings/power/rockchip-io-domain.txt b/Documentation/devicetree/bindings/power/rockchip-io-domain.txt index 6fbf6e7ecde6..8b70db103ca7 100644 --- a/Documentation/devicetree/bindings/power/rockchip-io-domain.txt +++ b/Documentation/devicetree/bindings/power/rockchip-io-domain.txt | |||
@@ -37,7 +37,7 @@ Required properties: | |||
37 | 37 | ||
38 | 38 | ||
39 | You specify supplies using the standard regulator bindings by including | 39 | You specify supplies using the standard regulator bindings by including |
40 | a phandle the the relevant regulator. All specified supplies must be able | 40 | a phandle the relevant regulator. All specified supplies must be able |
41 | to report their voltage. The IO Voltage Domain for any non-specified | 41 | to report their voltage. The IO Voltage Domain for any non-specified |
42 | supplies will be not be touched. | 42 | supplies will be not be touched. |
43 | 43 | ||
diff --git a/Documentation/devicetree/bindings/powerpc/fsl/fman.txt b/Documentation/devicetree/bindings/powerpc/fsl/fman.txt index edeea160ca39..edda55f74004 100644 --- a/Documentation/devicetree/bindings/powerpc/fsl/fman.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/fman.txt | |||
@@ -7,6 +7,7 @@ CONTENTS | |||
7 | - FMan MURAM Node | 7 | - FMan MURAM Node |
8 | - FMan dTSEC/XGEC/mEMAC Node | 8 | - FMan dTSEC/XGEC/mEMAC Node |
9 | - FMan IEEE 1588 Node | 9 | - FMan IEEE 1588 Node |
10 | - FMan MDIO Node | ||
10 | - Example | 11 | - Example |
11 | 12 | ||
12 | ============================================================================= | 13 | ============================================================================= |
@@ -357,6 +358,69 @@ ptp-timer@fe000 { | |||
357 | }; | 358 | }; |
358 | 359 | ||
359 | ============================================================================= | 360 | ============================================================================= |
361 | FMan MDIO Node | ||
362 | |||
363 | DESCRIPTION | ||
364 | |||
365 | The MDIO is a bus to which the PHY devices are connected. | ||
366 | |||
367 | PROPERTIES | ||
368 | |||
369 | - compatible | ||
370 | Usage: required | ||
371 | Value type: <stringlist> | ||
372 | Definition: A standard property. | ||
373 | Must include "fsl,fman-mdio" for 1 Gb/s MDIO from FMan v2. | ||
374 | Must include "fsl,fman-xmdio" for 10 Gb/s MDIO from FMan v2. | ||
375 | Must include "fsl,fman-memac-mdio" for 1/10 Gb/s MDIO from | ||
376 | FMan v3. | ||
377 | |||
378 | - reg | ||
379 | Usage: required | ||
380 | Value type: <prop-encoded-array> | ||
381 | Definition: A standard property. | ||
382 | |||
383 | - bus-frequency | ||
384 | Usage: optional | ||
385 | Value type: <u32> | ||
386 | Definition: Specifies the external MDIO bus clock speed to | ||
387 | be used, if different from the standard 2.5 MHz. | ||
388 | This may be due to the standard speed being unsupported (e.g. | ||
389 | due to a hardware problem), or to advertise that all relevant | ||
390 | components in the system support a faster speed. | ||
391 | |||
392 | - interrupts | ||
393 | Usage: required for external MDIO | ||
394 | Value type: <prop-encoded-array> | ||
395 | Definition: Event interrupt of external MDIO controller. | ||
396 | |||
397 | - fsl,fman-internal-mdio | ||
398 | Usage: required for internal MDIO | ||
399 | Value type: boolean | ||
400 | Definition: Fman has internal MDIO for internal PCS(Physical | ||
401 | Coding Sublayer) PHYs and external MDIO for external PHYs. | ||
402 | The settings and programming routines for internal/external | ||
403 | MDIO are different. Must be included for internal MDIO. | ||
404 | |||
405 | EXAMPLE | ||
406 | |||
407 | Example for FMan v2 external MDIO: | ||
408 | |||
409 | mdio@f1000 { | ||
410 | compatible = "fsl,fman-xmdio"; | ||
411 | reg = <0xf1000 0x1000>; | ||
412 | interrupts = <101 2 0 0>; | ||
413 | }; | ||
414 | |||
415 | Example for FMan v3 internal MDIO: | ||
416 | |||
417 | mdio@f1000 { | ||
418 | compatible = "fsl,fman-memac-mdio"; | ||
419 | reg = <0xf1000 0x1000>; | ||
420 | fsl,fman-internal-mdio; | ||
421 | }; | ||
422 | |||
423 | ============================================================================= | ||
360 | Example | 424 | Example |
361 | 425 | ||
362 | fman@400000 { | 426 | fman@400000 { |
@@ -531,4 +595,10 @@ fman@400000 { | |||
531 | compatible = "fsl,fman-ptp-timer"; | 595 | compatible = "fsl,fman-ptp-timer"; |
532 | reg = <0xfe000 0x1000>; | 596 | reg = <0xfe000 0x1000>; |
533 | }; | 597 | }; |
598 | |||
599 | mdio@f1000 { | ||
600 | compatible = "fsl,fman-xmdio"; | ||
601 | reg = <0xf1000 0x1000>; | ||
602 | interrupts = <101 2 0 0>; | ||
603 | }; | ||
534 | }; | 604 | }; |
diff --git a/Documentation/devicetree/bindings/powerpc/fsl/lbc.txt b/Documentation/devicetree/bindings/powerpc/fsl/lbc.txt index 3300fec501c5..1c80fcedebb5 100644 --- a/Documentation/devicetree/bindings/powerpc/fsl/lbc.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/lbc.txt | |||
@@ -16,20 +16,28 @@ Example: | |||
16 | "fsl,pq2-localbus"; | 16 | "fsl,pq2-localbus"; |
17 | #address-cells = <2>; | 17 | #address-cells = <2>; |
18 | #size-cells = <1>; | 18 | #size-cells = <1>; |
19 | reg = <f0010100 40>; | 19 | reg = <0xf0010100 0x40>; |
20 | 20 | ||
21 | ranges = <0 0 fe000000 02000000 | 21 | ranges = <0x0 0x0 0xfe000000 0x02000000 |
22 | 1 0 f4500000 00008000>; | 22 | 0x1 0x0 0xf4500000 0x00008000 |
23 | 0x2 0x0 0xfd810000 0x00010000>; | ||
23 | 24 | ||
24 | flash@0,0 { | 25 | flash@0,0 { |
25 | compatible = "jedec-flash"; | 26 | compatible = "jedec-flash"; |
26 | reg = <0 0 2000000>; | 27 | reg = <0x0 0x0 0x2000000>; |
27 | bank-width = <4>; | 28 | bank-width = <4>; |
28 | device-width = <1>; | 29 | device-width = <1>; |
29 | }; | 30 | }; |
30 | 31 | ||
31 | board-control@1,0 { | 32 | board-control@1,0 { |
32 | reg = <1 0 20>; | 33 | reg = <0x1 0x0 0x20>; |
33 | compatible = "fsl,mpc8272ads-bcsr"; | 34 | compatible = "fsl,mpc8272ads-bcsr"; |
34 | }; | 35 | }; |
36 | |||
37 | simple-periph@2,0 { | ||
38 | compatible = "fsl,elbc-gpcm-uio"; | ||
39 | reg = <0x2 0x0 0x10000>; | ||
40 | elbc-gpcm-br = <0xfd810800>; | ||
41 | elbc-gpcm-or = <0xffff09f7>; | ||
42 | }; | ||
35 | }; | 43 | }; |
diff --git a/Documentation/devicetree/bindings/pwm/img-pwm.txt b/Documentation/devicetree/bindings/pwm/img-pwm.txt new file mode 100644 index 000000000000..fade5f26fcac --- /dev/null +++ b/Documentation/devicetree/bindings/pwm/img-pwm.txt | |||
@@ -0,0 +1,24 @@ | |||
1 | *Imagination Technologies PWM DAC driver | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be "img,pistachio-pwm" | ||
5 | - reg: Should contain physical base address and length of pwm registers. | ||
6 | - clocks: Must contain an entry for each entry in clock-names. | ||
7 | See ../clock/clock-bindings.txt for details. | ||
8 | - clock-names: Must include the following entries. | ||
9 | - pwm: PWM operating clock. | ||
10 | - sys: PWM system interface clock. | ||
11 | - #pwm-cells: Should be 2. See pwm.txt in this directory for the | ||
12 | description of the cells format. | ||
13 | - img,cr-periph: Must contain a phandle to the peripheral control | ||
14 | syscon node which contains PWM control registers. | ||
15 | |||
16 | Example: | ||
17 | pwm: pwm@18101300 { | ||
18 | compatible = "img,pistachio-pwm"; | ||
19 | reg = <0x18101300 0x100>; | ||
20 | clocks = <&pwm_clk>, <&system_clk>; | ||
21 | clock-names = "pwm", "sys"; | ||
22 | #pwm-cells = <2>; | ||
23 | img,cr-periph = <&cr_periph>; | ||
24 | }; | ||
diff --git a/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt b/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt index c7ea9d4a988b..c52f03b5032f 100644 --- a/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt +++ b/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt | |||
@@ -1,9 +1,10 @@ | |||
1 | Tegra SoC PWFM controller | 1 | Tegra SoC PWFM controller |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: should be one of: | 4 | - compatible: For Tegra20, must contain "nvidia,tegra20-pwm". For Tegra30, |
5 | - "nvidia,tegra20-pwm" | 5 | must contain "nvidia,tegra30-pwm". Otherwise, must contain |
6 | - "nvidia,tegra30-pwm" | 6 | "nvidia,<chip>-pwm", plus one of the above, where <chip> is tegra114, |
7 | tegra124, tegra132, or tegra210. | ||
7 | - reg: physical base address and length of the controller's registers | 8 | - 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 | 9 | - #pwm-cells: should be 2. See pwm.txt in this directory for a description of |
9 | the cells format. | 10 | the cells format. |
diff --git a/Documentation/devicetree/bindings/pwm/pwm-sun4i.txt b/Documentation/devicetree/bindings/pwm/pwm-sun4i.txt new file mode 100644 index 000000000000..ae0273e19506 --- /dev/null +++ b/Documentation/devicetree/bindings/pwm/pwm-sun4i.txt | |||
@@ -0,0 +1,20 @@ | |||
1 | Allwinner sun4i and sun7i SoC PWM controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: should be one of: | ||
5 | - "allwinner,sun4i-a10-pwm" | ||
6 | - "allwinner,sun7i-a20-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 description of | ||
9 | the cells format. | ||
10 | - clocks: From common clock binding, handle to the parent clock. | ||
11 | |||
12 | Example: | ||
13 | |||
14 | pwm: pwm@01c20e00 { | ||
15 | compatible = "allwinner,sun7i-a20-pwm"; | ||
16 | reg = <0x01c20e00 0xc>; | ||
17 | clocks = <&osc24M>; | ||
18 | #pwm-cells = <3>; | ||
19 | status = "disabled"; | ||
20 | }; | ||
diff --git a/Documentation/devicetree/bindings/regulator/da9211.txt b/Documentation/devicetree/bindings/regulator/da9211.txt index 240019a82f9a..eb618907c7de 100644 --- a/Documentation/devicetree/bindings/regulator/da9211.txt +++ b/Documentation/devicetree/bindings/regulator/da9211.txt | |||
@@ -11,6 +11,7 @@ Required properties: | |||
11 | BUCKA and BUCKB. | 11 | BUCKA and BUCKB. |
12 | 12 | ||
13 | Optional properties: | 13 | Optional properties: |
14 | - enable-gpios: platform gpio for control of BUCKA/BUCKB. | ||
14 | - Any optional property defined in regulator.txt | 15 | - Any optional property defined in regulator.txt |
15 | 16 | ||
16 | Example 1) DA9211 | 17 | Example 1) DA9211 |
@@ -27,6 +28,7 @@ Example 1) DA9211 | |||
27 | regulator-max-microvolt = <1570000>; | 28 | regulator-max-microvolt = <1570000>; |
28 | regulator-min-microamp = <2000000>; | 29 | regulator-min-microamp = <2000000>; |
29 | regulator-max-microamp = <5000000>; | 30 | regulator-max-microamp = <5000000>; |
31 | enable-gpios = <&gpio 27 0>; | ||
30 | }; | 32 | }; |
31 | BUCKB { | 33 | BUCKB { |
32 | regulator-name = "VBUCKB"; | 34 | regulator-name = "VBUCKB"; |
@@ -34,11 +36,12 @@ Example 1) DA9211 | |||
34 | regulator-max-microvolt = <1570000>; | 36 | regulator-max-microvolt = <1570000>; |
35 | regulator-min-microamp = <2000000>; | 37 | regulator-min-microamp = <2000000>; |
36 | regulator-max-microamp = <5000000>; | 38 | regulator-max-microamp = <5000000>; |
39 | enable-gpios = <&gpio 17 0>; | ||
37 | }; | 40 | }; |
38 | }; | 41 | }; |
39 | }; | 42 | }; |
40 | 43 | ||
41 | Example 2) DA92113 | 44 | Example 2) DA9213 |
42 | pmic: da9213@68 { | 45 | pmic: da9213@68 { |
43 | compatible = "dlg,da9213"; | 46 | compatible = "dlg,da9213"; |
44 | reg = <0x68>; | 47 | reg = <0x68>; |
@@ -51,6 +54,7 @@ Example 2) DA92113 | |||
51 | regulator-max-microvolt = <1570000>; | 54 | regulator-max-microvolt = <1570000>; |
52 | regulator-min-microamp = <3000000>; | 55 | regulator-min-microamp = <3000000>; |
53 | regulator-max-microamp = <6000000>; | 56 | regulator-max-microamp = <6000000>; |
57 | enable-gpios = <&gpio 27 0>; | ||
54 | }; | 58 | }; |
55 | BUCKB { | 59 | BUCKB { |
56 | regulator-name = "VBUCKB"; | 60 | regulator-name = "VBUCKB"; |
@@ -58,6 +62,7 @@ Example 2) DA92113 | |||
58 | regulator-max-microvolt = <1570000>; | 62 | regulator-max-microvolt = <1570000>; |
59 | regulator-min-microamp = <3000000>; | 63 | regulator-min-microamp = <3000000>; |
60 | regulator-max-microamp = <6000000>; | 64 | regulator-max-microamp = <6000000>; |
65 | enable-gpios = <&gpio 17 0>; | ||
61 | }; | 66 | }; |
62 | }; | 67 | }; |
63 | }; | 68 | }; |
diff --git a/Documentation/devicetree/bindings/regulator/isl9305.txt b/Documentation/devicetree/bindings/regulator/isl9305.txt index a626fc1bbf0d..d6e7c9ec9413 100644 --- a/Documentation/devicetree/bindings/regulator/isl9305.txt +++ b/Documentation/devicetree/bindings/regulator/isl9305.txt | |||
@@ -2,7 +2,7 @@ Intersil ISL9305/ISL9305H voltage regulator | |||
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | 4 | ||
5 | - compatible: "isl,isl9305" or "isl,isl9305h" | 5 | - compatible: "isil,isl9305" or "isil,isl9305h" |
6 | - reg: I2C slave address, usually 0x68. | 6 | - reg: I2C slave address, usually 0x68. |
7 | - regulators: A node that houses a sub-node for each regulator within the | 7 | - regulators: A node that houses a sub-node for each regulator within the |
8 | device. Each sub-node is identified using the node's name, with valid | 8 | device. Each sub-node is identified using the node's name, with valid |
@@ -19,7 +19,7 @@ Optional properties: | |||
19 | Example | 19 | Example |
20 | 20 | ||
21 | pmic: isl9305@68 { | 21 | pmic: isl9305@68 { |
22 | compatible = "isl,isl9305"; | 22 | compatible = "isil,isl9305"; |
23 | reg = <0x68>; | 23 | reg = <0x68>; |
24 | 24 | ||
25 | VINDCD1-supply = <&system_power>; | 25 | VINDCD1-supply = <&system_power>; |
diff --git a/Documentation/devicetree/bindings/regulator/mt6397-regulator.txt b/Documentation/devicetree/bindings/regulator/mt6397-regulator.txt new file mode 100644 index 000000000000..a42b1d6e9863 --- /dev/null +++ b/Documentation/devicetree/bindings/regulator/mt6397-regulator.txt | |||
@@ -0,0 +1,217 @@ | |||
1 | Mediatek MT6397 Regulator Driver | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "mediatek,mt6397-regulator" | ||
5 | - mt6397regulator: List of regulators provided by this controller. It is named | ||
6 | according to its regulator type, buck_<name> and ldo_<name>. | ||
7 | The definition for each of these nodes is defined using the standard binding | ||
8 | for regulators at Documentation/devicetree/bindings/regulator/regulator.txt. | ||
9 | |||
10 | The valid names for regulators are:: | ||
11 | BUCK: | ||
12 | buck_vpca15, buck_vpca7, buck_vsramca15, buck_vsramca7, buck_vcore, buck_vgpu, | ||
13 | buck_vdrm, buck_vio18 | ||
14 | LDO: | ||
15 | ldo_vtcxo, ldo_va28, ldo_vcama, ldo_vio28, ldo_vusb, ldo_vmc, ldo_vmch, | ||
16 | ldo_vemc3v3, ldo_vgp1, ldo_vgp2, ldo_vgp3, ldo_vgp4, ldo_vgp5, ldo_vgp6, | ||
17 | ldo_vibr | ||
18 | |||
19 | Example: | ||
20 | pmic { | ||
21 | compatible = "mediatek,mt6397"; | ||
22 | |||
23 | mt6397regulator: mt6397regulator { | ||
24 | compatible = "mediatek,mt6397-regulator"; | ||
25 | |||
26 | mt6397_vpca15_reg: buck_vpca15 { | ||
27 | regulator-compatible = "buck_vpca15"; | ||
28 | regulator-name = "vpca15"; | ||
29 | regulator-min-microvolt = < 850000>; | ||
30 | regulator-max-microvolt = <1350000>; | ||
31 | regulator-ramp-delay = <12500>; | ||
32 | regulator-enable-ramp-delay = <200>; | ||
33 | }; | ||
34 | |||
35 | mt6397_vpca7_reg: buck_vpca7 { | ||
36 | regulator-compatible = "buck_vpca7"; | ||
37 | regulator-name = "vpca7"; | ||
38 | regulator-min-microvolt = < 850000>; | ||
39 | regulator-max-microvolt = <1350000>; | ||
40 | regulator-ramp-delay = <12500>; | ||
41 | regulator-enable-ramp-delay = <115>; | ||
42 | }; | ||
43 | |||
44 | mt6397_vsramca15_reg: buck_vsramca15 { | ||
45 | regulator-compatible = "buck_vsramca15"; | ||
46 | regulator-name = "vsramca15"; | ||
47 | regulator-min-microvolt = < 850000>; | ||
48 | regulator-max-microvolt = <1350000>; | ||
49 | regulator-ramp-delay = <12500>; | ||
50 | regulator-enable-ramp-delay = <115>; | ||
51 | |||
52 | }; | ||
53 | |||
54 | mt6397_vsramca7_reg: buck_vsramca7 { | ||
55 | regulator-compatible = "buck_vsramca7"; | ||
56 | regulator-name = "vsramca7"; | ||
57 | regulator-min-microvolt = < 850000>; | ||
58 | regulator-max-microvolt = <1350000>; | ||
59 | regulator-ramp-delay = <12500>; | ||
60 | regulator-enable-ramp-delay = <115>; | ||
61 | |||
62 | }; | ||
63 | |||
64 | mt6397_vcore_reg: buck_vcore { | ||
65 | regulator-compatible = "buck_vcore"; | ||
66 | regulator-name = "vcore"; | ||
67 | regulator-min-microvolt = < 850000>; | ||
68 | regulator-max-microvolt = <1350000>; | ||
69 | regulator-ramp-delay = <12500>; | ||
70 | regulator-enable-ramp-delay = <115>; | ||
71 | }; | ||
72 | |||
73 | mt6397_vgpu_reg: buck_vgpu { | ||
74 | regulator-compatible = "buck_vgpu"; | ||
75 | regulator-name = "vgpu"; | ||
76 | regulator-min-microvolt = < 700000>; | ||
77 | regulator-max-microvolt = <1350000>; | ||
78 | regulator-ramp-delay = <12500>; | ||
79 | regulator-enable-ramp-delay = <115>; | ||
80 | }; | ||
81 | |||
82 | mt6397_vdrm_reg: buck_vdrm { | ||
83 | regulator-compatible = "buck_vdrm"; | ||
84 | regulator-name = "vdrm"; | ||
85 | regulator-min-microvolt = < 800000>; | ||
86 | regulator-max-microvolt = <1400000>; | ||
87 | regulator-ramp-delay = <12500>; | ||
88 | regulator-enable-ramp-delay = <500>; | ||
89 | }; | ||
90 | |||
91 | mt6397_vio18_reg: buck_vio18 { | ||
92 | regulator-compatible = "buck_vio18"; | ||
93 | regulator-name = "vio18"; | ||
94 | regulator-min-microvolt = <1500000>; | ||
95 | regulator-max-microvolt = <2120000>; | ||
96 | regulator-ramp-delay = <12500>; | ||
97 | regulator-enable-ramp-delay = <500>; | ||
98 | }; | ||
99 | |||
100 | mt6397_vtcxo_reg: ldo_vtcxo { | ||
101 | regulator-compatible = "ldo_vtcxo"; | ||
102 | regulator-name = "vtcxo"; | ||
103 | regulator-min-microvolt = <2800000>; | ||
104 | regulator-max-microvolt = <2800000>; | ||
105 | regulator-enable-ramp-delay = <90>; | ||
106 | }; | ||
107 | |||
108 | mt6397_va28_reg: ldo_va28 { | ||
109 | regulator-compatible = "ldo_va28"; | ||
110 | regulator-name = "va28"; | ||
111 | /* fixed output 2.8 V */ | ||
112 | regulator-enable-ramp-delay = <218>; | ||
113 | }; | ||
114 | |||
115 | mt6397_vcama_reg: ldo_vcama { | ||
116 | regulator-compatible = "ldo_vcama"; | ||
117 | regulator-name = "vcama"; | ||
118 | regulator-min-microvolt = <1500000>; | ||
119 | regulator-max-microvolt = <2800000>; | ||
120 | regulator-enable-ramp-delay = <218>; | ||
121 | }; | ||
122 | |||
123 | mt6397_vio28_reg: ldo_vio28 { | ||
124 | regulator-compatible = "ldo_vio28"; | ||
125 | regulator-name = "vio28"; | ||
126 | /* fixed output 2.8 V */ | ||
127 | regulator-enable-ramp-delay = <240>; | ||
128 | }; | ||
129 | |||
130 | mt6397_usb_reg: ldo_vusb { | ||
131 | regulator-compatible = "ldo_vusb"; | ||
132 | regulator-name = "vusb"; | ||
133 | /* fixed output 3.3 V */ | ||
134 | regulator-enable-ramp-delay = <218>; | ||
135 | }; | ||
136 | |||
137 | mt6397_vmc_reg: ldo_vmc { | ||
138 | regulator-compatible = "ldo_vmc"; | ||
139 | regulator-name = "vmc"; | ||
140 | regulator-min-microvolt = <1800000>; | ||
141 | regulator-max-microvolt = <3300000>; | ||
142 | regulator-enable-ramp-delay = <218>; | ||
143 | }; | ||
144 | |||
145 | mt6397_vmch_reg: ldo_vmch { | ||
146 | regulator-compatible = "ldo_vmch"; | ||
147 | regulator-name = "vmch"; | ||
148 | regulator-min-microvolt = <3000000>; | ||
149 | regulator-max-microvolt = <3300000>; | ||
150 | regulator-enable-ramp-delay = <218>; | ||
151 | }; | ||
152 | |||
153 | mt6397_vemc_3v3_reg: ldo_vemc3v3 { | ||
154 | regulator-compatible = "ldo_vemc3v3"; | ||
155 | regulator-name = "vemc_3v3"; | ||
156 | regulator-min-microvolt = <3000000>; | ||
157 | regulator-max-microvolt = <3300000>; | ||
158 | regulator-enable-ramp-delay = <218>; | ||
159 | }; | ||
160 | |||
161 | mt6397_vgp1_reg: ldo_vgp1 { | ||
162 | regulator-compatible = "ldo_vgp1"; | ||
163 | regulator-name = "vcamd"; | ||
164 | regulator-min-microvolt = <1220000>; | ||
165 | regulator-max-microvolt = <3300000>; | ||
166 | regulator-enable-ramp-delay = <240>; | ||
167 | }; | ||
168 | |||
169 | mt6397_vgp2_reg: ldo_vgp2 { | ||
170 | egulator-compatible = "ldo_vgp2"; | ||
171 | regulator-name = "vcamio"; | ||
172 | regulator-min-microvolt = <1000000>; | ||
173 | regulator-max-microvolt = <3300000>; | ||
174 | regulator-enable-ramp-delay = <218>; | ||
175 | }; | ||
176 | |||
177 | mt6397_vgp3_reg: ldo_vgp3 { | ||
178 | regulator-compatible = "ldo_vgp3"; | ||
179 | regulator-name = "vcamaf"; | ||
180 | regulator-min-microvolt = <1200000>; | ||
181 | regulator-max-microvolt = <3300000>; | ||
182 | regulator-enable-ramp-delay = <218>; | ||
183 | }; | ||
184 | |||
185 | mt6397_vgp4_reg: ldo_vgp4 { | ||
186 | regulator-compatible = "ldo_vgp4"; | ||
187 | regulator-name = "vgp4"; | ||
188 | regulator-min-microvolt = <1200000>; | ||
189 | regulator-max-microvolt = <3300000>; | ||
190 | regulator-enable-ramp-delay = <218>; | ||
191 | }; | ||
192 | |||
193 | mt6397_vgp5_reg: ldo_vgp5 { | ||
194 | regulator-compatible = "ldo_vgp5"; | ||
195 | regulator-name = "vgp5"; | ||
196 | regulator-min-microvolt = <1200000>; | ||
197 | regulator-max-microvolt = <3000000>; | ||
198 | regulator-enable-ramp-delay = <218>; | ||
199 | }; | ||
200 | |||
201 | mt6397_vgp6_reg: ldo_vgp6 { | ||
202 | regulator-compatible = "ldo_vgp6"; | ||
203 | regulator-name = "vgp6"; | ||
204 | regulator-min-microvolt = <1200000>; | ||
205 | regulator-max-microvolt = <3300000>; | ||
206 | regulator-enable-ramp-delay = <218>; | ||
207 | }; | ||
208 | |||
209 | mt6397_vibr_reg: ldo_vibr { | ||
210 | regulator-compatible = "ldo_vibr"; | ||
211 | regulator-name = "vibr"; | ||
212 | regulator-min-microvolt = <1200000>; | ||
213 | regulator-max-microvolt = <3300000>; | ||
214 | regulator-enable-ramp-delay = <218>; | ||
215 | }; | ||
216 | }; | ||
217 | }; | ||
diff --git a/Documentation/devicetree/bindings/regulator/pfuze100.txt b/Documentation/devicetree/bindings/regulator/pfuze100.txt index 34ef5d16d0f1..9b40db88f637 100644 --- a/Documentation/devicetree/bindings/regulator/pfuze100.txt +++ b/Documentation/devicetree/bindings/regulator/pfuze100.txt | |||
@@ -1,7 +1,7 @@ | |||
1 | PFUZE100 family of regulators | 1 | PFUZE100 family of regulators |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: "fsl,pfuze100" or "fsl,pfuze200" | 4 | - compatible: "fsl,pfuze100", "fsl,pfuze200", "fsl,pfuze3000" |
5 | - reg: I2C slave address | 5 | - reg: I2C slave address |
6 | 6 | ||
7 | Required child node: | 7 | Required child node: |
@@ -14,6 +14,8 @@ Required child node: | |||
14 | sw1ab,sw1c,sw2,sw3a,sw3b,sw4,swbst,vsnvs,vrefddr,vgen1~vgen6 | 14 | sw1ab,sw1c,sw2,sw3a,sw3b,sw4,swbst,vsnvs,vrefddr,vgen1~vgen6 |
15 | --PFUZE200 | 15 | --PFUZE200 |
16 | sw1ab,sw2,sw3a,sw3b,swbst,vsnvs,vrefddr,vgen1~vgen6 | 16 | sw1ab,sw2,sw3a,sw3b,swbst,vsnvs,vrefddr,vgen1~vgen6 |
17 | --PFUZE3000 | ||
18 | sw1a,sw1b,sw2,sw3,swbst,vsnvs,vrefddr,vldo1,vldo2,vccsd,v33,vldo3,vldo4 | ||
17 | 19 | ||
18 | Each regulator is defined using the standard binding for regulators. | 20 | Each regulator is defined using the standard binding for regulators. |
19 | 21 | ||
@@ -205,3 +207,93 @@ Example 2: PFUZE200 | |||
205 | }; | 207 | }; |
206 | }; | 208 | }; |
207 | }; | 209 | }; |
210 | |||
211 | Example 3: PFUZE3000 | ||
212 | |||
213 | pmic: pfuze3000@08 { | ||
214 | compatible = "fsl,pfuze3000"; | ||
215 | reg = <0x08>; | ||
216 | |||
217 | regulators { | ||
218 | sw1a_reg: sw1a { | ||
219 | regulator-min-microvolt = <700000>; | ||
220 | regulator-max-microvolt = <1475000>; | ||
221 | regulator-boot-on; | ||
222 | regulator-always-on; | ||
223 | regulator-ramp-delay = <6250>; | ||
224 | }; | ||
225 | /* use sw1c_reg to align with pfuze100/pfuze200 */ | ||
226 | sw1c_reg: sw1b { | ||
227 | regulator-min-microvolt = <700000>; | ||
228 | regulator-max-microvolt = <1475000>; | ||
229 | regulator-boot-on; | ||
230 | regulator-always-on; | ||
231 | regulator-ramp-delay = <6250>; | ||
232 | }; | ||
233 | |||
234 | sw2_reg: sw2 { | ||
235 | regulator-min-microvolt = <2500000>; | ||
236 | regulator-max-microvolt = <3300000>; | ||
237 | regulator-boot-on; | ||
238 | regulator-always-on; | ||
239 | }; | ||
240 | |||
241 | sw3a_reg: sw3 { | ||
242 | regulator-min-microvolt = <900000>; | ||
243 | regulator-max-microvolt = <1650000>; | ||
244 | regulator-boot-on; | ||
245 | regulator-always-on; | ||
246 | }; | ||
247 | |||
248 | swbst_reg: swbst { | ||
249 | regulator-min-microvolt = <5000000>; | ||
250 | regulator-max-microvolt = <5150000>; | ||
251 | }; | ||
252 | |||
253 | snvs_reg: vsnvs { | ||
254 | regulator-min-microvolt = <1000000>; | ||
255 | regulator-max-microvolt = <3000000>; | ||
256 | regulator-boot-on; | ||
257 | regulator-always-on; | ||
258 | }; | ||
259 | |||
260 | vref_reg: vrefddr { | ||
261 | regulator-boot-on; | ||
262 | regulator-always-on; | ||
263 | }; | ||
264 | |||
265 | vgen1_reg: vldo1 { | ||
266 | regulator-min-microvolt = <1800000>; | ||
267 | regulator-max-microvolt = <3300000>; | ||
268 | regulator-always-on; | ||
269 | }; | ||
270 | |||
271 | vgen2_reg: vldo2 { | ||
272 | regulator-min-microvolt = <800000>; | ||
273 | regulator-max-microvolt = <1550000>; | ||
274 | }; | ||
275 | |||
276 | vgen3_reg: vccsd { | ||
277 | regulator-min-microvolt = <2850000>; | ||
278 | regulator-max-microvolt = <3300000>; | ||
279 | regulator-always-on; | ||
280 | }; | ||
281 | |||
282 | vgen4_reg: v33 { | ||
283 | regulator-min-microvolt = <2850000>; | ||
284 | regulator-max-microvolt = <3300000>; | ||
285 | }; | ||
286 | |||
287 | vgen5_reg: vldo3 { | ||
288 | regulator-min-microvolt = <1800000>; | ||
289 | regulator-max-microvolt = <3300000>; | ||
290 | regulator-always-on; | ||
291 | }; | ||
292 | |||
293 | vgen6_reg: vldo4 { | ||
294 | regulator-min-microvolt = <1800000>; | ||
295 | regulator-max-microvolt = <3300000>; | ||
296 | regulator-always-on; | ||
297 | }; | ||
298 | }; | ||
299 | }; | ||
diff --git a/Documentation/devicetree/bindings/rtc/armada-380-rtc.txt b/Documentation/devicetree/bindings/rtc/armada-380-rtc.txt new file mode 100644 index 000000000000..2eb9d4ee7dc0 --- /dev/null +++ b/Documentation/devicetree/bindings/rtc/armada-380-rtc.txt | |||
@@ -0,0 +1,22 @@ | |||
1 | * Real Time Clock of the Armada 38x SoCs | ||
2 | |||
3 | RTC controller for the Armada 38x SoCs | ||
4 | |||
5 | Required properties: | ||
6 | - compatible : Should be "marvell,armada-380-rtc" | ||
7 | - reg: a list of base address and size pairs, one for each entry in | ||
8 | reg-names | ||
9 | - reg names: should contain: | ||
10 | * "rtc" for the RTC registers | ||
11 | * "rtc-soc" for the SoC related registers and among them the one | ||
12 | related to the interrupt. | ||
13 | - interrupts: IRQ line for the RTC. | ||
14 | |||
15 | Example: | ||
16 | |||
17 | rtc@a3800 { | ||
18 | compatible = "marvell,armada-380-rtc"; | ||
19 | reg = <0xa3800 0x20>, <0x184a0 0x0c>; | ||
20 | reg-names = "rtc", "rtc-soc"; | ||
21 | interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>; | ||
22 | }; | ||
diff --git a/Documentation/devicetree/bindings/rtc/isil,isl12057.txt b/Documentation/devicetree/bindings/rtc/isil,isl12057.txt new file mode 100644 index 000000000000..501c39ceae79 --- /dev/null +++ b/Documentation/devicetree/bindings/rtc/isil,isl12057.txt | |||
@@ -0,0 +1,78 @@ | |||
1 | Intersil ISL12057 I2C RTC/Alarm chip | ||
2 | |||
3 | ISL12057 is a trivial I2C device (it has simple device tree bindings, | ||
4 | consisting of a compatible field, an address and possibly an interrupt | ||
5 | line). | ||
6 | |||
7 | Nonetheless, it also supports an option boolean property | ||
8 | ("isil,irq2-can-wakeup-machine") to handle the specific use-case found | ||
9 | on at least three in-tree users of the chip (NETGEAR ReadyNAS 102, 104 | ||
10 | and 2120 ARM-based NAS); On those devices, the IRQ#2 pin of the chip | ||
11 | (associated with the alarm supported by the driver) is not connected | ||
12 | to the SoC but to a PMIC. It allows the device to be powered up when | ||
13 | RTC alarm rings. In order to mark the device has a wakeup source and | ||
14 | get access to the 'wakealarm' sysfs entry, this specific property can | ||
15 | be set when the IRQ#2 pin of the chip is not connected to the SoC but | ||
16 | can wake up the device. | ||
17 | |||
18 | Required properties supported by the device: | ||
19 | |||
20 | - "compatible": must be "isil,isl12057" | ||
21 | - "reg": I2C bus address of the device | ||
22 | |||
23 | Optional properties: | ||
24 | |||
25 | - "isil,irq2-can-wakeup-machine": mark the chip as a wakeup source, | ||
26 | independently of the availability of an IRQ line connected to the | ||
27 | SoC. | ||
28 | |||
29 | - "interrupt-parent", "interrupts": for passing the interrupt line | ||
30 | of the SoC connected to IRQ#2 of the RTC chip. | ||
31 | |||
32 | |||
33 | Example isl12057 node without IRQ#2 pin connected (no alarm support): | ||
34 | |||
35 | isl12057: isl12057@68 { | ||
36 | compatible = "isil,isl12057"; | ||
37 | reg = <0x68>; | ||
38 | }; | ||
39 | |||
40 | |||
41 | Example isl12057 node with IRQ#2 pin connected to main SoC via MPP6 (note | ||
42 | that the pinctrl-related properties below are given for completeness and | ||
43 | may not be required or may be different depending on your system or | ||
44 | SoC, and the main function of the MPP used as IRQ line, i.e. | ||
45 | "interrupt-parent" and "interrupts" are usually sufficient): | ||
46 | |||
47 | pinctrl { | ||
48 | ... | ||
49 | |||
50 | rtc_alarm_pin: rtc_alarm_pin { | ||
51 | marvell,pins = "mpp6"; | ||
52 | marvell,function = "gpio"; | ||
53 | }; | ||
54 | |||
55 | ... | ||
56 | |||
57 | }; | ||
58 | |||
59 | ... | ||
60 | |||
61 | isl12057: isl12057@68 { | ||
62 | compatible = "isil,isl12057"; | ||
63 | reg = <0x68>; | ||
64 | pinctrl-0 = <&rtc_alarm_pin>; | ||
65 | pinctrl-names = "default"; | ||
66 | interrupt-parent = <&gpio0>; | ||
67 | interrupts = <6 IRQ_TYPE_EDGE_FALLING>; | ||
68 | }; | ||
69 | |||
70 | |||
71 | Example isl12057 node without IRQ#2 pin connected to the SoC but to a | ||
72 | PMIC, allowing the device to be started based on configured alarm: | ||
73 | |||
74 | isl12057: isl12057@68 { | ||
75 | compatible = "isil,isl12057"; | ||
76 | reg = <0x68>; | ||
77 | isil,irq2-can-wakeup-machine; | ||
78 | }; | ||
diff --git a/Documentation/devicetree/bindings/rtc/nvidia,tegra20-rtc.txt b/Documentation/devicetree/bindings/rtc/nvidia,tegra20-rtc.txt index 652d1ff2e8be..b7d98ed3e098 100644 --- a/Documentation/devicetree/bindings/rtc/nvidia,tegra20-rtc.txt +++ b/Documentation/devicetree/bindings/rtc/nvidia,tegra20-rtc.txt | |||
@@ -6,7 +6,9 @@ state. | |||
6 | 6 | ||
7 | Required properties: | 7 | Required properties: |
8 | 8 | ||
9 | - compatible : should be "nvidia,tegra20-rtc". | 9 | - compatible : For Tegra20, must contain "nvidia,tegra20-rtc". Otherwise, |
10 | must contain '"nvidia,<chip>-rtc", "nvidia,tegra20-rtc"', where <chip> | ||
11 | can be tegra30, tegra114, tegra124, or tegra132. | ||
10 | - reg : Specifies base physical address and size of the registers. | 12 | - reg : Specifies base physical address and size of the registers. |
11 | - interrupts : A single interrupt specifier. | 13 | - interrupts : A single interrupt specifier. |
12 | - clocks : Must contain one entry, for the module clock. | 14 | - clocks : Must contain one entry, for the module clock. |
diff --git a/Documentation/devicetree/bindings/rtc/nxp,rtc-2123.txt b/Documentation/devicetree/bindings/rtc/nxp,rtc-2123.txt new file mode 100644 index 000000000000..5cbc0b145a61 --- /dev/null +++ b/Documentation/devicetree/bindings/rtc/nxp,rtc-2123.txt | |||
@@ -0,0 +1,16 @@ | |||
1 | NXP PCF2123 SPI Real Time Clock | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: should be: "nxp,rtc-pcf2123" | ||
5 | - reg: should be the SPI slave chipselect address | ||
6 | |||
7 | Optional properties: | ||
8 | - spi-cs-high: PCF2123 needs chipselect high | ||
9 | |||
10 | Example: | ||
11 | |||
12 | rtc: nxp,rtc-pcf2123@3 { | ||
13 | compatible = "nxp,rtc-pcf2123" | ||
14 | reg = <3> | ||
15 | spi-cs-high; | ||
16 | }; | ||
diff --git a/Documentation/devicetree/bindings/security/tpm/st33zp24-i2c.txt b/Documentation/devicetree/bindings/security/tpm/st33zp24-i2c.txt new file mode 100644 index 000000000000..3ad115efed1e --- /dev/null +++ b/Documentation/devicetree/bindings/security/tpm/st33zp24-i2c.txt | |||
@@ -0,0 +1,36 @@ | |||
1 | * STMicroelectronics SAS. ST33ZP24 TPM SoC | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be "st,st33zp24-i2c". | ||
5 | - clock-frequency: I²C work frequency. | ||
6 | - reg: address on the bus | ||
7 | |||
8 | Optional ST33ZP24 Properties: | ||
9 | - interrupt-parent: phandle for the interrupt gpio controller | ||
10 | - interrupts: GPIO interrupt to which the chip is connected | ||
11 | - lpcpd-gpios: Output GPIO pin used for ST33ZP24 power management D1/D2 state. | ||
12 | If set, power must be present when the platform is going into sleep/hibernate mode. | ||
13 | |||
14 | Optional SoC Specific Properties: | ||
15 | - pinctrl-names: Contains only one value - "default". | ||
16 | - pintctrl-0: Specifies the pin control groups used for this controller. | ||
17 | |||
18 | Example (for ARM-based BeagleBoard xM with ST33ZP24 on I2C2): | ||
19 | |||
20 | &i2c2 { | ||
21 | |||
22 | status = "okay"; | ||
23 | |||
24 | st33zp24: st33zp24@13 { | ||
25 | |||
26 | compatible = "st,st33zp24-i2c"; | ||
27 | |||
28 | reg = <0x13>; | ||
29 | clock-frequency = <400000>; | ||
30 | |||
31 | interrupt-parent = <&gpio5>; | ||
32 | interrupts = <7 IRQ_TYPE_LEVEL_HIGH>; | ||
33 | |||
34 | lpcpd-gpios = <&gpio5 15 GPIO_ACTIVE_HIGH>; | ||
35 | }; | ||
36 | }; | ||
diff --git a/Documentation/devicetree/bindings/serial/digicolor-usart.txt b/Documentation/devicetree/bindings/serial/digicolor-usart.txt new file mode 100644 index 000000000000..2d3ede66889d --- /dev/null +++ b/Documentation/devicetree/bindings/serial/digicolor-usart.txt | |||
@@ -0,0 +1,27 @@ | |||
1 | Binding for Conexant Digicolor USART | ||
2 | |||
3 | Note: this binding is only applicable for using the USART peripheral as | ||
4 | UART. USART also support synchronous serial protocols like SPI and I2S. Use | ||
5 | the binding that matches the wiring of your system. | ||
6 | |||
7 | Required properties: | ||
8 | - compatible : should be "cnxt,cx92755-usart". | ||
9 | - reg: Should contain USART controller registers location and length. | ||
10 | - interrupts: Should contain a single USART controller interrupt. | ||
11 | - clocks: Must contain phandles to the USART clock | ||
12 | See ../clocks/clock-bindings.txt for details. | ||
13 | |||
14 | Note: Each UART port should have an alias correctly numbered | ||
15 | in "aliases" node. | ||
16 | |||
17 | Example: | ||
18 | aliases { | ||
19 | serial0 = &uart0; | ||
20 | }; | ||
21 | |||
22 | uart0: uart@f0000740 { | ||
23 | compatible = "cnxt,cx92755-usart"; | ||
24 | reg = <0xf0000740 0x20>; | ||
25 | clocks = <&main_clk>; | ||
26 | interrupts = <44>; | ||
27 | }; | ||
diff --git a/Documentation/devicetree/bindings/serial/mtk-uart.txt b/Documentation/devicetree/bindings/serial/mtk-uart.txt index 48358a33ea7d..44152261e5c5 100644 --- a/Documentation/devicetree/bindings/serial/mtk-uart.txt +++ b/Documentation/devicetree/bindings/serial/mtk-uart.txt | |||
@@ -2,9 +2,13 @@ | |||
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible should contain: | 4 | - compatible should contain: |
5 | * "mediatek,mt8135-uart" for MT8135 compatible UARTS | ||
6 | * "mediatek,mt8127-uart" for MT8127 compatible UARTS | ||
7 | * "mediatek,mt8173-uart" for MT8173 compatible UARTS | ||
5 | * "mediatek,mt6589-uart" for MT6589 compatible UARTS | 8 | * "mediatek,mt6589-uart" for MT6589 compatible UARTS |
6 | * "mediatek,mt6582-uart" for MT6582 compatible UARTS | 9 | * "mediatek,mt6582-uart" for MT6582 compatible UARTS |
7 | * "mediatek,mt6577-uart" for all compatible UARTS (MT6589, MT6582, MT6577) | 10 | * "mediatek,mt6577-uart" for all compatible UARTS (MT8173, MT6589, MT6582, |
11 | MT6577) | ||
8 | 12 | ||
9 | - reg: The base address of the UART register bank. | 13 | - reg: The base address of the UART register bank. |
10 | 14 | ||
diff --git a/Documentation/devicetree/bindings/serial/of-serial.txt b/Documentation/devicetree/bindings/serial/of-serial.txt index b52b98234b9b..91d5ab0e60fc 100644 --- a/Documentation/devicetree/bindings/serial/of-serial.txt +++ b/Documentation/devicetree/bindings/serial/of-serial.txt | |||
@@ -8,7 +8,10 @@ Required properties: | |||
8 | - "ns16550" | 8 | - "ns16550" |
9 | - "ns16750" | 9 | - "ns16750" |
10 | - "ns16850" | 10 | - "ns16850" |
11 | - "nvidia,tegra20-uart" | 11 | - For Tegra20, must contain "nvidia,tegra20-uart" |
12 | - For other Tegra, must contain '"nvidia,<chip>-uart", | ||
13 | "nvidia,tegra20-uart"' where <chip> is tegra30, tegra114, tegra124, | ||
14 | tegra132, or tegra210. | ||
12 | - "nxp,lpc3220-uart" | 15 | - "nxp,lpc3220-uart" |
13 | - "ralink,rt2880-uart" | 16 | - "ralink,rt2880-uart" |
14 | - "ibm,qpace-nwp-serial" | 17 | - "ibm,qpace-nwp-serial" |
@@ -16,6 +19,7 @@ Required properties: | |||
16 | - "altr,16550-FIFO64" | 19 | - "altr,16550-FIFO64" |
17 | - "altr,16550-FIFO128" | 20 | - "altr,16550-FIFO128" |
18 | - "fsl,16550-FIFO64" | 21 | - "fsl,16550-FIFO64" |
22 | - "fsl,ns16550" | ||
19 | - "serial" if the port type is unknown. | 23 | - "serial" if the port type is unknown. |
20 | - reg : offset and length of the register set for the device. | 24 | - reg : offset and length of the register set for the device. |
21 | - interrupts : should contain uart interrupt. | 25 | - interrupts : should contain uart interrupt. |
@@ -40,6 +44,17 @@ Optional properties: | |||
40 | driver is allowed to detect support for the capability even without this | 44 | driver is allowed to detect support for the capability even without this |
41 | property. | 45 | property. |
42 | 46 | ||
47 | Note: | ||
48 | * fsl,ns16550: | ||
49 | ------------ | ||
50 | Freescale DUART is very similar to the PC16552D (and to a | ||
51 | pair of NS16550A), albeit with some nonstandard behavior such as | ||
52 | erratum A-004737 (relating to incorrect BRK handling). | ||
53 | |||
54 | Represents a single port that is compatible with the DUART found | ||
55 | on many Freescale chips (examples include mpc8349, mpc8548, | ||
56 | mpc8641d, p4080 and ls2085a). | ||
57 | |||
43 | Example: | 58 | Example: |
44 | 59 | ||
45 | uart@80230000 { | 60 | uart@80230000 { |
diff --git a/Documentation/devicetree/bindings/serial/sirf-uart.txt b/Documentation/devicetree/bindings/serial/sirf-uart.txt index 3acdd969edf1..f0c39261c5d4 100644 --- a/Documentation/devicetree/bindings/serial/sirf-uart.txt +++ b/Documentation/devicetree/bindings/serial/sirf-uart.txt | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : Should be "sirf,prima2-uart", "sirf, prima2-usp-uart", | 4 | - compatible : Should be "sirf,prima2-uart", "sirf, prima2-usp-uart", |
5 | "sirf,marco-uart" or "sirf,marco-bt-uart" which means | 5 | "sirf,atlas7-uart" or "sirf,atlas7-bt-uart" which means |
6 | uart located in BT module and used for BT. | 6 | uart located in BT module and used for BT. |
7 | - reg : Offset and length of the register set for the device | 7 | - reg : Offset and length of the register set for the device |
8 | - interrupts : Should contain uart interrupt | 8 | - interrupts : Should contain uart interrupt |
@@ -37,7 +37,7 @@ usp@b0090000 { | |||
37 | for uart use in BT module, | 37 | for uart use in BT module, |
38 | uart6: uart@11000000 { | 38 | uart6: uart@11000000 { |
39 | cell-index = <6>; | 39 | cell-index = <6>; |
40 | compatible = "sirf,marco-bt-uart", "sirf,marco-uart"; | 40 | compatible = "sirf,atlas7-bt-uart", "sirf,atlas7-uart"; |
41 | reg = <0x11000000 0x1000>; | 41 | reg = <0x11000000 0x1000>; |
42 | interrupts = <0 100 0>; | 42 | interrupts = <0 100 0>; |
43 | clocks = <&clks 138>, <&clks 140>, <&clks 141>; | 43 | clocks = <&clks 138>, <&clks 140>, <&clks 141>; |
diff --git a/Documentation/devicetree/bindings/serial/sprd-uart.txt b/Documentation/devicetree/bindings/serial/sprd-uart.txt new file mode 100644 index 000000000000..2aff0f22c9fa --- /dev/null +++ b/Documentation/devicetree/bindings/serial/sprd-uart.txt | |||
@@ -0,0 +1,7 @@ | |||
1 | * Spreadtrum serial UART | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: must be "sprd,sc9836-uart" | ||
5 | - reg: offset and length of the register set for the device | ||
6 | - interrupts: exactly one interrupt specifier | ||
7 | - clocks: phandles to input clocks. | ||
diff --git a/Documentation/devicetree/bindings/serio/allwinner,sun4i-ps2.txt b/Documentation/devicetree/bindings/serio/allwinner,sun4i-ps2.txt new file mode 100644 index 000000000000..362a76925bcd --- /dev/null +++ b/Documentation/devicetree/bindings/serio/allwinner,sun4i-ps2.txt | |||
@@ -0,0 +1,23 @@ | |||
1 | * Device tree bindings for Allwinner A10, A20 PS2 host controller | ||
2 | |||
3 | A20 PS2 is dual role controller (PS2 host and PS2 device). These bindings are | ||
4 | for PS2 A10/A20 host controller. IBM compliant IBM PS2 and AT-compatible keyboard | ||
5 | and mouse can be connected. | ||
6 | |||
7 | Required properties: | ||
8 | |||
9 | - reg : Offset and length of the register set for the device. | ||
10 | - compatible : Should be as of the following: | ||
11 | - "allwinner,sun4i-a10-ps2" | ||
12 | - interrupts : The interrupt line connected to the PS2. | ||
13 | - clocks : The gate clk connected to the PS2. | ||
14 | |||
15 | |||
16 | Example: | ||
17 | ps20: ps2@0x01c2a000 { | ||
18 | compatible = "allwinner,sun4i-a10-ps2"; | ||
19 | reg = <0x01c2a000 0x400>; | ||
20 | interrupts = <0 62 4>; | ||
21 | clocks = <&apb1_gates 6>; | ||
22 | status = "disabled"; | ||
23 | }; | ||
diff --git a/Documentation/devicetree/bindings/soc/fsl/bman.txt b/Documentation/devicetree/bindings/soc/fsl/bman.txt index 9f80bf8709ac..47ac834414d8 100644 --- a/Documentation/devicetree/bindings/soc/fsl/bman.txt +++ b/Documentation/devicetree/bindings/soc/fsl/bman.txt | |||
@@ -36,6 +36,11 @@ are located at offsets 0xbf8 and 0xbfc | |||
36 | Value type: <prop-encoded-array> | 36 | Value type: <prop-encoded-array> |
37 | Definition: Standard property. The error interrupt | 37 | Definition: Standard property. The error interrupt |
38 | 38 | ||
39 | - fsl,bman-portals | ||
40 | Usage: Required | ||
41 | Value type: <phandle> | ||
42 | Definition: Phandle to this BMan instance's portals | ||
43 | |||
39 | - fsl,liodn | 44 | - fsl,liodn |
40 | Usage: See pamu.txt | 45 | Usage: See pamu.txt |
41 | Value type: <prop-encoded-array> | 46 | Value type: <prop-encoded-array> |
@@ -96,7 +101,7 @@ The example below shows a BMan FBPR dynamic allocation memory node | |||
96 | 101 | ||
97 | bman_fbpr: bman-fbpr { | 102 | bman_fbpr: bman-fbpr { |
98 | compatible = "fsl,bman-fbpr"; | 103 | compatible = "fsl,bman-fbpr"; |
99 | alloc-ranges = <0 0 0xf 0xffffffff>; | 104 | alloc-ranges = <0 0 0x10 0>; |
100 | size = <0 0x1000000>; | 105 | size = <0 0x1000000>; |
101 | alignment = <0 0x1000000>; | 106 | alignment = <0 0x1000000>; |
102 | }; | 107 | }; |
@@ -104,6 +109,10 @@ The example below shows a BMan FBPR dynamic allocation memory node | |||
104 | 109 | ||
105 | The example below shows a (P4080) BMan CCSR-space node | 110 | The example below shows a (P4080) BMan CCSR-space node |
106 | 111 | ||
112 | bportals: bman-portals@ff4000000 { | ||
113 | ... | ||
114 | }; | ||
115 | |||
107 | crypto@300000 { | 116 | crypto@300000 { |
108 | ... | 117 | ... |
109 | fsl,bman = <&bman, 2>; | 118 | fsl,bman = <&bman, 2>; |
@@ -115,6 +124,7 @@ The example below shows a (P4080) BMan CCSR-space node | |||
115 | reg = <0x31a000 0x1000>; | 124 | reg = <0x31a000 0x1000>; |
116 | interrupts = <16 2 1 2>; | 125 | interrupts = <16 2 1 2>; |
117 | fsl,liodn = <0x17>; | 126 | fsl,liodn = <0x17>; |
127 | fsl,bman-portals = <&bportals>; | ||
118 | memory-region = <&bman_fbpr>; | 128 | memory-region = <&bman_fbpr>; |
119 | }; | 129 | }; |
120 | 130 | ||
diff --git a/Documentation/devicetree/bindings/soc/fsl/qman.txt b/Documentation/devicetree/bindings/soc/fsl/qman.txt index 063e3a0b9d04..556ebb8be75d 100644 --- a/Documentation/devicetree/bindings/soc/fsl/qman.txt +++ b/Documentation/devicetree/bindings/soc/fsl/qman.txt | |||
@@ -38,6 +38,11 @@ are located at offsets 0xbf8 and 0xbfc | |||
38 | Value type: <prop-encoded-array> | 38 | Value type: <prop-encoded-array> |
39 | Definition: Standard property. The error interrupt | 39 | Definition: Standard property. The error interrupt |
40 | 40 | ||
41 | - fsl,qman-portals | ||
42 | Usage: Required | ||
43 | Value type: <phandle> | ||
44 | Definition: Phandle to this QMan instance's portals | ||
45 | |||
41 | - fsl,liodn | 46 | - fsl,liodn |
42 | Usage: See pamu.txt | 47 | Usage: See pamu.txt |
43 | Value type: <prop-encoded-array> | 48 | Value type: <prop-encoded-array> |
@@ -113,13 +118,13 @@ The example below shows a QMan FQD and a PFDR dynamic allocation memory nodes | |||
113 | 118 | ||
114 | qman_fqd: qman-fqd { | 119 | qman_fqd: qman-fqd { |
115 | compatible = "fsl,qman-fqd"; | 120 | compatible = "fsl,qman-fqd"; |
116 | alloc-ranges = <0 0 0xf 0xffffffff>; | 121 | alloc-ranges = <0 0 0x10 0>; |
117 | size = <0 0x400000>; | 122 | size = <0 0x400000>; |
118 | alignment = <0 0x400000>; | 123 | alignment = <0 0x400000>; |
119 | }; | 124 | }; |
120 | qman_pfdr: qman-pfdr { | 125 | qman_pfdr: qman-pfdr { |
121 | compatible = "fsl,qman-pfdr"; | 126 | compatible = "fsl,qman-pfdr"; |
122 | alloc-ranges = <0 0 0xf 0xffffffff>; | 127 | alloc-ranges = <0 0 0x10 0>; |
123 | size = <0 0x2000000>; | 128 | size = <0 0x2000000>; |
124 | alignment = <0 0x2000000>; | 129 | alignment = <0 0x2000000>; |
125 | }; | 130 | }; |
@@ -127,6 +132,10 @@ The example below shows a QMan FQD and a PFDR dynamic allocation memory nodes | |||
127 | 132 | ||
128 | The example below shows a (P4080) QMan CCSR-space node | 133 | The example below shows a (P4080) QMan CCSR-space node |
129 | 134 | ||
135 | qportals: qman-portals@ff4200000 { | ||
136 | ... | ||
137 | }; | ||
138 | |||
130 | clockgen: global-utilities@e1000 { | 139 | clockgen: global-utilities@e1000 { |
131 | ... | 140 | ... |
132 | sysclk: sysclk { | 141 | sysclk: sysclk { |
@@ -154,6 +163,7 @@ The example below shows a (P4080) QMan CCSR-space node | |||
154 | reg = <0x318000 0x1000>; | 163 | reg = <0x318000 0x1000>; |
155 | interrupts = <16 2 1 3> | 164 | interrupts = <16 2 1 3> |
156 | fsl,liodn = <0x16>; | 165 | fsl,liodn = <0x16>; |
166 | fsl,qman-portals = <&qportals>; | ||
157 | memory-region = <&qman_fqd &qman_pfdr>; | 167 | memory-region = <&qman_fqd &qman_pfdr>; |
158 | clocks = <&platform_pll 1>; | 168 | clocks = <&platform_pll 1>; |
159 | }; | 169 | }; |
diff --git a/Documentation/devicetree/bindings/sound/atmel_ac97c.txt b/Documentation/devicetree/bindings/sound/atmel_ac97c.txt new file mode 100644 index 000000000000..b151bd902ce3 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/atmel_ac97c.txt | |||
@@ -0,0 +1,20 @@ | |||
1 | * Atmel AC97 controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "atmel,at91sam9263-ac97c" | ||
5 | - reg: Address and length of the register set for the device | ||
6 | - interrupts: Should contain AC97 interrupt | ||
7 | - ac97-gpios: Please refer to soc-ac97link.txt, only ac97-reset is used | ||
8 | Optional properties: | ||
9 | - pinctrl-names, pinctrl-0: Please refer to pinctrl-bindings.txt | ||
10 | |||
11 | Example: | ||
12 | sound@fffa0000 { | ||
13 | compatible = "atmel,at91sam9263-ac97c"; | ||
14 | pinctrl-names = "default"; | ||
15 | pinctrl-0 = <&pinctrl_ac97>; | ||
16 | reg = <0xfffa0000 0x4000>; | ||
17 | interrupts = <18 IRQ_TYPE_LEVEL_HIGH 5>; | ||
18 | |||
19 | ac97-gpios = <&pioB 0 0 &pioB 2 0 &pioC 29 GPIO_ACTIVE_LOW>; | ||
20 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/cdns,xtfpga-i2s.txt b/Documentation/devicetree/bindings/sound/cdns,xtfpga-i2s.txt new file mode 100644 index 000000000000..befd125d18bb --- /dev/null +++ b/Documentation/devicetree/bindings/sound/cdns,xtfpga-i2s.txt | |||
@@ -0,0 +1,18 @@ | |||
1 | Bindings for I2S controller built into xtfpga Xtensa bitstreams. | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: shall be "cdns,xtfpga-i2s". | ||
5 | - reg: memory region (address and length) with device registers. | ||
6 | - interrupts: interrupt for the device. | ||
7 | - clocks: phandle to the clk used as master clock. I2S bus clock | ||
8 | is derived from it. | ||
9 | |||
10 | Examples: | ||
11 | |||
12 | i2s0: xtfpga-i2s@0d080000 { | ||
13 | #sound-dai-cells = <0>; | ||
14 | compatible = "cdns,xtfpga-i2s"; | ||
15 | reg = <0x0d080000 0x40>; | ||
16 | interrupts = <2 1>; | ||
17 | clocks = <&cdce706 4>; | ||
18 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/designware-i2s.txt b/Documentation/devicetree/bindings/sound/designware-i2s.txt new file mode 100644 index 000000000000..7bb54247f8e8 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/designware-i2s.txt | |||
@@ -0,0 +1,31 @@ | |||
1 | DesignWare I2S controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : Must be "snps,designware-i2s" | ||
5 | - reg : Must contain the I2S core's registers location and length | ||
6 | - clocks : Pairs of phandle and specifier referencing the controller's | ||
7 | clocks. The controller expects one clock: the clock used as the sampling | ||
8 | rate reference clock sample. | ||
9 | - clock-names : "i2sclk" for the sample rate reference clock. | ||
10 | - dmas: Pairs of phandle and specifier for the DMA channels that are used by | ||
11 | the core. The core expects one or two dma channels: one for transmit and | ||
12 | one for receive. | ||
13 | - dma-names : "tx" for the transmit channel, "rx" for the receive channel. | ||
14 | |||
15 | For more details on the 'dma', 'dma-names', 'clock' and 'clock-names' | ||
16 | properties please check: | ||
17 | * resource-names.txt | ||
18 | * clock/clock-bindings.txt | ||
19 | * dma/dma.txt | ||
20 | |||
21 | Example: | ||
22 | |||
23 | soc_i2s: i2s@7ff90000 { | ||
24 | compatible = "snps,designware-i2s"; | ||
25 | reg = <0x0 0x7ff90000 0x0 0x1000>; | ||
26 | clocks = <&scpi_i2sclk 0>; | ||
27 | clock-names = "i2sclk"; | ||
28 | #sound-dai-cells = <0>; | ||
29 | dmas = <&dma0 5>; | ||
30 | dma-names = "tx"; | ||
31 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/ingenic,jz4740-i2s.txt b/Documentation/devicetree/bindings/sound/ingenic,jz4740-i2s.txt new file mode 100644 index 000000000000..b41433386e2f --- /dev/null +++ b/Documentation/devicetree/bindings/sound/ingenic,jz4740-i2s.txt | |||
@@ -0,0 +1,23 @@ | |||
1 | Ingenic JZ4740 I2S controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "ingenic,jz4740-i2s" | ||
5 | - reg : I2S registers location and length | ||
6 | - clocks : AIC and I2S PLL clock specifiers. | ||
7 | - clock-names: "aic" and "i2s" | ||
8 | - dmas: DMA controller phandle and DMA request line for I2S Tx and Rx channels | ||
9 | - dma-names: Must be "tx" and "rx" | ||
10 | |||
11 | Example: | ||
12 | |||
13 | i2s: i2s@10020000 { | ||
14 | compatible = "ingenic,jz4740-i2s"; | ||
15 | reg = <0x10020000 0x94>; | ||
16 | |||
17 | clocks = <&cgu JZ4740_CLK_AIC>, <&cgu JZ4740_CLK_I2SPLL>; | ||
18 | clock-names = "aic", "i2s"; | ||
19 | |||
20 | dmas = <&dma 2>, <&dma 3>; | ||
21 | dma-names = "tx", "rx"; | ||
22 | |||
23 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/max98357a.txt b/Documentation/devicetree/bindings/sound/max98357a.txt new file mode 100644 index 000000000000..a7a149a236e5 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/max98357a.txt | |||
@@ -0,0 +1,14 @@ | |||
1 | Maxim MAX98357A audio DAC | ||
2 | |||
3 | This node models the Maxim MAX98357A DAC. | ||
4 | |||
5 | Required properties: | ||
6 | - compatible : "maxim,max98357a" | ||
7 | - sdmode-gpios : GPIO specifier for the GPIO -> DAC SDMODE pin | ||
8 | |||
9 | Example: | ||
10 | |||
11 | max98357a { | ||
12 | compatible = "maxim,max98357a"; | ||
13 | sdmode-gpios = <&qcom_pinmux 25 0>; | ||
14 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5677.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5677.txt new file mode 100644 index 000000000000..a4589cda214e --- /dev/null +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5677.txt | |||
@@ -0,0 +1,67 @@ | |||
1 | NVIDIA Tegra audio complex, with RT5677 CODEC | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "nvidia,tegra-audio-rt5677" | ||
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 RT5677's pins (as documented in its binding), and the jacks | ||
16 | on the board: | ||
17 | |||
18 | * Headphone | ||
19 | * Speaker | ||
20 | * Headset Mic | ||
21 | * Internal Mic 1 | ||
22 | * Internal Mic 2 | ||
23 | |||
24 | - nvidia,i2s-controller : The phandle of the Tegra I2S controller that's | ||
25 | connected to the CODEC. | ||
26 | - nvidia,audio-codec : The phandle of the RT5677 audio codec. This binding | ||
27 | assumes that AIF1 on the CODEC is connected to Tegra. | ||
28 | |||
29 | Optional properties: | ||
30 | - nvidia,hp-det-gpios : The GPIO that detects headphones are plugged in | ||
31 | - nvidia,hp-en-gpios : The GPIO that enables headphone amplifier | ||
32 | - nvidia,mic-present-gpios: The GPIO that mic jack is plugged in | ||
33 | - nvidia,dmic-clk-en-gpios : The GPIO that gates DMIC clock signal | ||
34 | |||
35 | Example: | ||
36 | |||
37 | sound { | ||
38 | compatible = "nvidia,tegra-audio-rt5677-ryu", | ||
39 | "nvidia,tegra-audio-rt5677"; | ||
40 | nvidia,model = "NVIDIA Tegra Ryu"; | ||
41 | |||
42 | nvidia,audio-routing = | ||
43 | "Headphone", "LOUT2", | ||
44 | "Headphone", "LOUT1", | ||
45 | "Headset Mic", "MICBIAS1", | ||
46 | "IN1P", "Headset Mic", | ||
47 | "IN1N", "Headset Mic", | ||
48 | "DMIC L1", "Internal Mic 1", | ||
49 | "DMIC R1", "Internal Mic 1", | ||
50 | "DMIC L2", "Internal Mic 2", | ||
51 | "DMIC R2", "Internal Mic 2", | ||
52 | "Speaker", "PDM1L", | ||
53 | "Speaker", "PDM1R"; | ||
54 | |||
55 | nvidia,i2s-controller = <&tegra_i2s1>; | ||
56 | nvidia,audio-codec = <&rt5677>; | ||
57 | |||
58 | nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(R, 7) GPIO_ACTIVE_HIGH>; | ||
59 | nvidia,mic-present-gpios = <&gpio TEGRA_GPIO(O, 5) GPIO_ACTIVE_LOW>; | ||
60 | nvidia,hp-en-gpios = <&rt5677 1 GPIO_ACTIVE_HIGH>; | ||
61 | nvidia,dmic-clk-en-gpios = <&rt5677 2 GPIO_ACTIVE_HIGH>; | ||
62 | |||
63 | clocks = <&tegra_car TEGRA124_CLK_PLL_A>, | ||
64 | <&tegra_car TEGRA124_CLK_PLL_A_OUT0>, | ||
65 | <&tegra_car TEGRA124_CLK_EXTERN1>; | ||
66 | clock-names = "pll_a", "pll_a_out0", "mclk"; | ||
67 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt index 946e2ac46091..0e9a1895d7fb 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt | |||
@@ -1,7 +1,10 @@ | |||
1 | NVIDIA Tegra30 AHUB (Audio Hub) | 1 | NVIDIA Tegra30 AHUB (Audio Hub) |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : "nvidia,tegra30-ahub", "nvidia,tegra114-ahub", etc. | 4 | - compatible : For Tegra30, must contain "nvidia,tegra30-ahub". For Tegra114, |
5 | must contain "nvidia,tegra114-ahub". For Tegra124, must contain | ||
6 | "nvidia,tegra124-ahub". Otherwise, must contain "nvidia,<chip>-ahub", | ||
7 | plus at least one of the above, where <chip> is tegra132. | ||
5 | - reg : Should contain the register physical address and length for each of | 8 | - reg : Should contain the register physical address and length for each of |
6 | the AHUB's register blocks. | 9 | the AHUB's register blocks. |
7 | - Tegra30 requires 2 entries, for the APBIF and AHUB/AUDIO register blocks. | 10 | - Tegra30 requires 2 entries, for the APBIF and AHUB/AUDIO register blocks. |
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra30-hda.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra30-hda.txt index b4730c2822bc..13e2ef496724 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra30-hda.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra30-hda.txt | |||
@@ -1,7 +1,9 @@ | |||
1 | NVIDIA Tegra30 HDA controller | 1 | NVIDIA Tegra30 HDA controller |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : "nvidia,tegra30-hda" | 4 | - compatible : For Tegra30, must contain "nvidia,tegra30-hda". Otherwise, |
5 | must contain '"nvidia,<chip>-hda", "nvidia,tegra30-hda"', where <chip> is | ||
6 | tegra114, tegra124, or tegra132. | ||
5 | - reg : Should contain the HDA registers location and length. | 7 | - reg : Should contain the HDA registers location and length. |
6 | - interrupts : The interrupt from the HDA controller. | 8 | - interrupts : The interrupt from the HDA controller. |
7 | - clocks : Must contain an entry for each required entry in clock-names. | 9 | - clocks : Must contain an entry for each required entry in clock-names. |
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt index 0c113ffe3814..38caa936f6f8 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt | |||
@@ -1,7 +1,10 @@ | |||
1 | NVIDIA Tegra30 I2S controller | 1 | NVIDIA Tegra30 I2S controller |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : "nvidia,tegra30-i2s" | 4 | - compatible : For Tegra30, must contain "nvidia,tegra30-i2s". For Tegra124, |
5 | must contain "nvidia,tegra124-i2s". Otherwise, must contain | ||
6 | "nvidia,<chip>-i2s" plus at least one of the above, where <chip> is | ||
7 | tegra114 or tegra132. | ||
5 | - reg : Should contain I2S registers location and length | 8 | - reg : Should contain I2S registers location and length |
6 | - clocks : Must contain one entry, for the module clock. | 9 | - clocks : Must contain one entry, for the module clock. |
7 | See ../clocks/clock-bindings.txt for details. | 10 | See ../clocks/clock-bindings.txt for details. |
diff --git a/Documentation/devicetree/bindings/sound/pcm512x.txt b/Documentation/devicetree/bindings/sound/pcm512x.txt index faff75e64573..3aae3b41bd8e 100644 --- a/Documentation/devicetree/bindings/sound/pcm512x.txt +++ b/Documentation/devicetree/bindings/sound/pcm512x.txt | |||
@@ -5,7 +5,8 @@ on the board). | |||
5 | 5 | ||
6 | Required properties: | 6 | Required properties: |
7 | 7 | ||
8 | - compatible : One of "ti,pcm5121" or "ti,pcm5122" | 8 | - compatible : One of "ti,pcm5121", "ti,pcm5122", "ti,pcm5141" or |
9 | "ti,pcm5142" | ||
9 | 10 | ||
10 | - reg : the I2C address of the device for I2C, the chip select | 11 | - reg : the I2C address of the device for I2C, the chip select |
11 | number for SPI. | 12 | number for SPI. |
@@ -16,9 +17,16 @@ Required properties: | |||
16 | Optional properties: | 17 | Optional properties: |
17 | 18 | ||
18 | - clocks : A clock specifier for the clock connected as SCLK. If this | 19 | - clocks : A clock specifier for the clock connected as SCLK. If this |
19 | is absent the device will be configured to clock from BCLK. | 20 | is absent the device will be configured to clock from BCLK. If pll-in |
21 | and pll-out are specified in addition to a clock, the device is | ||
22 | configured to accept clock input on a specified gpio pin. | ||
20 | 23 | ||
21 | Example: | 24 | - pll-in, pll-out : gpio pins used to connect the pll using <1> |
25 | through <6>. The device will be configured for clock input on the | ||
26 | given pll-in pin and PLL output on the given pll-out pin. An | ||
27 | external connection from the pll-out pin to the SCLK pin is assumed. | ||
28 | |||
29 | Examples: | ||
22 | 30 | ||
23 | pcm5122: pcm5122@4c { | 31 | pcm5122: pcm5122@4c { |
24 | compatible = "ti,pcm5122"; | 32 | compatible = "ti,pcm5122"; |
@@ -28,3 +36,17 @@ Example: | |||
28 | DVDD-supply = <®_1v8>; | 36 | DVDD-supply = <®_1v8>; |
29 | CPVDD-supply = <®_3v3>; | 37 | CPVDD-supply = <®_3v3>; |
30 | }; | 38 | }; |
39 | |||
40 | |||
41 | pcm5142: pcm5142@4c { | ||
42 | compatible = "ti,pcm5142"; | ||
43 | reg = <0x4c>; | ||
44 | |||
45 | AVDD-supply = <®_3v3_analog>; | ||
46 | DVDD-supply = <®_1v8>; | ||
47 | CPVDD-supply = <®_3v3>; | ||
48 | |||
49 | clocks = <&sck>; | ||
50 | pll-in = <3>; | ||
51 | pll-out = <6>; | ||
52 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/samsung-i2s.txt b/Documentation/devicetree/bindings/sound/samsung-i2s.txt index d188296bb6ec..09e0e18591ae 100644 --- a/Documentation/devicetree/bindings/sound/samsung-i2s.txt +++ b/Documentation/devicetree/bindings/sound/samsung-i2s.txt | |||
@@ -33,6 +33,25 @@ Required SoC Specific Properties: | |||
33 | "iis" is the i2s bus clock and i2s_opclk0, i2s_opclk1 are sources of the root | 33 | "iis" is the i2s bus clock and i2s_opclk0, i2s_opclk1 are sources of the root |
34 | clk. i2s0 has internal mux to select the source of root clk and i2s1 and i2s2 | 34 | clk. i2s0 has internal mux to select the source of root clk and i2s1 and i2s2 |
35 | doesn't have any such mux. | 35 | doesn't have any such mux. |
36 | - #clock-cells: should be 1, this property must be present if the I2S device | ||
37 | is a clock provider in terms of the common clock bindings, described in | ||
38 | ../clock/clock-bindings.txt. | ||
39 | - clock-output-names: from the common clock bindings, names of the CDCLK | ||
40 | I2S output clocks, suggested values are "i2s_cdclk0", "i2s_cdclk1", | ||
41 | "i2s_cdclk3" for the I2S0, I2S1, I2S2 devices recpectively. | ||
42 | |||
43 | There are following clocks available at the I2S device nodes: | ||
44 | CLK_I2S_CDCLK - the CDCLK (CODECLKO) gate clock, | ||
45 | CLK_I2S_RCLK_PSR - the RCLK prescaler divider clock (corresponding to the | ||
46 | IISPSR register), | ||
47 | CLK_I2S_RCLK_SRC - the RCLKSRC mux clock (corresponding to RCLKSRC bit in | ||
48 | IISMOD register). | ||
49 | |||
50 | Refer to the SoC datasheet for availability of the above clocks. | ||
51 | The CLK_I2S_RCLK_PSR and CLK_I2S_RCLK_SRC clocks are usually only available | ||
52 | in the IIS Multi Audio Interface (I2S0). | ||
53 | Note: Old DTs may not have the #clock-cells, clock-output-names properties | ||
54 | and then not use the I2S node as a clock supplier. | ||
36 | 55 | ||
37 | Optional SoC Specific Properties: | 56 | Optional SoC Specific Properties: |
38 | 57 | ||
@@ -41,6 +60,7 @@ Optional SoC Specific Properties: | |||
41 | - pinctrl-0: Should specify pin control groups used for this controller. | 60 | - pinctrl-0: Should specify pin control groups used for this controller. |
42 | - pinctrl-names: Should contain only one value - "default". | 61 | - pinctrl-names: Should contain only one value - "default". |
43 | 62 | ||
63 | |||
44 | Example: | 64 | Example: |
45 | 65 | ||
46 | i2s0: i2s@03830000 { | 66 | i2s0: i2s@03830000 { |
@@ -54,6 +74,8 @@ i2s0: i2s@03830000 { | |||
54 | <&clock_audss EXYNOS_I2S_BUS>, | 74 | <&clock_audss EXYNOS_I2S_BUS>, |
55 | <&clock_audss EXYNOS_SCLK_I2S>; | 75 | <&clock_audss EXYNOS_SCLK_I2S>; |
56 | clock-names = "iis", "i2s_opclk0", "i2s_opclk1"; | 76 | clock-names = "iis", "i2s_opclk0", "i2s_opclk1"; |
77 | #clock-cells; | ||
78 | clock-output-names = "i2s_cdclk0"; | ||
57 | samsung,idma-addr = <0x03000000>; | 79 | samsung,idma-addr = <0x03000000>; |
58 | pinctrl-names = "default"; | 80 | pinctrl-names = "default"; |
59 | pinctrl-0 = <&i2s0_bus>; | 81 | pinctrl-0 = <&i2s0_bus>; |
diff --git a/Documentation/devicetree/bindings/sound/simple-card.txt b/Documentation/devicetree/bindings/sound/simple-card.txt index c3cba600bf11..73bf314f7240 100644 --- a/Documentation/devicetree/bindings/sound/simple-card.txt +++ b/Documentation/devicetree/bindings/sound/simple-card.txt | |||
@@ -75,6 +75,11 @@ Optional CPU/CODEC subnodes properties: | |||
75 | it can be specified via "clocks" if system has | 75 | it can be specified via "clocks" if system has |
76 | clock node (= common clock), or "system-clock-frequency" | 76 | clock node (= common clock), or "system-clock-frequency" |
77 | (if system doens't support common clock) | 77 | (if system doens't support common clock) |
78 | If a clock is specified, it is | ||
79 | enabled with clk_prepare_enable() | ||
80 | in dai startup() and disabled with | ||
81 | clk_disable_unprepare() in dai | ||
82 | shutdown(). | ||
78 | 83 | ||
79 | Example 1 - single DAI link: | 84 | Example 1 - single DAI link: |
80 | 85 | ||
diff --git a/Documentation/devicetree/bindings/sound/st,sta32x.txt b/Documentation/devicetree/bindings/sound/st,sta32x.txt new file mode 100644 index 000000000000..255de3ae5b2f --- /dev/null +++ b/Documentation/devicetree/bindings/sound/st,sta32x.txt | |||
@@ -0,0 +1,92 @@ | |||
1 | STA32X audio CODEC | ||
2 | |||
3 | The driver for this device only supports I2C. | ||
4 | |||
5 | Required properties: | ||
6 | |||
7 | - compatible: "st,sta32x" | ||
8 | - reg: the I2C address of the device for I2C | ||
9 | - reset-gpios: a GPIO spec for the reset pin. If specified, it will be | ||
10 | deasserted before communication to the codec starts. | ||
11 | |||
12 | - power-down-gpios: a GPIO spec for the power down pin. If specified, | ||
13 | it will be deasserted before communication to the codec | ||
14 | starts. | ||
15 | |||
16 | - Vdda-supply: regulator spec, providing 3.3V | ||
17 | - Vdd3-supply: regulator spec, providing 3.3V | ||
18 | - Vcc-supply: regulator spec, providing 5V - 26V | ||
19 | |||
20 | Optional properties: | ||
21 | |||
22 | - st,output-conf: number, Selects the output configuration: | ||
23 | 0: 2-channel (full-bridge) power, 2-channel data-out | ||
24 | 1: 2 (half-bridge). 1 (full-bridge) on-board power | ||
25 | 2: 2 Channel (Full-Bridge) Power, 1 Channel FFX | ||
26 | 3: 1 Channel Mono-Parallel | ||
27 | If parameter is missing, mode 0 will be enabled. | ||
28 | This property has to be specified as '/bits/ 8' value. | ||
29 | |||
30 | - st,ch1-output-mapping: Channel 1 output mapping | ||
31 | - st,ch2-output-mapping: Channel 2 output mapping | ||
32 | - st,ch3-output-mapping: Channel 3 output mapping | ||
33 | 0: Channel 1 | ||
34 | 1: Channel 2 | ||
35 | 2: Channel 3 | ||
36 | If parameter is missing, channel 1 is chosen. | ||
37 | This properties have to be specified as '/bits/ 8' values. | ||
38 | |||
39 | - st,thermal-warning-recover: | ||
40 | If present, thermal warning recovery is enabled. | ||
41 | |||
42 | - st,thermal-warning-adjustment: | ||
43 | If present, thermal warning adjustment is enabled. | ||
44 | |||
45 | - st,fault-detect-recovery: | ||
46 | If present, then fault recovery will be enabled. | ||
47 | |||
48 | - st,drop-compensation-ns: number | ||
49 | Only required for "st,ffx-power-output-mode" == | ||
50 | "variable-drop-compensation". | ||
51 | Specifies the drop compensation in nanoseconds. | ||
52 | The value must be in the range of 0..300, and only | ||
53 | multiples of 20 are allowed. Default is 140ns. | ||
54 | |||
55 | - st,max-power-use-mpcc: | ||
56 | If present, then MPCC bits are used for MPC coefficients, | ||
57 | otherwise standard MPC coefficients are used. | ||
58 | |||
59 | - st,max-power-corr: | ||
60 | If present, power bridge correction for THD reduction near maximum | ||
61 | power output is enabled. | ||
62 | |||
63 | - st,am-reduction-mode: | ||
64 | If present, FFX mode runs in AM reduction mode, otherwise normal | ||
65 | FFX mode is used. | ||
66 | |||
67 | - st,odd-pwm-speed-mode: | ||
68 | If present, PWM speed mode run on odd speed mode (341.3 kHz) on all | ||
69 | channels. If not present, normal PWM spped mode (384 kHz) will be used. | ||
70 | |||
71 | - st,invalid-input-detect-mute: | ||
72 | If present, automatic invalid input detect mute is enabled. | ||
73 | |||
74 | Example: | ||
75 | |||
76 | codec: sta32x@38 { | ||
77 | compatible = "st,sta32x"; | ||
78 | reg = <0x1c>; | ||
79 | reset-gpios = <&gpio1 19 0>; | ||
80 | power-down-gpios = <&gpio1 16 0>; | ||
81 | st,output-conf = /bits/ 8 <0x3>; // set output to 2-channel | ||
82 | // (full-bridge) power, | ||
83 | // 2-channel data-out | ||
84 | st,ch1-output-mapping = /bits/ 8 <0>; // set channel 1 output ch 1 | ||
85 | st,ch2-output-mapping = /bits/ 8 <0>; // set channel 2 output ch 1 | ||
86 | st,ch3-output-mapping = /bits/ 8 <0>; // set channel 3 output ch 1 | ||
87 | st,max-power-correction; // enables power bridge | ||
88 | // correction for THD reduction | ||
89 | // near maximum power output | ||
90 | st,invalid-input-detect-mute; // mute if no valid digital | ||
91 | // audio signal is provided. | ||
92 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/tlv320aic3x.txt b/Documentation/devicetree/bindings/sound/tlv320aic3x.txt index 5e6040c2c2e9..47a213c411ce 100644 --- a/Documentation/devicetree/bindings/sound/tlv320aic3x.txt +++ b/Documentation/devicetree/bindings/sound/tlv320aic3x.txt | |||
@@ -9,6 +9,7 @@ Required properties: | |||
9 | "ti,tlv320aic33" - TLV320AIC33 | 9 | "ti,tlv320aic33" - TLV320AIC33 |
10 | "ti,tlv320aic3007" - TLV320AIC3007 | 10 | "ti,tlv320aic3007" - TLV320AIC3007 |
11 | "ti,tlv320aic3106" - TLV320AIC3106 | 11 | "ti,tlv320aic3106" - TLV320AIC3106 |
12 | "ti,tlv320aic3104" - TLV320AIC3104 | ||
12 | 13 | ||
13 | 14 | ||
14 | - reg - <int> - I2C slave address | 15 | - reg - <int> - I2C slave address |
@@ -18,6 +19,7 @@ Optional properties: | |||
18 | 19 | ||
19 | - gpio-reset - gpio pin number used for codec reset | 20 | - gpio-reset - gpio pin number used for codec reset |
20 | - ai3x-gpio-func - <array of 2 int> - AIC3X_GPIO1 & AIC3X_GPIO2 Functionality | 21 | - ai3x-gpio-func - <array of 2 int> - AIC3X_GPIO1 & AIC3X_GPIO2 Functionality |
22 | - Not supported on tlv320aic3104 | ||
21 | - ai3x-micbias-vg - MicBias Voltage required. | 23 | - ai3x-micbias-vg - MicBias Voltage required. |
22 | 1 - MICBIAS output is powered to 2.0V, | 24 | 1 - MICBIAS output is powered to 2.0V, |
23 | 2 - MICBIAS output is powered to 2.5V, | 25 | 2 - MICBIAS output is powered to 2.5V, |
@@ -36,7 +38,13 @@ CODEC output pins: | |||
36 | * HPLCOM | 38 | * HPLCOM |
37 | * HPRCOM | 39 | * HPRCOM |
38 | 40 | ||
39 | CODEC input pins: | 41 | CODEC input pins for TLV320AIC3104: |
42 | * MIC2L | ||
43 | * MIC2R | ||
44 | * LINE1L | ||
45 | * LINE1R | ||
46 | |||
47 | CODEC input pins for other compatible codecs: | ||
40 | * MIC3L | 48 | * MIC3L |
41 | * MIC3R | 49 | * MIC3R |
42 | * LINE1L | 50 | * LINE1L |
diff --git a/Documentation/devicetree/bindings/sound/ts3a227e.txt b/Documentation/devicetree/bindings/sound/ts3a227e.txt index e8bf23eb1803..a836881d9608 100644 --- a/Documentation/devicetree/bindings/sound/ts3a227e.txt +++ b/Documentation/devicetree/bindings/sound/ts3a227e.txt | |||
@@ -13,6 +13,11 @@ Required properties: | |||
13 | - interrupt-parent: The parent interrupt controller | 13 | - interrupt-parent: The parent interrupt controller |
14 | - interrupts: Interrupt number for /INT pin from the 227e | 14 | - interrupts: Interrupt number for /INT pin from the 227e |
15 | 15 | ||
16 | Optional properies: | ||
17 | - ti,micbias: Intended MICBIAS voltage (datasheet section 9.6.7). | ||
18 | Select 0/1/2/3/4/5/6/7 to specify MACBIAS voltage | ||
19 | 2.1V/2.2V/2.3V/2.4V/2.5V/2.6V/2.7V/2.8V | ||
20 | Default value is "1" (2.2V). | ||
16 | 21 | ||
17 | Examples: | 22 | Examples: |
18 | 23 | ||
diff --git a/Documentation/devicetree/bindings/sound/wm8904.txt b/Documentation/devicetree/bindings/sound/wm8904.txt index e99f4097c83c..66bf261423b9 100644 --- a/Documentation/devicetree/bindings/sound/wm8904.txt +++ b/Documentation/devicetree/bindings/sound/wm8904.txt | |||
@@ -3,7 +3,7 @@ WM8904 audio CODEC | |||
3 | This device supports I2C only. | 3 | This device supports I2C only. |
4 | 4 | ||
5 | Required properties: | 5 | Required properties: |
6 | - compatible: "wlf,wm8904" | 6 | - compatible: "wlf,wm8904" or "wlf,wm8912" |
7 | - reg: the I2C address of the device. | 7 | - reg: the I2C address of the device. |
8 | - clock-names: "mclk" | 8 | - clock-names: "mclk" |
9 | - clocks: reference to | 9 | - clocks: reference to |
diff --git a/Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.txt b/Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.txt index 7ea701e07dc2..b785976fe98a 100644 --- a/Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.txt +++ b/Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.txt | |||
@@ -1,7 +1,9 @@ | |||
1 | NVIDIA Tegra114 SPI controller. | 1 | NVIDIA Tegra114 SPI controller. |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : should be "nvidia,tegra114-spi". | 4 | - compatible : For Tegra114, must contain "nvidia,tegra114-spi". |
5 | Otherwise, must contain '"nvidia,<chip>-spi", "nvidia,tegra114-spi"' where | ||
6 | <chip> is tegra124, tegra132, or tegra210. | ||
5 | - reg: Should contain SPI registers location and length. | 7 | - reg: Should contain SPI registers location and length. |
6 | - interrupts: Should contain SPI interrupts. | 8 | - interrupts: Should contain SPI interrupts. |
7 | - clock-names : Must include the following entries: | 9 | - clock-names : Must include the following entries: |
diff --git a/Documentation/devicetree/bindings/spi/sh-msiof.txt b/Documentation/devicetree/bindings/spi/sh-msiof.txt index d11c3721e7cd..4c388bb2f0a2 100644 --- a/Documentation/devicetree/bindings/spi/sh-msiof.txt +++ b/Documentation/devicetree/bindings/spi/sh-msiof.txt | |||
@@ -30,6 +30,22 @@ Optional properties: | |||
30 | specifiers, one for transmission, and one for | 30 | specifiers, one for transmission, and one for |
31 | reception. | 31 | reception. |
32 | - dma-names : Must contain a list of two DMA names, "tx" and "rx". | 32 | - dma-names : Must contain a list of two DMA names, "tx" and "rx". |
33 | - renesas,dtdl : delay sync signal (setup) in transmit mode. | ||
34 | Must contain one of the following values: | ||
35 | 0 (no bit delay) | ||
36 | 50 (0.5-clock-cycle delay) | ||
37 | 100 (1-clock-cycle delay) | ||
38 | 150 (1.5-clock-cycle delay) | ||
39 | 200 (2-clock-cycle delay) | ||
40 | |||
41 | - renesas,syncdl : delay sync signal (hold) in transmit mode. | ||
42 | Must contain one of the following values: | ||
43 | 0 (no bit delay) | ||
44 | 50 (0.5-clock-cycle delay) | ||
45 | 100 (1-clock-cycle delay) | ||
46 | 150 (1.5-clock-cycle delay) | ||
47 | 200 (2-clock-cycle delay) | ||
48 | 300 (3-clock-cycle delay) | ||
33 | 49 | ||
34 | Optional properties, deprecated for soctype-specific bindings: | 50 | Optional properties, deprecated for soctype-specific bindings: |
35 | - renesas,tx-fifo-size : Overrides the default tx fifo size given in words | 51 | - renesas,tx-fifo-size : Overrides the default tx fifo size given in words |
diff --git a/Documentation/devicetree/bindings/spi/spi-sirf.txt b/Documentation/devicetree/bindings/spi/spi-sirf.txt new file mode 100644 index 000000000000..4c7adb8f777c --- /dev/null +++ b/Documentation/devicetree/bindings/spi/spi-sirf.txt | |||
@@ -0,0 +1,41 @@ | |||
1 | * CSR SiRFprimaII Serial Peripheral Interface | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : Should be "sirf,prima2-spi" | ||
5 | - reg : Offset and length of the register set for the device | ||
6 | - interrupts : Should contain SPI interrupt | ||
7 | - resets: phandle to the reset controller asserting this device in | ||
8 | reset | ||
9 | See ../reset/reset.txt for details. | ||
10 | - dmas : Must contain an entry for each entry in clock-names. | ||
11 | See ../dma/dma.txt for details. | ||
12 | - dma-names : Must include the following entries: | ||
13 | - rx | ||
14 | - tx | ||
15 | - clocks : Must contain an entry for each entry in clock-names. | ||
16 | See ../clocks/clock-bindings.txt for details. | ||
17 | |||
18 | - #address-cells: Number of cells required to define a chip select | ||
19 | address on the SPI bus. Should be set to 1. | ||
20 | - #size-cells: Should be zero. | ||
21 | |||
22 | Optional properties: | ||
23 | - spi-max-frequency: Specifies maximum SPI clock frequency, | ||
24 | Units - Hz. Definition as per | ||
25 | Documentation/devicetree/bindings/spi/spi-bus.txt | ||
26 | - cs-gpios: should specify GPIOs used for chipselects. | ||
27 | |||
28 | Example: | ||
29 | |||
30 | spi0: spi@b00d0000 { | ||
31 | compatible = "sirf,prima2-spi"; | ||
32 | reg = <0xb00d0000 0x10000>; | ||
33 | interrupts = <15>; | ||
34 | dmas = <&dmac1 9>, | ||
35 | <&dmac1 4>; | ||
36 | dma-names = "rx", "tx"; | ||
37 | #address-cells = <1>; | ||
38 | #size-cells = <0>; | ||
39 | clocks = <&clks 19>; | ||
40 | resets = <&rstc 26>; | ||
41 | }; | ||
diff --git a/Documentation/devicetree/bindings/spi/spi-st-ssc.txt b/Documentation/devicetree/bindings/spi/spi-st-ssc.txt new file mode 100644 index 000000000000..fe54959ec957 --- /dev/null +++ b/Documentation/devicetree/bindings/spi/spi-st-ssc.txt | |||
@@ -0,0 +1,40 @@ | |||
1 | STMicroelectronics SSC (SPI) Controller | ||
2 | --------------------------------------- | ||
3 | |||
4 | Required properties: | ||
5 | - compatible : "st,comms-ssc4-spi" | ||
6 | - reg : Offset and length of the device's register set | ||
7 | - interrupts : The interrupt specifier | ||
8 | - clock-names : Must contain "ssc" | ||
9 | - clocks : Must contain an entry for each name in clock-names | ||
10 | See ../clk/* | ||
11 | - pinctrl-names : Uses "default", can use "sleep" if provided | ||
12 | See ../pinctrl/pinctrl-binding.txt | ||
13 | |||
14 | Optional properties: | ||
15 | - cs-gpios : List of GPIO chip selects | ||
16 | See ../spi/spi-bus.txt | ||
17 | |||
18 | Child nodes represent devices on the SPI bus | ||
19 | See ../spi/spi-bus.txt | ||
20 | |||
21 | Example: | ||
22 | spi@9840000 { | ||
23 | compatible = "st,comms-ssc4-spi"; | ||
24 | reg = <0x9840000 0x110>; | ||
25 | interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>; | ||
26 | clocks = <&clk_s_c0_flexgen CLK_EXT2F_A9>; | ||
27 | clock-names = "ssc"; | ||
28 | pinctrl-0 = <&pinctrl_spi0_default>; | ||
29 | pinctrl-names = "default"; | ||
30 | cs-gpios = <&pio17 5 0>; | ||
31 | #address-cells = <1>; | ||
32 | #size-cells = <0>; | ||
33 | |||
34 | st95hf@0{ | ||
35 | compatible = "st,st95hf"; | ||
36 | reg = <0>; | ||
37 | spi-max-frequency = <1000000>; | ||
38 | interrupts = <2 IRQ_TYPE_EDGE_FALLING>; | ||
39 | }; | ||
40 | }; | ||
diff --git a/Documentation/devicetree/bindings/staging/iio/adc/mxs-lradc.txt b/Documentation/devicetree/bindings/staging/iio/adc/mxs-lradc.txt index ee05dc390694..307537787574 100644 --- a/Documentation/devicetree/bindings/staging/iio/adc/mxs-lradc.txt +++ b/Documentation/devicetree/bindings/staging/iio/adc/mxs-lradc.txt | |||
@@ -12,9 +12,9 @@ Optional properties: | |||
12 | property is not present, then the touchscreen is | 12 | property is not present, then the touchscreen is |
13 | disabled. 5 wires is valid for i.MX28 SoC only. | 13 | disabled. 5 wires is valid for i.MX28 SoC only. |
14 | - fsl,ave-ctrl: number of samples per direction to calculate an average value. | 14 | - fsl,ave-ctrl: number of samples per direction to calculate an average value. |
15 | Allowed value is 1 ... 31, default is 4 | 15 | Allowed value is 1 ... 32, default is 4 |
16 | - fsl,ave-delay: delay between consecutive samples. Allowed value is | 16 | - fsl,ave-delay: delay between consecutive samples. Allowed value is |
17 | 1 ... 2047. It is used if 'fsl,ave-ctrl' > 1, counts at | 17 | 2 ... 2048. It is used if 'fsl,ave-ctrl' > 1, counts at |
18 | 2 kHz and its default is 2 (= 1 ms) | 18 | 2 kHz and its default is 2 (= 1 ms) |
19 | - fsl,settling: delay between plate switch to next sample. Allowed value is | 19 | - fsl,settling: delay between plate switch to next sample. Allowed value is |
20 | 1 ... 2047. It counts at 2 kHz and its default is | 20 | 1 ... 2047. It counts at 2 kHz and its default is |
diff --git a/Documentation/devicetree/bindings/submitting-patches.txt b/Documentation/devicetree/bindings/submitting-patches.txt index b7ba01ad1426..56742bc70218 100644 --- a/Documentation/devicetree/bindings/submitting-patches.txt +++ b/Documentation/devicetree/bindings/submitting-patches.txt | |||
@@ -15,6 +15,29 @@ I. For patch submitters | |||
15 | 3) The Documentation/ portion of the patch should come in the series before | 15 | 3) The Documentation/ portion of the patch should come in the series before |
16 | the code implementing the binding. | 16 | the code implementing the binding. |
17 | 17 | ||
18 | 4) Any compatible strings used in a chip or board DTS file must be | ||
19 | previously documented in the corresponding DT binding text file | ||
20 | in Documentation/devicetree/bindings. This rule applies even if | ||
21 | the Linux device driver does not yet match on the compatible | ||
22 | string. [ checkpatch will emit warnings if this step is not | ||
23 | followed as of commit bff5da4335256513497cc8c79f9a9d1665e09864 | ||
24 | ("checkpatch: add DT compatible string documentation checks"). ] | ||
25 | |||
26 | 5) The wildcard "<chip>" may be used in compatible strings, as in | ||
27 | the following example: | ||
28 | |||
29 | - compatible: Must contain '"nvidia,<chip>-pcie", | ||
30 | "nvidia,tegra20-pcie"' where <chip> is tegra30, tegra132, ... | ||
31 | |||
32 | As in the above example, the known values of "<chip>" should be | ||
33 | documented if it is used. | ||
34 | |||
35 | 6) If a documented compatible string is not yet matched by the | ||
36 | driver, the documentation should also include a compatible | ||
37 | string that is matched by the driver (as in the "nvidia,tegra20-pcie" | ||
38 | example above). | ||
39 | |||
40 | |||
18 | II. For kernel maintainers | 41 | II. For kernel maintainers |
19 | 42 | ||
20 | 1) If you aren't comfortable reviewing a given binding, reply to it and ask | 43 | 1) If you aren't comfortable reviewing a given binding, reply to it and ask |
diff --git a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt index ae738f562acc..695150a4136b 100644 --- a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt +++ b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt | |||
@@ -12,6 +12,7 @@ | |||
12 | "samsung,exynos5420-tmu-ext-triminfo" for TMU channels 2, 3 and 4 | 12 | "samsung,exynos5420-tmu-ext-triminfo" for TMU channels 2, 3 and 4 |
13 | Exynos5420 (Must pass triminfo base and triminfo clock) | 13 | Exynos5420 (Must pass triminfo base and triminfo clock) |
14 | "samsung,exynos5440-tmu" | 14 | "samsung,exynos5440-tmu" |
15 | "samsung,exynos7-tmu" | ||
15 | - interrupt-parent : The phandle for the interrupt controller | 16 | - interrupt-parent : The phandle for the interrupt controller |
16 | - reg : Address range of the thermal registers. For soc's which has multiple | 17 | - reg : Address range of the thermal registers. For soc's which has multiple |
17 | instances of TMU and some registers are shared across all TMU's like | 18 | instances of TMU and some registers are shared across all TMU's like |
@@ -32,13 +33,28 @@ | |||
32 | - clocks : The main clocks for TMU device | 33 | - clocks : The main clocks for TMU device |
33 | -- 1. operational clock for TMU channel | 34 | -- 1. operational clock for TMU channel |
34 | -- 2. optional clock to access the shared registers of TMU channel | 35 | -- 2. optional clock to access the shared registers of TMU channel |
36 | -- 3. optional special clock for functional operation | ||
35 | - clock-names : Thermal system clock name | 37 | - clock-names : Thermal system clock name |
36 | -- "tmu_apbif" operational clock for current TMU channel | 38 | -- "tmu_apbif" operational clock for current TMU channel |
37 | -- "tmu_triminfo_apbif" clock to access the shared triminfo register | 39 | -- "tmu_triminfo_apbif" clock to access the shared triminfo register |
38 | for current TMU channel | 40 | for current TMU channel |
41 | -- "tmu_sclk" clock for functional operation of the current TMU | ||
42 | channel | ||
39 | - vtmu-supply: This entry is optional and provides the regulator node supplying | 43 | - vtmu-supply: This entry is optional and provides the regulator node supplying |
40 | voltage to TMU. If needed this entry can be placed inside | 44 | voltage to TMU. If needed this entry can be placed inside |
41 | board/platform specific dts file. | 45 | board/platform specific dts file. |
46 | Following properties are mandatory (depending on SoC): | ||
47 | - samsung,tmu_gain: Gain value for internal TMU operation. | ||
48 | - samsung,tmu_reference_voltage: Value of TMU IP block's reference voltage | ||
49 | - samsung,tmu_noise_cancel_mode: Mode for noise cancellation | ||
50 | - samsung,tmu_efuse_value: Default level of temperature - it is needed when | ||
51 | in factory fusing produced wrong value | ||
52 | - samsung,tmu_min_efuse_value: Minimum temperature fused value | ||
53 | - samsung,tmu_max_efuse_value: Maximum temperature fused value | ||
54 | - samsung,tmu_first_point_trim: First point trimming value | ||
55 | - samsung,tmu_second_point_trim: Second point trimming value | ||
56 | - samsung,tmu_default_temp_offset: Default temperature offset | ||
57 | - samsung,tmu_cal_type: Callibration type | ||
42 | 58 | ||
43 | Example 1): | 59 | Example 1): |
44 | 60 | ||
@@ -51,6 +67,7 @@ Example 1): | |||
51 | clock-names = "tmu_apbif"; | 67 | clock-names = "tmu_apbif"; |
52 | status = "disabled"; | 68 | status = "disabled"; |
53 | vtmu-supply = <&tmu_regulator_node>; | 69 | vtmu-supply = <&tmu_regulator_node>; |
70 | #include "exynos4412-tmu-sensor-conf.dtsi" | ||
54 | }; | 71 | }; |
55 | 72 | ||
56 | Example 2): | 73 | Example 2): |
@@ -61,6 +78,7 @@ Example 2): | |||
61 | interrupts = <0 58 0>; | 78 | interrupts = <0 58 0>; |
62 | clocks = <&clock 21>; | 79 | clocks = <&clock 21>; |
63 | clock-names = "tmu_apbif"; | 80 | clock-names = "tmu_apbif"; |
81 | #include "exynos5440-tmu-sensor-conf.dtsi" | ||
64 | }; | 82 | }; |
65 | 83 | ||
66 | Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register") | 84 | Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register") |
@@ -70,6 +88,7 @@ Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register") | |||
70 | interrupts = <0 184 0>; | 88 | interrupts = <0 184 0>; |
71 | clocks = <&clock 318>, <&clock 318>; | 89 | clocks = <&clock 318>, <&clock 318>; |
72 | clock-names = "tmu_apbif", "tmu_triminfo_apbif"; | 90 | clock-names = "tmu_apbif", "tmu_triminfo_apbif"; |
91 | #include "exynos4412-tmu-sensor-conf.dtsi" | ||
73 | }; | 92 | }; |
74 | 93 | ||
75 | tmu_cpu3: tmu@1006c000 { | 94 | tmu_cpu3: tmu@1006c000 { |
@@ -78,6 +97,7 @@ Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register") | |||
78 | interrupts = <0 185 0>; | 97 | interrupts = <0 185 0>; |
79 | clocks = <&clock 318>, <&clock 319>; | 98 | clocks = <&clock 318>, <&clock 319>; |
80 | clock-names = "tmu_apbif", "tmu_triminfo_apbif"; | 99 | clock-names = "tmu_apbif", "tmu_triminfo_apbif"; |
100 | #include "exynos4412-tmu-sensor-conf.dtsi" | ||
81 | }; | 101 | }; |
82 | 102 | ||
83 | tmu_gpu: tmu@100a0000 { | 103 | tmu_gpu: tmu@100a0000 { |
@@ -86,6 +106,7 @@ Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register") | |||
86 | interrupts = <0 215 0>; | 106 | interrupts = <0 215 0>; |
87 | clocks = <&clock 319>, <&clock 318>; | 107 | clocks = <&clock 319>, <&clock 318>; |
88 | clock-names = "tmu_apbif", "tmu_triminfo_apbif"; | 108 | clock-names = "tmu_apbif", "tmu_triminfo_apbif"; |
109 | #include "exynos4412-tmu-sensor-conf.dtsi" | ||
89 | }; | 110 | }; |
90 | 111 | ||
91 | Note: For multi-instance tmu each instance should have an alias correctly | 112 | Note: For multi-instance tmu each instance should have an alias correctly |
diff --git a/Documentation/devicetree/bindings/thermal/tegra-soctherm.txt b/Documentation/devicetree/bindings/thermal/tegra-soctherm.txt index ecf3ed76cd46..6b68cd150405 100644 --- a/Documentation/devicetree/bindings/thermal/tegra-soctherm.txt +++ b/Documentation/devicetree/bindings/thermal/tegra-soctherm.txt | |||
@@ -7,7 +7,9 @@ notifications. It is also used to manage emergency shutdown in an | |||
7 | overheating situation. | 7 | overheating situation. |
8 | 8 | ||
9 | Required properties : | 9 | Required properties : |
10 | - compatible : "nvidia,tegra124-soctherm". | 10 | - compatible : For Tegra124, must contain "nvidia,tegra124-soctherm". |
11 | For Tegra132, must contain "nvidia,tegra132-soctherm". | ||
12 | For Tegra210, must contain "nvidia,tegra210-soctherm". | ||
11 | - reg : Should contain 1 entry: | 13 | - reg : Should contain 1 entry: |
12 | - SOCTHERM register set | 14 | - SOCTHERM register set |
13 | - interrupts : Defines the interrupt used by SOCTHERM | 15 | - interrupts : Defines the interrupt used by SOCTHERM |
diff --git a/Documentation/devicetree/bindings/thermal/thermal.txt b/Documentation/devicetree/bindings/thermal/thermal.txt index f5db6b72a36f..29fe0bfae38e 100644 --- a/Documentation/devicetree/bindings/thermal/thermal.txt +++ b/Documentation/devicetree/bindings/thermal/thermal.txt | |||
@@ -251,24 +251,24 @@ ocp { | |||
251 | }; | 251 | }; |
252 | 252 | ||
253 | thermal-zones { | 253 | thermal-zones { |
254 | cpu-thermal: cpu-thermal { | 254 | cpu_thermal: cpu-thermal { |
255 | polling-delay-passive = <250>; /* milliseconds */ | 255 | polling-delay-passive = <250>; /* milliseconds */ |
256 | polling-delay = <1000>; /* milliseconds */ | 256 | polling-delay = <1000>; /* milliseconds */ |
257 | 257 | ||
258 | thermal-sensors = <&bandgap0>; | 258 | thermal-sensors = <&bandgap0>; |
259 | 259 | ||
260 | trips { | 260 | trips { |
261 | cpu-alert0: cpu-alert { | 261 | cpu_alert0: cpu-alert0 { |
262 | temperature = <90000>; /* millicelsius */ | 262 | temperature = <90000>; /* millicelsius */ |
263 | hysteresis = <2000>; /* millicelsius */ | 263 | hysteresis = <2000>; /* millicelsius */ |
264 | type = "active"; | 264 | type = "active"; |
265 | }; | 265 | }; |
266 | cpu-alert1: cpu-alert { | 266 | cpu_alert1: cpu-alert1 { |
267 | temperature = <100000>; /* millicelsius */ | 267 | temperature = <100000>; /* millicelsius */ |
268 | hysteresis = <2000>; /* millicelsius */ | 268 | hysteresis = <2000>; /* millicelsius */ |
269 | type = "passive"; | 269 | type = "passive"; |
270 | }; | 270 | }; |
271 | cpu-crit: cpu-crit { | 271 | cpu_crit: cpu-crit { |
272 | temperature = <125000>; /* millicelsius */ | 272 | temperature = <125000>; /* millicelsius */ |
273 | hysteresis = <2000>; /* millicelsius */ | 273 | hysteresis = <2000>; /* millicelsius */ |
274 | type = "critical"; | 274 | type = "critical"; |
@@ -277,17 +277,17 @@ thermal-zones { | |||
277 | 277 | ||
278 | cooling-maps { | 278 | cooling-maps { |
279 | map0 { | 279 | map0 { |
280 | trip = <&cpu-alert0>; | 280 | trip = <&cpu_alert0>; |
281 | cooling-device = <&fan0 THERMAL_NO_LIMITS 4>; | 281 | cooling-device = <&fan0 THERMAL_NO_LIMIT 4>; |
282 | }; | 282 | }; |
283 | map1 { | 283 | map1 { |
284 | trip = <&cpu-alert1>; | 284 | trip = <&cpu_alert1>; |
285 | cooling-device = <&fan0 5 THERMAL_NO_LIMITS>; | 285 | cooling-device = <&fan0 5 THERMAL_NO_LIMIT>; |
286 | }; | 286 | }; |
287 | map2 { | 287 | map2 { |
288 | trip = <&cpu-alert1>; | 288 | trip = <&cpu_alert1>; |
289 | cooling-device = | 289 | cooling-device = |
290 | <&cpu0 THERMAL_NO_LIMITS THERMAL_NO_LIMITS>; | 290 | <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; |
291 | }; | 291 | }; |
292 | }; | 292 | }; |
293 | }; | 293 | }; |
@@ -298,13 +298,13 @@ 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 | 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 | 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 | 300 | the thermal zone 'cpu-thermal' using its cooling states |
301 | from its minimum to 4, when it reaches trip point 'cpu-alert0' | 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 | 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 | 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, | 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', | 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 | 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 | 307 | temperature of 125C, represented by the trip point 'cpu_crit', the silicon |
308 | is not reliable anymore. | 308 | is not reliable anymore. |
309 | 309 | ||
310 | (b) - IC with several internal sensors | 310 | (b) - IC with several internal sensors |
@@ -329,7 +329,7 @@ ocp { | |||
329 | }; | 329 | }; |
330 | 330 | ||
331 | thermal-zones { | 331 | thermal-zones { |
332 | cpu-thermal: cpu-thermal { | 332 | cpu_thermal: cpu-thermal { |
333 | polling-delay-passive = <250>; /* milliseconds */ | 333 | polling-delay-passive = <250>; /* milliseconds */ |
334 | polling-delay = <1000>; /* milliseconds */ | 334 | polling-delay = <1000>; /* milliseconds */ |
335 | 335 | ||
@@ -338,12 +338,12 @@ thermal-zones { | |||
338 | 338 | ||
339 | trips { | 339 | trips { |
340 | /* each zone within the SoC may have its own trips */ | 340 | /* each zone within the SoC may have its own trips */ |
341 | cpu-alert: cpu-alert { | 341 | cpu_alert: cpu-alert { |
342 | temperature = <100000>; /* millicelsius */ | 342 | temperature = <100000>; /* millicelsius */ |
343 | hysteresis = <2000>; /* millicelsius */ | 343 | hysteresis = <2000>; /* millicelsius */ |
344 | type = "passive"; | 344 | type = "passive"; |
345 | }; | 345 | }; |
346 | cpu-crit: cpu-crit { | 346 | cpu_crit: cpu-crit { |
347 | temperature = <125000>; /* millicelsius */ | 347 | temperature = <125000>; /* millicelsius */ |
348 | hysteresis = <2000>; /* millicelsius */ | 348 | hysteresis = <2000>; /* millicelsius */ |
349 | type = "critical"; | 349 | type = "critical"; |
@@ -356,7 +356,7 @@ thermal-zones { | |||
356 | }; | 356 | }; |
357 | }; | 357 | }; |
358 | 358 | ||
359 | gpu-thermal: gpu-thermal { | 359 | gpu_thermal: gpu-thermal { |
360 | polling-delay-passive = <120>; /* milliseconds */ | 360 | polling-delay-passive = <120>; /* milliseconds */ |
361 | polling-delay = <1000>; /* milliseconds */ | 361 | polling-delay = <1000>; /* milliseconds */ |
362 | 362 | ||
@@ -365,12 +365,12 @@ thermal-zones { | |||
365 | 365 | ||
366 | trips { | 366 | trips { |
367 | /* each zone within the SoC may have its own trips */ | 367 | /* each zone within the SoC may have its own trips */ |
368 | gpu-alert: gpu-alert { | 368 | gpu_alert: gpu-alert { |
369 | temperature = <90000>; /* millicelsius */ | 369 | temperature = <90000>; /* millicelsius */ |
370 | hysteresis = <2000>; /* millicelsius */ | 370 | hysteresis = <2000>; /* millicelsius */ |
371 | type = "passive"; | 371 | type = "passive"; |
372 | }; | 372 | }; |
373 | gpu-crit: gpu-crit { | 373 | gpu_crit: gpu-crit { |
374 | temperature = <105000>; /* millicelsius */ | 374 | temperature = <105000>; /* millicelsius */ |
375 | hysteresis = <2000>; /* millicelsius */ | 375 | hysteresis = <2000>; /* millicelsius */ |
376 | type = "critical"; | 376 | type = "critical"; |
@@ -383,7 +383,7 @@ thermal-zones { | |||
383 | }; | 383 | }; |
384 | }; | 384 | }; |
385 | 385 | ||
386 | dsp-thermal: dsp-thermal { | 386 | dsp_thermal: dsp-thermal { |
387 | polling-delay-passive = <50>; /* milliseconds */ | 387 | polling-delay-passive = <50>; /* milliseconds */ |
388 | polling-delay = <1000>; /* milliseconds */ | 388 | polling-delay = <1000>; /* milliseconds */ |
389 | 389 | ||
@@ -392,12 +392,12 @@ thermal-zones { | |||
392 | 392 | ||
393 | trips { | 393 | trips { |
394 | /* each zone within the SoC may have its own trips */ | 394 | /* each zone within the SoC may have its own trips */ |
395 | dsp-alert: gpu-alert { | 395 | dsp_alert: dsp-alert { |
396 | temperature = <90000>; /* millicelsius */ | 396 | temperature = <90000>; /* millicelsius */ |
397 | hysteresis = <2000>; /* millicelsius */ | 397 | hysteresis = <2000>; /* millicelsius */ |
398 | type = "passive"; | 398 | type = "passive"; |
399 | }; | 399 | }; |
400 | dsp-crit: gpu-crit { | 400 | dsp_crit: gpu-crit { |
401 | temperature = <135000>; /* millicelsius */ | 401 | temperature = <135000>; /* millicelsius */ |
402 | hysteresis = <2000>; /* millicelsius */ | 402 | hysteresis = <2000>; /* millicelsius */ |
403 | type = "critical"; | 403 | type = "critical"; |
@@ -457,7 +457,7 @@ ocp { | |||
457 | }; | 457 | }; |
458 | 458 | ||
459 | thermal-zones { | 459 | thermal-zones { |
460 | cpu-thermal: cpu-thermal { | 460 | cpu_thermal: cpu-thermal { |
461 | polling-delay-passive = <250>; /* milliseconds */ | 461 | polling-delay-passive = <250>; /* milliseconds */ |
462 | polling-delay = <1000>; /* milliseconds */ | 462 | polling-delay = <1000>; /* milliseconds */ |
463 | 463 | ||
@@ -508,7 +508,7 @@ with many sensors and many cooling devices. | |||
508 | /* | 508 | /* |
509 | * An IC with several temperature sensor. | 509 | * An IC with several temperature sensor. |
510 | */ | 510 | */ |
511 | adc-dummy: sensor@0x50 { | 511 | adc_dummy: sensor@0x50 { |
512 | ... | 512 | ... |
513 | #thermal-sensor-cells = <1>; /* sensor internal ID */ | 513 | #thermal-sensor-cells = <1>; /* sensor internal ID */ |
514 | }; | 514 | }; |
@@ -520,7 +520,7 @@ thermal-zones { | |||
520 | polling-delay = <2500>; /* milliseconds */ | 520 | polling-delay = <2500>; /* milliseconds */ |
521 | 521 | ||
522 | /* sensor ID */ | 522 | /* sensor ID */ |
523 | thermal-sensors = <&adc-dummy 4>; | 523 | thermal-sensors = <&adc_dummy 4>; |
524 | 524 | ||
525 | trips { | 525 | trips { |
526 | ... | 526 | ... |
@@ -531,14 +531,14 @@ thermal-zones { | |||
531 | }; | 531 | }; |
532 | }; | 532 | }; |
533 | 533 | ||
534 | board-thermal: board-thermal { | 534 | board_thermal: board-thermal { |
535 | polling-delay-passive = <1000>; /* milliseconds */ | 535 | polling-delay-passive = <1000>; /* milliseconds */ |
536 | polling-delay = <2500>; /* milliseconds */ | 536 | polling-delay = <2500>; /* milliseconds */ |
537 | 537 | ||
538 | /* sensor ID */ | 538 | /* sensor ID */ |
539 | thermal-sensors = <&adc-dummy 0>, /* pcb top edge */ | 539 | thermal-sensors = <&adc_dummy 0>, /* pcb top edge */ |
540 | <&adc-dummy 1>, /* lcd */ | 540 | <&adc_dummy 1>, /* lcd */ |
541 | <&adc-dymmy 2>; /* back cover */ | 541 | <&adc_dummy 2>; /* back cover */ |
542 | /* | 542 | /* |
543 | * An array of coefficients describing the sensor | 543 | * An array of coefficients describing the sensor |
544 | * linear relation. E.g.: | 544 | * linear relation. E.g.: |
@@ -548,22 +548,22 @@ thermal-zones { | |||
548 | 548 | ||
549 | trips { | 549 | trips { |
550 | /* Trips are based on resulting linear equation */ | 550 | /* Trips are based on resulting linear equation */ |
551 | cpu-trip: cpu-trip { | 551 | cpu_trip: cpu-trip { |
552 | temperature = <60000>; /* millicelsius */ | 552 | temperature = <60000>; /* millicelsius */ |
553 | hysteresis = <2000>; /* millicelsius */ | 553 | hysteresis = <2000>; /* millicelsius */ |
554 | type = "passive"; | 554 | type = "passive"; |
555 | }; | 555 | }; |
556 | gpu-trip: gpu-trip { | 556 | gpu_trip: gpu-trip { |
557 | temperature = <55000>; /* millicelsius */ | 557 | temperature = <55000>; /* millicelsius */ |
558 | hysteresis = <2000>; /* millicelsius */ | 558 | hysteresis = <2000>; /* millicelsius */ |
559 | type = "passive"; | 559 | type = "passive"; |
560 | } | 560 | } |
561 | lcd-trip: lcp-trip { | 561 | lcd_trip: lcp-trip { |
562 | temperature = <53000>; /* millicelsius */ | 562 | temperature = <53000>; /* millicelsius */ |
563 | hysteresis = <2000>; /* millicelsius */ | 563 | hysteresis = <2000>; /* millicelsius */ |
564 | type = "passive"; | 564 | type = "passive"; |
565 | }; | 565 | }; |
566 | crit-trip: crit-trip { | 566 | crit_trip: crit-trip { |
567 | temperature = <68000>; /* millicelsius */ | 567 | temperature = <68000>; /* millicelsius */ |
568 | hysteresis = <2000>; /* millicelsius */ | 568 | hysteresis = <2000>; /* millicelsius */ |
569 | type = "critical"; | 569 | type = "critical"; |
@@ -572,17 +572,17 @@ thermal-zones { | |||
572 | 572 | ||
573 | cooling-maps { | 573 | cooling-maps { |
574 | map0 { | 574 | map0 { |
575 | trip = <&cpu-trip>; | 575 | trip = <&cpu_trip>; |
576 | cooling-device = <&cpu0 0 2>; | 576 | cooling-device = <&cpu0 0 2>; |
577 | contribution = <55>; | 577 | contribution = <55>; |
578 | }; | 578 | }; |
579 | map1 { | 579 | map1 { |
580 | trip = <&gpu-trip>; | 580 | trip = <&gpu_trip>; |
581 | cooling-device = <&gpu0 0 2>; | 581 | cooling-device = <&gpu0 0 2>; |
582 | contribution = <20>; | 582 | contribution = <20>; |
583 | }; | 583 | }; |
584 | map2 { | 584 | map2 { |
585 | trip = <&lcd-trip>; | 585 | trip = <&lcd_trip>; |
586 | cooling-device = <&lcd0 5 10>; | 586 | cooling-device = <&lcd0 5 10>; |
587 | contribution = <15>; | 587 | contribution = <15>; |
588 | }; | 588 | }; |
diff --git a/Documentation/devicetree/bindings/timer/digicolor-timer.txt b/Documentation/devicetree/bindings/timer/digicolor-timer.txt new file mode 100644 index 000000000000..d1b659bbc29f --- /dev/null +++ b/Documentation/devicetree/bindings/timer/digicolor-timer.txt | |||
@@ -0,0 +1,18 @@ | |||
1 | Conexant Digicolor SoCs Timer Controller | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible : should be "cnxt,cx92755-timer" | ||
6 | - reg : Specifies base physical address and size of the "Agent Communication" | ||
7 | timer registers | ||
8 | - interrupts : Contains 8 interrupts, one for each timer | ||
9 | - clocks: phandle to the main clock | ||
10 | |||
11 | Example: | ||
12 | |||
13 | timer@f0000fc0 { | ||
14 | compatible = "cnxt,cx92755-timer"; | ||
15 | reg = <0xf0000fc0 0x40>; | ||
16 | interrupts = <19>, <31>, <34>, <35>, <52>, <53>, <54>, <55>; | ||
17 | clocks = <&main_clk>; | ||
18 | }; | ||
diff --git a/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt b/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt index b5082a1cf461..1761f53ee36f 100644 --- a/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt +++ b/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt | |||
@@ -6,7 +6,9 @@ trigger a legacy watchdog reset. | |||
6 | 6 | ||
7 | Required properties: | 7 | Required properties: |
8 | 8 | ||
9 | - compatible : should be "nvidia,tegra30-timer", "nvidia,tegra20-timer". | 9 | - compatible : For Tegra30, must contain "nvidia,tegra30-timer". Otherwise, |
10 | must contain '"nvidia,<chip>-timer", "nvidia,tegra30-timer"' where | ||
11 | <chip> is tegra124 or tegra132. | ||
10 | - reg : Specifies base physical address and size of the registers. | 12 | - reg : Specifies base physical address and size of the registers. |
11 | - interrupts : A list of 6 interrupts; one per each of timer channels 1 | 13 | - 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. | 14 | through 5, and one for the shared interrupt for the remaining channels. |
diff --git a/Documentation/devicetree/bindings/timer/rockchip,rk3288-timer.txt b/Documentation/devicetree/bindings/timer/rockchip,rk3288-timer.txt new file mode 100644 index 000000000000..87f0b0042bae --- /dev/null +++ b/Documentation/devicetree/bindings/timer/rockchip,rk3288-timer.txt | |||
@@ -0,0 +1,18 @@ | |||
1 | Rockchip rk3288 timer | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: shall be "rockchip,rk3288-timer" | ||
5 | - reg: base address of the timer register starting with TIMERS CONTROL register | ||
6 | - interrupts: should contain the interrupts for Timer0 | ||
7 | - clocks : must contain an entry for each entry in clock-names | ||
8 | - clock-names : must include the following entries: | ||
9 | "timer", "pclk" | ||
10 | |||
11 | Example: | ||
12 | timer: timer@ff810000 { | ||
13 | compatible = "rockchip,rk3288-timer"; | ||
14 | reg = <0xff810000 0x20>; | ||
15 | interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>; | ||
16 | clocks = <&xin24m>, <&cru PCLK_TIMER>; | ||
17 | clock-names = "timer", "pclk"; | ||
18 | }; | ||
diff --git a/Documentation/devicetree/bindings/unittest.txt b/Documentation/devicetree/bindings/unittest.txt index 0f92a22fddfa..8933211f32f9 100644 --- a/Documentation/devicetree/bindings/unittest.txt +++ b/Documentation/devicetree/bindings/unittest.txt | |||
@@ -1,4 +1,4 @@ | |||
1 | * OF selftest platform device | 1 | 1) OF selftest platform device |
2 | 2 | ||
3 | ** selftest | 3 | ** selftest |
4 | 4 | ||
@@ -12,3 +12,60 @@ Example: | |||
12 | compatible = "selftest"; | 12 | compatible = "selftest"; |
13 | status = "okay"; | 13 | status = "okay"; |
14 | }; | 14 | }; |
15 | |||
16 | 2) OF selftest i2c adapter platform device | ||
17 | |||
18 | ** platform device unittest adapter | ||
19 | |||
20 | Required properties: | ||
21 | - compatible: must be selftest-i2c-bus | ||
22 | |||
23 | Children nodes contain selftest i2c devices. | ||
24 | |||
25 | Example: | ||
26 | selftest-i2c-bus { | ||
27 | compatible = "selftest-i2c-bus"; | ||
28 | status = "okay"; | ||
29 | }; | ||
30 | |||
31 | 3) OF selftest i2c device | ||
32 | |||
33 | ** I2C selftest device | ||
34 | |||
35 | Required properties: | ||
36 | - compatible: must be selftest-i2c-dev | ||
37 | |||
38 | All other properties are optional | ||
39 | |||
40 | Example: | ||
41 | selftest-i2c-dev { | ||
42 | compatible = "selftest-i2c-dev"; | ||
43 | status = "okay"; | ||
44 | }; | ||
45 | |||
46 | 4) OF selftest i2c mux device | ||
47 | |||
48 | ** I2C selftest mux | ||
49 | |||
50 | Required properties: | ||
51 | - compatible: must be selftest-i2c-mux | ||
52 | |||
53 | Children nodes contain selftest i2c bus nodes per channel. | ||
54 | |||
55 | Example: | ||
56 | selftest-i2c-mux { | ||
57 | compatible = "selftest-i2c-mux"; | ||
58 | status = "okay"; | ||
59 | #address-cells = <1>; | ||
60 | #size-cells = <0>; | ||
61 | channel-0 { | ||
62 | reg = <0>; | ||
63 | #address-cells = <1>; | ||
64 | #size-cells = <0>; | ||
65 | i2c-dev { | ||
66 | reg = <8>; | ||
67 | compatible = "selftest-i2c-dev"; | ||
68 | status = "okay"; | ||
69 | }; | ||
70 | }; | ||
71 | }; | ||
diff --git a/Documentation/devicetree/bindings/usb/atmel-usb.txt b/Documentation/devicetree/bindings/usb/atmel-usb.txt index bc2222ca3f2a..e180d56c75db 100644 --- a/Documentation/devicetree/bindings/usb/atmel-usb.txt +++ b/Documentation/devicetree/bindings/usb/atmel-usb.txt | |||
@@ -33,9 +33,17 @@ usb1: ehci@00800000 { | |||
33 | AT91 USB device controller | 33 | AT91 USB device controller |
34 | 34 | ||
35 | Required properties: | 35 | Required properties: |
36 | - compatible: Should be "atmel,at91rm9200-udc" | 36 | - compatible: Should be one of the following |
37 | "atmel,at91rm9200-udc" | ||
38 | "atmel,at91sam9260-udc" | ||
39 | "atmel,at91sam9261-udc" | ||
40 | "atmel,at91sam9263-udc" | ||
37 | - reg: Address and length of the register set for the device | 41 | - reg: Address and length of the register set for the device |
38 | - interrupts: Should contain macb interrupt | 42 | - interrupts: Should contain macb interrupt |
43 | - clocks: Should reference the peripheral and the AHB clocks | ||
44 | - clock-names: Should contains two strings | ||
45 | "pclk" for the peripheral clock | ||
46 | "hclk" for the AHB clock | ||
39 | 47 | ||
40 | Optional properties: | 48 | Optional properties: |
41 | - atmel,vbus-gpio: If present, specifies a gpio that needs to be | 49 | - atmel,vbus-gpio: If present, specifies a gpio that needs to be |
@@ -51,7 +59,10 @@ usb1: gadget@fffa4000 { | |||
51 | Atmel High-Speed USB device controller | 59 | Atmel High-Speed USB device controller |
52 | 60 | ||
53 | Required properties: | 61 | Required properties: |
54 | - compatible: Should be "atmel,at91sam9rl-udc" | 62 | - compatible: Should be one of the following |
63 | "at91sam9rl-udc" | ||
64 | "at91sam9g45-udc" | ||
65 | "sama5d3-udc" | ||
55 | - reg: Address and length of the register set for the device | 66 | - reg: Address and length of the register set for the device |
56 | - interrupts: Should contain usba interrupt | 67 | - interrupts: Should contain usba interrupt |
57 | - ep childnode: To specify the number of endpoints and their properties. | 68 | - ep childnode: To specify the number of endpoints and their properties. |
diff --git a/Documentation/devicetree/bindings/usb/dwc2.txt b/Documentation/devicetree/bindings/usb/dwc2.txt index 482f815363ef..fd132cbee70e 100644 --- a/Documentation/devicetree/bindings/usb/dwc2.txt +++ b/Documentation/devicetree/bindings/usb/dwc2.txt | |||
@@ -20,6 +20,10 @@ Optional properties: | |||
20 | Refer to phy/phy-bindings.txt for generic phy consumer properties | 20 | Refer to phy/phy-bindings.txt for generic phy consumer properties |
21 | - dr_mode: shall be one of "host", "peripheral" and "otg" | 21 | - dr_mode: shall be one of "host", "peripheral" and "otg" |
22 | Refer to usb/generic.txt | 22 | Refer to usb/generic.txt |
23 | - g-use-dma: enable dma usage in gadget driver. | ||
24 | - g-rx-fifo-size: size of rx fifo size in gadget mode. | ||
25 | - g-np-tx-fifo-size: size of non-periodic tx fifo size in gadget mode. | ||
26 | - g-tx-fifo-size: size of periodic tx fifo per endpoint (except ep0) in gadget mode. | ||
23 | 27 | ||
24 | Example: | 28 | Example: |
25 | 29 | ||
diff --git a/Documentation/devicetree/bindings/usb/nvidia,tegra20-ehci.txt b/Documentation/devicetree/bindings/usb/nvidia,tegra20-ehci.txt index 3dc9140e3dfb..f60785f73d3d 100644 --- a/Documentation/devicetree/bindings/usb/nvidia,tegra20-ehci.txt +++ b/Documentation/devicetree/bindings/usb/nvidia,tegra20-ehci.txt | |||
@@ -6,7 +6,10 @@ Practice : Universal Serial Bus" with the following modifications | |||
6 | and additions : | 6 | and additions : |
7 | 7 | ||
8 | Required properties : | 8 | Required properties : |
9 | - compatible : Should be "nvidia,tegra20-ehci". | 9 | - compatible : For Tegra20, must contain "nvidia,tegra20-ehci". |
10 | For Tegra30, must contain "nvidia,tegra30-ehci". Otherwise, must contain | ||
11 | "nvidia,<chip>-ehci" plus at least one of the above, where <chip> is | ||
12 | tegra114, tegra124, tegra132, or tegra210. | ||
10 | - nvidia,phy : phandle of the PHY that the controller is connected to. | 13 | - nvidia,phy : phandle of the PHY that the controller is connected to. |
11 | - clocks : Must contain one entry, for the module clock. | 14 | - clocks : Must contain one entry, for the module clock. |
12 | See ../clocks/clock-bindings.txt for details. | 15 | See ../clocks/clock-bindings.txt for details. |
diff --git a/Documentation/devicetree/bindings/usb/nvidia,tegra20-usb-phy.txt b/Documentation/devicetree/bindings/usb/nvidia,tegra20-usb-phy.txt index c9205fbf26e2..a9aa79fb90ed 100644 --- a/Documentation/devicetree/bindings/usb/nvidia,tegra20-usb-phy.txt +++ b/Documentation/devicetree/bindings/usb/nvidia,tegra20-usb-phy.txt | |||
@@ -3,7 +3,10 @@ Tegra SOC USB PHY | |||
3 | The device node for Tegra SOC USB PHY: | 3 | The device node for Tegra SOC USB PHY: |
4 | 4 | ||
5 | Required properties : | 5 | Required properties : |
6 | - compatible : Should be "nvidia,tegra<chip>-usb-phy". | 6 | - compatible : For Tegra20, must contain "nvidia,tegra20-usb-phy". |
7 | For Tegra30, must contain "nvidia,tegra30-usb-phy". Otherwise, must contain | ||
8 | "nvidia,<chip>-usb-phy" plus at least one of the above, where <chip> is | ||
9 | tegra114, tegra124, tegra132, or tegra210. | ||
7 | - reg : Defines the following set of registers, in the order listed: | 10 | - reg : Defines the following set of registers, in the order listed: |
8 | - The PHY's own register set. | 11 | - The PHY's own register set. |
9 | Always present. | 12 | Always present. |
diff --git a/Documentation/devicetree/bindings/usb/renesas_usbhs.txt b/Documentation/devicetree/bindings/usb/renesas_usbhs.txt index b08c903f8668..61b045b6d50e 100644 --- a/Documentation/devicetree/bindings/usb/renesas_usbhs.txt +++ b/Documentation/devicetree/bindings/usb/renesas_usbhs.txt | |||
@@ -14,6 +14,8 @@ Optional properties: | |||
14 | function should be enabled | 14 | function should be enabled |
15 | - phys: phandle + phy specifier pair | 15 | - phys: phandle + phy specifier pair |
16 | - phy-names: must be "usb" | 16 | - phy-names: must be "usb" |
17 | - dmas: Must contain a list of references to DMA specifiers. | ||
18 | - dma-names : Must contain a list of DMA names, "tx" or "rx". | ||
17 | 19 | ||
18 | Example: | 20 | Example: |
19 | usbhs: usb@e6590000 { | 21 | usbhs: usb@e6590000 { |
diff --git a/Documentation/devicetree/bindings/usb/usb-ehci.txt b/Documentation/devicetree/bindings/usb/usb-ehci.txt index 43c1a4e06767..0b04fdff9d5a 100644 --- a/Documentation/devicetree/bindings/usb/usb-ehci.txt +++ b/Documentation/devicetree/bindings/usb/usb-ehci.txt | |||
@@ -12,6 +12,7 @@ Optional properties: | |||
12 | - big-endian-regs : boolean, set this for hcds with big-endian registers | 12 | - big-endian-regs : boolean, set this for hcds with big-endian registers |
13 | - big-endian-desc : boolean, set this for hcds with big-endian descriptors | 13 | - big-endian-desc : boolean, set this for hcds with big-endian descriptors |
14 | - big-endian : boolean, for hcds with big-endian-regs + big-endian-desc | 14 | - big-endian : boolean, for hcds with big-endian-regs + big-endian-desc |
15 | - needs-reset-on-resume : boolean, set this to force EHCI reset after resume | ||
15 | - clocks : a list of phandle + clock specifier pairs | 16 | - clocks : a list of phandle + clock specifier pairs |
16 | - phys : phandle + phy specifier pair | 17 | - phys : phandle + phy specifier pair |
17 | - phy-names : "usb" | 18 | - phy-names : "usb" |
diff --git a/Documentation/devicetree/bindings/usb/usb-nop-xceiv.txt b/Documentation/devicetree/bindings/usb/usb-nop-xceiv.txt index 1bd37faba05b..5be01c859b7a 100644 --- a/Documentation/devicetree/bindings/usb/usb-nop-xceiv.txt +++ b/Documentation/devicetree/bindings/usb/usb-nop-xceiv.txt | |||
@@ -13,10 +13,15 @@ Optional properties: | |||
13 | - clock-frequency: the clock frequency (in Hz) that the PHY clock must | 13 | - clock-frequency: the clock frequency (in Hz) that the PHY clock must |
14 | be configured to. | 14 | be configured to. |
15 | 15 | ||
16 | - vcc-supply: phandle to the regulator that provides RESET to the PHY. | 16 | - vcc-supply: phandle to the regulator that provides power to the PHY. |
17 | 17 | ||
18 | - reset-gpios: Should specify the GPIO for reset. | 18 | - reset-gpios: Should specify the GPIO for reset. |
19 | 19 | ||
20 | - vbus-detect-gpio: should specify the GPIO detecting a VBus insertion | ||
21 | (see Documentation/devicetree/bindings/gpio/gpio.txt) | ||
22 | - vbus-regulator : should specifiy the regulator supplying current drawn from | ||
23 | the VBus line (see Documentation/devicetree/bindings/regulator/regulator.txt). | ||
24 | |||
20 | Example: | 25 | Example: |
21 | 26 | ||
22 | hsusb1_phy { | 27 | hsusb1_phy { |
@@ -26,8 +31,11 @@ Example: | |||
26 | clock-names = "main_clk"; | 31 | clock-names = "main_clk"; |
27 | vcc-supply = <&hsusb1_vcc_regulator>; | 32 | vcc-supply = <&hsusb1_vcc_regulator>; |
28 | reset-gpios = <&gpio1 7 GPIO_ACTIVE_LOW>; | 33 | reset-gpios = <&gpio1 7 GPIO_ACTIVE_LOW>; |
34 | vbus-detect-gpio = <&gpio2 13 GPIO_ACTIVE_HIGH>; | ||
35 | vbus-regulator = <&vbus_regulator>; | ||
29 | }; | 36 | }; |
30 | 37 | ||
31 | hsusb1_phy is a NOP USB PHY device that gets its clock from an oscillator | 38 | hsusb1_phy is a NOP USB PHY device that gets its clock from an oscillator |
32 | and expects that clock to be configured to 19.2MHz by the NOP PHY driver. | 39 | and expects that clock to be configured to 19.2MHz by the NOP PHY driver. |
33 | hsusb1_vcc_regulator provides power to the PHY and GPIO 7 controls RESET. | 40 | hsusb1_vcc_regulator provides power to the PHY and GPIO 7 controls RESET. |
41 | GPIO 13 detects VBus insertion, and accordingly notifies the vbus-regulator. | ||
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt index b1df0ad1306c..389ca1347a77 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.txt +++ b/Documentation/devicetree/bindings/vendor-prefixes.txt | |||
@@ -4,13 +4,15 @@ 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 | abilis Abilis Systems | 6 | abilis Abilis Systems |
7 | abcn Abracon Corporation | ||
7 | active-semi Active-Semi International Inc | 8 | active-semi Active-Semi International Inc |
8 | ad Avionic Design GmbH | 9 | ad Avionic Design GmbH |
9 | adapteva Adapteva, Inc. | 10 | adapteva Adapteva, Inc. |
11 | adh AD Holdings Plc. | ||
10 | adi Analog Devices, Inc. | 12 | adi Analog Devices, Inc. |
11 | aeroflexgaisler Aeroflex Gaisler AB | 13 | aeroflexgaisler Aeroflex Gaisler AB |
12 | ak Asahi Kasei Corp. | ||
13 | allwinner Allwinner Technology Co., Ltd. | 14 | allwinner Allwinner Technology Co., Ltd. |
15 | alphascale AlphaScale Integrated Circuits Systems, Inc. | ||
14 | altr Altera Corp. | 16 | altr Altera Corp. |
15 | amcc Applied Micro Circuits Corporation (APM, formally AMCC) | 17 | amcc Applied Micro Circuits Corporation (APM, formally AMCC) |
16 | amd Advanced Micro Devices (AMD), Inc. | 18 | amd Advanced Micro Devices (AMD), Inc. |
@@ -20,9 +22,11 @@ amstaos AMS-Taos Inc. | |||
20 | apm Applied Micro Circuits Corporation (APM) | 22 | apm Applied Micro Circuits Corporation (APM) |
21 | arm ARM Ltd. | 23 | arm ARM Ltd. |
22 | armadeus ARMadeus Systems SARL | 24 | armadeus ARMadeus Systems SARL |
25 | asahi-kasei Asahi Kasei Corp. | ||
23 | atmel Atmel Corporation | 26 | atmel Atmel Corporation |
24 | auo AU Optronics Corporation | 27 | auo AU Optronics Corporation |
25 | avago Avago Technologies | 28 | avago Avago Technologies |
29 | avic Shanghai AVIC Optoelectronics Co., Ltd. | ||
26 | bosch Bosch Sensortec GmbH | 30 | bosch Bosch Sensortec GmbH |
27 | brcm Broadcom Corporation | 31 | brcm Broadcom Corporation |
28 | buffalo Buffalo, Inc. | 32 | buffalo Buffalo, Inc. |
@@ -31,11 +35,15 @@ capella Capella Microsystems, Inc | |||
31 | cavium Cavium, Inc. | 35 | cavium Cavium, Inc. |
32 | cdns Cadence Design Systems Inc. | 36 | cdns Cadence Design Systems Inc. |
33 | chipidea Chipidea, Inc | 37 | chipidea Chipidea, Inc |
38 | chipspark ChipSPARK | ||
34 | chrp Common Hardware Reference Platform | 39 | chrp Common Hardware Reference Platform |
35 | chunghwa Chunghwa Picture Tubes Ltd. | 40 | chunghwa Chunghwa Picture Tubes Ltd. |
36 | cirrus Cirrus Logic, Inc. | 41 | cirrus Cirrus Logic, Inc. |
42 | cloudengines Cloud Engines, Inc. | ||
37 | cnm Chips&Media, Inc. | 43 | cnm Chips&Media, Inc. |
44 | cnxt Conexant Systems, Inc. | ||
38 | cortina Cortina Systems, Inc. | 45 | cortina Cortina Systems, Inc. |
46 | cosmic Cosmic Circuits | ||
39 | crystalfontz Crystalfontz America, Inc. | 47 | crystalfontz Crystalfontz America, Inc. |
40 | dallas Maxim Integrated Products (formerly Dallas Semiconductor) | 48 | dallas Maxim Integrated Products (formerly Dallas Semiconductor) |
41 | davicom DAVICOM Semiconductor, Inc. | 49 | davicom DAVICOM Semiconductor, Inc. |
@@ -54,14 +62,18 @@ epcos EPCOS AG | |||
54 | epfl Ecole Polytechnique Fédérale de Lausanne | 62 | epfl Ecole Polytechnique Fédérale de Lausanne |
55 | epson Seiko Epson Corp. | 63 | epson Seiko Epson Corp. |
56 | est ESTeem Wireless Modems | 64 | est ESTeem Wireless Modems |
65 | ettus NI Ettus Research | ||
57 | eukrea Eukréa Electromatique | 66 | eukrea Eukréa Electromatique |
58 | everest Everest Semiconductor Co. Ltd. | 67 | everest Everest Semiconductor Co. Ltd. |
68 | everspin Everspin Technologies, Inc. | ||
59 | excito Excito | 69 | excito Excito |
60 | fcs Fairchild Semiconductor | 70 | fcs Fairchild Semiconductor |
71 | firefly Firefly | ||
61 | fsl Freescale Semiconductor | 72 | fsl Freescale Semiconductor |
62 | GEFanuc GE Fanuc Intelligent Platforms Embedded Systems, Inc. | 73 | GEFanuc GE Fanuc Intelligent Platforms Embedded Systems, Inc. |
63 | gef GE Fanuc Intelligent Platforms Embedded Systems, Inc. | 74 | gef GE Fanuc Intelligent Platforms Embedded Systems, Inc. |
64 | geniatech Geniatech, Inc. | 75 | geniatech Geniatech, Inc. |
76 | giantplus Giantplus Technology Co., Ltd. | ||
65 | globalscale Globalscale Technologies, Inc. | 77 | globalscale Globalscale Technologies, Inc. |
66 | gmt Global Mixed-mode Technology, Inc. | 78 | gmt Global Mixed-mode Technology, Inc. |
67 | google Google, Inc. | 79 | google Google, Inc. |
@@ -69,6 +81,7 @@ gumstix Gumstix, Inc. | |||
69 | gw Gateworks Corporation | 81 | gw Gateworks Corporation |
70 | hannstar HannStar Display Corporation | 82 | hannstar HannStar Display Corporation |
71 | haoyu Haoyu Microelectronic Co. Ltd. | 83 | haoyu Haoyu Microelectronic Co. Ltd. |
84 | himax Himax Technologies, Inc. | ||
72 | hisilicon Hisilicon Limited. | 85 | hisilicon Hisilicon Limited. |
73 | hit Hitachi Ltd. | 86 | hit Hitachi Ltd. |
74 | honeywell Honeywell | 87 | honeywell Honeywell |
@@ -82,8 +95,7 @@ innolux Innolux Corporation | |||
82 | intel Intel Corporation | 95 | intel Intel Corporation |
83 | intercontrol Inter Control Group | 96 | intercontrol Inter Control Group |
84 | isee ISEE 2007 S.L. | 97 | isee ISEE 2007 S.L. |
85 | isil Intersil (deprecated, use isl) | 98 | isil Intersil |
86 | isl Intersil | ||
87 | karo Ka-Ro electronics GmbH | 99 | karo Ka-Ro electronics GmbH |
88 | keymile Keymile GmbH | 100 | keymile Keymile GmbH |
89 | lacie LaCie | 101 | lacie LaCie |
@@ -118,7 +130,9 @@ nvidia NVIDIA | |||
118 | nxp NXP Semiconductors | 130 | nxp NXP Semiconductors |
119 | onnn ON Semiconductor Corp. | 131 | onnn ON Semiconductor Corp. |
120 | opencores OpenCores.org | 132 | opencores OpenCores.org |
133 | ovti OmniVision Technologies | ||
121 | panasonic Panasonic Corporation | 134 | panasonic Panasonic Corporation |
135 | parade Parade Technologies Inc. | ||
122 | pericom Pericom Technology Inc. | 136 | pericom Pericom Technology Inc. |
123 | phytec PHYTEC Messtechnik GmbH | 137 | phytec PHYTEC Messtechnik GmbH |
124 | picochip Picochip Ltd | 138 | picochip Picochip Ltd |
@@ -127,6 +141,7 @@ pixcir PIXCIR MICROELECTRONICS Co., Ltd | |||
127 | powervr PowerVR (deprecated, use img) | 141 | powervr PowerVR (deprecated, use img) |
128 | qca Qualcomm Atheros, Inc. | 142 | qca Qualcomm Atheros, Inc. |
129 | qcom Qualcomm Technologies, Inc | 143 | qcom Qualcomm Technologies, Inc |
144 | qemu QEMU, a generic and open source machine emulator and virtualizer | ||
130 | qnap QNAP Systems, Inc. | 145 | qnap QNAP Systems, Inc. |
131 | radxa Radxa | 146 | radxa Radxa |
132 | raidsonic RaidSonic Technology GmbH | 147 | raidsonic RaidSonic Technology GmbH |
@@ -141,8 +156,10 @@ sandisk Sandisk Corporation | |||
141 | sbs Smart Battery System | 156 | sbs Smart Battery System |
142 | schindler Schindler | 157 | schindler Schindler |
143 | seagate Seagate Technology PLC | 158 | seagate Seagate Technology PLC |
159 | semtech Semtech Corporation | ||
144 | sil Silicon Image | 160 | sil Silicon Image |
145 | silabs Silicon Laboratories | 161 | silabs Silicon Laboratories |
162 | siliconmitus Silicon Mitus, Inc. | ||
146 | simtek | 163 | simtek |
147 | sii Seiko Instruments, Inc. | 164 | sii Seiko Instruments, Inc. |
148 | silergy Silergy Corp. | 165 | silergy Silergy Corp. |
@@ -153,6 +170,7 @@ snps Synopsys, Inc. | |||
153 | solidrun SolidRun | 170 | solidrun SolidRun |
154 | sony Sony Corporation | 171 | sony Sony Corporation |
155 | spansion Spansion Inc. | 172 | spansion Spansion Inc. |
173 | sprd Spreadtrum Communications Inc. | ||
156 | st STMicroelectronics | 174 | st STMicroelectronics |
157 | ste ST-Ericsson | 175 | ste ST-Ericsson |
158 | stericsson ST-Ericsson | 176 | stericsson ST-Ericsson |
@@ -164,10 +182,12 @@ tlm Trusted Logic Mobility | |||
164 | toradex Toradex AG | 182 | toradex Toradex AG |
165 | toshiba Toshiba Corporation | 183 | toshiba Toshiba Corporation |
166 | toumaz Toumaz | 184 | toumaz Toumaz |
185 | truly Truly Semiconductors Limited | ||
167 | usi Universal Scientific Industrial Co., Ltd. | 186 | usi Universal Scientific Industrial Co., Ltd. |
168 | v3 V3 Semiconductor | 187 | v3 V3 Semiconductor |
169 | variscite Variscite Ltd. | 188 | variscite Variscite Ltd. |
170 | via VIA Technologies, Inc. | 189 | via VIA Technologies, Inc. |
190 | virtio Virtual I/O Device Specification, developed by the OASIS consortium | ||
171 | voipac Voipac Technologies s.r.o. | 191 | voipac Voipac Technologies s.r.o. |
172 | winbond Winbond Electronics corp. | 192 | winbond Winbond Electronics corp. |
173 | wlf Wolfson Microelectronics | 193 | wlf Wolfson Microelectronics |
diff --git a/Documentation/devicetree/bindings/video/bridge/ps8622.txt b/Documentation/devicetree/bindings/video/bridge/ps8622.txt new file mode 100644 index 000000000000..c989c3807f2b --- /dev/null +++ b/Documentation/devicetree/bindings/video/bridge/ps8622.txt | |||
@@ -0,0 +1,31 @@ | |||
1 | ps8622-bridge bindings | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "parade,ps8622" or "parade,ps8625" | ||
5 | - reg: first i2c address of the bridge | ||
6 | - sleep-gpios: OF device-tree gpio specification for PD_ pin. | ||
7 | - reset-gpios: OF device-tree gpio specification for RST_ pin. | ||
8 | |||
9 | Optional properties: | ||
10 | - lane-count: number of DP lanes to use | ||
11 | - use-external-pwm: backlight will be controlled by an external PWM | ||
12 | - video interfaces: Device node can contain video interface port | ||
13 | nodes for panel according to [1]. | ||
14 | |||
15 | [1]: Documentation/devicetree/bindings/media/video-interfaces.txt | ||
16 | |||
17 | Example: | ||
18 | lvds-bridge@48 { | ||
19 | compatible = "parade,ps8622"; | ||
20 | reg = <0x48>; | ||
21 | sleep-gpios = <&gpc3 6 1 0 0>; | ||
22 | reset-gpios = <&gpc3 1 1 0 0>; | ||
23 | lane-count = <1>; | ||
24 | ports { | ||
25 | port@0 { | ||
26 | bridge_out: endpoint { | ||
27 | remote-endpoint = <&panel_in>; | ||
28 | }; | ||
29 | }; | ||
30 | }; | ||
31 | }; | ||
diff --git a/Documentation/devicetree/bindings/drm/bridge/ptn3460.txt b/Documentation/devicetree/bindings/video/bridge/ptn3460.txt index 52b93b2c6748..361971ba104d 100644 --- a/Documentation/devicetree/bindings/drm/bridge/ptn3460.txt +++ b/Documentation/devicetree/bindings/video/bridge/ptn3460.txt | |||
@@ -3,8 +3,8 @@ ptn3460 bridge bindings | |||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: "nxp,ptn3460" | 4 | - compatible: "nxp,ptn3460" |
5 | - reg: i2c address of the bridge | 5 | - reg: i2c address of the bridge |
6 | - powerdown-gpio: OF device-tree gpio specification | 6 | - powerdown-gpio: OF device-tree gpio specification for PD_N pin. |
7 | - reset-gpio: OF device-tree gpio specification | 7 | - reset-gpio: OF device-tree gpio specification for RST_N pin. |
8 | - edid-emulation: The EDID emulation entry to use | 8 | - edid-emulation: The EDID emulation entry to use |
9 | +-------+------------+------------------+ | 9 | +-------+------------+------------------+ |
10 | | Value | Resolution | Description | | 10 | | Value | Resolution | Description | |
@@ -17,6 +17,11 @@ Required properties: | |||
17 | | 6 | 1600x900 | ChiMei M215HGE | | 17 | | 6 | 1600x900 | ChiMei M215HGE | |
18 | +-------+------------+------------------+ | 18 | +-------+------------+------------------+ |
19 | 19 | ||
20 | - video interfaces: Device node can contain video interface port | ||
21 | nodes for panel according to [1]. | ||
22 | |||
23 | [1]: Documentation/devicetree/bindings/media/video-interfaces.txt | ||
24 | |||
20 | Example: | 25 | Example: |
21 | lvds-bridge@20 { | 26 | lvds-bridge@20 { |
22 | compatible = "nxp,ptn3460"; | 27 | compatible = "nxp,ptn3460"; |
@@ -24,4 +29,11 @@ Example: | |||
24 | powerdown-gpio = <&gpy2 5 1 0 0>; | 29 | powerdown-gpio = <&gpy2 5 1 0 0>; |
25 | reset-gpio = <&gpx1 5 1 0 0>; | 30 | reset-gpio = <&gpx1 5 1 0 0>; |
26 | edid-emulation = <5>; | 31 | edid-emulation = <5>; |
32 | ports { | ||
33 | port@0 { | ||
34 | bridge_out: endpoint { | ||
35 | remote-endpoint = <&panel_in>; | ||
36 | }; | ||
37 | }; | ||
38 | }; | ||
27 | }; | 39 | }; |
diff --git a/Documentation/devicetree/bindings/video/dw_hdmi-rockchip.txt b/Documentation/devicetree/bindings/video/dw_hdmi-rockchip.txt new file mode 100644 index 000000000000..668091f27674 --- /dev/null +++ b/Documentation/devicetree/bindings/video/dw_hdmi-rockchip.txt | |||
@@ -0,0 +1,46 @@ | |||
1 | Rockchip specific extensions to the Synopsys Designware HDMI | ||
2 | ================================ | ||
3 | |||
4 | Required properties: | ||
5 | - compatible: "rockchip,rk3288-dw-hdmi"; | ||
6 | - reg: Physical base address and length of the controller's registers. | ||
7 | - clocks: phandle to hdmi iahb and isfr clocks. | ||
8 | - clock-names: should be "iahb" "isfr" | ||
9 | - rockchip,grf: this soc should set GRF regs to mux vopl/vopb. | ||
10 | - interrupts: HDMI interrupt number | ||
11 | - ports: contain a port node with endpoint definitions as defined in | ||
12 | Documentation/devicetree/bindings/media/video-interfaces.txt. For | ||
13 | vopb,set the reg = <0> and set the reg = <1> for vopl. | ||
14 | - reg-io-width: the width of the reg:1,4, the value should be 4 on | ||
15 | rk3288 platform | ||
16 | |||
17 | Optional properties | ||
18 | - ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing | ||
19 | - clocks, clock-names: phandle to the HDMI CEC clock, name should be "cec" | ||
20 | |||
21 | Example: | ||
22 | hdmi: hdmi@ff980000 { | ||
23 | compatible = "rockchip,rk3288-dw-hdmi"; | ||
24 | reg = <0xff980000 0x20000>; | ||
25 | reg-io-width = <4>; | ||
26 | ddc-i2c-bus = <&i2c5>; | ||
27 | rockchip,grf = <&grf>; | ||
28 | interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>; | ||
29 | clocks = <&cru PCLK_HDMI_CTRL>, <&cru SCLK_HDMI_HDCP>; | ||
30 | clock-names = "iahb", "isfr"; | ||
31 | status = "disabled"; | ||
32 | ports { | ||
33 | hdmi_in: port { | ||
34 | #address-cells = <1>; | ||
35 | #size-cells = <0>; | ||
36 | hdmi_in_vopb: endpoint@0 { | ||
37 | reg = <0>; | ||
38 | remote-endpoint = <&vopb_out_hdmi>; | ||
39 | }; | ||
40 | hdmi_in_vopl: endpoint@1 { | ||
41 | reg = <1>; | ||
42 | remote-endpoint = <&vopl_out_hdmi>; | ||
43 | }; | ||
44 | }; | ||
45 | }; | ||
46 | }; | ||
diff --git a/Documentation/devicetree/bindings/video/exynos7-decon.txt b/Documentation/devicetree/bindings/video/exynos7-decon.txt new file mode 100644 index 000000000000..f5f9c8d4a55a --- /dev/null +++ b/Documentation/devicetree/bindings/video/exynos7-decon.txt | |||
@@ -0,0 +1,68 @@ | |||
1 | Device-Tree bindings for Samsung Exynos7 SoC display controller (DECON) | ||
2 | |||
3 | DECON (Display and Enhancement Controller) is the Display Controller for the | ||
4 | Exynos7 series of SoCs which transfers the image data from a video memory | ||
5 | buffer to an external LCD interface. | ||
6 | |||
7 | Required properties: | ||
8 | - compatible: value should be "samsung,exynos7-decon"; | ||
9 | |||
10 | - reg: physical base address and length of the DECON registers set. | ||
11 | |||
12 | - interrupt-parent: should be the phandle of the decon controller's | ||
13 | parent interrupt controller. | ||
14 | |||
15 | - interrupts: should contain a list of all DECON IP block interrupts in the | ||
16 | order: FIFO Level, VSYNC, LCD_SYSTEM. The interrupt specifier | ||
17 | format depends on the interrupt controller used. | ||
18 | |||
19 | - interrupt-names: should contain the interrupt names: "fifo", "vsync", | ||
20 | "lcd_sys", in the same order as they were listed in the interrupts | ||
21 | property. | ||
22 | |||
23 | - pinctrl-0: pin control group to be used for this controller. | ||
24 | |||
25 | - pinctrl-names: must contain a "default" entry. | ||
26 | |||
27 | - clocks: must include clock specifiers corresponding to entries in the | ||
28 | clock-names property. | ||
29 | |||
30 | - clock-names: list of clock names sorted in the same order as the clocks | ||
31 | property. Must contain "pclk_decon0", "aclk_decon0", | ||
32 | "decon0_eclk", "decon0_vclk". | ||
33 | - i80-if-timings: timing configuration for lcd i80 interface support. | ||
34 | |||
35 | Optional Properties: | ||
36 | - samsung,power-domain: a phandle to DECON power domain node. | ||
37 | - display-timings: timing settings for DECON, as described in document [1]. | ||
38 | Can be used in case timings cannot be provided otherwise | ||
39 | or to override timings provided by the panel. | ||
40 | |||
41 | [1]: Documentation/devicetree/bindings/video/display-timing.txt | ||
42 | |||
43 | Example: | ||
44 | |||
45 | SoC specific DT entry: | ||
46 | |||
47 | decon@13930000 { | ||
48 | compatible = "samsung,exynos7-decon"; | ||
49 | interrupt-parent = <&combiner>; | ||
50 | reg = <0x13930000 0x1000>; | ||
51 | interrupt-names = "lcd_sys", "vsync", "fifo"; | ||
52 | interrupts = <0 188 0>, <0 189 0>, <0 190 0>; | ||
53 | clocks = <&clock_disp PCLK_DECON_INT>, | ||
54 | <&clock_disp ACLK_DECON_INT>, | ||
55 | <&clock_disp SCLK_DECON_INT_ECLK>, | ||
56 | <&clock_disp SCLK_DECON_INT_EXTCLKPLL>; | ||
57 | clock-names = "pclk_decon0", "aclk_decon0", "decon0_eclk", | ||
58 | "decon0_vclk"; | ||
59 | status = "disabled"; | ||
60 | }; | ||
61 | |||
62 | Board specific DT entry: | ||
63 | |||
64 | decon@13930000 { | ||
65 | pinctrl-0 = <&lcd_clk &pwm1_out>; | ||
66 | pinctrl-names = "default"; | ||
67 | status = "okay"; | ||
68 | }; | ||
diff --git a/Documentation/devicetree/bindings/video/exynos_dp.txt b/Documentation/devicetree/bindings/video/exynos_dp.txt index 53dbccfa80ca..7a3a9cdb86ab 100644 --- a/Documentation/devicetree/bindings/video/exynos_dp.txt +++ b/Documentation/devicetree/bindings/video/exynos_dp.txt | |||
@@ -66,6 +66,10 @@ Optional properties for dp-controller: | |||
66 | Hotplug detect GPIO. | 66 | Hotplug detect GPIO. |
67 | Indicates which GPIO should be used for hotplug | 67 | Indicates which GPIO should be used for hotplug |
68 | detection | 68 | detection |
69 | -video interfaces: Device node can contain video interface port | ||
70 | nodes according to [1]. | ||
71 | |||
72 | [1]: Documentation/devicetree/bindings/media/video-interfaces.txt | ||
69 | 73 | ||
70 | Example: | 74 | Example: |
71 | 75 | ||
@@ -105,4 +109,12 @@ Board Specific portion: | |||
105 | vsync-len = <6>; | 109 | vsync-len = <6>; |
106 | }; | 110 | }; |
107 | }; | 111 | }; |
112 | |||
113 | ports { | ||
114 | port@0 { | ||
115 | dp_out: endpoint { | ||
116 | remote-endpoint = <&bridge_in>; | ||
117 | }; | ||
118 | }; | ||
119 | }; | ||
108 | }; | 120 | }; |
diff --git a/Documentation/devicetree/bindings/video/exynos_dsim.txt b/Documentation/devicetree/bindings/video/exynos_dsim.txt index ca2b4aacd9af..802aa7ef64e5 100644 --- a/Documentation/devicetree/bindings/video/exynos_dsim.txt +++ b/Documentation/devicetree/bindings/video/exynos_dsim.txt | |||
@@ -21,7 +21,7 @@ Required properties: | |||
21 | according to DSI host bindings (see MIPI DSI bindings [1]) | 21 | according to DSI host bindings (see MIPI DSI bindings [1]) |
22 | 22 | ||
23 | Optional properties: | 23 | Optional properties: |
24 | - samsung,power-domain: a phandle to DSIM power domain node | 24 | - power-domains: a phandle to DSIM power domain node |
25 | 25 | ||
26 | Child nodes: | 26 | Child nodes: |
27 | Should contain DSI peripheral nodes (see MIPI DSI bindings [1]). | 27 | Should contain DSI peripheral nodes (see MIPI DSI bindings [1]). |
@@ -53,7 +53,7 @@ Example: | |||
53 | phy-names = "dsim"; | 53 | phy-names = "dsim"; |
54 | vddcore-supply = <&vusb_reg>; | 54 | vddcore-supply = <&vusb_reg>; |
55 | vddio-supply = <&vmipi_reg>; | 55 | vddio-supply = <&vmipi_reg>; |
56 | samsung,power-domain = <&pd_lcd0>; | 56 | power-domains = <&pd_lcd0>; |
57 | #address-cells = <1>; | 57 | #address-cells = <1>; |
58 | #size-cells = <0>; | 58 | #size-cells = <0>; |
59 | samsung,pll-clock-frequency = <24000000>; | 59 | samsung,pll-clock-frequency = <24000000>; |
diff --git a/Documentation/devicetree/bindings/video/exynos_mixer.txt b/Documentation/devicetree/bindings/video/exynos_mixer.txt index 08b394b1edbf..3e38128f866b 100644 --- a/Documentation/devicetree/bindings/video/exynos_mixer.txt +++ b/Documentation/devicetree/bindings/video/exynos_mixer.txt | |||
@@ -15,6 +15,7 @@ Required properties: | |||
15 | a) mixer: Gate of Mixer IP bus clock. | 15 | a) mixer: Gate of Mixer IP bus clock. |
16 | b) sclk_hdmi: HDMI Special clock, one of the two possible inputs of | 16 | b) sclk_hdmi: HDMI Special clock, one of the two possible inputs of |
17 | mixer mux. | 17 | mixer mux. |
18 | c) hdmi: Gate of HDMI IP bus clock, needed together with sclk_hdmi. | ||
18 | 19 | ||
19 | Example: | 20 | Example: |
20 | 21 | ||
diff --git a/Documentation/devicetree/bindings/video/renesas,du.txt b/Documentation/devicetree/bindings/video/renesas,du.txt index 5102830f2760..c902323928f7 100644 --- a/Documentation/devicetree/bindings/video/renesas,du.txt +++ b/Documentation/devicetree/bindings/video/renesas,du.txt | |||
@@ -26,6 +26,10 @@ Required Properties: | |||
26 | per LVDS encoder. The functional clocks must be named "du.x" with "x" | 26 | per LVDS encoder. The functional clocks must be named "du.x" with "x" |
27 | being the channel numerical index. The LVDS clocks must be named | 27 | being the channel numerical index. The LVDS clocks must be named |
28 | "lvds.x" with "x" being the LVDS encoder numerical index. | 28 | "lvds.x" with "x" being the LVDS encoder numerical index. |
29 | - In addition to the functional and encoder clocks, all DU versions also | ||
30 | support externally supplied pixel clocks. Those clocks are optional. | ||
31 | When supplied they must be named "dclkin.x" with "x" being the input | ||
32 | clock numerical index. | ||
29 | 33 | ||
30 | Required nodes: | 34 | Required nodes: |
31 | 35 | ||
diff --git a/Documentation/devicetree/bindings/video/samsung-fimd.txt b/Documentation/devicetree/bindings/video/samsung-fimd.txt index cf1af6371021..a8bbbde03e79 100644 --- a/Documentation/devicetree/bindings/video/samsung-fimd.txt +++ b/Documentation/devicetree/bindings/video/samsung-fimd.txt | |||
@@ -38,7 +38,7 @@ Required properties: | |||
38 | property. Must contain "sclk_fimd" and "fimd". | 38 | property. Must contain "sclk_fimd" and "fimd". |
39 | 39 | ||
40 | Optional Properties: | 40 | Optional Properties: |
41 | - samsung,power-domain: a phandle to FIMD power domain node. | 41 | - power-domains: a phandle to FIMD power domain node. |
42 | - samsung,invert-vden: video enable signal is inverted | 42 | - samsung,invert-vden: video enable signal is inverted |
43 | - samsung,invert-vclk: video clock signal is inverted | 43 | - samsung,invert-vclk: video clock signal is inverted |
44 | - display-timings: timing settings for FIMD, as described in document [1]. | 44 | - display-timings: timing settings for FIMD, as described in document [1]. |
@@ -97,7 +97,7 @@ SoC specific DT entry: | |||
97 | interrupts = <11 0>, <11 1>, <11 2>; | 97 | interrupts = <11 0>, <11 1>, <11 2>; |
98 | clocks = <&clock 140>, <&clock 283>; | 98 | clocks = <&clock 140>, <&clock 283>; |
99 | clock-names = "sclk_fimd", "fimd"; | 99 | clock-names = "sclk_fimd", "fimd"; |
100 | samsung,power-domain = <&pd_lcd0>; | 100 | power-domains = <&pd_lcd0>; |
101 | status = "disabled"; | 101 | status = "disabled"; |
102 | }; | 102 | }; |
103 | 103 | ||
diff --git a/Documentation/devicetree/bindings/video/ti,dra7-dss.txt b/Documentation/devicetree/bindings/video/ti,dra7-dss.txt new file mode 100644 index 000000000000..f33a05137b0e --- /dev/null +++ b/Documentation/devicetree/bindings/video/ti,dra7-dss.txt | |||
@@ -0,0 +1,69 @@ | |||
1 | Texas Instruments DRA7x Display Subsystem | ||
2 | ========================================= | ||
3 | |||
4 | See Documentation/devicetree/bindings/video/ti,omap-dss.txt for generic | ||
5 | description about OMAP Display Subsystem bindings. | ||
6 | |||
7 | DSS Core | ||
8 | -------- | ||
9 | |||
10 | Required properties: | ||
11 | - compatible: "ti,dra7-dss" | ||
12 | - reg: address and length of the register spaces for 'dss' | ||
13 | - ti,hwmods: "dss_core" | ||
14 | - clocks: handle to fclk | ||
15 | - clock-names: "fck" | ||
16 | - syscon: phandle to control module core syscon node | ||
17 | |||
18 | Optional properties: | ||
19 | |||
20 | Some DRA7xx SoCs have one dedicated video PLL, some have two. These properties | ||
21 | can be used to describe the video PLLs: | ||
22 | |||
23 | - reg: address and length of the register spaces for 'pll1_clkctrl', | ||
24 | 'pll1', 'pll2_clkctrl', 'pll2' | ||
25 | - clocks: handle to video1 pll clock and video2 pll clock | ||
26 | - clock-names: "video1_clk" and "video2_clk" | ||
27 | |||
28 | Required nodes: | ||
29 | - DISPC | ||
30 | |||
31 | Optional nodes: | ||
32 | - DSS Submodules: HDMI | ||
33 | - Video port for DPI output | ||
34 | |||
35 | DPI Endpoint required properties: | ||
36 | - data-lines: number of lines used | ||
37 | |||
38 | |||
39 | DISPC | ||
40 | ----- | ||
41 | |||
42 | Required properties: | ||
43 | - compatible: "ti,dra7-dispc" | ||
44 | - reg: address and length of the register space | ||
45 | - ti,hwmods: "dss_dispc" | ||
46 | - interrupts: the DISPC interrupt | ||
47 | - clocks: handle to fclk | ||
48 | - clock-names: "fck" | ||
49 | |||
50 | HDMI | ||
51 | ---- | ||
52 | |||
53 | Required properties: | ||
54 | - compatible: "ti,dra7-hdmi" | ||
55 | - reg: addresses and lengths of the register spaces for 'wp', 'pll', 'phy', | ||
56 | 'core' | ||
57 | - reg-names: "wp", "pll", "phy", "core" | ||
58 | - interrupts: the HDMI interrupt line | ||
59 | - ti,hwmods: "dss_hdmi" | ||
60 | - vdda-supply: vdda power supply | ||
61 | - clocks: handles to fclk and pll clock | ||
62 | - clock-names: "fck", "sys_clk" | ||
63 | |||
64 | Optional nodes: | ||
65 | - Video port for HDMI output | ||
66 | |||
67 | HDMI Endpoint optional properties: | ||
68 | - lanes: list of 8 pin numbers for the HDMI lanes: CLK+, CLK-, D0+, D0-, | ||
69 | D1+, D1-, D2+, D2-. (default: 0,1,2,3,4,5,6,7) | ||
diff --git a/Documentation/devicetree/bindings/video/ti,opa362.txt b/Documentation/devicetree/bindings/video/ti,opa362.txt new file mode 100644 index 000000000000..f96083c0bd17 --- /dev/null +++ b/Documentation/devicetree/bindings/video/ti,opa362.txt | |||
@@ -0,0 +1,38 @@ | |||
1 | OPA362 analog video amplifier | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "ti,opa362" | ||
5 | - enable-gpios: enable/disable output gpio | ||
6 | |||
7 | Required node: | ||
8 | - Video port 0 for opa362 input | ||
9 | - Video port 1 for opa362 output | ||
10 | |||
11 | Example: | ||
12 | |||
13 | tv_amp: opa362 { | ||
14 | compatible = "ti,opa362"; | ||
15 | enable-gpios = <&gpio1 23 0>; /* GPIO to enable video out amplifier */ | ||
16 | |||
17 | ports { | ||
18 | #address-cells = <1>; | ||
19 | #size-cells = <0>; | ||
20 | |||
21 | port@0 { | ||
22 | reg = <0>; | ||
23 | opa_in: endpoint@0 { | ||
24 | remote-endpoint = <&venc_out>; | ||
25 | }; | ||
26 | }; | ||
27 | |||
28 | port@1 { | ||
29 | reg = <1>; | ||
30 | opa_out: endpoint@0 { | ||
31 | remote-endpoint = <&tv_connector_in>; | ||
32 | }; | ||
33 | }; | ||
34 | }; | ||
35 | }; | ||
36 | |||
37 | |||
38 | |||
diff --git a/Documentation/devicetree/bindings/watchdog/gpio-wdt.txt b/Documentation/devicetree/bindings/watchdog/gpio-wdt.txt index 37afec194949..198794963786 100644 --- a/Documentation/devicetree/bindings/watchdog/gpio-wdt.txt +++ b/Documentation/devicetree/bindings/watchdog/gpio-wdt.txt | |||
@@ -13,6 +13,11 @@ Required Properties: | |||
13 | by the GPIO flags. | 13 | by the GPIO flags. |
14 | - hw_margin_ms: Maximum time to reset watchdog circuit (milliseconds). | 14 | - hw_margin_ms: Maximum time to reset watchdog circuit (milliseconds). |
15 | 15 | ||
16 | Optional Properties: | ||
17 | - always-running: If the watchdog timer cannot be disabled, add this flag to | ||
18 | have the driver keep toggling the signal without a client. It will only cease | ||
19 | to toggle the signal when the device is open and the timeout elapsed. | ||
20 | |||
16 | Example: | 21 | Example: |
17 | watchdog: watchdog { | 22 | watchdog: watchdog { |
18 | /* ADM706 */ | 23 | /* ADM706 */ |
diff --git a/Documentation/devicetree/bindings/watchdog/imgpdc-wdt.txt b/Documentation/devicetree/bindings/watchdog/imgpdc-wdt.txt new file mode 100644 index 000000000000..b2fa11fd43de --- /dev/null +++ b/Documentation/devicetree/bindings/watchdog/imgpdc-wdt.txt | |||
@@ -0,0 +1,19 @@ | |||
1 | *ImgTec PowerDown Controller (PDC) Watchdog Timer (WDT) | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : Should be "img,pdc-wdt" | ||
5 | - reg : Should contain WDT registers location and length | ||
6 | - clocks: Must contain an entry for each entry in clock-names. | ||
7 | - clock-names: Should contain "wdt" and "sys"; the watchdog counter | ||
8 | clock and register interface clock respectively. | ||
9 | - interrupts : Should contain WDT interrupt | ||
10 | |||
11 | Examples: | ||
12 | |||
13 | watchdog@18102100 { | ||
14 | compatible = "img,pdc-wdt"; | ||
15 | reg = <0x18102100 0x100>; | ||
16 | clocks = <&pdc_wdt_clk>, <&sys_clk>; | ||
17 | clock-names = "wdt", "sys"; | ||
18 | interrupts = <0 52 IRQ_TYPE_LEVEL_HIGH>; | ||
19 | }; | ||
diff --git a/Documentation/devicetree/bindings/watchdog/ingenic,jz4740-wdt.txt b/Documentation/devicetree/bindings/watchdog/ingenic,jz4740-wdt.txt new file mode 100644 index 000000000000..e27763ef0049 --- /dev/null +++ b/Documentation/devicetree/bindings/watchdog/ingenic,jz4740-wdt.txt | |||
@@ -0,0 +1,12 @@ | |||
1 | Ingenic Watchdog Timer (WDT) Controller for JZ4740 | ||
2 | |||
3 | Required properties: | ||
4 | compatible: "ingenic,jz4740-watchdog" | ||
5 | reg: Register address and length for watchdog registers | ||
6 | |||
7 | Example: | ||
8 | |||
9 | watchdog: jz4740-watchdog@0x10002000 { | ||
10 | compatible = "ingenic,jz4740-watchdog"; | ||
11 | reg = <0x10002000 0x100>; | ||
12 | }; | ||
diff --git a/Documentation/devicetree/bindings/watchdog/mtk-wdt.txt b/Documentation/devicetree/bindings/watchdog/mtk-wdt.txt new file mode 100644 index 000000000000..af9eb5b8a253 --- /dev/null +++ b/Documentation/devicetree/bindings/watchdog/mtk-wdt.txt | |||
@@ -0,0 +1,13 @@ | |||
1 | Mediatek SoCs Watchdog timer | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible : should be "mediatek,mt6589-wdt" | ||
6 | - reg : Specifies base physical address and size of the registers. | ||
7 | |||
8 | Example: | ||
9 | |||
10 | wdt: watchdog@010000000 { | ||
11 | compatible = "mediatek,mt6589-wdt"; | ||
12 | reg = <0x10000000 0x18>; | ||
13 | }; | ||
diff --git a/Documentation/devicetree/overlay-notes.txt b/Documentation/devicetree/overlay-notes.txt index 30ae758e3eef..d418a6ce9812 100644 --- a/Documentation/devicetree/overlay-notes.txt +++ b/Documentation/devicetree/overlay-notes.txt | |||
@@ -10,7 +10,7 @@ How overlays work | |||
10 | ----------------- | 10 | ----------------- |
11 | 11 | ||
12 | A Device Tree's overlay purpose is to modify the kernel's live tree, and | 12 | A Device Tree's overlay purpose is to modify the kernel's live tree, and |
13 | have the modification affecting the state of the the kernel in a way that | 13 | have the modification affecting the state of the kernel in a way that |
14 | is reflecting the changes. | 14 | is reflecting the changes. |
15 | Since the kernel mainly deals with devices, any new device node that result | 15 | Since the kernel mainly deals with devices, any new device node that result |
16 | in an active device should have it created while if the device node is either | 16 | in an active device should have it created while if the device node is either |
@@ -80,7 +80,7 @@ result in foo+bar.dts | |||
80 | }; | 80 | }; |
81 | ---- foo+bar.dts ------------------------------------------------------------- | 81 | ---- foo+bar.dts ------------------------------------------------------------- |
82 | 82 | ||
83 | As a result of the the overlay, a new device node (bar) has been created | 83 | As a result of the overlay, a new device node (bar) has been created |
84 | so a bar platform device will be registered and if a matching device driver | 84 | so a bar platform device will be registered and if a matching device driver |
85 | is loaded the device will be created as expected. | 85 | is loaded the device will be created as expected. |
86 | 86 | ||
diff --git a/Documentation/dmaengine/00-INDEX b/Documentation/dmaengine/00-INDEX new file mode 100644 index 000000000000..07de6573d22b --- /dev/null +++ b/Documentation/dmaengine/00-INDEX | |||
@@ -0,0 +1,8 @@ | |||
1 | 00-INDEX | ||
2 | - this file. | ||
3 | client.txt | ||
4 | -the DMA Engine API Guide. | ||
5 | dmatest.txt | ||
6 | - how to compile, configure and use the dmatest system. | ||
7 | provider.txt | ||
8 | - the DMA controller API. \ No newline at end of file | ||
diff --git a/Documentation/dmaengine/provider.txt b/Documentation/dmaengine/provider.txt index 766658ccf235..05d2280190f1 100644 --- a/Documentation/dmaengine/provider.txt +++ b/Documentation/dmaengine/provider.txt | |||
@@ -113,6 +113,31 @@ need to initialize a few fields in there: | |||
113 | * channels: should be initialized as a list using the | 113 | * channels: should be initialized as a list using the |
114 | INIT_LIST_HEAD macro for example | 114 | INIT_LIST_HEAD macro for example |
115 | 115 | ||
116 | * src_addr_widths: | ||
117 | - should contain a bitmask of the supported source transfer width | ||
118 | |||
119 | * dst_addr_widths: | ||
120 | - should contain a bitmask of the supported destination transfer | ||
121 | width | ||
122 | |||
123 | * directions: | ||
124 | - should contain a bitmask of the supported slave directions | ||
125 | (i.e. excluding mem2mem transfers) | ||
126 | |||
127 | * residue_granularity: | ||
128 | - Granularity of the transfer residue reported to dma_set_residue. | ||
129 | - This can be either: | ||
130 | + Descriptor | ||
131 | -> Your device doesn't support any kind of residue | ||
132 | reporting. The framework will only know that a particular | ||
133 | transaction descriptor is done. | ||
134 | + Segment | ||
135 | -> Your device is able to report which chunks have been | ||
136 | transferred | ||
137 | + Burst | ||
138 | -> Your device is able to report which burst have been | ||
139 | transferred | ||
140 | |||
116 | * dev: should hold the pointer to the struct device associated | 141 | * dev: should hold the pointer to the struct device associated |
117 | to your current driver instance. | 142 | to your current driver instance. |
118 | 143 | ||
@@ -274,48 +299,36 @@ supported. | |||
274 | account the current period. | 299 | account the current period. |
275 | - This function can be called in an interrupt context. | 300 | - This function can be called in an interrupt context. |
276 | 301 | ||
277 | * device_control | 302 | * device_config |
278 | - Used by client drivers to control and configure the channel it | 303 | - Reconfigures the channel with the configuration given as |
279 | has a handle on. | 304 | argument |
280 | - Called with a command and an argument | 305 | - This command should NOT perform synchronously, or on any |
281 | + The command is one of the values listed by the enum | 306 | currently queued transfers, but only on subsequent ones |
282 | dma_ctrl_cmd. The valid commands are: | 307 | - In this case, the function will receive a dma_slave_config |
283 | + DMA_PAUSE | 308 | structure pointer as an argument, that will detail which |
284 | + Pauses a transfer on the channel | 309 | configuration to use. |
285 | + This command should operate synchronously on the channel, | 310 | - Even though that structure contains a direction field, this |
286 | pausing right away the work of the given channel | 311 | field is deprecated in favor of the direction argument given to |
287 | + DMA_RESUME | 312 | the prep_* functions |
288 | + Restarts a transfer on the channel | 313 | - This call is mandatory for slave operations only. This should NOT be |
289 | + This command should operate synchronously on the channel, | 314 | set or expected to be set for memcpy operations. |
290 | resuming right away the work of the given channel | 315 | If a driver support both, it should use this call for slave |
291 | + DMA_TERMINATE_ALL | 316 | operations only and not for memcpy ones. |
292 | + Aborts all the pending and ongoing transfers on the | 317 | |
293 | channel | 318 | * device_pause |
294 | + This command should operate synchronously on the channel, | 319 | - Pauses a transfer on the channel |
295 | terminating right away all the channels | 320 | - This command should operate synchronously on the channel, |
296 | + DMA_SLAVE_CONFIG | 321 | pausing right away the work of the given channel |
297 | + Reconfigures the channel with passed configuration | 322 | |
298 | + This command should NOT perform synchronously, or on any | 323 | * device_resume |
299 | currently queued transfers, but only on subsequent ones | 324 | - Resumes a transfer on the channel |
300 | + In this case, the function will receive a | 325 | - This command should operate synchronously on the channel, |
301 | dma_slave_config structure pointer as an argument, that | 326 | pausing right away the work of the given channel |
302 | will detail which configuration to use. | 327 | |
303 | + Even though that structure contains a direction field, | 328 | * device_terminate_all |
304 | this field is deprecated in favor of the direction | 329 | - Aborts all the pending and ongoing transfers on the channel |
305 | argument given to the prep_* functions | 330 | - This command should operate synchronously on the channel, |
306 | + FSLDMA_EXTERNAL_START | 331 | terminating right away all the channels |
307 | + TODO: Why does that even exist? | ||
308 | + The argument is an opaque unsigned long. This actually is a | ||
309 | pointer to a struct dma_slave_config that should be used only | ||
310 | in the DMA_SLAVE_CONFIG. | ||
311 | |||
312 | * device_slave_caps | ||
313 | - Called through the framework by client drivers in order to have | ||
314 | an idea of what are the properties of the channel allocated to | ||
315 | them. | ||
316 | - Such properties are the buswidth, available directions, etc. | ||
317 | - Required for every generic layer doing DMA transfers, such as | ||
318 | ASoC. | ||
319 | 332 | ||
320 | Misc notes (stuff that should be documented, but don't really know | 333 | Misc notes (stuff that should be documented, but don't really know |
321 | where to put them) | 334 | where to put them) |
diff --git a/Documentation/driver-model/bus.txt b/Documentation/driver-model/bus.txt index 6754b2df8aa1..b577a45b93ea 100644 --- a/Documentation/driver-model/bus.txt +++ b/Documentation/driver-model/bus.txt | |||
@@ -45,7 +45,7 @@ them are inherently bus-specific. Drivers typically declare an array | |||
45 | of device IDs of devices they support that reside in a bus-specific | 45 | of device IDs of devices they support that reside in a bus-specific |
46 | driver structure. | 46 | driver structure. |
47 | 47 | ||
48 | The purpose of the match callback is provide the bus an opportunity to | 48 | The purpose of the match callback is to give the bus an opportunity to |
49 | determine if a particular driver supports a particular device by | 49 | determine if a particular driver supports a particular device by |
50 | comparing the device IDs the driver supports with the device ID of a | 50 | comparing the device IDs the driver supports with the device ID of a |
51 | particular device, without sacrificing bus-specific functionality or | 51 | particular device, without sacrificing bus-specific functionality or |
diff --git a/Documentation/driver-model/devres.txt b/Documentation/driver-model/devres.txt index b5ab416cd53a..6d1e8eeb5990 100644 --- a/Documentation/driver-model/devres.txt +++ b/Documentation/driver-model/devres.txt | |||
@@ -258,6 +258,8 @@ IIO | |||
258 | devm_iio_device_free() | 258 | devm_iio_device_free() |
259 | devm_iio_device_register() | 259 | devm_iio_device_register() |
260 | devm_iio_device_unregister() | 260 | devm_iio_device_unregister() |
261 | devm_iio_kfifo_allocate() | ||
262 | devm_iio_kfifo_free() | ||
261 | devm_iio_trigger_alloc() | 263 | devm_iio_trigger_alloc() |
262 | devm_iio_trigger_free() | 264 | devm_iio_trigger_free() |
263 | 265 | ||
diff --git a/Documentation/filesystems/00-INDEX b/Documentation/filesystems/00-INDEX index ac28149aede4..9922939e7d99 100644 --- a/Documentation/filesystems/00-INDEX +++ b/Documentation/filesystems/00-INDEX | |||
@@ -34,6 +34,9 @@ configfs/ | |||
34 | - directory containing configfs documentation and example code. | 34 | - directory containing configfs documentation and example code. |
35 | cramfs.txt | 35 | cramfs.txt |
36 | - info on the cram filesystem for small storage (ROMs etc). | 36 | - info on the cram filesystem for small storage (ROMs etc). |
37 | dax.txt | ||
38 | - info on avoiding the page cache for files stored on CPU-addressable | ||
39 | storage devices. | ||
37 | debugfs.txt | 40 | debugfs.txt |
38 | - info on the debugfs filesystem. | 41 | - info on the debugfs filesystem. |
39 | devpts.txt | 42 | devpts.txt |
@@ -154,5 +157,3 @@ xfs-self-describing-metadata.txt | |||
154 | - info on XFS Self Describing Metadata. | 157 | - info on XFS Self Describing Metadata. |
155 | xfs.txt | 158 | xfs.txt |
156 | - info and mount options for the XFS filesystem. | 159 | - info and mount options for the XFS filesystem. |
157 | xip.txt | ||
158 | - info on execute-in-place for file mappings. | ||
diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking index b30753cbf431..2ca3d17eee56 100644 --- a/Documentation/filesystems/Locking +++ b/Documentation/filesystems/Locking | |||
@@ -199,8 +199,6 @@ prototypes: | |||
199 | int (*releasepage) (struct page *, int); | 199 | int (*releasepage) (struct page *, int); |
200 | void (*freepage)(struct page *); | 200 | void (*freepage)(struct page *); |
201 | int (*direct_IO)(int, struct kiocb *, struct iov_iter *iter, loff_t offset); | 201 | int (*direct_IO)(int, struct kiocb *, struct iov_iter *iter, loff_t offset); |
202 | int (*get_xip_mem)(struct address_space *, pgoff_t, int, void **, | ||
203 | unsigned long *); | ||
204 | int (*migratepage)(struct address_space *, struct page *, struct page *); | 202 | int (*migratepage)(struct address_space *, struct page *, struct page *); |
205 | int (*launder_page)(struct page *); | 203 | int (*launder_page)(struct page *); |
206 | int (*is_partially_uptodate)(struct page *, unsigned long, unsigned long); | 204 | int (*is_partially_uptodate)(struct page *, unsigned long, unsigned long); |
@@ -225,7 +223,6 @@ invalidatepage: yes | |||
225 | releasepage: yes | 223 | releasepage: yes |
226 | freepage: yes | 224 | freepage: yes |
227 | direct_IO: | 225 | direct_IO: |
228 | get_xip_mem: maybe | ||
229 | migratepage: yes (both) | 226 | migratepage: yes (both) |
230 | launder_page: yes | 227 | launder_page: yes |
231 | is_partially_uptodate: yes | 228 | is_partially_uptodate: yes |
diff --git a/Documentation/filesystems/dax.txt b/Documentation/filesystems/dax.txt new file mode 100644 index 000000000000..baf41118660d --- /dev/null +++ b/Documentation/filesystems/dax.txt | |||
@@ -0,0 +1,94 @@ | |||
1 | Direct Access for files | ||
2 | ----------------------- | ||
3 | |||
4 | Motivation | ||
5 | ---------- | ||
6 | |||
7 | The page cache is usually used to buffer reads and writes to files. | ||
8 | It is also used to provide the pages which are mapped into userspace | ||
9 | by a call to mmap. | ||
10 | |||
11 | For block devices that are memory-like, the page cache pages would be | ||
12 | unnecessary copies of the original storage. The DAX code removes the | ||
13 | extra copy by performing reads and writes directly to the storage device. | ||
14 | For file mappings, the storage device is mapped directly into userspace. | ||
15 | |||
16 | |||
17 | Usage | ||
18 | ----- | ||
19 | |||
20 | If you have a block device which supports DAX, you can make a filesystem | ||
21 | on it as usual. When mounting it, use the -o dax option manually | ||
22 | or add 'dax' to the options in /etc/fstab. | ||
23 | |||
24 | |||
25 | Implementation Tips for Block Driver Writers | ||
26 | -------------------------------------------- | ||
27 | |||
28 | To support DAX in your block driver, implement the 'direct_access' | ||
29 | block device operation. It is used to translate the sector number | ||
30 | (expressed in units of 512-byte sectors) to a page frame number (pfn) | ||
31 | that identifies the physical page for the memory. It also returns a | ||
32 | kernel virtual address that can be used to access the memory. | ||
33 | |||
34 | The direct_access method takes a 'size' parameter that indicates the | ||
35 | number of bytes being requested. The function should return the number | ||
36 | of bytes that can be contiguously accessed at that offset. It may also | ||
37 | return a negative errno if an error occurs. | ||
38 | |||
39 | In order to support this method, the storage must be byte-accessible by | ||
40 | the CPU at all times. If your device uses paging techniques to expose | ||
41 | a large amount of memory through a smaller window, then you cannot | ||
42 | implement direct_access. Equally, if your device can occasionally | ||
43 | stall the CPU for an extended period, you should also not attempt to | ||
44 | implement direct_access. | ||
45 | |||
46 | These block devices may be used for inspiration: | ||
47 | - axonram: Axon DDR2 device driver | ||
48 | - brd: RAM backed block device driver | ||
49 | - dcssblk: s390 dcss block device driver | ||
50 | |||
51 | |||
52 | Implementation Tips for Filesystem Writers | ||
53 | ------------------------------------------ | ||
54 | |||
55 | Filesystem support consists of | ||
56 | - adding support to mark inodes as being DAX by setting the S_DAX flag in | ||
57 | i_flags | ||
58 | - implementing the direct_IO address space operation, and calling | ||
59 | dax_do_io() instead of blockdev_direct_IO() if S_DAX is set | ||
60 | - implementing an mmap file operation for DAX files which sets the | ||
61 | VM_MIXEDMAP flag on the VMA, and setting the vm_ops to include handlers | ||
62 | for fault and page_mkwrite (which should probably call dax_fault() and | ||
63 | dax_mkwrite(), passing the appropriate get_block() callback) | ||
64 | - calling dax_truncate_page() instead of block_truncate_page() for DAX files | ||
65 | - calling dax_zero_page_range() instead of zero_user() for DAX files | ||
66 | - ensuring that there is sufficient locking between reads, writes, | ||
67 | truncates and page faults | ||
68 | |||
69 | The get_block() callback passed to the DAX functions may return | ||
70 | uninitialised extents. If it does, it must ensure that simultaneous | ||
71 | calls to get_block() (for example by a page-fault racing with a read() | ||
72 | or a write()) work correctly. | ||
73 | |||
74 | These filesystems may be used for inspiration: | ||
75 | - ext2: the second extended filesystem, see Documentation/filesystems/ext2.txt | ||
76 | - ext4: the fourth extended filesystem, see Documentation/filesystems/ext4.txt | ||
77 | |||
78 | |||
79 | Shortcomings | ||
80 | ------------ | ||
81 | |||
82 | Even if the kernel or its modules are stored on a filesystem that supports | ||
83 | DAX on a block device that supports DAX, they will still be copied into RAM. | ||
84 | |||
85 | The DAX code does not work correctly on architectures which have virtually | ||
86 | mapped caches such as ARM, MIPS and SPARC. | ||
87 | |||
88 | Calling get_user_pages() on a range of user memory that has been mmaped | ||
89 | from a DAX file will fail as there are no 'struct page' to describe | ||
90 | those pages. This problem is being worked on. That means that O_DIRECT | ||
91 | reads/writes to those memory ranges from a non-DAX file will fail (note | ||
92 | that O_DIRECT reads/writes _of a DAX file_ do work, it is the memory | ||
93 | that is being accessed that is key here). Other things that will not | ||
94 | work include RDMA, sendfile() and splice(). | ||
diff --git a/Documentation/filesystems/ext2.txt b/Documentation/filesystems/ext2.txt index 67639f905f10..b9714569e472 100644 --- a/Documentation/filesystems/ext2.txt +++ b/Documentation/filesystems/ext2.txt | |||
@@ -20,6 +20,9 @@ minixdf Makes `df' act like Minix. | |||
20 | check=none, nocheck (*) Don't do extra checking of bitmaps on mount | 20 | check=none, nocheck (*) Don't do extra checking of bitmaps on mount |
21 | (check=normal and check=strict options removed) | 21 | (check=normal and check=strict options removed) |
22 | 22 | ||
23 | dax Use direct access (no page cache). See | ||
24 | Documentation/filesystems/dax.txt. | ||
25 | |||
23 | debug Extra debugging information is sent to the | 26 | debug Extra debugging information is sent to the |
24 | kernel syslog. Useful for developers. | 27 | kernel syslog. Useful for developers. |
25 | 28 | ||
@@ -56,8 +59,6 @@ noacl Don't support POSIX ACLs. | |||
56 | 59 | ||
57 | nobh Do not attach buffer_heads to file pagecache. | 60 | nobh Do not attach buffer_heads to file pagecache. |
58 | 61 | ||
59 | xip Use execute in place (no caching) if possible | ||
60 | |||
61 | grpquota,noquota,quota,usrquota Quota options are silently ignored by ext2. | 62 | grpquota,noquota,quota,usrquota Quota options are silently ignored by ext2. |
62 | 63 | ||
63 | 64 | ||
diff --git a/Documentation/filesystems/ext4.txt b/Documentation/filesystems/ext4.txt index 919a3293aaa4..6c0108eb0137 100644 --- a/Documentation/filesystems/ext4.txt +++ b/Documentation/filesystems/ext4.txt | |||
@@ -386,6 +386,10 @@ max_dir_size_kb=n This limits the size of directories so that any | |||
386 | i_version Enable 64-bit inode version support. This option is | 386 | i_version Enable 64-bit inode version support. This option is |
387 | off by default. | 387 | off by default. |
388 | 388 | ||
389 | dax Use direct access (no page cache). See | ||
390 | Documentation/filesystems/dax.txt. Note that | ||
391 | this option is incompatible with data=journal. | ||
392 | |||
389 | Data Mode | 393 | Data Mode |
390 | ========= | 394 | ========= |
391 | There are 3 different data modes: | 395 | There are 3 different data modes: |
diff --git a/Documentation/filesystems/f2fs.txt b/Documentation/filesystems/f2fs.txt index e0950c483c22..dac11d7fef27 100644 --- a/Documentation/filesystems/f2fs.txt +++ b/Documentation/filesystems/f2fs.txt | |||
@@ -106,6 +106,8 @@ background_gc=%s Turn on/off cleaning operations, namely garbage | |||
106 | Default value for this option is on. So garbage | 106 | Default value for this option is on. So garbage |
107 | collection is on by default. | 107 | collection is on by default. |
108 | disable_roll_forward Disable the roll-forward recovery routine | 108 | disable_roll_forward Disable the roll-forward recovery routine |
109 | norecovery Disable the roll-forward recovery routine, mounted read- | ||
110 | only (i.e., -o ro,disable_roll_forward) | ||
109 | discard Issue discard/TRIM commands when a segment is cleaned. | 111 | discard Issue discard/TRIM commands when a segment is cleaned. |
110 | no_heap Disable heap-style segment allocation which finds free | 112 | no_heap Disable heap-style segment allocation which finds free |
111 | segments for data from the beginning of main area, while | 113 | segments for data from the beginning of main area, while |
@@ -197,6 +199,10 @@ Files in /sys/fs/f2fs/<devname> | |||
197 | checkpoint is triggered, and issued during the | 199 | checkpoint is triggered, and issued during the |
198 | checkpoint. By default, it is disabled with 0. | 200 | checkpoint. By default, it is disabled with 0. |
199 | 201 | ||
202 | trim_sections This parameter controls the number of sections | ||
203 | to be trimmed out in batch mode when FITRIM | ||
204 | conducts. 32 sections is set by default. | ||
205 | |||
200 | ipu_policy This parameter controls the policy of in-place | 206 | ipu_policy This parameter controls the policy of in-place |
201 | updates in f2fs. There are five policies: | 207 | updates in f2fs. There are five policies: |
202 | 0x01: F2FS_IPU_FORCE, 0x02: F2FS_IPU_SSR, | 208 | 0x01: F2FS_IPU_FORCE, 0x02: F2FS_IPU_SSR, |
diff --git a/Documentation/filesystems/fiemap.txt b/Documentation/filesystems/fiemap.txt index 1b805a0efbb0..f6d9c99103a4 100644 --- a/Documentation/filesystems/fiemap.txt +++ b/Documentation/filesystems/fiemap.txt | |||
@@ -196,7 +196,8 @@ struct fiemap_extent_info { | |||
196 | }; | 196 | }; |
197 | 197 | ||
198 | It is intended that the file system should not need to access any of this | 198 | It is intended that the file system should not need to access any of this |
199 | structure directly. | 199 | structure directly. Filesystem handlers should be tolerant to signals and return |
200 | EINTR once fatal signal received. | ||
200 | 201 | ||
201 | 202 | ||
202 | Flag checking should be done at the beginning of the ->fiemap callback via the | 203 | Flag checking should be done at the beginning of the ->fiemap callback via the |
diff --git a/Documentation/filesystems/inotify.txt b/Documentation/filesystems/inotify.txt index cfd02712b83e..51f61db787fb 100644 --- a/Documentation/filesystems/inotify.txt +++ b/Documentation/filesystems/inotify.txt | |||
@@ -4,201 +4,10 @@ | |||
4 | 4 | ||
5 | 5 | ||
6 | Document started 15 Mar 2005 by Robert Love <rml@novell.com> | 6 | Document started 15 Mar 2005 by Robert Love <rml@novell.com> |
7 | Document updated 4 Jan 2015 by Zhang Zhen <zhenzhang.zhang@huawei.com> | ||
8 | --Deleted obsoleted interface, just refer to manpages for user interface. | ||
7 | 9 | ||
8 | 10 | (i) Rationale | |
9 | (i) User Interface | ||
10 | |||
11 | Inotify is controlled by a set of three system calls and normal file I/O on a | ||
12 | returned file descriptor. | ||
13 | |||
14 | First step in using inotify is to initialise an inotify instance: | ||
15 | |||
16 | int fd = inotify_init (); | ||
17 | |||
18 | Each instance is associated with a unique, ordered queue. | ||
19 | |||
20 | Change events are managed by "watches". A watch is an (object,mask) pair where | ||
21 | the object is a file or directory and the mask is a bit mask of one or more | ||
22 | inotify events that the application wishes to receive. See <linux/inotify.h> | ||
23 | for valid events. A watch is referenced by a watch descriptor, or wd. | ||
24 | |||
25 | Watches are added via a path to the file. | ||
26 | |||
27 | Watches on a directory will return events on any files inside of the directory. | ||
28 | |||
29 | Adding a watch is simple: | ||
30 | |||
31 | int wd = inotify_add_watch (fd, path, mask); | ||
32 | |||
33 | Where "fd" is the return value from inotify_init(), path is the path to the | ||
34 | object to watch, and mask is the watch mask (see <linux/inotify.h>). | ||
35 | |||
36 | You can update an existing watch in the same manner, by passing in a new mask. | ||
37 | |||
38 | An existing watch is removed via | ||
39 | |||
40 | int ret = inotify_rm_watch (fd, wd); | ||
41 | |||
42 | Events are provided in the form of an inotify_event structure that is read(2) | ||
43 | from a given inotify instance. The filename is of dynamic length and follows | ||
44 | the struct. It is of size len. The filename is padded with null bytes to | ||
45 | ensure proper alignment. This padding is reflected in len. | ||
46 | |||
47 | You can slurp multiple events by passing a large buffer, for example | ||
48 | |||
49 | size_t len = read (fd, buf, BUF_LEN); | ||
50 | |||
51 | Where "buf" is a pointer to an array of "inotify_event" structures at least | ||
52 | BUF_LEN bytes in size. The above example will return as many events as are | ||
53 | available and fit in BUF_LEN. | ||
54 | |||
55 | Each inotify instance fd is also select()- and poll()-able. | ||
56 | |||
57 | You can find the size of the current event queue via the standard FIONREAD | ||
58 | ioctl on the fd returned by inotify_init(). | ||
59 | |||
60 | All watches are destroyed and cleaned up on close. | ||
61 | |||
62 | |||
63 | (ii) | ||
64 | |||
65 | Prototypes: | ||
66 | |||
67 | int inotify_init (void); | ||
68 | int inotify_add_watch (int fd, const char *path, __u32 mask); | ||
69 | int inotify_rm_watch (int fd, __u32 mask); | ||
70 | |||
71 | |||
72 | (iii) Kernel Interface | ||
73 | |||
74 | Inotify's kernel API consists a set of functions for managing watches and an | ||
75 | event callback. | ||
76 | |||
77 | To use the kernel API, you must first initialize an inotify instance with a set | ||
78 | of inotify_operations. You are given an opaque inotify_handle, which you use | ||
79 | for any further calls to inotify. | ||
80 | |||
81 | struct inotify_handle *ih = inotify_init(my_event_handler); | ||
82 | |||
83 | You must provide a function for processing events and a function for destroying | ||
84 | the inotify watch. | ||
85 | |||
86 | void handle_event(struct inotify_watch *watch, u32 wd, u32 mask, | ||
87 | u32 cookie, const char *name, struct inode *inode) | ||
88 | |||
89 | watch - the pointer to the inotify_watch that triggered this call | ||
90 | wd - the watch descriptor | ||
91 | mask - describes the event that occurred | ||
92 | cookie - an identifier for synchronizing events | ||
93 | name - the dentry name for affected files in a directory-based event | ||
94 | inode - the affected inode in a directory-based event | ||
95 | |||
96 | void destroy_watch(struct inotify_watch *watch) | ||
97 | |||
98 | You may add watches by providing a pre-allocated and initialized inotify_watch | ||
99 | structure and specifying the inode to watch along with an inotify event mask. | ||
100 | You must pin the inode during the call. You will likely wish to embed the | ||
101 | inotify_watch structure in a structure of your own which contains other | ||
102 | information about the watch. Once you add an inotify watch, it is immediately | ||
103 | subject to removal depending on filesystem events. You must grab a reference if | ||
104 | you depend on the watch hanging around after the call. | ||
105 | |||
106 | inotify_init_watch(&my_watch->iwatch); | ||
107 | inotify_get_watch(&my_watch->iwatch); // optional | ||
108 | s32 wd = inotify_add_watch(ih, &my_watch->iwatch, inode, mask); | ||
109 | inotify_put_watch(&my_watch->iwatch); // optional | ||
110 | |||
111 | You may use the watch descriptor (wd) or the address of the inotify_watch for | ||
112 | other inotify operations. You must not directly read or manipulate data in the | ||
113 | inotify_watch. Additionally, you must not call inotify_add_watch() more than | ||
114 | once for a given inotify_watch structure, unless you have first called either | ||
115 | inotify_rm_watch() or inotify_rm_wd(). | ||
116 | |||
117 | To determine if you have already registered a watch for a given inode, you may | ||
118 | call inotify_find_watch(), which gives you both the wd and the watch pointer for | ||
119 | the inotify_watch, or an error if the watch does not exist. | ||
120 | |||
121 | wd = inotify_find_watch(ih, inode, &watchp); | ||
122 | |||
123 | You may use container_of() on the watch pointer to access your own data | ||
124 | associated with a given watch. When an existing watch is found, | ||
125 | inotify_find_watch() bumps the refcount before releasing its locks. You must | ||
126 | put that reference with: | ||
127 | |||
128 | put_inotify_watch(watchp); | ||
129 | |||
130 | Call inotify_find_update_watch() to update the event mask for an existing watch. | ||
131 | inotify_find_update_watch() returns the wd of the updated watch, or an error if | ||
132 | the watch does not exist. | ||
133 | |||
134 | wd = inotify_find_update_watch(ih, inode, mask); | ||
135 | |||
136 | An existing watch may be removed by calling either inotify_rm_watch() or | ||
137 | inotify_rm_wd(). | ||
138 | |||
139 | int ret = inotify_rm_watch(ih, &my_watch->iwatch); | ||
140 | int ret = inotify_rm_wd(ih, wd); | ||
141 | |||
142 | A watch may be removed while executing your event handler with the following: | ||
143 | |||
144 | inotify_remove_watch_locked(ih, iwatch); | ||
145 | |||
146 | Call inotify_destroy() to remove all watches from your inotify instance and | ||
147 | release it. If there are no outstanding references, inotify_destroy() will call | ||
148 | your destroy_watch op for each watch. | ||
149 | |||
150 | inotify_destroy(ih); | ||
151 | |||
152 | When inotify removes a watch, it sends an IN_IGNORED event to your callback. | ||
153 | You may use this event as an indication to free the watch memory. Note that | ||
154 | inotify may remove a watch due to filesystem events, as well as by your request. | ||
155 | If you use IN_ONESHOT, inotify will remove the watch after the first event, at | ||
156 | which point you may call the final inotify_put_watch. | ||
157 | |||
158 | (iv) Kernel Interface Prototypes | ||
159 | |||
160 | struct inotify_handle *inotify_init(struct inotify_operations *ops); | ||
161 | |||
162 | inotify_init_watch(struct inotify_watch *watch); | ||
163 | |||
164 | s32 inotify_add_watch(struct inotify_handle *ih, | ||
165 | struct inotify_watch *watch, | ||
166 | struct inode *inode, u32 mask); | ||
167 | |||
168 | s32 inotify_find_watch(struct inotify_handle *ih, struct inode *inode, | ||
169 | struct inotify_watch **watchp); | ||
170 | |||
171 | s32 inotify_find_update_watch(struct inotify_handle *ih, | ||
172 | struct inode *inode, u32 mask); | ||
173 | |||
174 | int inotify_rm_wd(struct inotify_handle *ih, u32 wd); | ||
175 | |||
176 | int inotify_rm_watch(struct inotify_handle *ih, | ||
177 | struct inotify_watch *watch); | ||
178 | |||
179 | void inotify_remove_watch_locked(struct inotify_handle *ih, | ||
180 | struct inotify_watch *watch); | ||
181 | |||
182 | void inotify_destroy(struct inotify_handle *ih); | ||
183 | |||
184 | void get_inotify_watch(struct inotify_watch *watch); | ||
185 | void put_inotify_watch(struct inotify_watch *watch); | ||
186 | |||
187 | |||
188 | (v) Internal Kernel Implementation | ||
189 | |||
190 | Each inotify instance is represented by an inotify_handle structure. | ||
191 | Inotify's userspace consumers also have an inotify_device which is | ||
192 | associated with the inotify_handle, and on which events are queued. | ||
193 | |||
194 | Each watch is associated with an inotify_watch structure. Watches are chained | ||
195 | off of each associated inotify_handle and each associated inode. | ||
196 | |||
197 | See fs/notify/inotify/inotify_fsnotify.c and fs/notify/inotify/inotify_user.c | ||
198 | for the locking and lifetime rules. | ||
199 | |||
200 | |||
201 | (vi) Rationale | ||
202 | 11 | ||
203 | Q: What is the design decision behind not tying the watch to the open fd of | 12 | Q: What is the design decision behind not tying the watch to the open fd of |
204 | the watched object? | 13 | the watched object? |
diff --git a/Documentation/filesystems/nfs/nfs41-server.txt b/Documentation/filesystems/nfs/nfs41-server.txt index c49cd7e796e7..682a59fabe3f 100644 --- a/Documentation/filesystems/nfs/nfs41-server.txt +++ b/Documentation/filesystems/nfs/nfs41-server.txt | |||
@@ -24,11 +24,6 @@ focuses on the mandatory-to-implement NFSv4.1 Sessions, providing | |||
24 | "exactly once" semantics and better control and throttling of the | 24 | "exactly once" semantics and better control and throttling of the |
25 | resources allocated for each client. | 25 | resources allocated for each client. |
26 | 26 | ||
27 | Other NFSv4.1 features, Parallel NFS operations in particular, | ||
28 | are still under development out of tree. | ||
29 | See http://wiki.linux-nfs.org/wiki/index.php/PNFS_prototype_design | ||
30 | for more information. | ||
31 | |||
32 | The table below, taken from the NFSv4.1 document, lists | 27 | The table below, taken from the NFSv4.1 document, lists |
33 | the operations that are mandatory to implement (REQ), optional | 28 | the operations that are mandatory to implement (REQ), optional |
34 | (OPT), and NFSv4.0 operations that are required not to implement (MNI) | 29 | (OPT), and NFSv4.0 operations that are required not to implement (MNI) |
@@ -43,9 +38,7 @@ The OPTIONAL features identified and their abbreviations are as follows: | |||
43 | The following abbreviations indicate the linux server implementation status. | 38 | The following abbreviations indicate the linux server implementation status. |
44 | I Implemented NFSv4.1 operations. | 39 | I Implemented NFSv4.1 operations. |
45 | NS Not Supported. | 40 | NS Not Supported. |
46 | NS* unimplemented optional feature. | 41 | NS* Unimplemented optional feature. |
47 | P pNFS features implemented out of tree. | ||
48 | PNS pNFS features that are not supported yet (out of tree). | ||
49 | 42 | ||
50 | Operations | 43 | Operations |
51 | 44 | ||
@@ -70,13 +63,13 @@ I | DESTROY_SESSION | REQ | | Section 18.37 | | |||
70 | I | EXCHANGE_ID | REQ | | Section 18.35 | | 63 | I | EXCHANGE_ID | REQ | | Section 18.35 | |
71 | I | FREE_STATEID | REQ | | Section 18.38 | | 64 | I | FREE_STATEID | REQ | | Section 18.38 | |
72 | | GETATTR | REQ | | Section 18.7 | | 65 | | GETATTR | REQ | | Section 18.7 | |
73 | P | GETDEVICEINFO | OPT | pNFS (REQ) | Section 18.40 | | 66 | I | GETDEVICEINFO | OPT | pNFS (REQ) | Section 18.40 | |
74 | P | GETDEVICELIST | OPT | pNFS (OPT) | Section 18.41 | | 67 | NS*| GETDEVICELIST | OPT | pNFS (OPT) | Section 18.41 | |
75 | | GETFH | REQ | | Section 18.8 | | 68 | | GETFH | REQ | | Section 18.8 | |
76 | NS*| GET_DIR_DELEGATION | OPT | DDELG (REQ) | Section 18.39 | | 69 | NS*| GET_DIR_DELEGATION | OPT | DDELG (REQ) | Section 18.39 | |
77 | P | LAYOUTCOMMIT | OPT | pNFS (REQ) | Section 18.42 | | 70 | I | LAYOUTCOMMIT | OPT | pNFS (REQ) | Section 18.42 | |
78 | P | LAYOUTGET | OPT | pNFS (REQ) | Section 18.43 | | 71 | I | LAYOUTGET | OPT | pNFS (REQ) | Section 18.43 | |
79 | P | LAYOUTRETURN | OPT | pNFS (REQ) | Section 18.44 | | 72 | I | LAYOUTRETURN | OPT | pNFS (REQ) | Section 18.44 | |
80 | | LINK | OPT | | Section 18.9 | | 73 | | LINK | OPT | | Section 18.9 | |
81 | | LOCK | REQ | | Section 18.10 | | 74 | | LOCK | REQ | | Section 18.10 | |
82 | | LOCKT | REQ | | Section 18.11 | | 75 | | LOCKT | REQ | | Section 18.11 | |
@@ -122,9 +115,9 @@ Callback Operations | |||
122 | | | MNI | or OPT) | | | 115 | | | MNI | or OPT) | | |
123 | +-------------------------+-----------+-------------+---------------+ | 116 | +-------------------------+-----------+-------------+---------------+ |
124 | | CB_GETATTR | OPT | FDELG (REQ) | Section 20.1 | | 117 | | CB_GETATTR | OPT | FDELG (REQ) | Section 20.1 | |
125 | P | CB_LAYOUTRECALL | OPT | pNFS (REQ) | Section 20.3 | | 118 | I | CB_LAYOUTRECALL | OPT | pNFS (REQ) | Section 20.3 | |
126 | NS*| CB_NOTIFY | OPT | DDELG (REQ) | Section 20.4 | | 119 | NS*| CB_NOTIFY | OPT | DDELG (REQ) | Section 20.4 | |
127 | P | CB_NOTIFY_DEVICEID | OPT | pNFS (OPT) | Section 20.12 | | 120 | NS*| CB_NOTIFY_DEVICEID | OPT | pNFS (OPT) | Section 20.12 | |
128 | NS*| CB_NOTIFY_LOCK | OPT | | Section 20.11 | | 121 | NS*| CB_NOTIFY_LOCK | OPT | | Section 20.11 | |
129 | NS*| CB_PUSH_DELEG | OPT | FDELG (OPT) | Section 20.5 | | 122 | NS*| CB_PUSH_DELEG | OPT | FDELG (OPT) | Section 20.5 | |
130 | | CB_RECALL | OPT | FDELG, | Section 20.2 | | 123 | | CB_RECALL | OPT | FDELG, | Section 20.2 | |
diff --git a/Documentation/filesystems/nfs/pnfs-block-server.txt b/Documentation/filesystems/nfs/pnfs-block-server.txt new file mode 100644 index 000000000000..2143673cf154 --- /dev/null +++ b/Documentation/filesystems/nfs/pnfs-block-server.txt | |||
@@ -0,0 +1,37 @@ | |||
1 | pNFS block layout server user guide | ||
2 | |||
3 | The Linux NFS server now supports the pNFS block layout extension. In this | ||
4 | case the NFS server acts as Metadata Server (MDS) for pNFS, which in addition | ||
5 | to handling all the metadata access to the NFS export also hands out layouts | ||
6 | to the clients to directly access the underlying block devices that are | ||
7 | shared with the client. | ||
8 | |||
9 | To use pNFS block layouts with with the Linux NFS server the exported file | ||
10 | system needs to support the pNFS block layouts (currently just XFS), and the | ||
11 | file system must sit on shared storage (typically iSCSI) that is accessible | ||
12 | to the clients in addition to the MDS. As of now the file system needs to | ||
13 | sit directly on the exported volume, striping or concatenation of | ||
14 | volumes on the MDS and clients is not supported yet. | ||
15 | |||
16 | On the server, pNFS block volume support is automatically if the file system | ||
17 | support it. On the client make sure the kernel has the CONFIG_PNFS_BLOCK | ||
18 | option enabled, the blkmapd daemon from nfs-utils is running, and the | ||
19 | file system is mounted using the NFSv4.1 protocol version (mount -o vers=4.1). | ||
20 | |||
21 | If the nfsd server needs to fence a non-responding client it calls | ||
22 | /sbin/nfsd-recall-failed with the first argument set to the IP address of | ||
23 | the client, and the second argument set to the device node without the /dev | ||
24 | prefix for the file system to be fenced. Below is an example file that shows | ||
25 | how to translate the device into a serial number from SCSI EVPD 0x80: | ||
26 | |||
27 | cat > /sbin/nfsd-recall-failed << EOF | ||
28 | #!/bin/sh | ||
29 | |||
30 | CLIENT="$1" | ||
31 | DEV="/dev/$2" | ||
32 | EVPD=`sg_inq --page=0x80 ${DEV} | \ | ||
33 | grep "Unit serial number:" | \ | ||
34 | awk -F ': ' '{print $2}'` | ||
35 | |||
36 | echo "fencing client ${CLIENT} serial ${EVPD}" >> /var/log/pnfsd-fence.log | ||
37 | EOF | ||
diff --git a/Documentation/filesystems/nfs/pnfs.txt b/Documentation/filesystems/nfs/pnfs.txt index adc81a35fe2d..44a9f2493a88 100644 --- a/Documentation/filesystems/nfs/pnfs.txt +++ b/Documentation/filesystems/nfs/pnfs.txt | |||
@@ -57,15 +57,16 @@ bit is set, preventing any new lsegs from being added. | |||
57 | layout drivers | 57 | layout drivers |
58 | -------------- | 58 | -------------- |
59 | 59 | ||
60 | PNFS utilizes what is called layout drivers. The STD defines 3 basic | 60 | PNFS utilizes what is called layout drivers. The STD defines 4 basic |
61 | layout types: "files" "objects" and "blocks". For each of these types | 61 | layout types: "files", "objects", "blocks", and "flexfiles". For each |
62 | there is a layout-driver with a common function-vectors table which | 62 | of these types there is a layout-driver with a common function-vectors |
63 | are called by the nfs-client pnfs-core to implement the different layout | 63 | table which are called by the nfs-client pnfs-core to implement the |
64 | types. | 64 | different layout types. |
65 | 65 | ||
66 | Files-layout-driver code is in: fs/nfs/nfs4filelayout.c && nfs4filelayoutdev.c | 66 | Files-layout-driver code is in: fs/nfs/filelayout/.. directory |
67 | Objects-layout-deriver code is in: fs/nfs/objlayout/.. directory | 67 | Objects-layout-deriver code is in: fs/nfs/objlayout/.. directory |
68 | Blocks-layout-deriver code is in: fs/nfs/blocklayout/.. directory | 68 | Blocks-layout-deriver code is in: fs/nfs/blocklayout/.. directory |
69 | Flexfiles-layout-driver code is in: fs/nfs/flexfilelayout/.. directory | ||
69 | 70 | ||
70 | objects-layout setup | 71 | objects-layout setup |
71 | -------------------- | 72 | -------------------- |
diff --git a/Documentation/filesystems/ocfs2.txt b/Documentation/filesystems/ocfs2.txt index 7618a287aa41..28f8c08201e2 100644 --- a/Documentation/filesystems/ocfs2.txt +++ b/Documentation/filesystems/ocfs2.txt | |||
@@ -100,3 +100,7 @@ coherency=full (*) Disallow concurrent O_DIRECT writes, cluster inode | |||
100 | coherency=buffered Allow concurrent O_DIRECT writes without EX lock among | 100 | coherency=buffered Allow concurrent O_DIRECT writes without EX lock among |
101 | nodes, which gains high performance at risk of getting | 101 | nodes, which gains high performance at risk of getting |
102 | stale data on other nodes. | 102 | stale data on other nodes. |
103 | journal_async_commit Commit block can be written to disk without waiting | ||
104 | for descriptor blocks. If enabled older kernels cannot | ||
105 | mount the device. This will enable 'journal_checksum' | ||
106 | internally. | ||
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt index aae9dd13c91f..a07ba61662ed 100644 --- a/Documentation/filesystems/proc.txt +++ b/Documentation/filesystems/proc.txt | |||
@@ -28,7 +28,7 @@ Table of Contents | |||
28 | 1.6 Parallel port info in /proc/parport | 28 | 1.6 Parallel port info in /proc/parport |
29 | 1.7 TTY info in /proc/tty | 29 | 1.7 TTY info in /proc/tty |
30 | 1.8 Miscellaneous kernel statistics in /proc/stat | 30 | 1.8 Miscellaneous kernel statistics in /proc/stat |
31 | 1.9 Ext4 file system parameters | 31 | 1.9 Ext4 file system parameters |
32 | 32 | ||
33 | 2 Modifying System Parameters | 33 | 2 Modifying System Parameters |
34 | 34 | ||
@@ -42,6 +42,7 @@ Table of Contents | |||
42 | 3.6 /proc/<pid>/comm & /proc/<pid>/task/<tid>/comm | 42 | 3.6 /proc/<pid>/comm & /proc/<pid>/task/<tid>/comm |
43 | 3.7 /proc/<pid>/task/<tid>/children - Information about task children | 43 | 3.7 /proc/<pid>/task/<tid>/children - Information about task children |
44 | 3.8 /proc/<pid>/fdinfo/<fd> - Information about opened file | 44 | 3.8 /proc/<pid>/fdinfo/<fd> - Information about opened file |
45 | 3.9 /proc/<pid>/map_files - Information about memory mapped files | ||
45 | 46 | ||
46 | 4 Configuring procfs | 47 | 4 Configuring procfs |
47 | 4.1 Mount options | 48 | 4.1 Mount options |
@@ -144,6 +145,8 @@ Table 1-1: Process specific entries in /proc | |||
144 | stack Report full stack trace, enable via CONFIG_STACKTRACE | 145 | stack Report full stack trace, enable via CONFIG_STACKTRACE |
145 | smaps a extension based on maps, showing the memory consumption of | 146 | smaps a extension based on maps, showing the memory consumption of |
146 | each mapping and flags associated with it | 147 | each mapping and flags associated with it |
148 | numa_maps an extension based on maps, showing the memory locality and | ||
149 | binding policy as well as mem usage (in pages) of each mapping. | ||
147 | .............................................................................. | 150 | .............................................................................. |
148 | 151 | ||
149 | For example, to get the status information of a process, all you have to do is | 152 | For example, to get the status information of a process, all you have to do is |
@@ -488,12 +491,47 @@ To clear the bits for the file mapped pages associated with the process | |||
488 | To clear the soft-dirty bit | 491 | To clear the soft-dirty bit |
489 | > echo 4 > /proc/PID/clear_refs | 492 | > echo 4 > /proc/PID/clear_refs |
490 | 493 | ||
494 | To reset the peak resident set size ("high water mark") to the process's | ||
495 | current value: | ||
496 | > echo 5 > /proc/PID/clear_refs | ||
497 | |||
491 | Any other value written to /proc/PID/clear_refs will have no effect. | 498 | Any other value written to /proc/PID/clear_refs will have no effect. |
492 | 499 | ||
493 | The /proc/pid/pagemap gives the PFN, which can be used to find the pageflags | 500 | The /proc/pid/pagemap gives the PFN, which can be used to find the pageflags |
494 | using /proc/kpageflags and number of times a page is mapped using | 501 | using /proc/kpageflags and number of times a page is mapped using |
495 | /proc/kpagecount. For detailed explanation, see Documentation/vm/pagemap.txt. | 502 | /proc/kpagecount. For detailed explanation, see Documentation/vm/pagemap.txt. |
496 | 503 | ||
504 | The /proc/pid/numa_maps is an extension based on maps, showing the memory | ||
505 | locality and binding policy, as well as the memory usage (in pages) of | ||
506 | each mapping. The output follows a general format where mapping details get | ||
507 | summarized separated by blank spaces, one mapping per each file line: | ||
508 | |||
509 | address policy mapping details | ||
510 | |||
511 | 00400000 default file=/usr/local/bin/app mapped=1 active=0 N3=1 kernelpagesize_kB=4 | ||
512 | 00600000 default file=/usr/local/bin/app anon=1 dirty=1 N3=1 kernelpagesize_kB=4 | ||
513 | 3206000000 default file=/lib64/ld-2.12.so mapped=26 mapmax=6 N0=24 N3=2 kernelpagesize_kB=4 | ||
514 | 320621f000 default file=/lib64/ld-2.12.so anon=1 dirty=1 N3=1 kernelpagesize_kB=4 | ||
515 | 3206220000 default file=/lib64/ld-2.12.so anon=1 dirty=1 N3=1 kernelpagesize_kB=4 | ||
516 | 3206221000 default anon=1 dirty=1 N3=1 kernelpagesize_kB=4 | ||
517 | 3206800000 default file=/lib64/libc-2.12.so mapped=59 mapmax=21 active=55 N0=41 N3=18 kernelpagesize_kB=4 | ||
518 | 320698b000 default file=/lib64/libc-2.12.so | ||
519 | 3206b8a000 default file=/lib64/libc-2.12.so anon=2 dirty=2 N3=2 kernelpagesize_kB=4 | ||
520 | 3206b8e000 default file=/lib64/libc-2.12.so anon=1 dirty=1 N3=1 kernelpagesize_kB=4 | ||
521 | 3206b8f000 default anon=3 dirty=3 active=1 N3=3 kernelpagesize_kB=4 | ||
522 | 7f4dc10a2000 default anon=3 dirty=3 N3=3 kernelpagesize_kB=4 | ||
523 | 7f4dc10b4000 default anon=2 dirty=2 active=1 N3=2 kernelpagesize_kB=4 | ||
524 | 7f4dc1200000 default file=/anon_hugepage\040(deleted) huge anon=1 dirty=1 N3=1 kernelpagesize_kB=2048 | ||
525 | 7fff335f0000 default stack anon=3 dirty=3 N3=3 kernelpagesize_kB=4 | ||
526 | 7fff3369d000 default mapped=1 mapmax=35 active=0 N3=1 kernelpagesize_kB=4 | ||
527 | |||
528 | Where: | ||
529 | "address" is the starting address for the mapping; | ||
530 | "policy" reports the NUMA memory policy set for the mapping (see vm/numa_memory_policy.txt); | ||
531 | "mapping details" summarizes mapping data such as mapping type, page usage counters, | ||
532 | node locality page counters (N0 == node0, N1 == node1, ...) and the kernel page | ||
533 | size, in KB, that is backing the mapping up. | ||
534 | |||
497 | 1.2 Kernel data | 535 | 1.2 Kernel data |
498 | --------------- | 536 | --------------- |
499 | 537 | ||
@@ -1763,6 +1801,28 @@ pair provide additional information particular to the objects they represent. | |||
1763 | with TIMER_ABSTIME option which will be shown in 'settime flags', but 'it_value' | 1801 | with TIMER_ABSTIME option which will be shown in 'settime flags', but 'it_value' |
1764 | still exhibits timer's remaining time. | 1802 | still exhibits timer's remaining time. |
1765 | 1803 | ||
1804 | 3.9 /proc/<pid>/map_files - Information about memory mapped files | ||
1805 | --------------------------------------------------------------------- | ||
1806 | This directory contains symbolic links which represent memory mapped files | ||
1807 | the process is maintaining. Example output: | ||
1808 | |||
1809 | | lr-------- 1 root root 64 Jan 27 11:24 333c600000-333c620000 -> /usr/lib64/ld-2.18.so | ||
1810 | | lr-------- 1 root root 64 Jan 27 11:24 333c81f000-333c820000 -> /usr/lib64/ld-2.18.so | ||
1811 | | lr-------- 1 root root 64 Jan 27 11:24 333c820000-333c821000 -> /usr/lib64/ld-2.18.so | ||
1812 | | ... | ||
1813 | | lr-------- 1 root root 64 Jan 27 11:24 35d0421000-35d0422000 -> /usr/lib64/libselinux.so.1 | ||
1814 | | lr-------- 1 root root 64 Jan 27 11:24 400000-41a000 -> /usr/bin/ls | ||
1815 | |||
1816 | The name of a link represents the virtual memory bounds of a mapping, i.e. | ||
1817 | vm_area_struct::vm_start-vm_area_struct::vm_end. | ||
1818 | |||
1819 | The main purpose of the map_files is to retrieve a set of memory mapped | ||
1820 | files in a fast way instead of parsing /proc/<pid>/maps or | ||
1821 | /proc/<pid>/smaps, both of which contain many more records. At the same | ||
1822 | time one can open(2) mappings from the listings of two processes and | ||
1823 | comparing their inode numbers to figure out which anonymous memory areas | ||
1824 | are actually shared. | ||
1825 | |||
1766 | ------------------------------------------------------------------------------ | 1826 | ------------------------------------------------------------------------------ |
1767 | Configuring procfs | 1827 | Configuring procfs |
1768 | ------------------------------------------------------------------------------ | 1828 | ------------------------------------------------------------------------------ |
diff --git a/Documentation/filesystems/seq_file.txt b/Documentation/filesystems/seq_file.txt index b797ed38de46..9de4303201e1 100644 --- a/Documentation/filesystems/seq_file.txt +++ b/Documentation/filesystems/seq_file.txt | |||
@@ -194,16 +194,16 @@ which is in the string esc will be represented in octal form in the output. | |||
194 | 194 | ||
195 | There are also a pair of functions for printing filenames: | 195 | There are also a pair of functions for printing filenames: |
196 | 196 | ||
197 | int seq_path(struct seq_file *m, struct path *path, char *esc); | 197 | int seq_path(struct seq_file *m, const struct path *path, |
198 | int seq_path_root(struct seq_file *m, struct path *path, | 198 | const char *esc); |
199 | struct path *root, char *esc) | 199 | int seq_path_root(struct seq_file *m, const struct path *path, |
200 | const struct path *root, const char *esc) | ||
200 | 201 | ||
201 | Here, path indicates the file of interest, and esc is a set of characters | 202 | Here, path indicates the file of interest, and esc is a set of characters |
202 | which should be escaped in the output. A call to seq_path() will output | 203 | which should be escaped in the output. A call to seq_path() will output |
203 | the path relative to the current process's filesystem root. If a different | 204 | the path relative to the current process's filesystem root. If a different |
204 | root is desired, it can be used with seq_path_root(). Note that, if it | 205 | root is desired, it can be used with seq_path_root(). If it turns out that |
205 | turns out that path cannot be reached from root, the value of root will be | 206 | path cannot be reached from root, seq_path_root() returns SEQ_SKIP. |
206 | changed in seq_file_root() to a root which *does* work. | ||
207 | 207 | ||
208 | A function producing complicated output may want to check | 208 | A function producing complicated output may want to check |
209 | bool seq_has_overflowed(struct seq_file *m); | 209 | bool seq_has_overflowed(struct seq_file *m); |
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt index 43ce0507ee25..966b22829f3b 100644 --- a/Documentation/filesystems/vfs.txt +++ b/Documentation/filesystems/vfs.txt | |||
@@ -591,8 +591,6 @@ struct address_space_operations { | |||
591 | int (*releasepage) (struct page *, int); | 591 | int (*releasepage) (struct page *, int); |
592 | void (*freepage)(struct page *); | 592 | void (*freepage)(struct page *); |
593 | ssize_t (*direct_IO)(int, struct kiocb *, struct iov_iter *iter, loff_t offset); | 593 | ssize_t (*direct_IO)(int, struct kiocb *, struct iov_iter *iter, loff_t offset); |
594 | struct page* (*get_xip_page)(struct address_space *, sector_t, | ||
595 | int); | ||
596 | /* migrate the contents of a page to the specified target */ | 594 | /* migrate the contents of a page to the specified target */ |
597 | int (*migratepage) (struct page *, struct page *); | 595 | int (*migratepage) (struct page *, struct page *); |
598 | int (*launder_page) (struct page *); | 596 | int (*launder_page) (struct page *); |
@@ -748,11 +746,6 @@ struct address_space_operations { | |||
748 | and transfer data directly between the storage and the | 746 | and transfer data directly between the storage and the |
749 | application's address space. | 747 | application's address space. |
750 | 748 | ||
751 | get_xip_page: called by the VM to translate a block number to a page. | ||
752 | The page is valid until the corresponding filesystem is unmounted. | ||
753 | Filesystems that want to use execute-in-place (XIP) need to implement | ||
754 | it. An example implementation can be found in fs/ext2/xip.c. | ||
755 | |||
756 | migrate_page: This is used to compact the physical memory usage. | 749 | migrate_page: This is used to compact the physical memory usage. |
757 | If the VM wants to relocate a page (maybe off a memory card | 750 | If the VM wants to relocate a page (maybe off a memory card |
758 | that is signalling imminent failure) it will pass a new page | 751 | that is signalling imminent failure) it will pass a new page |
diff --git a/Documentation/filesystems/xfs.txt b/Documentation/filesystems/xfs.txt index 5be51fd888bd..0bfafe108357 100644 --- a/Documentation/filesystems/xfs.txt +++ b/Documentation/filesystems/xfs.txt | |||
@@ -287,9 +287,9 @@ The following sysctls are available for the XFS filesystem: | |||
287 | XFS_ERRLEVEL_LOW: 1 | 287 | XFS_ERRLEVEL_LOW: 1 |
288 | XFS_ERRLEVEL_HIGH: 5 | 288 | XFS_ERRLEVEL_HIGH: 5 |
289 | 289 | ||
290 | fs.xfs.panic_mask (Min: 0 Default: 0 Max: 127) | 290 | fs.xfs.panic_mask (Min: 0 Default: 0 Max: 255) |
291 | Causes certain error conditions to call BUG(). Value is a bitmask; | 291 | Causes certain error conditions to call BUG(). Value is a bitmask; |
292 | AND together the tags which represent errors which should cause panics: | 292 | OR together the tags which represent errors which should cause panics: |
293 | 293 | ||
294 | XFS_NO_PTAG 0 | 294 | XFS_NO_PTAG 0 |
295 | XFS_PTAG_IFLUSH 0x00000001 | 295 | XFS_PTAG_IFLUSH 0x00000001 |
@@ -299,6 +299,7 @@ The following sysctls are available for the XFS filesystem: | |||
299 | XFS_PTAG_SHUTDOWN_CORRUPT 0x00000010 | 299 | XFS_PTAG_SHUTDOWN_CORRUPT 0x00000010 |
300 | XFS_PTAG_SHUTDOWN_IOERROR 0x00000020 | 300 | XFS_PTAG_SHUTDOWN_IOERROR 0x00000020 |
301 | XFS_PTAG_SHUTDOWN_LOGERROR 0x00000040 | 301 | XFS_PTAG_SHUTDOWN_LOGERROR 0x00000040 |
302 | XFS_PTAG_FSBLOCK_ZERO 0x00000080 | ||
302 | 303 | ||
303 | This option is intended for debugging only. | 304 | This option is intended for debugging only. |
304 | 305 | ||
@@ -348,16 +349,13 @@ The following sysctls are available for the XFS filesystem: | |||
348 | Deprecated Sysctls | 349 | Deprecated Sysctls |
349 | ================== | 350 | ================== |
350 | 351 | ||
351 | fs.xfs.xfsbufd_centisecs (Min: 50 Default: 100 Max: 3000) | 352 | None at present. |
352 | Dirty metadata is now tracked by the log subsystem and | ||
353 | flushing is driven by log space and idling demands. The | ||
354 | xfsbufd no longer exists, so this syctl does nothing. | ||
355 | 353 | ||
356 | Due for removal in 3.14. | ||
357 | 354 | ||
358 | fs.xfs.age_buffer_centisecs (Min: 100 Default: 1500 Max: 720000) | 355 | Removed Sysctls |
359 | Dirty metadata is now tracked by the log subsystem and | 356 | =============== |
360 | flushing is driven by log space and idling demands. The | ||
361 | xfsbufd no longer exists, so this syctl does nothing. | ||
362 | 357 | ||
363 | Due for removal in 3.14. | 358 | Name Removed |
359 | ---- ------- | ||
360 | fs.xfs.xfsbufd_centisec v3.20 | ||
361 | fs.xfs.age_buffer_centisecs v3.20 | ||
diff --git a/Documentation/filesystems/xip.txt b/Documentation/filesystems/xip.txt deleted file mode 100644 index 0466ee569278..000000000000 --- a/Documentation/filesystems/xip.txt +++ /dev/null | |||
@@ -1,68 +0,0 @@ | |||
1 | Execute-in-place for file mappings | ||
2 | ---------------------------------- | ||
3 | |||
4 | Motivation | ||
5 | ---------- | ||
6 | File mappings are performed by mapping page cache pages to userspace. In | ||
7 | addition, read&write type file operations also transfer data from/to the page | ||
8 | cache. | ||
9 | |||
10 | For memory backed storage devices that use the block device interface, the page | ||
11 | cache pages are in fact copies of the original storage. Various approaches | ||
12 | exist to work around the need for an extra copy. The ramdisk driver for example | ||
13 | does read the data into the page cache, keeps a reference, and discards the | ||
14 | original data behind later on. | ||
15 | |||
16 | Execute-in-place solves this issue the other way around: instead of keeping | ||
17 | data in the page cache, the need to have a page cache copy is eliminated | ||
18 | completely. With execute-in-place, read&write type operations are performed | ||
19 | directly from/to the memory backed storage device. For file mappings, the | ||
20 | storage device itself is mapped directly into userspace. | ||
21 | |||
22 | This implementation was initially written for shared memory segments between | ||
23 | different virtual machines on s390 hardware to allow multiple machines to | ||
24 | share the same binaries and libraries. | ||
25 | |||
26 | Implementation | ||
27 | -------------- | ||
28 | Execute-in-place is implemented in three steps: block device operation, | ||
29 | address space operation, and file operations. | ||
30 | |||
31 | A block device operation named direct_access is used to retrieve a | ||
32 | reference (pointer) to a block on-disk. The reference is supposed to be | ||
33 | cpu-addressable, physical address and remain valid until the release operation | ||
34 | is performed. A struct block_device reference is used to address the device, | ||
35 | and a sector_t argument is used to identify the individual block. As an | ||
36 | alternative, memory technology devices can be used for this. | ||
37 | |||
38 | The block device operation is optional, these block devices support it as of | ||
39 | today: | ||
40 | - dcssblk: s390 dcss block device driver | ||
41 | |||
42 | An address space operation named get_xip_mem is used to retrieve references | ||
43 | to a page frame number and a kernel address. To obtain these values a reference | ||
44 | to an address_space is provided. This function assigns values to the kmem and | ||
45 | pfn parameters. The third argument indicates whether the function should allocate | ||
46 | blocks if needed. | ||
47 | |||
48 | This address space operation is mutually exclusive with readpage&writepage that | ||
49 | do page cache read/write operations. | ||
50 | The following filesystems support it as of today: | ||
51 | - ext2: the second extended filesystem, see Documentation/filesystems/ext2.txt | ||
52 | |||
53 | A set of file operations that do utilize get_xip_page can be found in | ||
54 | mm/filemap_xip.c . The following file operation implementations are provided: | ||
55 | - aio_read/aio_write | ||
56 | - readv/writev | ||
57 | - sendfile | ||
58 | |||
59 | The generic file operations do_sync_read/do_sync_write can be used to implement | ||
60 | classic synchronous IO calls. | ||
61 | |||
62 | Shortcomings | ||
63 | ------------ | ||
64 | This implementation is limited to storage devices that are cpu addressable at | ||
65 | all times (no highmem or such). It works well on rom/ram, but enhancements are | ||
66 | needed to make it work with flash in read+write mode. | ||
67 | Putting the Linux kernel and/or its modules on a xip filesystem does not mean | ||
68 | they are not copied. | ||
diff --git a/Documentation/futex-requeue-pi.txt b/Documentation/futex-requeue-pi.txt index 31b16610c416..77b36f59d16b 100644 --- a/Documentation/futex-requeue-pi.txt +++ b/Documentation/futex-requeue-pi.txt | |||
@@ -98,7 +98,7 @@ rt_mutex_start_proxy_lock() and rt_mutex_finish_proxy_lock(), which | |||
98 | allow the requeue code to acquire an uncontended rt_mutex on behalf | 98 | allow the requeue code to acquire an uncontended rt_mutex on behalf |
99 | of the waiter and to enqueue the waiter on a contended rt_mutex. | 99 | of the waiter and to enqueue the waiter on a contended rt_mutex. |
100 | Two new system calls provide the kernel<->user interface to | 100 | Two new system calls provide the kernel<->user interface to |
101 | requeue_pi: FUTEX_WAIT_REQUEUE_PI and FUTEX_REQUEUE_CMP_PI. | 101 | requeue_pi: FUTEX_WAIT_REQUEUE_PI and FUTEX_CMP_REQUEUE_PI. |
102 | 102 | ||
103 | FUTEX_WAIT_REQUEUE_PI is called by the waiter (pthread_cond_wait() | 103 | FUTEX_WAIT_REQUEUE_PI is called by the waiter (pthread_cond_wait() |
104 | and pthread_cond_timedwait()) to block on the initial futex and wait | 104 | and pthread_cond_timedwait()) to block on the initial futex and wait |
@@ -107,7 +107,7 @@ result of a high-speed collision between futex_wait() and | |||
107 | futex_lock_pi(), with some extra logic to check for the additional | 107 | futex_lock_pi(), with some extra logic to check for the additional |
108 | wake-up scenarios. | 108 | wake-up scenarios. |
109 | 109 | ||
110 | FUTEX_REQUEUE_CMP_PI is called by the waker | 110 | FUTEX_CMP_REQUEUE_PI is called by the waker |
111 | (pthread_cond_broadcast() and pthread_cond_signal()) to requeue and | 111 | (pthread_cond_broadcast() and pthread_cond_signal()) to requeue and |
112 | possibly wake the waiting tasks. Internally, this system call is | 112 | possibly wake the waiting tasks. Internally, this system call is |
113 | still handled by futex_requeue (by passing requeue_pi=1). Before | 113 | still handled by futex_requeue (by passing requeue_pi=1). Before |
@@ -120,12 +120,12 @@ task as a waiter on the underlying rt_mutex. It is possible that | |||
120 | the lock can be acquired at this stage as well, if so, the next | 120 | the lock can be acquired at this stage as well, if so, the next |
121 | waiter is woken to finish the acquisition of the lock. | 121 | waiter is woken to finish the acquisition of the lock. |
122 | 122 | ||
123 | FUTEX_REQUEUE_PI accepts nr_wake and nr_requeue as arguments, but | 123 | FUTEX_CMP_REQUEUE_PI accepts nr_wake and nr_requeue as arguments, but |
124 | their sum is all that really matters. futex_requeue() will wake or | 124 | their sum is all that really matters. futex_requeue() will wake or |
125 | requeue up to nr_wake + nr_requeue tasks. It will wake only as many | 125 | requeue up to nr_wake + nr_requeue tasks. It will wake only as many |
126 | tasks as it can acquire the lock for, which in the majority of cases | 126 | tasks as it can acquire the lock for, which in the majority of cases |
127 | should be 0 as good programming practice dictates that the caller of | 127 | should be 0 as good programming practice dictates that the caller of |
128 | either pthread_cond_broadcast() or pthread_cond_signal() acquire the | 128 | either pthread_cond_broadcast() or pthread_cond_signal() acquire the |
129 | mutex prior to making the call. FUTEX_REQUEUE_PI requires that | 129 | mutex prior to making the call. FUTEX_CMP_REQUEUE_PI requires that |
130 | nr_wake=1. nr_requeue should be INT_MAX for broadcast and 0 for | 130 | nr_wake=1. nr_requeue should be INT_MAX for broadcast and 0 for |
131 | signal. | 131 | signal. |
diff --git a/Documentation/gdb-kernel-debugging.txt b/Documentation/gdb-kernel-debugging.txt new file mode 100644 index 000000000000..7050ce8794b9 --- /dev/null +++ b/Documentation/gdb-kernel-debugging.txt | |||
@@ -0,0 +1,160 @@ | |||
1 | Debugging kernel and modules via gdb | ||
2 | ==================================== | ||
3 | |||
4 | The kernel debugger kgdb, hypervisors like QEMU or JTAG-based hardware | ||
5 | interfaces allow to debug the Linux kernel and its modules during runtime | ||
6 | using gdb. Gdb comes with a powerful scripting interface for python. The | ||
7 | kernel provides a collection of helper scripts that can simplify typical | ||
8 | kernel debugging steps. This is a short tutorial about how to enable and use | ||
9 | them. It focuses on QEMU/KVM virtual machines as target, but the examples can | ||
10 | be transferred to the other gdb stubs as well. | ||
11 | |||
12 | |||
13 | Requirements | ||
14 | ------------ | ||
15 | |||
16 | o gdb 7.2+ (recommended: 7.4+) with python support enabled (typically true | ||
17 | for distributions) | ||
18 | |||
19 | |||
20 | Setup | ||
21 | ----- | ||
22 | |||
23 | o Create a virtual Linux machine for QEMU/KVM (see www.linux-kvm.org and | ||
24 | www.qemu.org for more details). For cross-development, | ||
25 | http://landley.net/aboriginal/bin keeps a pool of machine images and | ||
26 | toolchains that can be helpful to start from. | ||
27 | |||
28 | o Build the kernel with CONFIG_GDB_SCRIPTS enabled, but leave | ||
29 | CONFIG_DEBUG_INFO_REDUCED off. If your architecture supports | ||
30 | CONFIG_FRAME_POINTER, keep it enabled. | ||
31 | |||
32 | o Install that kernel on the guest. | ||
33 | |||
34 | Alternatively, QEMU allows to boot the kernel directly using -kernel, | ||
35 | -append, -initrd command line switches. This is generally only useful if | ||
36 | you do not depend on modules. See QEMU documentation for more details on | ||
37 | this mode. | ||
38 | |||
39 | o Enable the gdb stub of QEMU/KVM, either | ||
40 | - at VM startup time by appending "-s" to the QEMU command line | ||
41 | or | ||
42 | - during runtime by issuing "gdbserver" from the QEMU monitor | ||
43 | console | ||
44 | |||
45 | o cd /path/to/linux-build | ||
46 | |||
47 | o Start gdb: gdb vmlinux | ||
48 | |||
49 | Note: Some distros may restrict auto-loading of gdb scripts to known safe | ||
50 | directories. In case gdb reports to refuse loading vmlinux-gdb.py, add | ||
51 | |||
52 | add-auto-load-safe-path /path/to/linux-build | ||
53 | |||
54 | to ~/.gdbinit. See gdb help for more details. | ||
55 | |||
56 | o Attach to the booted guest: | ||
57 | (gdb) target remote :1234 | ||
58 | |||
59 | |||
60 | Examples of using the Linux-provided gdb helpers | ||
61 | ------------------------------------------------ | ||
62 | |||
63 | o Load module (and main kernel) symbols: | ||
64 | (gdb) lx-symbols | ||
65 | loading vmlinux | ||
66 | scanning for modules in /home/user/linux/build | ||
67 | loading @0xffffffffa0020000: /home/user/linux/build/net/netfilter/xt_tcpudp.ko | ||
68 | loading @0xffffffffa0016000: /home/user/linux/build/net/netfilter/xt_pkttype.ko | ||
69 | loading @0xffffffffa0002000: /home/user/linux/build/net/netfilter/xt_limit.ko | ||
70 | loading @0xffffffffa00ca000: /home/user/linux/build/net/packet/af_packet.ko | ||
71 | loading @0xffffffffa003c000: /home/user/linux/build/fs/fuse/fuse.ko | ||
72 | ... | ||
73 | loading @0xffffffffa0000000: /home/user/linux/build/drivers/ata/ata_generic.ko | ||
74 | |||
75 | o Set a breakpoint on some not yet loaded module function, e.g.: | ||
76 | (gdb) b btrfs_init_sysfs | ||
77 | Function "btrfs_init_sysfs" not defined. | ||
78 | Make breakpoint pending on future shared library load? (y or [n]) y | ||
79 | Breakpoint 1 (btrfs_init_sysfs) pending. | ||
80 | |||
81 | o Continue the target | ||
82 | (gdb) c | ||
83 | |||
84 | o Load the module on the target and watch the symbols being loaded as well as | ||
85 | the breakpoint hit: | ||
86 | loading @0xffffffffa0034000: /home/user/linux/build/lib/libcrc32c.ko | ||
87 | loading @0xffffffffa0050000: /home/user/linux/build/lib/lzo/lzo_compress.ko | ||
88 | loading @0xffffffffa006e000: /home/user/linux/build/lib/zlib_deflate/zlib_deflate.ko | ||
89 | loading @0xffffffffa01b1000: /home/user/linux/build/fs/btrfs/btrfs.ko | ||
90 | |||
91 | Breakpoint 1, btrfs_init_sysfs () at /home/user/linux/fs/btrfs/sysfs.c:36 | ||
92 | 36 btrfs_kset = kset_create_and_add("btrfs", NULL, fs_kobj); | ||
93 | |||
94 | o Dump the log buffer of the target kernel: | ||
95 | (gdb) lx-dmesg | ||
96 | [ 0.000000] Initializing cgroup subsys cpuset | ||
97 | [ 0.000000] Initializing cgroup subsys cpu | ||
98 | [ 0.000000] Linux version 3.8.0-rc4-dbg+ (... | ||
99 | [ 0.000000] Command line: root=/dev/sda2 resume=/dev/sda1 vga=0x314 | ||
100 | [ 0.000000] e820: BIOS-provided physical RAM map: | ||
101 | [ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable | ||
102 | [ 0.000000] BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved | ||
103 | .... | ||
104 | |||
105 | o Examine fields of the current task struct: | ||
106 | (gdb) p $lx_current().pid | ||
107 | $1 = 4998 | ||
108 | (gdb) p $lx_current().comm | ||
109 | $2 = "modprobe\000\000\000\000\000\000\000" | ||
110 | |||
111 | o Make use of the per-cpu function for the current or a specified CPU: | ||
112 | (gdb) p $lx_per_cpu("runqueues").nr_running | ||
113 | $3 = 1 | ||
114 | (gdb) p $lx_per_cpu("runqueues", 2).nr_running | ||
115 | $4 = 0 | ||
116 | |||
117 | o Dig into hrtimers using the container_of helper: | ||
118 | (gdb) set $next = $lx_per_cpu("hrtimer_bases").clock_base[0].active.next | ||
119 | (gdb) p *$container_of($next, "struct hrtimer", "node") | ||
120 | $5 = { | ||
121 | node = { | ||
122 | node = { | ||
123 | __rb_parent_color = 18446612133355256072, | ||
124 | rb_right = 0x0 <irq_stack_union>, | ||
125 | rb_left = 0x0 <irq_stack_union> | ||
126 | }, | ||
127 | expires = { | ||
128 | tv64 = 1835268000000 | ||
129 | } | ||
130 | }, | ||
131 | _softexpires = { | ||
132 | tv64 = 1835268000000 | ||
133 | }, | ||
134 | function = 0xffffffff81078232 <tick_sched_timer>, | ||
135 | base = 0xffff88003fd0d6f0, | ||
136 | state = 1, | ||
137 | start_pid = 0, | ||
138 | start_site = 0xffffffff81055c1f <hrtimer_start_range_ns+20>, | ||
139 | start_comm = "swapper/2\000\000\000\000\000\000" | ||
140 | } | ||
141 | |||
142 | |||
143 | List of commands and functions | ||
144 | ------------------------------ | ||
145 | |||
146 | The number of commands and convenience functions may evolve over the time, | ||
147 | this is just a snapshot of the initial version: | ||
148 | |||
149 | (gdb) apropos lx | ||
150 | function lx_current -- Return current task | ||
151 | function lx_module -- Find module by name and return the module variable | ||
152 | function lx_per_cpu -- Return per-cpu variable | ||
153 | function lx_task_by_pid -- Find Linux task by PID and return the task_struct variable | ||
154 | function lx_thread_info -- Calculate Linux thread_info from task variable | ||
155 | lx-dmesg -- Print Linux kernel log buffer | ||
156 | lx-lsmod -- List currently loaded modules | ||
157 | lx-symbols -- (Re-)load symbols of Linux kernel and currently loaded modules | ||
158 | |||
159 | Detailed help can be obtained via "help <command-name>" for commands and "help | ||
160 | function <function-name>" for convenience functions. | ||
diff --git a/Documentation/gpio/board.txt b/Documentation/gpio/board.txt index 4452786225b8..8b35f51fe7b6 100644 --- a/Documentation/gpio/board.txt +++ b/Documentation/gpio/board.txt | |||
@@ -31,7 +31,7 @@ through gpiod_get(). For example: | |||
31 | <&gpio 16 GPIO_ACTIVE_HIGH>, /* green */ | 31 | <&gpio 16 GPIO_ACTIVE_HIGH>, /* green */ |
32 | <&gpio 17 GPIO_ACTIVE_HIGH>; /* blue */ | 32 | <&gpio 17 GPIO_ACTIVE_HIGH>; /* blue */ |
33 | 33 | ||
34 | power-gpio = <&gpio 1 GPIO_ACTIVE_LOW>; | 34 | power-gpios = <&gpio 1 GPIO_ACTIVE_LOW>; |
35 | }; | 35 | }; |
36 | 36 | ||
37 | This property will make GPIOs 15, 16 and 17 available to the driver under the | 37 | This property will make GPIOs 15, 16 and 17 available to the driver under the |
diff --git a/Documentation/hwmon/ina2xx b/Documentation/hwmon/ina2xx index 4223c2d3b508..cfd31d94c872 100644 --- a/Documentation/hwmon/ina2xx +++ b/Documentation/hwmon/ina2xx | |||
@@ -26,6 +26,12 @@ Supported chips: | |||
26 | Datasheet: Publicly available at the Texas Instruments website | 26 | Datasheet: Publicly available at the Texas Instruments website |
27 | http://www.ti.com/ | 27 | http://www.ti.com/ |
28 | 28 | ||
29 | * Texas Instruments INA231 | ||
30 | Prefix: 'ina231' | ||
31 | Addresses: I2C 0x40 - 0x4f | ||
32 | Datasheet: Publicly available at the Texas Instruments website | ||
33 | http://www.ti.com/ | ||
34 | |||
29 | Author: Lothar Felten <l-felten@ti.com> | 35 | Author: Lothar Felten <l-felten@ti.com> |
30 | 36 | ||
31 | Description | 37 | Description |
@@ -41,9 +47,18 @@ interface. The INA220 monitors both shunt drop and supply voltage. | |||
41 | The INA226 is a current shunt and power monitor with an I2C interface. | 47 | The INA226 is a current shunt and power monitor with an I2C interface. |
42 | The INA226 monitors both a shunt voltage drop and bus supply voltage. | 48 | The INA226 monitors both a shunt voltage drop and bus supply voltage. |
43 | 49 | ||
44 | The INA230 is a high or low side current shunt and power monitor with an I2C | 50 | INA230 and INA231 are high or low side current shunt and power monitors |
45 | interface. The INA230 monitors both a shunt voltage drop and bus supply voltage. | 51 | with an I2C interface. The chips monitor both a shunt voltage drop and |
52 | bus supply voltage. | ||
46 | 53 | ||
47 | The shunt value in micro-ohms can be set via platform data or device tree. | 54 | The shunt value in micro-ohms can be set via platform data or device tree at |
48 | Please refer to the Documentation/devicetree/bindings/i2c/ina2xx.txt for bindings | 55 | compile-time or via the shunt_resistor attribute in sysfs at run-time. Please |
56 | refer to the Documentation/devicetree/bindings/i2c/ina2xx.txt for bindings | ||
49 | if the device tree is used. | 57 | if the device tree is used. |
58 | |||
59 | Additionally ina226 supports update_interval attribute as described in | ||
60 | Documentation/hwmon/sysfs-interface. Internally the interval is the sum of | ||
61 | bus and shunt voltage conversion times multiplied by the averaging rate. We | ||
62 | don't touch the conversion times and only modify the number of averages. The | ||
63 | lower limit of the update_interval is 2 ms, the upper limit is 2253 ms. | ||
64 | The actual programmed interval may vary from the desired value. | ||
diff --git a/Documentation/i2c/functionality b/Documentation/i2c/functionality index 4556a3eb87c4..4aae8ed15873 100644 --- a/Documentation/i2c/functionality +++ b/Documentation/i2c/functionality | |||
@@ -12,7 +12,7 @@ FUNCTIONALITY CONSTANTS | |||
12 | ----------------------- | 12 | ----------------------- |
13 | 13 | ||
14 | For the most up-to-date list of functionality constants, please check | 14 | For the most up-to-date list of functionality constants, please check |
15 | <linux/i2c.h>! | 15 | <uapi/linux/i2c.h>! |
16 | 16 | ||
17 | I2C_FUNC_I2C Plain i2c-level commands (Pure SMBus | 17 | I2C_FUNC_I2C Plain i2c-level commands (Pure SMBus |
18 | adapters typically can not do these) | 18 | adapters typically can not do these) |
diff --git a/Documentation/ia64/paravirt_ops.txt b/Documentation/ia64/paravirt_ops.txt deleted file mode 100644 index 39ded02ec33f..000000000000 --- a/Documentation/ia64/paravirt_ops.txt +++ /dev/null | |||
@@ -1,137 +0,0 @@ | |||
1 | Paravirt_ops on IA64 | ||
2 | ==================== | ||
3 | 21 May 2008, Isaku Yamahata <yamahata@valinux.co.jp> | ||
4 | |||
5 | |||
6 | Introduction | ||
7 | ------------ | ||
8 | The aim of this documentation is to help with maintainability and/or to | ||
9 | encourage people to use paravirt_ops/IA64. | ||
10 | |||
11 | paravirt_ops (pv_ops in short) is a way for virtualization support of | ||
12 | Linux kernel on x86. Several ways for virtualization support were | ||
13 | proposed, paravirt_ops is the winner. | ||
14 | On the other hand, now there are also several IA64 virtualization | ||
15 | technologies like kvm/IA64, xen/IA64 and many other academic IA64 | ||
16 | hypervisors so that it is good to add generic virtualization | ||
17 | infrastructure on Linux/IA64. | ||
18 | |||
19 | |||
20 | What is paravirt_ops? | ||
21 | --------------------- | ||
22 | It has been developed on x86 as virtualization support via API, not ABI. | ||
23 | It allows each hypervisor to override operations which are important for | ||
24 | hypervisors at API level. And it allows a single kernel binary to run on | ||
25 | all supported execution environments including native machine. | ||
26 | Essentially paravirt_ops is a set of function pointers which represent | ||
27 | operations corresponding to low level sensitive instructions and high | ||
28 | level functionalities in various area. But one significant difference | ||
29 | from usual function pointer table is that it allows optimization with | ||
30 | binary patch. It is because some of these operations are very | ||
31 | performance sensitive and indirect call overhead is not negligible. | ||
32 | With binary patch, indirect C function call can be transformed into | ||
33 | direct C function call or in-place execution to eliminate the overhead. | ||
34 | |||
35 | Thus, operations of paravirt_ops are classified into three categories. | ||
36 | - simple indirect call | ||
37 | These operations correspond to high level functionality so that the | ||
38 | overhead of indirect call isn't very important. | ||
39 | |||
40 | - indirect call which allows optimization with binary patch | ||
41 | Usually these operations correspond to low level instructions. They | ||
42 | are called frequently and performance critical. So the overhead is | ||
43 | very important. | ||
44 | |||
45 | - a set of macros for hand written assembly code | ||
46 | Hand written assembly codes (.S files) also need paravirtualization | ||
47 | because they include sensitive instructions or some of code paths in | ||
48 | them are very performance critical. | ||
49 | |||
50 | |||
51 | The relation to the IA64 machine vector | ||
52 | --------------------------------------- | ||
53 | Linux/IA64 has the IA64 machine vector functionality which allows the | ||
54 | kernel to switch implementations (e.g. initialization, ipi, dma api...) | ||
55 | depending on executing platform. | ||
56 | We can replace some implementations very easily defining a new machine | ||
57 | vector. Thus another approach for virtualization support would be | ||
58 | enhancing the machine vector functionality. | ||
59 | But paravirt_ops approach was taken because | ||
60 | - virtualization support needs wider support than machine vector does. | ||
61 | e.g. low level instruction paravirtualization. It must be | ||
62 | initialized very early before platform detection. | ||
63 | |||
64 | - virtualization support needs more functionality like binary patch. | ||
65 | Probably the calling overhead might not be very large compared to the | ||
66 | emulation overhead of virtualization. However in the native case, the | ||
67 | overhead should be eliminated completely. | ||
68 | A single kernel binary should run on each environment including native, | ||
69 | and the overhead of paravirt_ops on native environment should be as | ||
70 | small as possible. | ||
71 | |||
72 | - for full virtualization technology, e.g. KVM/IA64 or | ||
73 | Xen/IA64 HVM domain, the result would be | ||
74 | (the emulated platform machine vector. probably dig) + (pv_ops). | ||
75 | This means that the virtualization support layer should be under | ||
76 | the machine vector layer. | ||
77 | |||
78 | Possibly it might be better to move some function pointers from | ||
79 | paravirt_ops to machine vector. In fact, Xen domU case utilizes both | ||
80 | pv_ops and machine vector. | ||
81 | |||
82 | |||
83 | IA64 paravirt_ops | ||
84 | ----------------- | ||
85 | In this section, the concrete paravirt_ops will be discussed. | ||
86 | Because of the architecture difference between ia64 and x86, the | ||
87 | resulting set of functions is very different from x86 pv_ops. | ||
88 | |||
89 | - C function pointer tables | ||
90 | They are not very performance critical so that simple C indirect | ||
91 | function call is acceptable. The following structures are defined at | ||
92 | this moment. For details see linux/include/asm-ia64/paravirt.h | ||
93 | - struct pv_info | ||
94 | This structure describes the execution environment. | ||
95 | - struct pv_init_ops | ||
96 | This structure describes the various initialization hooks. | ||
97 | - struct pv_iosapic_ops | ||
98 | This structure describes hooks to iosapic operations. | ||
99 | - struct pv_irq_ops | ||
100 | This structure describes hooks to irq related operations | ||
101 | - struct pv_time_op | ||
102 | This structure describes hooks to steal time accounting. | ||
103 | |||
104 | - a set of indirect calls which need optimization | ||
105 | Currently this class of functions correspond to a subset of IA64 | ||
106 | intrinsics. At this moment the optimization with binary patch isn't | ||
107 | implemented yet. | ||
108 | struct pv_cpu_op is defined. For details see | ||
109 | linux/include/asm-ia64/paravirt_privop.h | ||
110 | Mostly they correspond to ia64 intrinsics 1-to-1. | ||
111 | Caveat: Now they are defined as C indirect function pointers, but in | ||
112 | order to support binary patch optimization, they will be changed | ||
113 | using GCC extended inline assembly code. | ||
114 | |||
115 | - a set of macros for hand written assembly code (.S files) | ||
116 | For maintenance purpose, the taken approach for .S files is single | ||
117 | source code and compile multiple times with different macros definitions. | ||
118 | Each pv_ops instance must define those macros to compile. | ||
119 | The important thing here is that sensitive, but non-privileged | ||
120 | instructions must be paravirtualized and that some privileged | ||
121 | instructions also need paravirtualization for reasonable performance. | ||
122 | Developers who modify .S files must be aware of that. At this moment | ||
123 | an easy checker is implemented to detect paravirtualization breakage. | ||
124 | But it doesn't cover all the cases. | ||
125 | |||
126 | Sometimes this set of macros is called pv_cpu_asm_op. But there is no | ||
127 | corresponding structure in the source code. | ||
128 | Those macros mostly 1:1 correspond to a subset of privileged | ||
129 | instructions. See linux/include/asm-ia64/native/inst.h. | ||
130 | And some functions written in assembly also need to be overrided so | ||
131 | that each pv_ops instance have to define some macros. Again see | ||
132 | linux/include/asm-ia64/native/inst.h. | ||
133 | |||
134 | |||
135 | Those structures must be initialized very early before start_kernel. | ||
136 | Probably initialized in head.S using multi entry point or some other trick. | ||
137 | For native case implementation see linux/arch/ia64/kernel/paravirt.c. | ||
diff --git a/Documentation/input/alps.txt b/Documentation/input/alps.txt index 90bca6f988e1..a63e5e013a8c 100644 --- a/Documentation/input/alps.txt +++ b/Documentation/input/alps.txt | |||
@@ -3,8 +3,8 @@ ALPS Touchpad Protocol | |||
3 | 3 | ||
4 | Introduction | 4 | Introduction |
5 | ------------ | 5 | ------------ |
6 | Currently the ALPS touchpad driver supports five protocol versions in use by | 6 | Currently the ALPS touchpad driver supports seven protocol versions in use by |
7 | ALPS touchpads, called versions 1, 2, 3, 4 and 5. | 7 | ALPS touchpads, called versions 1, 2, 3, 4, 5, 6 and 7. |
8 | 8 | ||
9 | Since roughly mid-2010 several new ALPS touchpads have been released and | 9 | Since roughly mid-2010 several new ALPS touchpads have been released and |
10 | integrated into a variety of laptops and netbooks. These new touchpads | 10 | integrated into a variety of laptops and netbooks. These new touchpads |
@@ -240,3 +240,67 @@ For mt, the format is: | |||
240 | byte 3: 0 x23 x22 x21 x20 x19 x18 x17 | 240 | byte 3: 0 x23 x22 x21 x20 x19 x18 x17 |
241 | byte 4: 0 x9 x8 x7 x6 x5 x4 x3 | 241 | byte 4: 0 x9 x8 x7 x6 x5 x4 x3 |
242 | byte 5: 0 x16 x15 x14 x13 x12 x11 x10 | 242 | byte 5: 0 x16 x15 x14 x13 x12 x11 x10 |
243 | |||
244 | ALPS Absolute Mode - Protocol Version 6 | ||
245 | --------------------------------------- | ||
246 | |||
247 | For trackstick packet, the format is: | ||
248 | |||
249 | byte 0: 1 1 1 1 1 1 1 1 | ||
250 | byte 1: 0 X6 X5 X4 X3 X2 X1 X0 | ||
251 | byte 2: 0 Y6 Y5 Y4 Y3 Y2 Y1 Y0 | ||
252 | byte 3: ? Y7 X7 ? ? M R L | ||
253 | byte 4: Z7 Z6 Z5 Z4 Z3 Z2 Z1 Z0 | ||
254 | byte 5: 0 1 1 1 1 1 1 1 | ||
255 | |||
256 | For touchpad packet, the format is: | ||
257 | |||
258 | byte 0: 1 1 1 1 1 1 1 1 | ||
259 | byte 1: 0 0 0 0 x3 x2 x1 x0 | ||
260 | byte 2: 0 0 0 0 y3 y2 y1 y0 | ||
261 | byte 3: ? x7 x6 x5 x4 ? r l | ||
262 | byte 4: ? y7 y6 y5 y4 ? ? ? | ||
263 | byte 5: z7 z6 z5 z4 z3 z2 z1 z0 | ||
264 | |||
265 | (v6 touchpad does not have middle button) | ||
266 | |||
267 | ALPS Absolute Mode - Protocol Version 7 | ||
268 | --------------------------------------- | ||
269 | |||
270 | For trackstick packet, the format is: | ||
271 | |||
272 | byte 0: 0 1 0 0 1 0 0 0 | ||
273 | byte 1: 1 1 * * 1 M R L | ||
274 | byte 2: X7 1 X5 X4 X3 X2 X1 X0 | ||
275 | byte 3: Z6 1 Y6 X6 1 Y2 Y1 Y0 | ||
276 | byte 4: Y7 0 Y5 Y4 Y3 1 1 0 | ||
277 | byte 5: T&P 0 Z5 Z4 Z3 Z2 Z1 Z0 | ||
278 | |||
279 | For touchpad packet, the format is: | ||
280 | |||
281 | packet-fmt b7 b6 b5 b4 b3 b2 b1 b0 | ||
282 | byte 0: TWO & MULTI L 1 R M 1 Y0-2 Y0-1 Y0-0 | ||
283 | byte 0: NEW L 1 X1-5 1 1 Y0-2 Y0-1 Y0-0 | ||
284 | byte 1: Y0-10 Y0-9 Y0-8 Y0-7 Y0-6 Y0-5 Y0-4 Y0-3 | ||
285 | byte 2: X0-11 1 X0-10 X0-9 X0-8 X0-7 X0-6 X0-5 | ||
286 | byte 3: X1-11 1 X0-4 X0-3 1 X0-2 X0-1 X0-0 | ||
287 | byte 4: TWO X1-10 TWO X1-9 X1-8 X1-7 X1-6 X1-5 X1-4 | ||
288 | byte 4: MULTI X1-10 TWO X1-9 X1-8 X1-7 X1-6 Y1-5 1 | ||
289 | byte 4: NEW X1-10 TWO X1-9 X1-8 X1-7 X1-6 0 0 | ||
290 | byte 5: TWO & NEW Y1-10 0 Y1-9 Y1-8 Y1-7 Y1-6 Y1-5 Y1-4 | ||
291 | byte 5: MULTI Y1-10 0 Y1-9 Y1-8 Y1-7 Y1-6 F-1 F-0 | ||
292 | |||
293 | L: Left button | ||
294 | R / M: Non-clickpads: Right / Middle button | ||
295 | Clickpads: When > 2 fingers are down, and some fingers | ||
296 | are in the button area, then the 2 coordinates reported | ||
297 | are for fingers outside the button area and these report | ||
298 | extra fingers being present in the right / left button | ||
299 | area. Note these fingers are not added to the F field! | ||
300 | so if a TWO packet is received and R = 1 then there are | ||
301 | 3 fingers down, etc. | ||
302 | TWO: 1: Two touches present, byte 0/4/5 are in TWO fmt | ||
303 | 0: If byte 4 bit 0 is 1, then byte 0/4/5 are in MULTI fmt | ||
304 | otherwise byte 0 bit 4 must be set and byte 0/4/5 are | ||
305 | in NEW fmt | ||
306 | F: Number of fingers - 3, 0 means 3 fingers, 1 means 4 ... | ||
diff --git a/Documentation/kasan.txt b/Documentation/kasan.txt new file mode 100644 index 000000000000..092fc10961fe --- /dev/null +++ b/Documentation/kasan.txt | |||
@@ -0,0 +1,170 @@ | |||
1 | Kernel address sanitizer | ||
2 | ================ | ||
3 | |||
4 | 0. Overview | ||
5 | =========== | ||
6 | |||
7 | Kernel Address sanitizer (KASan) is a dynamic memory error detector. It provides | ||
8 | a fast and comprehensive solution for finding use-after-free and out-of-bounds | ||
9 | bugs. | ||
10 | |||
11 | KASan uses compile-time instrumentation for checking every memory access, | ||
12 | therefore you will need a certain version of GCC > 4.9.2 | ||
13 | |||
14 | Currently KASan is supported only for x86_64 architecture and requires that the | ||
15 | kernel be built with the SLUB allocator. | ||
16 | |||
17 | 1. Usage | ||
18 | ========= | ||
19 | |||
20 | To enable KASAN configure kernel with: | ||
21 | |||
22 | CONFIG_KASAN = y | ||
23 | |||
24 | and choose between CONFIG_KASAN_OUTLINE and CONFIG_KASAN_INLINE. Outline/inline | ||
25 | is compiler instrumentation types. The former produces smaller binary the | ||
26 | latter is 1.1 - 2 times faster. Inline instrumentation requires GCC 5.0 or | ||
27 | latter. | ||
28 | |||
29 | Currently KASAN works only with the SLUB memory allocator. | ||
30 | For better bug detection and nicer report, enable CONFIG_STACKTRACE and put | ||
31 | at least 'slub_debug=U' in the boot cmdline. | ||
32 | |||
33 | To disable instrumentation for specific files or directories, add a line | ||
34 | similar to the following to the respective kernel Makefile: | ||
35 | |||
36 | For a single file (e.g. main.o): | ||
37 | KASAN_SANITIZE_main.o := n | ||
38 | |||
39 | For all files in one directory: | ||
40 | KASAN_SANITIZE := n | ||
41 | |||
42 | 1.1 Error reports | ||
43 | ========== | ||
44 | |||
45 | A typical out of bounds access report looks like this: | ||
46 | |||
47 | ================================================================== | ||
48 | BUG: AddressSanitizer: out of bounds access in kmalloc_oob_right+0x65/0x75 [test_kasan] at addr ffff8800693bc5d3 | ||
49 | Write of size 1 by task modprobe/1689 | ||
50 | ============================================================================= | ||
51 | BUG kmalloc-128 (Not tainted): kasan error | ||
52 | ----------------------------------------------------------------------------- | ||
53 | |||
54 | Disabling lock debugging due to kernel taint | ||
55 | INFO: Allocated in kmalloc_oob_right+0x3d/0x75 [test_kasan] age=0 cpu=0 pid=1689 | ||
56 | __slab_alloc+0x4b4/0x4f0 | ||
57 | kmem_cache_alloc_trace+0x10b/0x190 | ||
58 | kmalloc_oob_right+0x3d/0x75 [test_kasan] | ||
59 | init_module+0x9/0x47 [test_kasan] | ||
60 | do_one_initcall+0x99/0x200 | ||
61 | load_module+0x2cb3/0x3b20 | ||
62 | SyS_finit_module+0x76/0x80 | ||
63 | system_call_fastpath+0x12/0x17 | ||
64 | INFO: Slab 0xffffea0001a4ef00 objects=17 used=7 fp=0xffff8800693bd728 flags=0x100000000004080 | ||
65 | INFO: Object 0xffff8800693bc558 @offset=1368 fp=0xffff8800693bc720 | ||
66 | |||
67 | Bytes b4 ffff8800693bc548: 00 00 00 00 00 00 00 00 5a 5a 5a 5a 5a 5a 5a 5a ........ZZZZZZZZ | ||
68 | Object ffff8800693bc558: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk | ||
69 | Object ffff8800693bc568: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk | ||
70 | Object ffff8800693bc578: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk | ||
71 | Object ffff8800693bc588: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk | ||
72 | Object ffff8800693bc598: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk | ||
73 | Object ffff8800693bc5a8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk | ||
74 | Object ffff8800693bc5b8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk | ||
75 | Object ffff8800693bc5c8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b a5 kkkkkkkkkkkkkkk. | ||
76 | Redzone ffff8800693bc5d8: cc cc cc cc cc cc cc cc ........ | ||
77 | Padding ffff8800693bc718: 5a 5a 5a 5a 5a 5a 5a 5a ZZZZZZZZ | ||
78 | CPU: 0 PID: 1689 Comm: modprobe Tainted: G B 3.18.0-rc1-mm1+ #98 | ||
79 | Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.7.5-0-ge51488c-20140602_164612-nilsson.home.kraxel.org 04/01/2014 | ||
80 | ffff8800693bc000 0000000000000000 ffff8800693bc558 ffff88006923bb78 | ||
81 | ffffffff81cc68ae 00000000000000f3 ffff88006d407600 ffff88006923bba8 | ||
82 | ffffffff811fd848 ffff88006d407600 ffffea0001a4ef00 ffff8800693bc558 | ||
83 | Call Trace: | ||
84 | [<ffffffff81cc68ae>] dump_stack+0x46/0x58 | ||
85 | [<ffffffff811fd848>] print_trailer+0xf8/0x160 | ||
86 | [<ffffffffa00026a7>] ? kmem_cache_oob+0xc3/0xc3 [test_kasan] | ||
87 | [<ffffffff811ff0f5>] object_err+0x35/0x40 | ||
88 | [<ffffffffa0002065>] ? kmalloc_oob_right+0x65/0x75 [test_kasan] | ||
89 | [<ffffffff8120b9fa>] kasan_report_error+0x38a/0x3f0 | ||
90 | [<ffffffff8120a79f>] ? kasan_poison_shadow+0x2f/0x40 | ||
91 | [<ffffffff8120b344>] ? kasan_unpoison_shadow+0x14/0x40 | ||
92 | [<ffffffff8120a79f>] ? kasan_poison_shadow+0x2f/0x40 | ||
93 | [<ffffffffa00026a7>] ? kmem_cache_oob+0xc3/0xc3 [test_kasan] | ||
94 | [<ffffffff8120a995>] __asan_store1+0x75/0xb0 | ||
95 | [<ffffffffa0002601>] ? kmem_cache_oob+0x1d/0xc3 [test_kasan] | ||
96 | [<ffffffffa0002065>] ? kmalloc_oob_right+0x65/0x75 [test_kasan] | ||
97 | [<ffffffffa0002065>] kmalloc_oob_right+0x65/0x75 [test_kasan] | ||
98 | [<ffffffffa00026b0>] init_module+0x9/0x47 [test_kasan] | ||
99 | [<ffffffff810002d9>] do_one_initcall+0x99/0x200 | ||
100 | [<ffffffff811e4e5c>] ? __vunmap+0xec/0x160 | ||
101 | [<ffffffff81114f63>] load_module+0x2cb3/0x3b20 | ||
102 | [<ffffffff8110fd70>] ? m_show+0x240/0x240 | ||
103 | [<ffffffff81115f06>] SyS_finit_module+0x76/0x80 | ||
104 | [<ffffffff81cd3129>] system_call_fastpath+0x12/0x17 | ||
105 | Memory state around the buggy address: | ||
106 | ffff8800693bc300: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc | ||
107 | ffff8800693bc380: fc fc 00 00 00 00 00 00 00 00 00 00 00 00 00 fc | ||
108 | ffff8800693bc400: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc | ||
109 | ffff8800693bc480: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc | ||
110 | ffff8800693bc500: fc fc fc fc fc fc fc fc fc fc fc 00 00 00 00 00 | ||
111 | >ffff8800693bc580: 00 00 00 00 00 00 00 00 00 00 03 fc fc fc fc fc | ||
112 | ^ | ||
113 | ffff8800693bc600: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc | ||
114 | ffff8800693bc680: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc | ||
115 | ffff8800693bc700: fc fc fc fc fb fb fb fb fb fb fb fb fb fb fb fb | ||
116 | ffff8800693bc780: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb | ||
117 | ffff8800693bc800: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb | ||
118 | ================================================================== | ||
119 | |||
120 | First sections describe slub object where bad access happened. | ||
121 | See 'SLUB Debug output' section in Documentation/vm/slub.txt for details. | ||
122 | |||
123 | In the last section the report shows memory state around the accessed address. | ||
124 | Reading this part requires some more understanding of how KASAN works. | ||
125 | |||
126 | Each 8 bytes of memory are encoded in one shadow byte as accessible, | ||
127 | partially accessible, freed or they can be part of a redzone. | ||
128 | We use the following encoding for each shadow byte: 0 means that all 8 bytes | ||
129 | of the corresponding memory region are accessible; number N (1 <= N <= 7) means | ||
130 | that the first N bytes are accessible, and other (8 - N) bytes are not; | ||
131 | any negative value indicates that the entire 8-byte word is inaccessible. | ||
132 | We use different negative values to distinguish between different kinds of | ||
133 | inaccessible memory like redzones or freed memory (see mm/kasan/kasan.h). | ||
134 | |||
135 | In the report above the arrows point to the shadow byte 03, which means that | ||
136 | the accessed address is partially accessible. | ||
137 | |||
138 | |||
139 | 2. Implementation details | ||
140 | ======================== | ||
141 | |||
142 | From a high level, our approach to memory error detection is similar to that | ||
143 | of kmemcheck: use shadow memory to record whether each byte of memory is safe | ||
144 | to access, and use compile-time instrumentation to check shadow memory on each | ||
145 | memory access. | ||
146 | |||
147 | AddressSanitizer dedicates 1/8 of kernel memory to its shadow memory | ||
148 | (e.g. 16TB to cover 128TB on x86_64) and uses direct mapping with a scale and | ||
149 | offset to translate a memory address to its corresponding shadow address. | ||
150 | |||
151 | Here is the function witch translate an address to its corresponding shadow | ||
152 | address: | ||
153 | |||
154 | static inline void *kasan_mem_to_shadow(const void *addr) | ||
155 | { | ||
156 | return ((unsigned long)addr >> KASAN_SHADOW_SCALE_SHIFT) | ||
157 | + KASAN_SHADOW_OFFSET; | ||
158 | } | ||
159 | |||
160 | where KASAN_SHADOW_SCALE_SHIFT = 3. | ||
161 | |||
162 | Compile-time instrumentation used for checking memory accesses. Compiler inserts | ||
163 | function calls (__asan_load*(addr), __asan_store*(addr)) before each memory | ||
164 | access of size 1, 2, 4, 8 or 16. These functions check whether memory access is | ||
165 | valid or not by checking corresponding shadow memory. | ||
166 | |||
167 | GCC 5.0 has possibility to perform inline instrumentation. Instead of making | ||
168 | function calls GCC directly inserts the code to check the shadow memory. | ||
169 | This option significantly enlarges kernel but it gives x1.1-x2 performance | ||
170 | boost over outline instrumented kernel. | ||
diff --git a/Documentation/kbuild/makefiles.txt b/Documentation/kbuild/makefiles.txt index a311db829e9b..74b6c6d97210 100644 --- a/Documentation/kbuild/makefiles.txt +++ b/Documentation/kbuild/makefiles.txt | |||
@@ -524,15 +524,16 @@ more details, with real examples. | |||
524 | Example: | 524 | Example: |
525 | #arch/x86/Makefile | 525 | #arch/x86/Makefile |
526 | cflags-y += $(shell \ | 526 | cflags-y += $(shell \ |
527 | if [ $(call cc-version) -ge 0300 ] ; then \ | 527 | if [ $(cc-version) -ge 0300 ] ; then \ |
528 | echo "-mregparm=3"; fi ;) | 528 | echo "-mregparm=3"; fi ;) |
529 | 529 | ||
530 | In the above example, -mregparm=3 is only used for gcc version greater | 530 | In the above example, -mregparm=3 is only used for gcc version greater |
531 | than or equal to gcc 3.0. | 531 | than or equal to gcc 3.0. |
532 | 532 | ||
533 | cc-ifversion | 533 | cc-ifversion |
534 | cc-ifversion tests the version of $(CC) and equals last argument if | 534 | cc-ifversion tests the version of $(CC) and equals the fourth parameter |
535 | version expression is true. | 535 | if version expression is true, or the fifth (if given) if the version |
536 | expression is false. | ||
536 | 537 | ||
537 | Example: | 538 | Example: |
538 | #fs/reiserfs/Makefile | 539 | #fs/reiserfs/Makefile |
@@ -552,7 +553,7 @@ more details, with real examples. | |||
552 | 553 | ||
553 | Example: | 554 | Example: |
554 | #arch/powerpc/Makefile | 555 | #arch/powerpc/Makefile |
555 | $(Q)if test "$(call cc-fullversion)" = "040200" ; then \ | 556 | $(Q)if test "$(cc-fullversion)" = "040200" ; then \ |
556 | echo -n '*** GCC-4.2.0 cannot compile the 64-bit powerpc ' ; \ | 557 | echo -n '*** GCC-4.2.0 cannot compile the 64-bit powerpc ' ; \ |
557 | false ; \ | 558 | false ; \ |
558 | fi | 559 | fi |
@@ -751,12 +752,12 @@ generated by kbuild are deleted all over the kernel src tree when | |||
751 | Additional files can be specified in kbuild makefiles by use of $(clean-files). | 752 | Additional files can be specified in kbuild makefiles by use of $(clean-files). |
752 | 753 | ||
753 | Example: | 754 | Example: |
754 | #drivers/pci/Makefile | 755 | #lib/Makefile |
755 | clean-files := devlist.h classlist.h | 756 | clean-files := crc32table.h |
756 | 757 | ||
757 | When executing "make clean", the two files "devlist.h classlist.h" will be | 758 | When executing "make clean", the two files "devlist.h classlist.h" will be |
758 | deleted. Kbuild will assume files to be in the same relative directory as the | 759 | deleted. Kbuild will assume files to be in the same relative directory as the |
759 | Makefile except if an absolute path is specified (path starting with '/'). | 760 | Makefile, except if prefixed with $(objtree). |
760 | 761 | ||
761 | To delete a directory hierarchy use: | 762 | To delete a directory hierarchy use: |
762 | 763 | ||
@@ -764,9 +765,8 @@ To delete a directory hierarchy use: | |||
764 | #scripts/package/Makefile | 765 | #scripts/package/Makefile |
765 | clean-dirs := $(objtree)/debian/ | 766 | clean-dirs := $(objtree)/debian/ |
766 | 767 | ||
767 | This will delete the directory debian, including all subdirectories. | 768 | This will delete the directory debian in the toplevel directory, including all |
768 | Kbuild will assume the directories to be in the same relative path as the | 769 | subdirectories. |
769 | Makefile if no absolute path is specified (path does not start with '/'). | ||
770 | 770 | ||
771 | To exclude certain files from make clean, use the $(no-clean-files) variable. | 771 | To exclude certain files from make clean, use the $(no-clean-files) variable. |
772 | This is only a special case used in the top level Kbuild file: | 772 | This is only a special case used in the top level Kbuild file: |
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 4df73da11adc..bfcb1a62a7b4 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -970,6 +970,18 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
970 | 970 | ||
971 | smh Use ARM semihosting calls for early console. | 971 | smh Use ARM semihosting calls for early console. |
972 | 972 | ||
973 | s3c2410,<addr> | ||
974 | s3c2412,<addr> | ||
975 | s3c2440,<addr> | ||
976 | s3c6400,<addr> | ||
977 | s5pv210,<addr> | ||
978 | exynos4210,<addr> | ||
979 | Use early console provided by serial driver available | ||
980 | on Samsung SoCs, requires selecting proper type and | ||
981 | a correct base address of the selected UART port. The | ||
982 | serial port must already be setup and configured. | ||
983 | Options are not yet supported. | ||
984 | |||
973 | earlyprintk= [X86,SH,BLACKFIN,ARM,M68k] | 985 | earlyprintk= [X86,SH,BLACKFIN,ARM,M68k] |
974 | earlyprintk=vga | 986 | earlyprintk=vga |
975 | earlyprintk=efi | 987 | earlyprintk=efi |
@@ -1277,6 +1289,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
1277 | i8042.notimeout [HW] Ignore timeout condition signalled by controller | 1289 | i8042.notimeout [HW] Ignore timeout condition signalled by controller |
1278 | i8042.reset [HW] Reset the controller during init and cleanup | 1290 | i8042.reset [HW] Reset the controller during init and cleanup |
1279 | i8042.unlock [HW] Unlock (ignore) the keylock | 1291 | i8042.unlock [HW] Unlock (ignore) the keylock |
1292 | i8042.kbdreset [HW] Reset device connected to KBD port | ||
1280 | 1293 | ||
1281 | i810= [HW,DRM] | 1294 | i810= [HW,DRM] |
1282 | 1295 | ||
@@ -1469,6 +1482,9 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
1469 | no_hwp | 1482 | no_hwp |
1470 | Do not enable hardware P state control (HWP) | 1483 | Do not enable hardware P state control (HWP) |
1471 | if available. | 1484 | if available. |
1485 | hwp_only | ||
1486 | Only load intel_pstate on systems which support | ||
1487 | hardware P state control (HWP) if available. | ||
1472 | 1488 | ||
1473 | intremap= [X86-64, Intel-IOMMU] | 1489 | intremap= [X86-64, Intel-IOMMU] |
1474 | on enable Interrupt Remapping (default) | 1490 | on enable Interrupt Remapping (default) |
@@ -1493,6 +1509,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
1493 | forcesac | 1509 | forcesac |
1494 | soft | 1510 | soft |
1495 | pt [x86, IA-64] | 1511 | pt [x86, IA-64] |
1512 | nobypass [PPC/POWERNV] | ||
1513 | Disable IOMMU bypass, using IOMMU for PCI devices. | ||
1496 | 1514 | ||
1497 | 1515 | ||
1498 | io7= [HW] IO7 for Marvel based alpha systems | 1516 | io7= [HW] IO7 for Marvel based alpha systems |
@@ -3206,6 +3224,18 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
3206 | 3224 | ||
3207 | retain_initrd [RAM] Keep initrd memory after extraction | 3225 | retain_initrd [RAM] Keep initrd memory after extraction |
3208 | 3226 | ||
3227 | rfkill.default_state= | ||
3228 | 0 "airplane mode". All wifi, bluetooth, wimax, gps, fm, | ||
3229 | etc. communication is blocked by default. | ||
3230 | 1 Unblocked. | ||
3231 | |||
3232 | rfkill.master_switch_mode= | ||
3233 | 0 The "airplane mode" button does nothing. | ||
3234 | 1 The "airplane mode" button toggles between everything | ||
3235 | blocked and the previous configuration. | ||
3236 | 2 The "airplane mode" button toggles between everything | ||
3237 | blocked and everything unblocked. | ||
3238 | |||
3209 | rhash_entries= [KNL,NET] | 3239 | rhash_entries= [KNL,NET] |
3210 | Set number of hash buckets for route cache | 3240 | Set number of hash buckets for route cache |
3211 | 3241 | ||
diff --git a/Documentation/kprobes.txt b/Documentation/kprobes.txt index 4227ec2e3ab2..1488b6525eb6 100644 --- a/Documentation/kprobes.txt +++ b/Documentation/kprobes.txt | |||
@@ -702,7 +702,8 @@ a virtual address that is no longer valid (module init sections, module | |||
702 | virtual addresses that correspond to modules that've been unloaded), | 702 | virtual addresses that correspond to modules that've been unloaded), |
703 | such probes are marked with [GONE]. If the probe is temporarily disabled, | 703 | such probes are marked with [GONE]. If the probe is temporarily disabled, |
704 | such probes are marked with [DISABLED]. If the probe is optimized, it is | 704 | such probes are marked with [DISABLED]. If the probe is optimized, it is |
705 | marked with [OPTIMIZED]. | 705 | marked with [OPTIMIZED]. If the probe is ftrace-based, it is marked with |
706 | [FTRACE]. | ||
706 | 707 | ||
707 | /sys/kernel/debug/kprobes/enabled: Turn kprobes ON/OFF forcibly. | 708 | /sys/kernel/debug/kprobes/enabled: Turn kprobes ON/OFF forcibly. |
708 | 709 | ||
diff --git a/Documentation/locking/00-INDEX b/Documentation/locking/00-INDEX new file mode 100644 index 000000000000..c256c9bee2a4 --- /dev/null +++ b/Documentation/locking/00-INDEX | |||
@@ -0,0 +1,16 @@ | |||
1 | 00-INDEX | ||
2 | - this file. | ||
3 | lockdep-design.txt | ||
4 | - documentation on the runtime locking correctness validator. | ||
5 | lockstat.txt | ||
6 | - info on collecting statistics on locks (and contention). | ||
7 | mutex-design.txt | ||
8 | - info on the generic mutex subsystem. | ||
9 | rt-mutex-design.txt | ||
10 | - description of the RealTime mutex implementation design. | ||
11 | rt-mutex.txt | ||
12 | - desc. of RT-mutex subsystem with PI (Priority Inheritance) support. | ||
13 | spinlocks.txt | ||
14 | - info on using spinlocks to provide exclusive access in kernel. | ||
15 | ww-mutex-design.txt | ||
16 | - Intro to Mutex wait/would deadlock handling.s | ||
diff --git a/Documentation/locking/lockdep-design.txt b/Documentation/locking/lockdep-design.txt index 5dbc99c04f6e..5001280e9d82 100644 --- a/Documentation/locking/lockdep-design.txt +++ b/Documentation/locking/lockdep-design.txt | |||
@@ -34,7 +34,7 @@ The validator tracks lock-class usage history into 4n + 1 separate state bits: | |||
34 | - 'ever held with STATE enabled' | 34 | - 'ever held with STATE enabled' |
35 | - 'ever held as readlock with STATE enabled' | 35 | - 'ever held as readlock with STATE enabled' |
36 | 36 | ||
37 | Where STATE can be either one of (kernel/lockdep_states.h) | 37 | Where STATE can be either one of (kernel/locking/lockdep_states.h) |
38 | - hardirq | 38 | - hardirq |
39 | - softirq | 39 | - softirq |
40 | - reclaim_fs | 40 | - reclaim_fs |
diff --git a/Documentation/locking/lockstat.txt b/Documentation/locking/lockstat.txt index 7428773a1e69..568bbbacee91 100644 --- a/Documentation/locking/lockstat.txt +++ b/Documentation/locking/lockstat.txt | |||
@@ -121,6 +121,11 @@ show the header with column descriptions. Lines 05-18 and 20-31 show the actual | |||
121 | statistics. These statistics come in two parts; the actual stats separated by a | 121 | statistics. These statistics come in two parts; the actual stats separated by a |
122 | short separator (line 08, 13) from the contention points. | 122 | short separator (line 08, 13) from the contention points. |
123 | 123 | ||
124 | Lines 09-12 show the first 4 recorded contention points (the code | ||
125 | which tries to get the lock) and lines 14-17 show the first 4 recorded | ||
126 | contended points (the lock holder). It is possible that the max | ||
127 | con-bounces point is missing in the statistics. | ||
128 | |||
124 | The first lock (05-18) is a read/write lock, and shows two lines above the | 129 | The first lock (05-18) is a read/write lock, and shows two lines above the |
125 | short separator. The contention points don't match the column descriptors, | 130 | short separator. The contention points don't match the column descriptors, |
126 | they have two: contentions and [<IP>] symbol. The second set of contention | 131 | they have two: contentions and [<IP>] symbol. The second set of contention |
diff --git a/Documentation/memory-barriers.txt b/Documentation/memory-barriers.txt index 70a09f8a0383..ca2387ef27ab 100644 --- a/Documentation/memory-barriers.txt +++ b/Documentation/memory-barriers.txt | |||
@@ -269,6 +269,50 @@ And there are a number of things that _must_ or _must_not_ be assumed: | |||
269 | STORE *(A + 4) = Y; STORE *A = X; | 269 | STORE *(A + 4) = Y; STORE *A = X; |
270 | STORE {*A, *(A + 4) } = {X, Y}; | 270 | STORE {*A, *(A + 4) } = {X, Y}; |
271 | 271 | ||
272 | And there are anti-guarantees: | ||
273 | |||
274 | (*) These guarantees do not apply to bitfields, because compilers often | ||
275 | generate code to modify these using non-atomic read-modify-write | ||
276 | sequences. Do not attempt to use bitfields to synchronize parallel | ||
277 | algorithms. | ||
278 | |||
279 | (*) Even in cases where bitfields are protected by locks, all fields | ||
280 | in a given bitfield must be protected by one lock. If two fields | ||
281 | in a given bitfield are protected by different locks, the compiler's | ||
282 | non-atomic read-modify-write sequences can cause an update to one | ||
283 | field to corrupt the value of an adjacent field. | ||
284 | |||
285 | (*) These guarantees apply only to properly aligned and sized scalar | ||
286 | variables. "Properly sized" currently means variables that are | ||
287 | the same size as "char", "short", "int" and "long". "Properly | ||
288 | aligned" means the natural alignment, thus no constraints for | ||
289 | "char", two-byte alignment for "short", four-byte alignment for | ||
290 | "int", and either four-byte or eight-byte alignment for "long", | ||
291 | on 32-bit and 64-bit systems, respectively. Note that these | ||
292 | guarantees were introduced into the C11 standard, so beware when | ||
293 | using older pre-C11 compilers (for example, gcc 4.6). The portion | ||
294 | of the standard containing this guarantee is Section 3.14, which | ||
295 | defines "memory location" as follows: | ||
296 | |||
297 | memory location | ||
298 | either an object of scalar type, or a maximal sequence | ||
299 | of adjacent bit-fields all having nonzero width | ||
300 | |||
301 | NOTE 1: Two threads of execution can update and access | ||
302 | separate memory locations without interfering with | ||
303 | each other. | ||
304 | |||
305 | NOTE 2: A bit-field and an adjacent non-bit-field member | ||
306 | are in separate memory locations. The same applies | ||
307 | to two bit-fields, if one is declared inside a nested | ||
308 | structure declaration and the other is not, or if the two | ||
309 | are separated by a zero-length bit-field declaration, | ||
310 | or if they are separated by a non-bit-field member | ||
311 | declaration. It is not safe to concurrently update two | ||
312 | bit-fields in the same structure if all members declared | ||
313 | between them are also bit-fields, no matter what the | ||
314 | sizes of those intervening bit-fields happen to be. | ||
315 | |||
272 | 316 | ||
273 | ========================= | 317 | ========================= |
274 | WHAT ARE MEMORY BARRIERS? | 318 | WHAT ARE MEMORY BARRIERS? |
@@ -750,7 +794,7 @@ In summary: | |||
750 | However, they do -not- guarantee any other sort of ordering: | 794 | However, they do -not- guarantee any other sort of ordering: |
751 | Not prior loads against later loads, nor prior stores against | 795 | Not prior loads against later loads, nor prior stores against |
752 | later anything. If you need these other forms of ordering, | 796 | later anything. If you need these other forms of ordering, |
753 | use smb_rmb(), smp_wmb(), or, in the case of prior stores and | 797 | use smp_rmb(), smp_wmb(), or, in the case of prior stores and |
754 | later loads, smp_mb(). | 798 | later loads, smp_mb(). |
755 | 799 | ||
756 | (*) If both legs of the "if" statement begin with identical stores | 800 | (*) If both legs of the "if" statement begin with identical stores |
diff --git a/Documentation/misc-devices/mei/mei-client-bus.txt b/Documentation/misc-devices/mei/mei-client-bus.txt index f83910a8ce76..743be4ec8989 100644 --- a/Documentation/misc-devices/mei/mei-client-bus.txt +++ b/Documentation/misc-devices/mei/mei-client-bus.txt | |||
@@ -1,9 +1,10 @@ | |||
1 | Intel(R) Management Engine (ME) Client bus API | 1 | Intel(R) Management Engine (ME) Client bus API |
2 | =============================================== | 2 | ============================================== |
3 | 3 | ||
4 | 4 | ||
5 | Rationale | 5 | Rationale |
6 | ========= | 6 | ========= |
7 | |||
7 | MEI misc character device is useful for dedicated applications to send and receive | 8 | MEI misc character device is useful for dedicated applications to send and receive |
8 | data to the many FW appliance found in Intel's ME from the user space. | 9 | data to the many FW appliance found in Intel's ME from the user space. |
9 | However for some of the ME functionalities it make sense to leverage existing software | 10 | However for some of the ME functionalities it make sense to leverage existing software |
@@ -17,7 +18,8 @@ the existing code. | |||
17 | 18 | ||
18 | 19 | ||
19 | MEI CL bus API | 20 | MEI CL bus API |
20 | =========== | 21 | ============== |
22 | |||
21 | A driver implementation for an MEI Client is very similar to existing bus | 23 | A driver implementation for an MEI Client is very similar to existing bus |
22 | based device drivers. The driver registers itself as an MEI CL bus driver through | 24 | based device drivers. The driver registers itself as an MEI CL bus driver through |
23 | the mei_cl_driver structure: | 25 | the mei_cl_driver structure: |
@@ -55,6 +57,7 @@ received buffers. | |||
55 | 57 | ||
56 | Example | 58 | Example |
57 | ======= | 59 | ======= |
60 | |||
58 | As a theoretical example let's pretend the ME comes with a "contact" NFC IP. | 61 | As a theoretical example let's pretend the ME comes with a "contact" NFC IP. |
59 | The driver init and exit routines for this device would look like: | 62 | The driver init and exit routines for this device would look like: |
60 | 63 | ||
@@ -69,11 +72,11 @@ static struct mei_cl_device_id contact_mei_cl_tbl[] = { | |||
69 | MODULE_DEVICE_TABLE(mei_cl, contact_mei_cl_tbl); | 72 | MODULE_DEVICE_TABLE(mei_cl, contact_mei_cl_tbl); |
70 | 73 | ||
71 | static struct mei_cl_driver contact_driver = { | 74 | static struct mei_cl_driver contact_driver = { |
72 | .id_table = contact_mei_tbl, | 75 | .id_table = contact_mei_tbl, |
73 | .name = CONTACT_DRIVER_NAME, | 76 | .name = CONTACT_DRIVER_NAME, |
74 | 77 | ||
75 | .probe = contact_probe, | 78 | .probe = contact_probe, |
76 | .remove = contact_remove, | 79 | .remove = contact_remove, |
77 | }; | 80 | }; |
78 | 81 | ||
79 | static int contact_init(void) | 82 | static int contact_init(void) |
@@ -109,7 +112,7 @@ int contact_probe(struct mei_cl_device *dev, struct mei_cl_device_id *id) | |||
109 | mei_cl_register_event_cb(dev, contact_event_cb, contact); | 112 | mei_cl_register_event_cb(dev, contact_event_cb, contact); |
110 | 113 | ||
111 | return 0; | 114 | return 0; |
112 | } | 115 | } |
113 | 116 | ||
114 | In the probe routine the driver first enable the MEI device and then registers | 117 | In the probe routine the driver first enable the MEI device and then registers |
115 | an ME bus event handler which is as close as it can get to registering a | 118 | an ME bus event handler which is as close as it can get to registering a |
diff --git a/Documentation/misc-devices/mei/mei.txt b/Documentation/misc-devices/mei/mei.txt index 15bba1aeba9a..8d47501bba0a 100644 --- a/Documentation/misc-devices/mei/mei.txt +++ b/Documentation/misc-devices/mei/mei.txt | |||
@@ -1,8 +1,8 @@ | |||
1 | Intel(R) Management Engine Interface (Intel(R) MEI) | 1 | Intel(R) Management Engine Interface (Intel(R) MEI) |
2 | ======================= | 2 | =================================================== |
3 | 3 | ||
4 | Introduction | 4 | Introduction |
5 | ======================= | 5 | ============ |
6 | 6 | ||
7 | The Intel Management Engine (Intel ME) is an isolated and protected computing | 7 | The Intel Management Engine (Intel ME) is an isolated and protected computing |
8 | resource (Co-processor) residing inside certain Intel chipsets. The Intel ME | 8 | resource (Co-processor) residing inside certain Intel chipsets. The Intel ME |
@@ -19,7 +19,7 @@ each client has its own protocol. The protocol is message-based with a | |||
19 | header and payload up to 512 bytes. | 19 | header and payload up to 512 bytes. |
20 | 20 | ||
21 | Prominent usage of the Intel ME Interface is to communicate with Intel(R) | 21 | Prominent usage of the Intel ME Interface is to communicate with Intel(R) |
22 | Active Management Technology (Intel AMT)implemented in firmware running on | 22 | Active Management Technology (Intel AMT) implemented in firmware running on |
23 | the Intel ME. | 23 | the Intel ME. |
24 | 24 | ||
25 | Intel AMT provides the ability to manage a host remotely out-of-band (OOB) | 25 | Intel AMT provides the ability to manage a host remotely out-of-band (OOB) |
@@ -44,8 +44,9 @@ HTTP/S that are received from a remote management console application. | |||
44 | For more information about Intel AMT: | 44 | For more information about Intel AMT: |
45 | http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide | 45 | http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide |
46 | 46 | ||
47 | |||
47 | Intel MEI Driver | 48 | Intel MEI Driver |
48 | ======================= | 49 | ================ |
49 | 50 | ||
50 | The driver exposes a misc device called /dev/mei. | 51 | The driver exposes a misc device called /dev/mei. |
51 | 52 | ||
@@ -91,8 +92,10 @@ A code snippet for an application communicating with Intel AMTHI client: | |||
91 | [...] | 92 | [...] |
92 | close(fd); | 93 | close(fd); |
93 | 94 | ||
94 | IOCTL: | 95 | |
95 | ====== | 96 | IOCTL |
97 | ===== | ||
98 | |||
96 | The Intel MEI Driver supports the following IOCTL command: | 99 | The Intel MEI Driver supports the following IOCTL command: |
97 | IOCTL_MEI_CONNECT_CLIENT Connect to firmware Feature (client). | 100 | IOCTL_MEI_CONNECT_CLIENT Connect to firmware Feature (client). |
98 | 101 | ||
@@ -122,58 +125,61 @@ The Intel MEI Driver supports the following IOCTL command: | |||
122 | data that can be sent or received. (e.g. if MTU=2K, can send | 125 | data that can be sent or received. (e.g. if MTU=2K, can send |
123 | requests up to bytes 2k and received responses up to 2k bytes). | 126 | requests up to bytes 2k and received responses up to 2k bytes). |
124 | 127 | ||
125 | Intel ME Applications: | 128 | |
126 | ============== | 129 | Intel ME Applications |
127 | 130 | ===================== | |
128 | 1) Intel Local Management Service (Intel LMS) | 131 | |
129 | 132 | 1) Intel Local Management Service (Intel LMS) | |
130 | Applications running locally on the platform communicate with Intel AMT Release | 133 | |
131 | 2.0 and later releases in the same way that network applications do via SOAP | 134 | Applications running locally on the platform communicate with Intel AMT Release |
132 | over HTTP (deprecated starting with Release 6.0) or with WS-Management over | 135 | 2.0 and later releases in the same way that network applications do via SOAP |
133 | SOAP over HTTP. This means that some Intel AMT features can be accessed from a | 136 | over HTTP (deprecated starting with Release 6.0) or with WS-Management over |
134 | local application using the same network interface as a remote application | 137 | SOAP over HTTP. This means that some Intel AMT features can be accessed from a |
135 | communicating with Intel AMT over the network. | 138 | local application using the same network interface as a remote application |
136 | 139 | communicating with Intel AMT over the network. | |
137 | When a local application sends a message addressed to the local Intel AMT host | 140 | |
138 | name, the Intel LMS, which listens for traffic directed to the host name, | 141 | When a local application sends a message addressed to the local Intel AMT host |
139 | intercepts the message and routes it to the Intel MEI. | 142 | name, the Intel LMS, which listens for traffic directed to the host name, |
140 | For more information: | 143 | intercepts the message and routes it to the Intel MEI. |
141 | http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide | 144 | For more information: |
142 | Under "About Intel AMT" => "Local Access" | 145 | http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide |
143 | 146 | Under "About Intel AMT" => "Local Access" | |
144 | For downloading Intel LMS: | 147 | |
145 | http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/ | 148 | For downloading Intel LMS: |
146 | 149 | http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/ | |
147 | The Intel LMS opens a connection using the Intel MEI driver to the Intel LMS | 150 | |
148 | firmware feature using a defined UUID and then communicates with the feature | 151 | The Intel LMS opens a connection using the Intel MEI driver to the Intel LMS |
149 | using a protocol called Intel AMT Port Forwarding Protocol(Intel APF protocol). | 152 | firmware feature using a defined UUID and then communicates with the feature |
150 | The protocol is used to maintain multiple sessions with Intel AMT from a | 153 | using a protocol called Intel AMT Port Forwarding Protocol (Intel APF protocol). |
151 | single application. | 154 | The protocol is used to maintain multiple sessions with Intel AMT from a |
152 | 155 | single application. | |
153 | See the protocol specification in the Intel AMT Software Development Kit(SDK) | 156 | |
154 | http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide | 157 | See the protocol specification in the Intel AMT Software Development Kit (SDK) |
155 | Under "SDK Resources" => "Intel(R) vPro(TM) Gateway(MPS)" | 158 | http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide |
156 | => "Information for Intel(R) vPro(TM) Gateway Developers" | 159 | Under "SDK Resources" => "Intel(R) vPro(TM) Gateway (MPS)" |
157 | => "Description of the Intel AMT Port Forwarding (APF)Protocol" | 160 | => "Information for Intel(R) vPro(TM) Gateway Developers" |
158 | 161 | => "Description of the Intel AMT Port Forwarding (APF) Protocol" | |
159 | 2) Intel AMT Remote configuration using a Local Agent | 162 | |
160 | A Local Agent enables IT personnel to configure Intel AMT out-of-the-box | 163 | 2) Intel AMT Remote configuration using a Local Agent |
161 | without requiring installing additional data to enable setup. The remote | 164 | |
162 | configuration process may involve an ISV-developed remote configuration | 165 | A Local Agent enables IT personnel to configure Intel AMT out-of-the-box |
163 | agent that runs on the host. | 166 | without requiring installing additional data to enable setup. The remote |
164 | For more information: | 167 | configuration process may involve an ISV-developed remote configuration |
165 | http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide | 168 | agent that runs on the host. |
166 | Under "Setup and Configuration of Intel AMT" => | 169 | For more information: |
167 | "SDK Tools Supporting Setup and Configuration" => | 170 | http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide |
168 | "Using the Local Agent Sample" | 171 | Under "Setup and Configuration of Intel AMT" => |
169 | 172 | "SDK Tools Supporting Setup and Configuration" => | |
170 | An open source Intel AMT configuration utility, implementing a local agent | 173 | "Using the Local Agent Sample" |
171 | that accesses the Intel MEI driver, can be found here: | 174 | |
172 | http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/ | 175 | An open source Intel AMT configuration utility, implementing a local agent |
173 | 176 | that accesses the Intel MEI driver, can be found here: | |
174 | 177 | http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/ | |
175 | Intel AMT OS Health Watchdog: | 178 | |
176 | ============================= | 179 | |
180 | Intel AMT OS Health Watchdog | ||
181 | ============================ | ||
182 | |||
177 | The Intel AMT Watchdog is an OS Health (Hang/Crash) watchdog. | 183 | The Intel AMT Watchdog is an OS Health (Hang/Crash) watchdog. |
178 | Whenever the OS hangs or crashes, Intel AMT will send an event | 184 | Whenever the OS hangs or crashes, Intel AMT will send an event |
179 | to any subscriber to this event. This mechanism means that | 185 | to any subscriber to this event. This mechanism means that |
@@ -192,8 +198,10 @@ watchdog is 120 seconds. | |||
192 | If the Intel AMT Watchdog feature does not exist (i.e. the connection failed), | 198 | If the Intel AMT Watchdog feature does not exist (i.e. the connection failed), |
193 | the Intel MEI driver will disable the sending of heartbeats. | 199 | the Intel MEI driver will disable the sending of heartbeats. |
194 | 200 | ||
195 | Supported Chipsets: | 201 | |
202 | Supported Chipsets | ||
196 | ================== | 203 | ================== |
204 | |||
197 | 7 Series Chipset Family | 205 | 7 Series Chipset Family |
198 | 6 Series Chipset Family | 206 | 6 Series Chipset Family |
199 | 5 Series Chipset Family | 207 | 5 Series Chipset Family |
diff --git a/Documentation/networking/00-INDEX b/Documentation/networking/00-INDEX index 557b6ef70c26..df27a1a50776 100644 --- a/Documentation/networking/00-INDEX +++ b/Documentation/networking/00-INDEX | |||
@@ -1,7 +1,5 @@ | |||
1 | 00-INDEX | 1 | 00-INDEX |
2 | - this file | 2 | - this file |
3 | 3c505.txt | ||
4 | - information on the 3Com EtherLink Plus (3c505) driver. | ||
5 | 3c509.txt | 3 | 3c509.txt |
6 | - information on the 3Com Etherlink III Series Ethernet cards. | 4 | - information on the 3Com Etherlink III Series Ethernet cards. |
7 | 6pack.txt | 5 | 6pack.txt |
@@ -24,6 +22,8 @@ README.sb1000 | |||
24 | - info on General Instrument/NextLevel SURFboard1000 cable modem. | 22 | - info on General Instrument/NextLevel SURFboard1000 cable modem. |
25 | alias.txt | 23 | alias.txt |
26 | - info on using alias network devices. | 24 | - info on using alias network devices. |
25 | altera_tse.txt | ||
26 | - Altera Triple-Speed Ethernet controller. | ||
27 | arcnet-hardware.txt | 27 | arcnet-hardware.txt |
28 | - tons of info on ARCnet, hubs, jumper settings for ARCnet cards, etc. | 28 | - tons of info on ARCnet, hubs, jumper settings for ARCnet cards, etc. |
29 | arcnet.txt | 29 | arcnet.txt |
@@ -42,6 +42,8 @@ bridge.txt | |||
42 | - where to get user space programs for ethernet bridging with Linux. | 42 | - where to get user space programs for ethernet bridging with Linux. |
43 | can.txt | 43 | can.txt |
44 | - documentation on CAN protocol family. | 44 | - documentation on CAN protocol family. |
45 | cdc_mbim.txt | ||
46 | - 3G/LTE USB modem (Mobile Broadband Interface Model) | ||
45 | cops.txt | 47 | cops.txt |
46 | - info on the COPS LocalTalk Linux driver | 48 | - info on the COPS LocalTalk Linux driver |
47 | cs89x0.txt | 49 | cs89x0.txt |
@@ -54,6 +56,8 @@ cxgb.txt | |||
54 | - Release Notes for the Chelsio N210 Linux device driver. | 56 | - Release Notes for the Chelsio N210 Linux device driver. |
55 | dccp.txt | 57 | dccp.txt |
56 | - the Datagram Congestion Control Protocol (DCCP) (RFC 4340..42). | 58 | - the Datagram Congestion Control Protocol (DCCP) (RFC 4340..42). |
59 | dctcp.txt | ||
60 | - DataCenter TCP congestion control | ||
57 | de4x5.txt | 61 | de4x5.txt |
58 | - the Digital EtherWORKS DE4?? and DE5?? PCI Ethernet driver | 62 | - the Digital EtherWORKS DE4?? and DE5?? PCI Ethernet driver |
59 | decnet.txt | 63 | decnet.txt |
diff --git a/Documentation/networking/can.txt b/Documentation/networking/can.txt index 2236d6dcb7da..0a2859a8ee7e 100644 --- a/Documentation/networking/can.txt +++ b/Documentation/networking/can.txt | |||
@@ -234,7 +234,7 @@ solution for a couple of reasons: | |||
234 | mechanisms. Inside this filter definition the (interested) type of | 234 | mechanisms. Inside this filter definition the (interested) type of |
235 | errors may be selected. The reception of error messages is disabled | 235 | errors may be selected. The reception of error messages is disabled |
236 | 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 |
237 | described in the Linux header file "include/linux/can/error.h". | 237 | described in the Linux header file "include/uapi/linux/can/error.h". |
238 | 238 | ||
239 | 4. How to use SocketCAN | 239 | 4. How to use SocketCAN |
240 | ------------------------ | 240 | ------------------------ |
diff --git a/Documentation/networking/filter.txt b/Documentation/networking/filter.txt index 58d08f8d8d80..9930ecfbb465 100644 --- a/Documentation/networking/filter.txt +++ b/Documentation/networking/filter.txt | |||
@@ -279,8 +279,8 @@ Possible BPF extensions are shown in the following table: | |||
279 | hatype skb->dev->type | 279 | hatype skb->dev->type |
280 | rxhash skb->hash | 280 | rxhash skb->hash |
281 | cpu raw_smp_processor_id() | 281 | cpu raw_smp_processor_id() |
282 | vlan_tci vlan_tx_tag_get(skb) | 282 | vlan_tci skb_vlan_tag_get(skb) |
283 | vlan_pr vlan_tx_tag_present(skb) | 283 | vlan_pr skb_vlan_tag_present(skb) |
284 | rand prandom_u32() | 284 | rand prandom_u32() |
285 | 285 | ||
286 | These extensions can also be prefixed with '#'. | 286 | These extensions can also be prefixed with '#'. |
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt index 9bffdfc648dc..1b8c964b0d17 100644 --- a/Documentation/networking/ip-sysctl.txt +++ b/Documentation/networking/ip-sysctl.txt | |||
@@ -66,6 +66,8 @@ fwmark_reflect - BOOLEAN | |||
66 | route/max_size - INTEGER | 66 | route/max_size - INTEGER |
67 | Maximum number of routes allowed in the kernel. Increase | 67 | Maximum number of routes allowed in the kernel. Increase |
68 | this when using large numbers of interfaces and/or routes. | 68 | this when using large numbers of interfaces and/or routes. |
69 | From linux kernel 3.6 onwards, this is deprecated for ipv4 | ||
70 | as route cache is no longer used. | ||
69 | 71 | ||
70 | neigh/default/gc_thresh1 - INTEGER | 72 | neigh/default/gc_thresh1 - INTEGER |
71 | Minimum number of entries to keep. Garbage collector will not | 73 | Minimum number of entries to keep. Garbage collector will not |
@@ -288,6 +290,28 @@ tcp_frto - INTEGER | |||
288 | 290 | ||
289 | By default it's enabled with a non-zero value. 0 disables F-RTO. | 291 | By default it's enabled with a non-zero value. 0 disables F-RTO. |
290 | 292 | ||
293 | tcp_invalid_ratelimit - INTEGER | ||
294 | Limit the maximal rate for sending duplicate acknowledgments | ||
295 | in response to incoming TCP packets that are for an existing | ||
296 | connection but that are invalid due to any of these reasons: | ||
297 | |||
298 | (a) out-of-window sequence number, | ||
299 | (b) out-of-window acknowledgment number, or | ||
300 | (c) PAWS (Protection Against Wrapped Sequence numbers) check failure | ||
301 | |||
302 | This can help mitigate simple "ack loop" DoS attacks, wherein | ||
303 | a buggy or malicious middlebox or man-in-the-middle can | ||
304 | rewrite TCP header fields in manner that causes each endpoint | ||
305 | to think that the other is sending invalid TCP segments, thus | ||
306 | causing each side to send an unterminating stream of duplicate | ||
307 | acknowledgments for invalid segments. | ||
308 | |||
309 | Using 0 disables rate-limiting of dupacks in response to | ||
310 | invalid segments; otherwise this value specifies the minimal | ||
311 | space between sending such dupacks, in milliseconds. | ||
312 | |||
313 | Default: 500 (milliseconds). | ||
314 | |||
291 | tcp_keepalive_time - INTEGER | 315 | tcp_keepalive_time - INTEGER |
292 | How often TCP sends out keepalive messages when keepalive is enabled. | 316 | How often TCP sends out keepalive messages when keepalive is enabled. |
293 | Default: 2hours. | 317 | Default: 2hours. |
@@ -1285,6 +1309,13 @@ accept_ra_rtr_pref - BOOLEAN | |||
1285 | Functional default: enabled if accept_ra is enabled. | 1309 | Functional default: enabled if accept_ra is enabled. |
1286 | disabled if accept_ra is disabled. | 1310 | disabled if accept_ra is disabled. |
1287 | 1311 | ||
1312 | accept_ra_mtu - BOOLEAN | ||
1313 | Apply the MTU value specified in RA option 5 (RFC4861). If | ||
1314 | disabled, the MTU specified in the RA will be ignored. | ||
1315 | |||
1316 | Functional default: enabled if accept_ra is enabled. | ||
1317 | disabled if accept_ra is disabled. | ||
1318 | |||
1288 | accept_redirects - BOOLEAN | 1319 | accept_redirects - BOOLEAN |
1289 | Accept Redirects. | 1320 | Accept Redirects. |
1290 | 1321 | ||
diff --git a/Documentation/networking/netlink_mmap.txt b/Documentation/networking/netlink_mmap.txt index c6af4bac5aa8..54f10478e8e3 100644 --- a/Documentation/networking/netlink_mmap.txt +++ b/Documentation/networking/netlink_mmap.txt | |||
@@ -199,16 +199,9 @@ frame header. | |||
199 | TX limitations | 199 | TX limitations |
200 | -------------- | 200 | -------------- |
201 | 201 | ||
202 | Kernel processing usually involves validation of the message received by | 202 | As of Jan 2015 the message is always copied from the ring frame to an |
203 | user-space, then processing its contents. The kernel must assure that | 203 | allocated buffer due to unresolved security concerns. |
204 | userspace is not able to modify the message contents after they have been | 204 | See commit 4682a0358639b29cf ("netlink: Always copy on mmap TX."). |
205 | validated. In order to do so, the message is copied from the ring frame | ||
206 | to an allocated buffer if either of these conditions is false: | ||
207 | |||
208 | - only a single mapping of the ring exists | ||
209 | - the file descriptor is not shared between processes | ||
210 | |||
211 | This means that for threaded programs, the kernel will fall back to copying. | ||
212 | 205 | ||
213 | Example | 206 | Example |
214 | ------- | 207 | ------- |
diff --git a/Documentation/networking/nf_conntrack-sysctl.txt b/Documentation/networking/nf_conntrack-sysctl.txt index 70da5086153d..f55599c62c9d 100644 --- a/Documentation/networking/nf_conntrack-sysctl.txt +++ b/Documentation/networking/nf_conntrack-sysctl.txt | |||
@@ -11,7 +11,8 @@ nf_conntrack_buckets - INTEGER (read-only) | |||
11 | Size of hash table. If not specified as parameter during module | 11 | Size of hash table. If not specified as parameter during module |
12 | loading, the default size is calculated by dividing total memory | 12 | loading, the default size is calculated by dividing total memory |
13 | by 16384 to determine the number of buckets but the hash table will | 13 | by 16384 to determine the number of buckets but the hash table will |
14 | never have fewer than 32 or more than 16384 buckets. | 14 | never have fewer than 32 and limited to 16384 buckets. For systems |
15 | with more than 4GB of memory it will be 65536 buckets. | ||
15 | 16 | ||
16 | nf_conntrack_checksum - BOOLEAN | 17 | nf_conntrack_checksum - BOOLEAN |
17 | 0 - disabled | 18 | 0 - disabled |
diff --git a/Documentation/networking/openvswitch.txt b/Documentation/networking/openvswitch.txt index 37c20ee2455e..b3b9ac61d29d 100644 --- a/Documentation/networking/openvswitch.txt +++ b/Documentation/networking/openvswitch.txt | |||
@@ -131,6 +131,19 @@ performs best-effort detection of overlapping wildcarded flows and may reject | |||
131 | some but not all of them. However, this behavior may change in future versions. | 131 | some but not all of them. However, this behavior may change in future versions. |
132 | 132 | ||
133 | 133 | ||
134 | Unique flow identifiers | ||
135 | ----------------------- | ||
136 | |||
137 | An alternative to using the original match portion of a key as the handle for | ||
138 | flow identification is a unique flow identifier, or "UFID". UFIDs are optional | ||
139 | for both the kernel and user space program. | ||
140 | |||
141 | User space programs that support UFID are expected to provide it during flow | ||
142 | setup in addition to the flow, then refer to the flow using the UFID for all | ||
143 | future operations. The kernel is not required to index flows by the original | ||
144 | flow key if a UFID is specified. | ||
145 | |||
146 | |||
134 | Basic rule for evolving flow keys | 147 | Basic rule for evolving flow keys |
135 | --------------------------------- | 148 | --------------------------------- |
136 | 149 | ||
diff --git a/Documentation/networking/timestamping.txt b/Documentation/networking/timestamping.txt index a5c784c89312..5f0922613f1a 100644 --- a/Documentation/networking/timestamping.txt +++ b/Documentation/networking/timestamping.txt | |||
@@ -162,6 +162,27 @@ SOF_TIMESTAMPING_OPT_CMSG: | |||
162 | option IP_PKTINFO simultaneously. | 162 | option IP_PKTINFO simultaneously. |
163 | 163 | ||
164 | 164 | ||
165 | SOF_TIMESTAMPING_OPT_TSONLY: | ||
166 | |||
167 | Applies to transmit timestamps only. Makes the kernel return the | ||
168 | timestamp as a cmsg alongside an empty packet, as opposed to | ||
169 | alongside the original packet. This reduces the amount of memory | ||
170 | charged to the socket's receive budget (SO_RCVBUF) and delivers | ||
171 | the timestamp even if sysctl net.core.tstamp_allow_data is 0. | ||
172 | This option disables SOF_TIMESTAMPING_OPT_CMSG. | ||
173 | |||
174 | |||
175 | New applications are encouraged to pass SOF_TIMESTAMPING_OPT_ID to | ||
176 | disambiguate timestamps and SOF_TIMESTAMPING_OPT_TSONLY to operate | ||
177 | regardless of the setting of sysctl net.core.tstamp_allow_data. | ||
178 | |||
179 | An exception is when a process needs additional cmsg data, for | ||
180 | instance SOL_IP/IP_PKTINFO to detect the egress network interface. | ||
181 | Then pass option SOF_TIMESTAMPING_OPT_CMSG. This option depends on | ||
182 | having access to the contents of the original packet, so cannot be | ||
183 | combined with SOF_TIMESTAMPING_OPT_TSONLY. | ||
184 | |||
185 | |||
165 | 1.4 Bytestream Timestamps | 186 | 1.4 Bytestream Timestamps |
166 | 187 | ||
167 | The SO_TIMESTAMPING interface supports timestamping of bytes in a | 188 | The SO_TIMESTAMPING interface supports timestamping of bytes in a |
diff --git a/Documentation/networking/timestamping/txtimestamp.c b/Documentation/networking/timestamping/txtimestamp.c index 876f71c5625a..8217510d3842 100644 --- a/Documentation/networking/timestamping/txtimestamp.c +++ b/Documentation/networking/timestamping/txtimestamp.c | |||
@@ -30,6 +30,8 @@ | |||
30 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | 30 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. |
31 | */ | 31 | */ |
32 | 32 | ||
33 | #define _GNU_SOURCE | ||
34 | |||
33 | #include <arpa/inet.h> | 35 | #include <arpa/inet.h> |
34 | #include <asm/types.h> | 36 | #include <asm/types.h> |
35 | #include <error.h> | 37 | #include <error.h> |
@@ -59,14 +61,6 @@ | |||
59 | #include <time.h> | 61 | #include <time.h> |
60 | #include <unistd.h> | 62 | #include <unistd.h> |
61 | 63 | ||
62 | /* ugly hack to work around netinet/in.h and linux/ipv6.h conflicts */ | ||
63 | #ifndef in6_pktinfo | ||
64 | struct in6_pktinfo { | ||
65 | struct in6_addr ipi6_addr; | ||
66 | int ipi6_ifindex; | ||
67 | }; | ||
68 | #endif | ||
69 | |||
70 | /* command line parameters */ | 64 | /* command line parameters */ |
71 | static int cfg_proto = SOCK_STREAM; | 65 | static int cfg_proto = SOCK_STREAM; |
72 | static int cfg_ipproto = IPPROTO_TCP; | 66 | static int cfg_ipproto = IPPROTO_TCP; |
@@ -76,6 +70,7 @@ static int do_ipv6 = 1; | |||
76 | static int cfg_payload_len = 10; | 70 | static int cfg_payload_len = 10; |
77 | static bool cfg_show_payload; | 71 | static bool cfg_show_payload; |
78 | static bool cfg_do_pktinfo; | 72 | static bool cfg_do_pktinfo; |
73 | static bool cfg_loop_nodata; | ||
79 | static uint16_t dest_port = 9000; | 74 | static uint16_t dest_port = 9000; |
80 | 75 | ||
81 | static struct sockaddr_in daddr; | 76 | static struct sockaddr_in daddr; |
@@ -147,6 +142,9 @@ static void print_payload(char *data, int len) | |||
147 | { | 142 | { |
148 | int i; | 143 | int i; |
149 | 144 | ||
145 | if (!len) | ||
146 | return; | ||
147 | |||
150 | if (len > 70) | 148 | if (len > 70) |
151 | len = 70; | 149 | len = 70; |
152 | 150 | ||
@@ -183,6 +181,7 @@ static void __recv_errmsg_cmsg(struct msghdr *msg, int payload_len) | |||
183 | struct sock_extended_err *serr = NULL; | 181 | struct sock_extended_err *serr = NULL; |
184 | struct scm_timestamping *tss = NULL; | 182 | struct scm_timestamping *tss = NULL; |
185 | struct cmsghdr *cm; | 183 | struct cmsghdr *cm; |
184 | int batch = 0; | ||
186 | 185 | ||
187 | for (cm = CMSG_FIRSTHDR(msg); | 186 | for (cm = CMSG_FIRSTHDR(msg); |
188 | cm && cm->cmsg_len; | 187 | cm && cm->cmsg_len; |
@@ -215,10 +214,18 @@ static void __recv_errmsg_cmsg(struct msghdr *msg, int payload_len) | |||
215 | } else | 214 | } else |
216 | fprintf(stderr, "unknown cmsg %d,%d\n", | 215 | fprintf(stderr, "unknown cmsg %d,%d\n", |
217 | cm->cmsg_level, cm->cmsg_type); | 216 | cm->cmsg_level, cm->cmsg_type); |
217 | |||
218 | if (serr && tss) { | ||
219 | print_timestamp(tss, serr->ee_info, serr->ee_data, | ||
220 | payload_len); | ||
221 | serr = NULL; | ||
222 | tss = NULL; | ||
223 | batch++; | ||
224 | } | ||
218 | } | 225 | } |
219 | 226 | ||
220 | if (serr && tss) | 227 | if (batch > 1) |
221 | print_timestamp(tss, serr->ee_info, serr->ee_data, payload_len); | 228 | fprintf(stderr, "batched %d timestamps\n", batch); |
222 | } | 229 | } |
223 | 230 | ||
224 | static int recv_errmsg(int fd) | 231 | static int recv_errmsg(int fd) |
@@ -250,7 +257,7 @@ static int recv_errmsg(int fd) | |||
250 | if (ret == -1 && errno != EAGAIN) | 257 | if (ret == -1 && errno != EAGAIN) |
251 | error(1, errno, "recvmsg"); | 258 | error(1, errno, "recvmsg"); |
252 | 259 | ||
253 | if (ret > 0) { | 260 | if (ret >= 0) { |
254 | __recv_errmsg_cmsg(&msg, ret); | 261 | __recv_errmsg_cmsg(&msg, ret); |
255 | if (cfg_show_payload) | 262 | if (cfg_show_payload) |
256 | print_payload(data, cfg_payload_len); | 263 | print_payload(data, cfg_payload_len); |
@@ -315,6 +322,9 @@ static void do_test(int family, unsigned int opt) | |||
315 | opt |= SOF_TIMESTAMPING_SOFTWARE | | 322 | opt |= SOF_TIMESTAMPING_SOFTWARE | |
316 | SOF_TIMESTAMPING_OPT_CMSG | | 323 | SOF_TIMESTAMPING_OPT_CMSG | |
317 | SOF_TIMESTAMPING_OPT_ID; | 324 | SOF_TIMESTAMPING_OPT_ID; |
325 | if (cfg_loop_nodata) | ||
326 | opt |= SOF_TIMESTAMPING_OPT_TSONLY; | ||
327 | |||
318 | if (setsockopt(fd, SOL_SOCKET, SO_TIMESTAMPING, | 328 | if (setsockopt(fd, SOL_SOCKET, SO_TIMESTAMPING, |
319 | (char *) &opt, sizeof(opt))) | 329 | (char *) &opt, sizeof(opt))) |
320 | error(1, 0, "setsockopt timestamping"); | 330 | error(1, 0, "setsockopt timestamping"); |
@@ -384,6 +394,7 @@ static void __attribute__((noreturn)) usage(const char *filepath) | |||
384 | " -h: show this message\n" | 394 | " -h: show this message\n" |
385 | " -I: request PKTINFO\n" | 395 | " -I: request PKTINFO\n" |
386 | " -l N: send N bytes at a time\n" | 396 | " -l N: send N bytes at a time\n" |
397 | " -n: set no-payload option\n" | ||
387 | " -r: use raw\n" | 398 | " -r: use raw\n" |
388 | " -R: use raw (IP_HDRINCL)\n" | 399 | " -R: use raw (IP_HDRINCL)\n" |
389 | " -p N: connect to port N\n" | 400 | " -p N: connect to port N\n" |
@@ -398,7 +409,7 @@ static void parse_opt(int argc, char **argv) | |||
398 | int proto_count = 0; | 409 | int proto_count = 0; |
399 | char c; | 410 | char c; |
400 | 411 | ||
401 | while ((c = getopt(argc, argv, "46hIl:p:rRux")) != -1) { | 412 | while ((c = getopt(argc, argv, "46hIl:np:rRux")) != -1) { |
402 | switch (c) { | 413 | switch (c) { |
403 | case '4': | 414 | case '4': |
404 | do_ipv6 = 0; | 415 | do_ipv6 = 0; |
@@ -409,6 +420,9 @@ static void parse_opt(int argc, char **argv) | |||
409 | case 'I': | 420 | case 'I': |
410 | cfg_do_pktinfo = true; | 421 | cfg_do_pktinfo = true; |
411 | break; | 422 | break; |
423 | case 'n': | ||
424 | cfg_loop_nodata = true; | ||
425 | break; | ||
412 | case 'r': | 426 | case 'r': |
413 | proto_count++; | 427 | proto_count++; |
414 | cfg_proto = SOCK_RAW; | 428 | cfg_proto = SOCK_RAW; |
diff --git a/Documentation/nommu-mmap.txt b/Documentation/nommu-mmap.txt index 8e1ddec2c78a..ae57b9ea0d41 100644 --- a/Documentation/nommu-mmap.txt +++ b/Documentation/nommu-mmap.txt | |||
@@ -43,12 +43,12 @@ and it's also much more restricted in the latter case: | |||
43 | even if this was created by another process. | 43 | even if this was created by another process. |
44 | 44 | ||
45 | - If possible, the file mapping will be directly on the backing device | 45 | - If possible, the file mapping will be directly on the backing device |
46 | if the backing device has the BDI_CAP_MAP_DIRECT capability and | 46 | if the backing device has the NOMMU_MAP_DIRECT capability and |
47 | appropriate mapping protection capabilities. Ramfs, romfs, cramfs | 47 | appropriate mapping protection capabilities. Ramfs, romfs, cramfs |
48 | and mtd might all permit this. | 48 | and mtd might all permit this. |
49 | 49 | ||
50 | - If the backing device device can't or won't permit direct sharing, | 50 | - If the backing device device can't or won't permit direct sharing, |
51 | but does have the BDI_CAP_MAP_COPY capability, then a copy of the | 51 | but does have the NOMMU_MAP_COPY capability, then a copy of the |
52 | appropriate bit of the file will be read into a contiguous bit of | 52 | appropriate bit of the file will be read into a contiguous bit of |
53 | memory and any extraneous space beyond the EOF will be cleared | 53 | memory and any extraneous space beyond the EOF will be cleared |
54 | 54 | ||
@@ -220,7 +220,7 @@ directly (can't be copied). | |||
220 | 220 | ||
221 | The file->f_op->mmap() operation will be called to actually inaugurate the | 221 | The file->f_op->mmap() operation will be called to actually inaugurate the |
222 | mapping. It can be rejected at that point. Returning the ENOSYS error will | 222 | mapping. It can be rejected at that point. Returning the ENOSYS error will |
223 | cause the mapping to be copied instead if BDI_CAP_MAP_COPY is specified. | 223 | cause the mapping to be copied instead if NOMMU_MAP_COPY is specified. |
224 | 224 | ||
225 | The vm_ops->close() routine will be invoked when the last mapping on a chardev | 225 | The vm_ops->close() routine will be invoked when the last mapping on a chardev |
226 | is removed. An existing mapping will be shared, partially or not, if possible | 226 | is removed. An existing mapping will be shared, partially or not, if possible |
@@ -232,7 +232,7 @@ want to handle it, despite the fact it's got an operation. For instance, it | |||
232 | might try directing the call to a secondary driver which turns out not to | 232 | might try directing the call to a secondary driver which turns out not to |
233 | implement it. Such is the case for the framebuffer driver which attempts to | 233 | implement it. Such is the case for the framebuffer driver which attempts to |
234 | direct the call to the device-specific driver. Under such circumstances, the | 234 | direct the call to the device-specific driver. Under such circumstances, the |
235 | mapping request will be rejected if BDI_CAP_MAP_COPY is not specified, and a | 235 | mapping request will be rejected if NOMMU_MAP_COPY is not specified, and a |
236 | copy mapped otherwise. | 236 | copy mapped otherwise. |
237 | 237 | ||
238 | IMPORTANT NOTE: | 238 | IMPORTANT NOTE: |
diff --git a/Documentation/oops-tracing.txt b/Documentation/oops-tracing.txt index beefb9f82902..f3ac05cc23e4 100644 --- a/Documentation/oops-tracing.txt +++ b/Documentation/oops-tracing.txt | |||
@@ -270,6 +270,8 @@ characters, each representing a particular tainted value. | |||
270 | 270 | ||
271 | 15: 'L' if a soft lockup has previously occurred on the system. | 271 | 15: 'L' if a soft lockup has previously occurred on the system. |
272 | 272 | ||
273 | 16: 'K' if the kernel has been live patched. | ||
274 | |||
273 | The primary reason for the 'Tainted: ' string is to tell kernel | 275 | The primary reason for the 'Tainted: ' string is to tell kernel |
274 | debuggers if this is a clean kernel or if anything unusual has | 276 | debuggers if this is a clean kernel or if anything unusual has |
275 | occurred. Tainting is permanent: even if an offending module is | 277 | occurred. Tainting is permanent: even if an offending module is |
diff --git a/Documentation/power/s2ram.txt b/Documentation/power/s2ram.txt index 1bdfa0443773..4685aee197fd 100644 --- a/Documentation/power/s2ram.txt +++ b/Documentation/power/s2ram.txt | |||
@@ -69,6 +69,10 @@ Reason for this is that the RTC is the only reliably available piece of | |||
69 | hardware during resume operations where a value can be set that will | 69 | hardware during resume operations where a value can be set that will |
70 | survive a reboot. | 70 | survive a reboot. |
71 | 71 | ||
72 | pm_trace is not compatible with asynchronous suspend, so it turns | ||
73 | asynchronous suspend off (which may work around timing or | ||
74 | ordering-sensitive bugs). | ||
75 | |||
72 | Consequence is that after a resume (even if it is successful) your system | 76 | Consequence is that after a resume (even if it is successful) your system |
73 | clock will have a value corresponding to the magic number instead of the | 77 | clock will have a value corresponding to the magic number instead of the |
74 | correct date/time! It is therefore advisable to use a program like ntp-date | 78 | correct date/time! It is therefore advisable to use a program like ntp-date |
diff --git a/Documentation/rfkill.txt b/Documentation/rfkill.txt index 427e89712f4a..2ee6ef9a6554 100644 --- a/Documentation/rfkill.txt +++ b/Documentation/rfkill.txt | |||
@@ -25,6 +25,9 @@ whether they can be changed or not: | |||
25 | - soft block: writable radio block (need not be readable) that is set by | 25 | - soft block: writable radio block (need not be readable) that is set by |
26 | the system software. | 26 | the system software. |
27 | 27 | ||
28 | The rfkill subsystem has two parameters, rfkill.default_state and | ||
29 | rfkill.master_switch_mode, which are documented in kernel-parameters.txt. | ||
30 | |||
28 | 31 | ||
29 | 2. Implementation details | 32 | 2. Implementation details |
30 | 33 | ||
diff --git a/Documentation/s390/Debugging390.txt b/Documentation/s390/Debugging390.txt index 08911b5c6b0e..3df8babcdc41 100644 --- a/Documentation/s390/Debugging390.txt +++ b/Documentation/s390/Debugging390.txt | |||
@@ -1,14 +1,14 @@ | |||
1 | 1 | ||
2 | Debugging on Linux for s/390 & z/Architecture | 2 | Debugging on Linux for s/390 & z/Architecture |
3 | by | 3 | by |
4 | Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com) | 4 | Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com) |
5 | Copyright (C) 2000-2001 IBM Deutschland Entwicklung GmbH, IBM Corporation | 5 | Copyright (C) 2000-2001 IBM Deutschland Entwicklung GmbH, IBM Corporation |
6 | Best viewed with fixed width fonts | 6 | Best viewed with fixed width fonts |
7 | 7 | ||
8 | Overview of Document: | 8 | Overview of Document: |
9 | ===================== | 9 | ===================== |
10 | This document is intended to give a good overview of how to debug | 10 | This document is intended to give a good overview of how to debug Linux for |
11 | Linux for s/390 & z/Architecture. It isn't intended as a complete reference & not a | 11 | s/390 and z/Architecture. It is not intended as a complete reference and not a |
12 | tutorial on the fundamentals of C & assembly. It doesn't go into | 12 | tutorial on the fundamentals of C & assembly. It doesn't go into |
13 | 390 IO in any detail. It is intended to complement the documents in the | 13 | 390 IO in any detail. It is intended to complement the documents in the |
14 | reference section below & any other worthwhile references you get. | 14 | reference section below & any other worthwhile references you get. |
@@ -35,7 +35,6 @@ Examining core dumps | |||
35 | ldd | 35 | ldd |
36 | Debugging modules | 36 | Debugging modules |
37 | The proc file system | 37 | The proc file system |
38 | Starting points for debugging scripting languages etc. | ||
39 | SysRq | 38 | SysRq |
40 | References | 39 | References |
41 | Special Thanks | 40 | Special Thanks |
@@ -44,18 +43,20 @@ Register Set | |||
44 | ============ | 43 | ============ |
45 | The current architectures have the following registers. | 44 | The current architectures have the following registers. |
46 | 45 | ||
47 | 16 General propose registers, 32 bit on s/390 64 bit on z/Architecture, r0-r15 or gpr0-gpr15 used for arithmetic & addressing. | 46 | 16 General propose registers, 32 bit on s/390 and 64 bit on z/Architecture, |
48 | 47 | r0-r15 (or gpr0-gpr15), used for arithmetic and addressing. | |
49 | 16 Control registers, 32 bit on s/390 64 bit on z/Architecture, ( cr0-cr15 kernel usage only ) used for memory management, | 48 | |
50 | interrupt control,debugging control etc. | 49 | 16 Control registers, 32 bit on s/390 and 64 bit on z/Architecture, cr0-cr15, |
51 | 50 | kernel usage only, used for memory management, interrupt control, debugging | |
52 | 16 Access registers ( ar0-ar15 ) 32 bit on s/390 & z/Architecture | 51 | control etc. |
53 | not used by normal programs but potentially could | 52 | |
54 | be used as temporary storage. Their main purpose is their 1 to 1 | 53 | 16 Access registers (ar0-ar15), 32 bit on both s/390 and z/Architecture, |
55 | association with general purpose registers and are used in | 54 | normally not used by normal programs but potentially could be used as |
56 | the kernel for copying data between kernel & user address spaces. | 55 | temporary storage. These registers have a 1:1 association with general |
57 | Access register 0 ( & access register 1 on z/Architecture ( needs 64 bit | 56 | purpose registers and are designed to be used in the so-called access |
58 | pointer ) ) is currently used by the pthread library as a pointer to | 57 | register mode to select different address spaces. |
58 | Access register 0 (and access register 1 on z/Architecture, which needs a | ||
59 | 64 bit pointer) is currently used by the pthread library as a pointer to | ||
59 | the current running threads private area. | 60 | the current running threads private area. |
60 | 61 | ||
61 | 16 64 bit floating point registers (fp0-fp15 ) IEEE & HFP floating | 62 | 16 64 bit floating point registers (fp0-fp15 ) IEEE & HFP floating |
@@ -90,18 +91,19 @@ s/390 z/Architecture | |||
90 | 91 | ||
91 | 6 6 Input/Output interrupt Mask | 92 | 6 6 Input/Output interrupt Mask |
92 | 93 | ||
93 | 7 7 External interrupt Mask used primarily for interprocessor signalling & | 94 | 7 7 External interrupt Mask used primarily for interprocessor |
94 | clock interrupts. | 95 | signalling and clock interrupts. |
95 | 96 | ||
96 | 8-11 8-11 PSW Key used for complex memory protection mechanism not used under linux | 97 | 8-11 8-11 PSW Key used for complex memory protection mechanism |
98 | (not used under linux) | ||
97 | 99 | ||
98 | 12 12 1 on s/390 0 on z/Architecture | 100 | 12 12 1 on s/390 0 on z/Architecture |
99 | 101 | ||
100 | 13 13 Machine Check Mask 1=enable machine check interrupts | 102 | 13 13 Machine Check Mask 1=enable machine check interrupts |
101 | 103 | ||
102 | 14 14 Wait State set this to 1 to stop the processor except for interrupts & give | 104 | 14 14 Wait State. Set this to 1 to stop the processor except for |
103 | time to other LPARS used in CPU idle in the kernel to increase overall | 105 | interrupts and give time to other LPARS. Used in CPU idle in |
104 | usage of processor resources. | 106 | the kernel to increase overall usage of processor resources. |
105 | 107 | ||
106 | 15 15 Problem state ( if set to 1 certain instructions are disabled ) | 108 | 15 15 Problem state ( if set to 1 certain instructions are disabled ) |
107 | all linux user programs run with this bit 1 | 109 | all linux user programs run with this bit 1 |
@@ -165,21 +167,23 @@ s/390 z/Architecture | |||
165 | when loading the address with LPSWE otherwise a | 167 | when loading the address with LPSWE otherwise a |
166 | specification exception occurs, LPSW is fully backward | 168 | specification exception occurs, LPSW is fully backward |
167 | compatible. | 169 | compatible. |
168 | 170 | ||
169 | 171 | ||
170 | Prefix Page(s) | 172 | Prefix Page(s) |
171 | -------------- | 173 | -------------- |
172 | This per cpu memory area is too intimately tied to the processor not to mention. | 174 | This per cpu memory area is too intimately tied to the processor not to mention. |
173 | It exists between the real addresses 0-4096 on s/390 & 0-8192 z/Architecture & is exchanged | 175 | It exists between the real addresses 0-4096 on s/390 and between 0-8192 on |
174 | with a 1 page on s/390 or 2 pages on z/Architecture in absolute storage by the set | 176 | z/Architecture and is exchanged with one page on s/390 or two pages on |
175 | prefix instruction in linux'es startup. | 177 | z/Architecture in absolute storage by the set prefix instruction during Linux |
176 | This page is mapped to a different prefix for each processor in an SMP configuration | 178 | startup. |
177 | ( assuming the os designer is sane of course :-) ). | 179 | This page is mapped to a different prefix for each processor in an SMP |
178 | Bytes 0-512 ( 200 hex ) on s/390 & 0-512,4096-4544,4604-5119 currently on z/Architecture | 180 | configuration (assuming the OS designer is sane of course). |
179 | are used by the processor itself for holding such information as exception indications & | 181 | Bytes 0-512 (200 hex) on s/390 and 0-512, 4096-4544, 4604-5119 currently on |
180 | entry points for exceptions. | 182 | z/Architecture are used by the processor itself for holding such information |
181 | Bytes after 0xc00 hex are used by linux for per processor globals on s/390 & z/Architecture | 183 | as exception indications and entry points for exceptions. |
182 | ( there is a gap on z/Architecture too currently between 0xc00 & 1000 which linux uses ). | 184 | Bytes after 0xc00 hex are used by linux for per processor globals on s/390 and |
185 | z/Architecture (there is a gap on z/Architecture currently between 0xc00 and | ||
186 | 0x1000, too, which is used by Linux). | ||
183 | The closest thing to this on traditional architectures is the interrupt | 187 | The closest thing to this on traditional architectures is the interrupt |
184 | vector table. This is a good thing & does simplify some of the kernel coding | 188 | vector table. This is a good thing & does simplify some of the kernel coding |
185 | however it means that we now cannot catch stray NULL pointers in the | 189 | however it means that we now cannot catch stray NULL pointers in the |
@@ -192,26 +196,26 @@ Address Spaces on Intel Linux | |||
192 | 196 | ||
193 | The traditional Intel Linux is approximately mapped as follows forgive | 197 | The traditional Intel Linux is approximately mapped as follows forgive |
194 | the ascii art. | 198 | the ascii art. |
195 | 0xFFFFFFFF 4GB Himem ***************** | 199 | 0xFFFFFFFF 4GB Himem ***************** |
196 | * * | 200 | * * |
197 | * Kernel Space * | 201 | * Kernel Space * |
198 | * * | 202 | * * |
199 | ***************** **************** | 203 | ***************** **************** |
200 | User Space Himem (typically 0xC0000000 3GB )* User Stack * * * | 204 | User Space Himem * User Stack * * * |
201 | ***************** * * | 205 | (typically 0xC0000000 3GB ) ***************** * * |
202 | * Shared Libs * * Next Process * | 206 | * Shared Libs * * Next Process * |
203 | ***************** * to * | 207 | ***************** * to * |
204 | * * <== * Run * <== | 208 | * * <== * Run * <== |
205 | * User Program * * * | 209 | * User Program * * * |
206 | * Data BSS * * * | 210 | * Data BSS * * * |
207 | * Text * * * | 211 | * Text * * * |
208 | * Sections * * * | 212 | * Sections * * * |
209 | 0x00000000 ***************** **************** | 213 | 0x00000000 ***************** **************** |
210 | 214 | ||
211 | Now it is easy to see that on Intel it is quite easy to recognise a kernel address | 215 | Now it is easy to see that on Intel it is quite easy to recognise a kernel |
212 | as being one greater than user space himem ( in this case 0xC0000000). | 216 | address as being one greater than user space himem (in this case 0xC0000000), |
213 | & addresses of less than this are the ones in the current running program on this | 217 | and addresses of less than this are the ones in the current running program on |
214 | processor ( if an smp box ). | 218 | this processor (if an smp box). |
215 | If using the virtual machine ( VM ) as a debugger it is quite difficult to | 219 | If using the virtual machine ( VM ) as a debugger it is quite difficult to |
216 | know which user process is running as the address space you are looking at | 220 | know which user process is running as the address space you are looking at |
217 | could be from any process in the run queue. | 221 | could be from any process in the run queue. |
@@ -247,8 +251,8 @@ Our addressing scheme is basically as follows: | |||
247 | Himem 0x7fffffff 2GB on s/390 ***************** **************** | 251 | Himem 0x7fffffff 2GB on s/390 ***************** **************** |
248 | currently 0x3ffffffffff (2^42)-1 * User Stack * * * | 252 | currently 0x3ffffffffff (2^42)-1 * User Stack * * * |
249 | on z/Architecture. ***************** * * | 253 | on z/Architecture. ***************** * * |
250 | * Shared Libs * * * | 254 | * Shared Libs * * * |
251 | ***************** * * | 255 | ***************** * * |
252 | * * * Kernel * | 256 | * * * Kernel * |
253 | * User Program * * * | 257 | * User Program * * * |
254 | * Data BSS * * * | 258 | * Data BSS * * * |
@@ -301,10 +305,10 @@ Virtual Addresses on s/390 & z/Architecture | |||
301 | =========================================== | 305 | =========================================== |
302 | 306 | ||
303 | A virtual address on s/390 is made up of 3 parts | 307 | A virtual address on s/390 is made up of 3 parts |
304 | The SX ( segment index, roughly corresponding to the PGD & PMD in linux terminology ) | 308 | The SX (segment index, roughly corresponding to the PGD & PMD in Linux |
305 | being bits 1-11. | 309 | terminology) being bits 1-11. |
306 | The PX ( page index, corresponding to the page table entry (pte) in linux terminology ) | 310 | The PX (page index, corresponding to the page table entry (pte) in Linux |
307 | being bits 12-19. | 311 | terminology) being bits 12-19. |
308 | The remaining bits BX (the byte index are the offset in the page ) | 312 | The remaining bits BX (the byte index are the offset in the page ) |
309 | i.e. bits 20 to 31. | 313 | i.e. bits 20 to 31. |
310 | 314 | ||
@@ -368,9 +372,9 @@ each processor as follows. | |||
368 | * ( 8K ) * | 372 | * ( 8K ) * |
369 | 16K aligned ************************ | 373 | 16K aligned ************************ |
370 | 374 | ||
371 | What this means is that we don't need to dedicate any register or global variable | 375 | What this means is that we don't need to dedicate any register or global |
372 | to point to the current running process & can retrieve it with the following | 376 | variable to point to the current running process & can retrieve it with the |
373 | very simple construct for s/390 & one very similar for z/Architecture. | 377 | following very simple construct for s/390 & one very similar for z/Architecture. |
374 | 378 | ||
375 | static inline struct task_struct * get_current(void) | 379 | static inline struct task_struct * get_current(void) |
376 | { | 380 | { |
@@ -403,8 +407,8 @@ Note: To follow stackframes requires a knowledge of C or Pascal & | |||
403 | limited knowledge of one assembly language. | 407 | limited knowledge of one assembly language. |
404 | 408 | ||
405 | It should be noted that there are some differences between the | 409 | It should be noted that there are some differences between the |
406 | s/390 & z/Architecture stack layouts as the z/Architecture stack layout didn't have | 410 | s/390 and z/Architecture stack layouts as the z/Architecture stack layout |
407 | to maintain compatibility with older linkage formats. | 411 | didn't have to maintain compatibility with older linkage formats. |
408 | 412 | ||
409 | Glossary: | 413 | Glossary: |
410 | --------- | 414 | --------- |
@@ -440,7 +444,7 @@ The code generated by the compiler to return to the caller. | |||
440 | 444 | ||
441 | frameless-function | 445 | frameless-function |
442 | A frameless function in Linux for s390 & z/Architecture is one which doesn't | 446 | A frameless function in Linux for s390 & z/Architecture is one which doesn't |
443 | need more than the register save area ( 96 bytes on s/390, 160 on z/Architecture ) | 447 | need more than the register save area (96 bytes on s/390, 160 on z/Architecture) |
444 | given to it by the caller. | 448 | given to it by the caller. |
445 | A frameless function never: | 449 | A frameless function never: |
446 | 1) Sets up a back chain. | 450 | 1) Sets up a back chain. |
@@ -588,8 +592,8 @@ A sample program with comments. | |||
588 | 592 | ||
589 | Comments on the function test | 593 | Comments on the function test |
590 | ----------------------------- | 594 | ----------------------------- |
591 | 1) It didn't need to set up a pointer to the constant pool gpr13 as it isn't used | 595 | 1) It didn't need to set up a pointer to the constant pool gpr13 as it is not |
592 | ( :-( ). | 596 | used ( :-( ). |
593 | 2) This is a frameless function & no stack is bought. | 597 | 2) This is a frameless function & no stack is bought. |
594 | 3) The compiler was clever enough to recognise that it could return the | 598 | 3) The compiler was clever enough to recognise that it could return the |
595 | value in r2 as well as use it for the passed in parameter ( :-) ). | 599 | value in r2 as well as use it for the passed in parameter ( :-) ). |
@@ -743,35 +747,34 @@ Debugging under VM | |||
743 | Notes | 747 | Notes |
744 | ----- | 748 | ----- |
745 | Addresses & values in the VM debugger are always hex never decimal | 749 | Addresses & values in the VM debugger are always hex never decimal |
746 | Address ranges are of the format <HexValue1>-<HexValue2> or <HexValue1>.<HexValue2> | 750 | Address ranges are of the format <HexValue1>-<HexValue2> or |
747 | e.g. The address range 0x2000 to 0x3000 can be described as 2000-3000 or 2000.1000 | 751 | <HexValue1>.<HexValue2> |
752 | For example, the address range 0x2000 to 0x3000 can be described as 2000-3000 | ||
753 | or 2000.1000 | ||
748 | 754 | ||
749 | The VM Debugger is case insensitive. | 755 | The VM Debugger is case insensitive. |
750 | 756 | ||
751 | VM's strengths are usually other debuggers weaknesses you can get at any resource | 757 | VM's strengths are usually other debuggers weaknesses you can get at any |
752 | no matter how sensitive e.g. memory management resources,change address translation | 758 | resource no matter how sensitive e.g. memory management resources, change |
753 | in the PSW. For kernel hacking you will reap dividends if you get good at it. | 759 | address translation in the PSW. For kernel hacking you will reap dividends if |
754 | 760 | you get good at it. | |
755 | The VM Debugger displays operators but not operands, probably because some | 761 | |
756 | of it was written when memory was expensive & the programmer was probably proud that | 762 | The VM Debugger displays operators but not operands, and also the debugger |
757 | it fitted into 2k of memory & the programmers & didn't want to shock hardcore VM'ers by | 763 | displays useful information on the same line as the author of the code probably |
758 | changing the interface :-), also the debugger displays useful information on the same line & | 764 | felt that it was a good idea not to go over the 80 columns on the screen. |
759 | the author of the code probably felt that it was a good idea not to go over | 765 | This isn't as unintuitive as it may seem as the s/390 instructions are easy to |
760 | the 80 columns on the screen. | 766 | decode mentally and you can make a good guess at a lot of them as all the |
761 | 767 | operands are nibble (half byte aligned). | |
762 | As some of you are probably in a panic now this isn't as unintuitive as it may seem | 768 | So if you have an objdump listing by hand, it is quite easy to follow, and if |
763 | as the 390 instructions are easy to decode mentally & you can make a good guess at a lot | 769 | you don't have an objdump listing keep a copy of the s/390 Reference Summary |
764 | of them as all the operands are nibble ( half byte aligned ) & if you have an objdump listing | 770 | or alternatively the s/390 principles of operation next to you. |
765 | also it is quite easy to follow, if you don't have an objdump listing keep a copy of | ||
766 | the s/390 Reference Summary & look at between pages 2 & 7 or alternatively the | ||
767 | s/390 principles of operation. | ||
768 | e.g. even I can guess that | 771 | e.g. even I can guess that |
769 | 0001AFF8' LR 180F CC 0 | 772 | 0001AFF8' LR 180F CC 0 |
770 | is a ( load register ) lr r0,r15 | 773 | is a ( load register ) lr r0,r15 |
771 | 774 | ||
772 | Also it is very easy to tell the length of a 390 instruction from the 2 most significant | 775 | Also it is very easy to tell the length of a 390 instruction from the 2 most |
773 | bits in the instruction ( not that this info is really useful except if you are trying to | 776 | significant bits in the instruction (not that this info is really useful except |
774 | make sense of a hexdump of code ). | 777 | if you are trying to make sense of a hexdump of code). |
775 | Here is a table | 778 | Here is a table |
776 | Bits Instruction Length | 779 | Bits Instruction Length |
777 | ------------------------------------------ | 780 | ------------------------------------------ |
@@ -780,9 +783,6 @@ Bits Instruction Length | |||
780 | 10 4 Bytes | 783 | 10 4 Bytes |
781 | 11 6 Bytes | 784 | 11 6 Bytes |
782 | 785 | ||
783 | |||
784 | |||
785 | |||
786 | The debugger also displays other useful info on the same line such as the | 786 | The debugger also displays other useful info on the same line such as the |
787 | addresses being operated on destination addresses of branches & condition codes. | 787 | addresses being operated on destination addresses of branches & condition codes. |
788 | e.g. | 788 | e.g. |
@@ -853,8 +853,8 @@ Displaying & modifying Registers | |||
853 | -------------------------------- | 853 | -------------------------------- |
854 | D G will display all the gprs | 854 | D G will display all the gprs |
855 | Adding a extra G to all the commands is necessary to access the full 64 bit | 855 | Adding a extra G to all the commands is necessary to access the full 64 bit |
856 | content in VM on z/Architecture obviously this isn't required for access registers | 856 | content in VM on z/Architecture. Obviously this isn't required for access |
857 | as these are still 32 bit. | 857 | registers as these are still 32 bit. |
858 | e.g. DGG instead of DG | 858 | e.g. DGG instead of DG |
859 | D X will display all the control registers | 859 | D X will display all the control registers |
860 | D AR will display all the access registers | 860 | D AR will display all the access registers |
@@ -870,10 +870,11 @@ Displaying Memory | |||
870 | ----------------- | 870 | ----------------- |
871 | To display memory mapped using the current PSW's mapping try | 871 | To display memory mapped using the current PSW's mapping try |
872 | D <range> | 872 | D <range> |
873 | To make VM display a message each time it hits a particular address & continue try | 873 | To make VM display a message each time it hits a particular address and |
874 | continue try | ||
874 | D I<range> will disassemble/display a range of instructions. | 875 | D I<range> will disassemble/display a range of instructions. |
875 | ST addr 32 bit word will store a 32 bit aligned address | 876 | ST addr 32 bit word will store a 32 bit aligned address |
876 | D T<range> will display the EBCDIC in an address ( if you are that way inclined ) | 877 | D T<range> will display the EBCDIC in an address (if you are that way inclined) |
877 | D R<range> will display real addresses ( without DAT ) but with prefixing. | 878 | D R<range> will display real addresses ( without DAT ) but with prefixing. |
878 | There are other complex options to display if you need to get at say home space | 879 | There are other complex options to display if you need to get at say home space |
879 | but are in primary space the easiest thing to do is to temporarily | 880 | but are in primary space the easiest thing to do is to temporarily |
@@ -884,8 +885,8 @@ restore it. | |||
884 | 885 | ||
885 | Hints | 886 | Hints |
886 | ----- | 887 | ----- |
887 | If you want to issue a debugger command without halting your virtual machine with the | 888 | If you want to issue a debugger command without halting your virtual machine |
888 | PA1 key try prefixing the command with #CP e.g. | 889 | with the PA1 key try prefixing the command with #CP e.g. |
889 | #cp tr i pswa 2000 | 890 | #cp tr i pswa 2000 |
890 | also suffixing most debugger commands with RUN will cause them not | 891 | also suffixing most debugger commands with RUN will cause them not |
891 | to stop just display the mnemonic at the current instruction on the console. | 892 | to stop just display the mnemonic at the current instruction on the console. |
@@ -903,9 +904,10 @@ This sends a message to your own console each time do_signal is entered. | |||
903 | script with breakpoints on every kernel procedure, this isn't a good idea | 904 | script with breakpoints on every kernel procedure, this isn't a good idea |
904 | because there are thousands of these routines & VM can only set 255 breakpoints | 905 | because there are thousands of these routines & VM can only set 255 breakpoints |
905 | at a time so you nearly had to spend as long pruning the file down as you would | 906 | at a time so you nearly had to spend as long pruning the file down as you would |
906 | entering the msg's by hand ),however, the trick might be useful for a single object file. | 907 | entering the msgs by hand), however, the trick might be useful for a single |
907 | On linux'es 3270 emulator x3270 there is a very useful option under the file ment | 908 | object file. In the 3270 terminal emulator x3270 there is a very useful option |
908 | Save Screens In File this is very good of keeping a copy of traces. | 909 | in the file menu called "Save Screen In File" - this is very good for keeping a |
910 | copy of traces. | ||
909 | 911 | ||
910 | From CMS help <command name> will give you online help on a particular command. | 912 | From CMS help <command name> will give you online help on a particular command. |
911 | e.g. | 913 | e.g. |
@@ -920,7 +922,8 @@ SET PF9 IMM B | |||
920 | This does a single step in VM on pressing F8. | 922 | This does a single step in VM on pressing F8. |
921 | SET PF10 ^ | 923 | SET PF10 ^ |
922 | This sets up the ^ key. | 924 | This sets up the ^ key. |
923 | which can be used for ^c (ctrl-c),^z (ctrl-z) which can't be typed directly into some 3270 consoles. | 925 | which can be used for ^c (ctrl-c),^z (ctrl-z) which can't be typed directly |
926 | into some 3270 consoles. | ||
924 | SET PF11 ^- | 927 | SET PF11 ^- |
925 | This types the starting keystrokes for a sysrq see SysRq below. | 928 | This types the starting keystrokes for a sysrq see SysRq below. |
926 | SET PF12 RETRIEVE | 929 | SET PF12 RETRIEVE |
@@ -1014,8 +1017,8 @@ Tracing Program Exceptions | |||
1014 | -------------------------- | 1017 | -------------------------- |
1015 | If you get a crash which says something like | 1018 | If you get a crash which says something like |
1016 | illegal operation or specification exception followed by a register dump | 1019 | illegal operation or specification exception followed by a register dump |
1017 | You can restart linux & trace these using the tr prog <range or value> trace option. | 1020 | You can restart linux & trace these using the tr prog <range or value> trace |
1018 | 1021 | option. | |
1019 | 1022 | ||
1020 | 1023 | ||
1021 | The most common ones you will normally be tracing for is | 1024 | The most common ones you will normally be tracing for is |
@@ -1057,9 +1060,10 @@ TR GOTO INITIAL | |||
1057 | 1060 | ||
1058 | Tracing linux syscalls under VM | 1061 | Tracing linux syscalls under VM |
1059 | ------------------------------- | 1062 | ------------------------------- |
1060 | Syscalls are implemented on Linux for S390 by the Supervisor call instruction (SVC) there 256 | 1063 | Syscalls are implemented on Linux for S390 by the Supervisor call instruction |
1061 | possibilities of these as the instruction is made up of a 0xA opcode & the second byte being | 1064 | (SVC). There 256 possibilities of these as the instruction is made up of a 0xA |
1062 | the syscall number. They are traced using the simple command. | 1065 | opcode and the second byte being the syscall number. They are traced using the |
1066 | simple command: | ||
1063 | TR SVC <Optional value or range> | 1067 | TR SVC <Optional value or range> |
1064 | the syscalls are defined in linux/arch/s390/include/asm/unistd.h | 1068 | the syscalls are defined in linux/arch/s390/include/asm/unistd.h |
1065 | e.g. to trace all file opens just do | 1069 | e.g. to trace all file opens just do |
@@ -1070,12 +1074,12 @@ SMP Specific commands | |||
1070 | --------------------- | 1074 | --------------------- |
1071 | To find out how many cpus you have | 1075 | To find out how many cpus you have |
1072 | Q CPUS displays all the CPU's available to your virtual machine | 1076 | Q CPUS displays all the CPU's available to your virtual machine |
1073 | To find the cpu that the current cpu VM debugger commands are being directed at do | 1077 | To find the cpu that the current cpu VM debugger commands are being directed at |
1074 | Q CPU to change the current cpu VM debugger commands are being directed at do | 1078 | do Q CPU to change the current cpu VM debugger commands are being directed at do |
1075 | CPU <desired cpu no> | 1079 | CPU <desired cpu no> |
1076 | 1080 | ||
1077 | On a SMP guest issue a command to all CPUs try prefixing the command with cpu all. | 1081 | On a SMP guest issue a command to all CPUs try prefixing the command with cpu |
1078 | To issue a command to a particular cpu try cpu <cpu number> e.g. | 1082 | all. To issue a command to a particular cpu try cpu <cpu number> e.g. |
1079 | CPU 01 TR I R 2000.3000 | 1083 | CPU 01 TR I R 2000.3000 |
1080 | If you are running on a guest with several cpus & you have a IO related problem | 1084 | If you are running on a guest with several cpus & you have a IO related problem |
1081 | & cannot follow the flow of code but you know it isn't smp related. | 1085 | & cannot follow the flow of code but you know it isn't smp related. |
@@ -1101,10 +1105,10 @@ D TX0.100 | |||
1101 | 1105 | ||
1102 | Alternatively | 1106 | Alternatively |
1103 | ============= | 1107 | ============= |
1104 | Under older VM debuggers ( I love EBDIC too ) you can use this little program I wrote which | 1108 | Under older VM debuggers (I love EBDIC too) you can use following little |
1105 | will convert a command line of hex digits to ascii text which can be compiled under linux & | 1109 | program which converts a command line of hex digits to ascii text. It can be |
1106 | you can copy the hex digits from your x3270 terminal to your xterm if you are debugging | 1110 | compiled under linux and you can copy the hex digits from your x3270 terminal |
1107 | from a linuxbox. | 1111 | to your xterm if you are debugging from a linuxbox. |
1108 | 1112 | ||
1109 | This is quite useful when looking at a parameter passed in as a text string | 1113 | This is quite useful when looking at a parameter passed in as a text string |
1110 | under VM ( unless you are good at decoding ASCII in your head ). | 1114 | under VM ( unless you are good at decoding ASCII in your head ). |
@@ -1114,14 +1118,14 @@ TR SVC 5 | |||
1114 | We have stopped at a breakpoint | 1118 | We have stopped at a breakpoint |
1115 | 000151B0' SVC 0A05 -> 0001909A' CC 0 | 1119 | 000151B0' SVC 0A05 -> 0001909A' CC 0 |
1116 | 1120 | ||
1117 | D 20.8 to check the SVC old psw in the prefix area & see was it from userspace | 1121 | D 20.8 to check the SVC old psw in the prefix area and see was it from userspace |
1118 | ( for the layout of the prefix area consult P18 of the s/390 390 Reference Summary | 1122 | (for the layout of the prefix area consult the "Fixed Storage Locations" |
1119 | if you have it available ). | 1123 | chapter of the s/390 Reference Summary if you have it available). |
1120 | V00000020 070C2000 800151B2 | 1124 | V00000020 070C2000 800151B2 |
1121 | The problem state bit wasn't set & it's also too early in the boot sequence | 1125 | The problem state bit wasn't set & it's also too early in the boot sequence |
1122 | for it to be a userspace SVC if it was we would have to temporarily switch the | 1126 | for it to be a userspace SVC if it was we would have to temporarily switch the |
1123 | psw to user space addressing so we could get at the first parameter of the open in | 1127 | psw to user space addressing so we could get at the first parameter of the open |
1124 | gpr2. | 1128 | in gpr2. |
1125 | Next do a | 1129 | Next do a |
1126 | D G2 | 1130 | D G2 |
1127 | GPR 2 = 00014CB4 | 1131 | GPR 2 = 00014CB4 |
@@ -1208,9 +1212,9 @@ Here are the tricks I use 9 out of 10 times it works pretty well, | |||
1208 | 1212 | ||
1209 | When your backchain reaches a dead end | 1213 | When your backchain reaches a dead end |
1210 | -------------------------------------- | 1214 | -------------------------------------- |
1211 | This can happen when an exception happens in the kernel & the kernel is entered twice | 1215 | This can happen when an exception happens in the kernel and the kernel is |
1212 | if you reach the NULL pointer at the end of the back chain you should be | 1216 | entered twice. If you reach the NULL pointer at the end of the back chain you |
1213 | able to sniff further back if you follow the following tricks. | 1217 | should be able to sniff further back if you follow the following tricks. |
1214 | 1) A kernel address should be easy to recognise since it is in | 1218 | 1) A kernel address should be easy to recognise since it is in |
1215 | primary space & the problem state bit isn't set & also | 1219 | primary space & the problem state bit isn't set & also |
1216 | The Hi bit of the address is set. | 1220 | The Hi bit of the address is set. |
@@ -1260,8 +1264,8 @@ V000FFFD0 00010400 80010802 8001085A 000FFFA0 | |||
1260 | 1264 | ||
1261 | our 3rd return address is 8001085A | 1265 | our 3rd return address is 8001085A |
1262 | 1266 | ||
1263 | as the 04B52002 looks suspiciously like rubbish it is fair to assume that the kernel entry routines | 1267 | as the 04B52002 looks suspiciously like rubbish it is fair to assume that the |
1264 | for the sake of optimisation don't set up a backchain. | 1268 | kernel entry routines for the sake of optimisation don't set up a backchain. |
1265 | 1269 | ||
1266 | now look at System.map to see if the addresses make any sense. | 1270 | now look at System.map to see if the addresses make any sense. |
1267 | 1271 | ||
@@ -1289,67 +1293,75 @@ Congrats you've done your first backchain. | |||
1289 | s/390 & z/Architecture IO Overview | 1293 | s/390 & z/Architecture IO Overview |
1290 | ================================== | 1294 | ================================== |
1291 | 1295 | ||
1292 | I am not going to give a course in 390 IO architecture as this would take me quite a | 1296 | I am not going to give a course in 390 IO architecture as this would take me |
1293 | while & I'm no expert. Instead I'll give a 390 IO architecture summary for Dummies if you have | 1297 | quite a while and I'm no expert. Instead I'll give a 390 IO architecture |
1294 | the s/390 principles of operation available read this instead. If nothing else you may find a few | 1298 | summary for Dummies. If you have the s/390 principles of operation available |
1295 | useful keywords in here & be able to use them on a web search engine like altavista to find | 1299 | read this instead. If nothing else you may find a few useful keywords in here |
1296 | more useful information. | 1300 | and be able to use them on a web search engine to find more useful information. |
1297 | 1301 | ||
1298 | Unlike other bus architectures modern 390 systems do their IO using mostly | 1302 | Unlike other bus architectures modern 390 systems do their IO using mostly |
1299 | fibre optics & devices such as tapes & disks can be shared between several mainframes, | 1303 | fibre optics and devices such as tapes and disks can be shared between several |
1300 | also S390 can support up to 65536 devices while a high end PC based system might be choking | 1304 | mainframes. Also S390 can support up to 65536 devices while a high end PC based |
1301 | with around 64. Here is some of the common IO terminology | 1305 | system might be choking with around 64. |
1302 | 1306 | ||
1303 | Subchannel: | 1307 | Here is some of the common IO terminology: |
1304 | This is the logical number most IO commands use to talk to an IO device there can be up to | ||
1305 | 0x10000 (65536) of these in a configuration typically there is a few hundred. Under VM | ||
1306 | for simplicity they are allocated contiguously, however on the native hardware they are not | ||
1307 | they typically stay consistent between boots provided no new hardware is inserted or removed. | ||
1308 | Under Linux for 390 we use these as IRQ's & also when issuing an IO command (CLEAR SUBCHANNEL, | ||
1309 | HALT SUBCHANNEL,MODIFY SUBCHANNEL,RESUME SUBCHANNEL,START SUBCHANNEL,STORE SUBCHANNEL & | ||
1310 | TEST SUBCHANNEL ) we use this as the ID of the device we wish to talk to, the most | ||
1311 | important of these instructions are START SUBCHANNEL ( to start IO ), TEST SUBCHANNEL ( to check | ||
1312 | whether the IO completed successfully ), & HALT SUBCHANNEL ( to kill IO ), a subchannel | ||
1313 | can have up to 8 channel paths to a device this offers redundancy if one is not available. | ||
1314 | 1308 | ||
1309 | Subchannel: | ||
1310 | This is the logical number most IO commands use to talk to an IO device. There | ||
1311 | can be up to 0x10000 (65536) of these in a configuration, typically there are a | ||
1312 | few hundred. Under VM for simplicity they are allocated contiguously, however | ||
1313 | on the native hardware they are not. They typically stay consistent between | ||
1314 | boots provided no new hardware is inserted or removed. | ||
1315 | Under Linux for s390 we use these as IRQ's and also when issuing an IO command | ||
1316 | (CLEAR SUBCHANNEL, HALT SUBCHANNEL, MODIFY SUBCHANNEL, RESUME SUBCHANNEL, | ||
1317 | START SUBCHANNEL, STORE SUBCHANNEL and TEST SUBCHANNEL). We use this as the ID | ||
1318 | of the device we wish to talk to. The most important of these instructions are | ||
1319 | START SUBCHANNEL (to start IO), TEST SUBCHANNEL (to check whether the IO | ||
1320 | completed successfully) and HALT SUBCHANNEL (to kill IO). A subchannel can have | ||
1321 | up to 8 channel paths to a device, this offers redundancy if one is not | ||
1322 | available. | ||
1315 | 1323 | ||
1316 | Device Number: | 1324 | Device Number: |
1317 | This number remains static & Is closely tied to the hardware, there are 65536 of these | 1325 | This number remains static and is closely tied to the hardware. There are 65536 |
1318 | also they are made up of a CHPID ( Channel Path ID, the most significant 8 bits ) | 1326 | of these, made up of a CHPID (Channel Path ID, the most significant 8 bits) and |
1319 | & another lsb 8 bits. These remain static even if more devices are inserted or removed | 1327 | another lsb 8 bits. These remain static even if more devices are inserted or |
1320 | from the hardware, there is a 1 to 1 mapping between Subchannels & Device Numbers provided | 1328 | removed from the hardware. There is a 1 to 1 mapping between subchannels and |
1321 | devices aren't inserted or removed. | 1329 | device numbers, provided devices aren't inserted or removed. |
1322 | 1330 | ||
1323 | Channel Control Words: | 1331 | Channel Control Words: |
1324 | CCWS are linked lists of instructions initially pointed to by an operation request block (ORB), | 1332 | CCWs are linked lists of instructions initially pointed to by an operation |
1325 | which is initially given to Start Subchannel (SSCH) command along with the subchannel number | 1333 | request block (ORB), which is initially given to Start Subchannel (SSCH) |
1326 | for the IO subsystem to process while the CPU continues executing normal code. | 1334 | command along with the subchannel number for the IO subsystem to process |
1327 | These come in two flavours, Format 0 ( 24 bit for backward ) | 1335 | while the CPU continues executing normal code. |
1328 | compatibility & Format 1 ( 31 bit ). These are typically used to issue read & write | 1336 | CCWs come in two flavours, Format 0 (24 bit for backward compatibility) and |
1329 | ( & many other instructions ) they consist of a length field & an absolute address field. | 1337 | Format 1 (31 bit). These are typically used to issue read and write (and many |
1330 | For each IO typically get 1 or 2 interrupts one for channel end ( primary status ) when the | 1338 | other) instructions. They consist of a length field and an absolute address |
1331 | channel is idle & the second for device end ( secondary status ) sometimes you get both | 1339 | field. |
1332 | concurrently, you check how the IO went on by issuing a TEST SUBCHANNEL at each interrupt, | 1340 | Each IO typically gets 1 or 2 interrupts, one for channel end (primary status) |
1333 | from which you receive an Interruption response block (IRB). If you get channel & device end | 1341 | when the channel is idle, and the second for device end (secondary status). |
1334 | status in the IRB without channel checks etc. your IO probably went okay. If you didn't you | 1342 | Sometimes you get both concurrently. You check how the IO went on by issuing a |
1335 | probably need a doctor to examine the IRB & extended status word etc. | 1343 | TEST SUBCHANNEL at each interrupt, from which you receive an Interruption |
1344 | response block (IRB). If you get channel and device end status in the IRB | ||
1345 | without channel checks etc. your IO probably went okay. If you didn't you | ||
1346 | probably need to examine the IRB, extended status word etc. | ||
1336 | If an error occurs, more sophisticated control units have a facility known as | 1347 | If an error occurs, more sophisticated control units have a facility known as |
1337 | concurrent sense this means that if an error occurs Extended sense information will | 1348 | concurrent sense. This means that if an error occurs Extended sense information |
1338 | be presented in the Extended status word in the IRB if not you have to issue a | 1349 | will be presented in the Extended status word in the IRB. If not you have to |
1339 | subsequent SENSE CCW command after the test subchannel. | 1350 | issue a subsequent SENSE CCW command after the test subchannel. |
1340 | 1351 | ||
1341 | 1352 | ||
1342 | TPI( Test pending interrupt) can also be used for polled IO but in multitasking multiprocessor | 1353 | TPI (Test pending interrupt) can also be used for polled IO, but in |
1343 | systems it isn't recommended except for checking special cases ( i.e. non looping checks for | 1354 | multitasking multiprocessor systems it isn't recommended except for |
1344 | pending IO etc. ). | 1355 | checking special cases (i.e. non looping checks for pending IO etc.). |
1345 | 1356 | ||
1346 | Store Subchannel & Modify Subchannel can be used to examine & modify operating characteristics | 1357 | Store Subchannel and Modify Subchannel can be used to examine and modify |
1347 | of a subchannel ( e.g. channel paths ). | 1358 | operating characteristics of a subchannel (e.g. channel paths). |
1348 | 1359 | ||
1349 | Other IO related Terms: | 1360 | Other IO related Terms: |
1350 | Sysplex: S390's Clustering Technology | 1361 | Sysplex: S390's Clustering Technology |
1351 | QDIO: S390's new high speed IO architecture to support devices such as gigabit ethernet, | 1362 | QDIO: S390's new high speed IO architecture to support devices such as gigabit |
1352 | this architecture is also designed to be forward compatible with up & coming 64 bit machines. | 1363 | ethernet, this architecture is also designed to be forward compatible with |
1364 | upcoming 64 bit machines. | ||
1353 | 1365 | ||
1354 | 1366 | ||
1355 | General Concepts | 1367 | General Concepts |
@@ -1406,37 +1418,40 @@ sometimes called Bus-and Tag & sometimes Original Equipment Manufacturers | |||
1406 | Interface (OEMI). | 1418 | Interface (OEMI). |
1407 | 1419 | ||
1408 | This byte wide Parallel channel path/bus has parity & data on the "Bus" cable | 1420 | This byte wide Parallel channel path/bus has parity & data on the "Bus" cable |
1409 | & control lines on the "Tag" cable. These can operate in byte multiplex mode for | 1421 | and control lines on the "Tag" cable. These can operate in byte multiplex mode |
1410 | sharing between several slow devices or burst mode & monopolize the channel for the | 1422 | for sharing between several slow devices or burst mode and monopolize the |
1411 | whole burst. Up to 256 devices can be addressed on one of these cables. These cables are | 1423 | channel for the whole burst. Up to 256 devices can be addressed on one of these |
1412 | about one inch in diameter. The maximum unextended length supported by these cables is | 1424 | cables. These cables are about one inch in diameter. The maximum unextended |
1413 | 125 Meters but this can be extended up to 2km with a fibre optic channel extended | 1425 | length supported by these cables is 125 Meters but this can be extended up to |
1414 | such as a 3044. The maximum burst speed supported is 4.5 megabytes per second however | 1426 | 2km with a fibre optic channel extended such as a 3044. The maximum burst speed |
1415 | some really old processors support only transfer rates of 3.0, 2.0 & 1.0 MB/sec. | 1427 | supported is 4.5 megabytes per second. However, some really old processors |
1428 | support only transfer rates of 3.0, 2.0 & 1.0 MB/sec. | ||
1416 | One of these paths can be daisy chained to up to 8 control units. | 1429 | One of these paths can be daisy chained to up to 8 control units. |
1417 | 1430 | ||
1418 | 1431 | ||
1419 | ESCON if fibre optic it is also called FICON | 1432 | ESCON if fibre optic it is also called FICON |
1420 | Was introduced by IBM in 1990. Has 2 fibre optic cables & uses either leds or lasers | 1433 | Was introduced by IBM in 1990. Has 2 fibre optic cables and uses either leds or |
1421 | for communication at a signaling rate of up to 200 megabits/sec. As 10bits are transferred | 1434 | lasers for communication at a signaling rate of up to 200 megabits/sec. As |
1422 | for every 8 bits info this drops to 160 megabits/sec & to 18.6 Megabytes/sec once | 1435 | 10bits are transferred for every 8 bits info this drops to 160 megabits/sec |
1423 | control info & CRC are added. ESCON only operates in burst mode. | 1436 | and to 18.6 Megabytes/sec once control info and CRC are added. ESCON only |
1437 | operates in burst mode. | ||
1424 | 1438 | ||
1425 | ESCONs typical max cable length is 3km for the led version & 20km for the laser version | 1439 | ESCONs typical max cable length is 3km for the led version and 20km for the |
1426 | known as XDF ( extended distance facility ). This can be further extended by using an | 1440 | laser version known as XDF (extended distance facility). This can be further |
1427 | ESCON director which triples the above mentioned ranges. Unlike Bus & Tag as ESCON is | 1441 | extended by using an ESCON director which triples the above mentioned ranges. |
1428 | serial it uses a packet switching architecture the standard Bus & Tag control protocol | 1442 | Unlike Bus & Tag as ESCON is serial it uses a packet switching architecture, |
1429 | is however present within the packets. Up to 256 devices can be attached to each control | 1443 | the standard Bus & Tag control protocol is however present within the packets. |
1430 | unit that uses one of these interfaces. | 1444 | Up to 256 devices can be attached to each control unit that uses one of these |
1445 | interfaces. | ||
1431 | 1446 | ||
1432 | Common 390 Devices include: | 1447 | Common 390 Devices include: |
1433 | Network adapters typically OSA2,3172's,2116's & OSA-E gigabit ethernet adapters, | 1448 | Network adapters typically OSA2,3172's,2116's & OSA-E gigabit ethernet adapters, |
1434 | Consoles 3270 & 3215 ( a teletype emulated under linux for a line mode console ). | 1449 | Consoles 3270 & 3215 (a teletype emulated under linux for a line mode console). |
1435 | DASD's direct access storage devices ( otherwise known as hard disks ). | 1450 | DASD's direct access storage devices ( otherwise known as hard disks ). |
1436 | Tape Drives. | 1451 | Tape Drives. |
1437 | CTC ( Channel to Channel Adapters ), | 1452 | CTC ( Channel to Channel Adapters ), |
1438 | ESCON or Parallel Cables used as a very high speed serial link | 1453 | ESCON or Parallel Cables used as a very high speed serial link |
1439 | between 2 machines. We use 2 cables under linux to do a bi-directional serial link. | 1454 | between 2 machines. |
1440 | 1455 | ||
1441 | 1456 | ||
1442 | Debugging IO on s/390 & z/Architecture under VM | 1457 | Debugging IO on s/390 & z/Architecture under VM |
@@ -1475,9 +1490,9 @@ or the halt subchannels | |||
1475 | or TR HSCH 7C08-7C09 | 1490 | or TR HSCH 7C08-7C09 |
1476 | MSCH's ,STSCH's I think you can guess the rest | 1491 | MSCH's ,STSCH's I think you can guess the rest |
1477 | 1492 | ||
1478 | Ingo's favourite trick is tracing all the IO's & CCWS & spooling them into the reader of another | 1493 | A good trick is tracing all the IO's and CCWS and spooling them into the reader |
1479 | VM guest so he can ftp the logfile back to his own machine.I'll do a small bit of this & give you | 1494 | of another VM guest so he can ftp the logfile back to his own machine. I'll do |
1480 | a look at the output. | 1495 | a small bit of this and give you a look at the output. |
1481 | 1496 | ||
1482 | 1) Spool stdout to VM reader | 1497 | 1) Spool stdout to VM reader |
1483 | SP PRT TO (another vm guest ) or * for the local vm guest | 1498 | SP PRT TO (another vm guest ) or * for the local vm guest |
@@ -1593,8 +1608,8 @@ undisplay : undo's display's | |||
1593 | 1608 | ||
1594 | info breakpoints: shows all current breakpoints | 1609 | info breakpoints: shows all current breakpoints |
1595 | 1610 | ||
1596 | info stack: shows stack back trace ( if this doesn't work too well, I'll show you the | 1611 | info stack: shows stack back trace (if this doesn't work too well, I'll show |
1597 | stacktrace by hand below ). | 1612 | you the stacktrace by hand below). |
1598 | 1613 | ||
1599 | info locals: displays local variables. | 1614 | info locals: displays local variables. |
1600 | 1615 | ||
@@ -1619,7 +1634,8 @@ next: like step except this will not step into subroutines | |||
1619 | stepi: steps a single machine code instruction. | 1634 | stepi: steps a single machine code instruction. |
1620 | e.g. stepi 100 | 1635 | e.g. stepi 100 |
1621 | 1636 | ||
1622 | nexti: steps a single machine code instruction but will not step into subroutines. | 1637 | nexti: steps a single machine code instruction but will not step into |
1638 | subroutines. | ||
1623 | 1639 | ||
1624 | finish: will run until exit of the current routine | 1640 | finish: will run until exit of the current routine |
1625 | 1641 | ||
@@ -1721,7 +1737,8 @@ e.g. | |||
1721 | outputs: | 1737 | outputs: |
1722 | $1 = 11 | 1738 | $1 = 11 |
1723 | 1739 | ||
1724 | You might now be thinking that the line above didn't work, something extra had to be done. | 1740 | You might now be thinking that the line above didn't work, something extra had |
1741 | to be done. | ||
1725 | (gdb) call fflush(stdout) | 1742 | (gdb) call fflush(stdout) |
1726 | hello world$2 = 0 | 1743 | hello world$2 = 0 |
1727 | As an aside the debugger also calls malloc & free under the hood | 1744 | As an aside the debugger also calls malloc & free under the hood |
@@ -1804,26 +1821,17 @@ man gdb or info gdb. | |||
1804 | core dumps | 1821 | core dumps |
1805 | ---------- | 1822 | ---------- |
1806 | What a core dump ?, | 1823 | What a core dump ?, |
1807 | A core dump is a file generated by the kernel ( if allowed ) which contains the registers, | 1824 | A core dump is a file generated by the kernel (if allowed) which contains the |
1808 | & all active pages of the program which has crashed. | 1825 | registers and all active pages of the program which has crashed. |
1809 | From this file gdb will allow you to look at the registers & stack trace & memory of the | 1826 | From this file gdb will allow you to look at the registers, stack trace and |
1810 | program as if it just crashed on your system, it is usually called core & created in the | 1827 | memory of the program as if it just crashed on your system. It is usually |
1811 | current working directory. | 1828 | called core and created in the current working directory. |
1812 | This is very useful in that a customer can mail a core dump to a technical support department | 1829 | This is very useful in that a customer can mail a core dump to a technical |
1813 | & the technical support department can reconstruct what happened. | 1830 | support department and the technical support department can reconstruct what |
1814 | Provided they have an identical copy of this program with debugging symbols compiled in & | 1831 | happened. Provided they have an identical copy of this program with debugging |
1815 | the source base of this build is available. | 1832 | symbols compiled in and the source base of this build is available. |
1816 | In short it is far more useful than something like a crash log could ever hope to be. | 1833 | In short it is far more useful than something like a crash log could ever hope |
1817 | 1834 | to be. | |
1818 | In theory all that is missing to restart a core dumped program is a kernel patch which | ||
1819 | will do the following. | ||
1820 | 1) Make a new kernel task structure | ||
1821 | 2) Reload all the dumped pages back into the kernel's memory management structures. | ||
1822 | 3) Do the required clock fixups | ||
1823 | 4) Get all files & network connections for the process back into an identical state ( really difficult ). | ||
1824 | 5) A few more difficult things I haven't thought of. | ||
1825 | |||
1826 | |||
1827 | 1835 | ||
1828 | Why have I never seen one ?. | 1836 | Why have I never seen one ?. |
1829 | Probably because you haven't used the command | 1837 | Probably because you haven't used the command |
@@ -1868,7 +1876,7 @@ Breakpoint 2 at 0x4d87a4: file top.c, line 2609. | |||
1868 | #3 0x5167e6 in readline_internal_char () at readline.c:454 | 1876 | #3 0x5167e6 in readline_internal_char () at readline.c:454 |
1869 | #4 0x5168ee in readline_internal_charloop () at readline.c:507 | 1877 | #4 0x5168ee in readline_internal_charloop () at readline.c:507 |
1870 | #5 0x51692c in readline_internal () at readline.c:521 | 1878 | #5 0x51692c in readline_internal () at readline.c:521 |
1871 | #6 0x5164fe in readline (prompt=0x7ffff810 "\177ÿøx\177ÿ÷Ø\177ÿøxÀ") | 1879 | #6 0x5164fe in readline (prompt=0x7ffff810) |
1872 | at readline.c:349 | 1880 | at readline.c:349 |
1873 | #7 0x4d7a8a in command_line_input (prompt=0x564420 "(gdb) ", repeat=1, | 1881 | #7 0x4d7a8a in command_line_input (prompt=0x564420 "(gdb) ", repeat=1, |
1874 | annotation_suffix=0x4d6b44 "prompt") at top.c:2091 | 1882 | annotation_suffix=0x4d6b44 "prompt") at top.c:2091 |
@@ -1929,8 +1937,8 @@ cat /proc/sys/net/ipv4/ip_forward | |||
1929 | On my machine now outputs | 1937 | On my machine now outputs |
1930 | 1 | 1938 | 1 |
1931 | IP forwarding is on. | 1939 | IP forwarding is on. |
1932 | There is a lot of useful info in here best found by going in & having a look around, | 1940 | There is a lot of useful info in here best found by going in and having a look |
1933 | so I'll take you through some entries I consider important. | 1941 | around, so I'll take you through some entries I consider important. |
1934 | 1942 | ||
1935 | All the processes running on the machine have their own entry defined by | 1943 | All the processes running on the machine have their own entry defined by |
1936 | /proc/<pid> | 1944 | /proc/<pid> |
@@ -2060,7 +2068,8 @@ if the device doesn't say up | |||
2060 | try | 2068 | try |
2061 | /etc/rc.d/init.d/network start | 2069 | /etc/rc.d/init.d/network start |
2062 | ( this starts the network stack & hopefully calls ifconfig tr0 up ). | 2070 | ( this starts the network stack & hopefully calls ifconfig tr0 up ). |
2063 | ifconfig looks at the output of /proc/net/dev & presents it in a more presentable form | 2071 | ifconfig looks at the output of /proc/net/dev and presents it in a more |
2072 | presentable form. | ||
2064 | Now ping the device from a machine in the same subnet. | 2073 | Now ping the device from a machine in the same subnet. |
2065 | if the RX packets count & TX packets counts don't increment you probably | 2074 | if the RX packets count & TX packets counts don't increment you probably |
2066 | have problems. | 2075 | have problems. |
@@ -2086,34 +2095,6 @@ of the device. | |||
2086 | See the manpage chandev.8 &type cat /proc/chandev for more info. | 2095 | See the manpage chandev.8 &type cat /proc/chandev for more info. |
2087 | 2096 | ||
2088 | 2097 | ||
2089 | |||
2090 | Starting points for debugging scripting languages etc. | ||
2091 | ====================================================== | ||
2092 | |||
2093 | bash/sh | ||
2094 | |||
2095 | bash -x <scriptname> | ||
2096 | e.g. bash -x /usr/bin/bashbug | ||
2097 | displays the following lines as it executes them. | ||
2098 | + MACHINE=i586 | ||
2099 | + OS=linux-gnu | ||
2100 | + CC=gcc | ||
2101 | + CFLAGS= -DPROGRAM='bash' -DHOSTTYPE='i586' -DOSTYPE='linux-gnu' -DMACHTYPE='i586-pc-linux-gnu' -DSHELL -DHAVE_CONFIG_H -I. -I. -I./lib -O2 -pipe | ||
2102 | + RELEASE=2.01 | ||
2103 | + PATCHLEVEL=1 | ||
2104 | + RELSTATUS=release | ||
2105 | + MACHTYPE=i586-pc-linux-gnu | ||
2106 | |||
2107 | perl -d <scriptname> runs the perlscript in a fully interactive debugger | ||
2108 | <like gdb>. | ||
2109 | Type 'h' in the debugger for help. | ||
2110 | |||
2111 | for debugging java type | ||
2112 | jdb <filename> another fully interactive gdb style debugger. | ||
2113 | & type ? in the debugger for help. | ||
2114 | |||
2115 | |||
2116 | |||
2117 | SysRq | 2098 | SysRq |
2118 | ===== | 2099 | ===== |
2119 | This is now supported by linux for s/390 & z/Architecture. | 2100 | This is now supported by linux for s/390 & z/Architecture. |
diff --git a/Documentation/scheduler/completion.txt b/Documentation/scheduler/completion.txt new file mode 100644 index 000000000000..f77651eca31e --- /dev/null +++ b/Documentation/scheduler/completion.txt | |||
@@ -0,0 +1,236 @@ | |||
1 | completions - wait for completion handling | ||
2 | ========================================== | ||
3 | |||
4 | This document was originally written based on 3.18.0 (linux-next) | ||
5 | |||
6 | Introduction: | ||
7 | ------------- | ||
8 | |||
9 | If you have one or more threads of execution that must wait for some process | ||
10 | to have reached a point or a specific state, completions can provide a race | ||
11 | free solution to this problem. Semantically they are somewhat like a | ||
12 | pthread_barriers and have similar use-cases. | ||
13 | |||
14 | Completions are a code synchronization mechanism that is preferable to any | ||
15 | misuse of locks. Any time you think of using yield() or some quirky | ||
16 | msleep(1); loop to allow something else to proceed, you probably want to | ||
17 | look into using one of the wait_for_completion*() calls instead. The | ||
18 | advantage of using completions is clear intent of the code but also more | ||
19 | efficient code as both threads can continue until the result is actually | ||
20 | needed. | ||
21 | |||
22 | Completions are built on top of the generic event infrastructure in Linux, | ||
23 | with the event reduced to a simple flag appropriately called "done" in | ||
24 | struct completion, that tells the waiting threads of execution if they | ||
25 | can continue safely. | ||
26 | |||
27 | As completions are scheduling related the code is found in | ||
28 | kernel/sched/completion.c - for details on completion design and | ||
29 | implementation see completions-design.txt | ||
30 | |||
31 | |||
32 | Usage: | ||
33 | ------ | ||
34 | |||
35 | There are three parts to the using completions, the initialization of the | ||
36 | struct completion, the waiting part through a call to one of the variants of | ||
37 | wait_for_completion() and the signaling side through a call to complete(), | ||
38 | or complete_all(). Further there are some helper functions for checking the | ||
39 | state of completions. | ||
40 | |||
41 | To use completions one needs to include <linux/completion.h> and | ||
42 | create a variable of type struct completion. The structure used for | ||
43 | handling of completions is: | ||
44 | |||
45 | struct completion { | ||
46 | unsigned int done; | ||
47 | wait_queue_head_t wait; | ||
48 | }; | ||
49 | |||
50 | providing the wait queue to place tasks on for waiting and the flag for | ||
51 | indicating the state of affairs. | ||
52 | |||
53 | Completions should be named to convey the intent of the waiter. A good | ||
54 | example is: | ||
55 | |||
56 | wait_for_completion(&early_console_added); | ||
57 | |||
58 | complete(&early_console_added); | ||
59 | |||
60 | Good naming (as always) helps code readability. | ||
61 | |||
62 | |||
63 | Initializing completions: | ||
64 | ------------------------- | ||
65 | |||
66 | Initialization of dynamically allocated completions, often embedded in | ||
67 | other structures, is done with: | ||
68 | |||
69 | void init_completion(&done); | ||
70 | |||
71 | Initialization is accomplished by initializing the wait queue and setting | ||
72 | the default state to "not available", that is, "done" is set to 0. | ||
73 | |||
74 | The re-initialization function, reinit_completion(), simply resets the | ||
75 | done element to "not available", thus again to 0, without touching the | ||
76 | wait queue. Calling init_completion() on the same completions object is | ||
77 | most likely a bug as it re-initializes the queue to an empty queue and | ||
78 | enqueued tasks could get "lost" - use reinit_completion() in that case. | ||
79 | |||
80 | For static declaration and initialization, macros are available. These are: | ||
81 | |||
82 | static DECLARE_COMPLETION(setup_done) | ||
83 | |||
84 | used for static declarations in file scope. Within functions the static | ||
85 | initialization should always use: | ||
86 | |||
87 | DECLARE_COMPLETION_ONSTACK(setup_done) | ||
88 | |||
89 | suitable for automatic/local variables on the stack and will make lockdep | ||
90 | happy. Note also that one needs to making *sure* the completion passt to | ||
91 | work threads remains in-scope, and no references remain to on-stack data | ||
92 | when the initiating function returns. | ||
93 | |||
94 | |||
95 | Waiting for completions: | ||
96 | ------------------------ | ||
97 | |||
98 | For a thread of execution to wait for some concurrent work to finish, it | ||
99 | calls wait_for_completion() on the initialized completion structure. | ||
100 | A typical usage scenario is: | ||
101 | |||
102 | structure completion setup_done; | ||
103 | init_completion(&setup_done); | ||
104 | initialze_work(...,&setup_done,...) | ||
105 | |||
106 | /* run non-dependent code */ /* do setup */ | ||
107 | |||
108 | wait_for_completion(&seupt_done); complete(setup_done) | ||
109 | |||
110 | This is not implying any temporal order of wait_for_completion() and the | ||
111 | call to complete() - if the call to complete() happened before the call | ||
112 | to wait_for_completion() then the waiting side simply will continue | ||
113 | immediately as all dependencies are satisfied. | ||
114 | |||
115 | Note that wait_for_completion() is calling spin_lock_irq/spin_unlock_irq | ||
116 | so it can only be called safely when you know that interrupts are enabled. | ||
117 | Calling it from hard-irq context will result in hard to detect spurious | ||
118 | enabling of interrupts. | ||
119 | |||
120 | wait_for_completion(): | ||
121 | |||
122 | void wait_for_completion(struct completion *done): | ||
123 | |||
124 | The default behavior is to wait without a timeout and mark the task as | ||
125 | uninterruptible. wait_for_completion() and its variants are only safe | ||
126 | in soft-interrupt or process context but not in hard-irq context. | ||
127 | As all variants of wait_for_completion() can (obviously) block for a long | ||
128 | time, you probably don't want to call this with held locks - see also | ||
129 | try_wait_for_completion() below. | ||
130 | |||
131 | |||
132 | Variants available: | ||
133 | ------------------- | ||
134 | |||
135 | The below variants all return status and this status should be checked in | ||
136 | most(/all) cases - in cases where the status is deliberately not checked you | ||
137 | probably want to make a note explaining this (e.g. see | ||
138 | arch/arm/kernel/smp.c:__cpu_up()). | ||
139 | |||
140 | A common problem that occurs is to have unclean assignment of return types, | ||
141 | so care should be taken with assigning return-values to variables of proper | ||
142 | type. Checking for the specific meaning of return values also has been found | ||
143 | to be quite inaccurate e.g. constructs like | ||
144 | if(!wait_for_completion_interruptible_timeout(...)) would execute the same | ||
145 | code path for successful completion and for the interrupted case - which is | ||
146 | probably not what you want. | ||
147 | |||
148 | int wait_for_completion_interruptible(struct completion *done) | ||
149 | |||
150 | marking the task TASK_INTERRUPTIBLE. If a signal was received while waiting. | ||
151 | It will return -ERESTARTSYS and 0 otherwise. | ||
152 | |||
153 | unsigned long wait_for_completion_timeout(struct completion *done, | ||
154 | unsigned long timeout) | ||
155 | |||
156 | The task is marked as TASK_UNINTERRUPTIBLE and will wait at most timeout | ||
157 | (in jiffies). If timeout occurs it return 0 else the remaining time in | ||
158 | jiffies (but at least 1). Timeouts are preferably passed by msecs_to_jiffies() | ||
159 | or usecs_to_jiffies(). If the returned timeout value is deliberately ignored | ||
160 | a comment should probably explain why (e.g. see drivers/mfd/wm8350-core.c | ||
161 | wm8350_read_auxadc()) | ||
162 | |||
163 | long wait_for_completion_interruptible_timeout( | ||
164 | struct completion *done, unsigned long timeout) | ||
165 | |||
166 | passing a timeout in jiffies and marking the task as TASK_INTERRUPTIBLE. If a | ||
167 | signal was received it will return -ERESTARTSYS, 0 if completion timed-out and | ||
168 | the remaining time in jiffies if completion occurred. | ||
169 | |||
170 | Further variants include _killable which passes TASK_KILLABLE as the | ||
171 | designated tasks state and will return a -ERESTARTSYS if interrupted or | ||
172 | else 0 if completions was achieved as well as a _timeout variant. | ||
173 | |||
174 | long wait_for_completion_killable(struct completion *done) | ||
175 | long wait_for_completion_killable_timeout(struct completion *done, | ||
176 | unsigned long timeout) | ||
177 | |||
178 | The _io variants wait_for_completion_io behave the same as the non-_io | ||
179 | variants, except for accounting waiting time as waiting on IO, which has | ||
180 | an impact on how scheduling is calculated. | ||
181 | |||
182 | void wait_for_completion_io(struct completion *done) | ||
183 | unsigned long wait_for_completion_io_timeout(struct completion *done | ||
184 | unsigned long timeout) | ||
185 | |||
186 | |||
187 | Signaling completions: | ||
188 | ---------------------- | ||
189 | |||
190 | A thread of execution that wants to signal that the conditions for | ||
191 | continuation have been achieved calls complete() to signal exactly one | ||
192 | of the waiters that it can continue. | ||
193 | |||
194 | void complete(struct completion *done) | ||
195 | |||
196 | or calls complete_all to signal all current and future waiters. | ||
197 | |||
198 | void complete_all(struct completion *done) | ||
199 | |||
200 | The signaling will work as expected even if completions are signaled before | ||
201 | a thread starts waiting. This is achieved by the waiter "consuming" | ||
202 | (decrementing) the done element of struct completion. Waiting threads | ||
203 | wakeup order is the same in which they were enqueued (FIFO order). | ||
204 | |||
205 | If complete() is called multiple times then this will allow for that number | ||
206 | of waiters to continue - each call to complete() will simply increment the | ||
207 | done element. Calling complete_all() multiple times is a bug though. Both | ||
208 | complete() and complete_all() can be called in hard-irq context safely. | ||
209 | |||
210 | There only can be one thread calling complete() or complete_all() on a | ||
211 | particular struct completions at any time - serialized through the wait | ||
212 | queue spinlock. Any such concurrent calls to complete() or complete_all() | ||
213 | probably are a design bug. | ||
214 | |||
215 | Signaling completion from hard-irq context is fine as it will appropriately | ||
216 | lock with spin_lock_irqsave/spin_unlock_irqrestore. | ||
217 | |||
218 | |||
219 | try_wait_for_completion()/completion_done(): | ||
220 | -------------------------------------------- | ||
221 | |||
222 | The try_wait_for_completion will not put the thread on the wait queue but | ||
223 | rather returns false if it would need to enqueue (block) the thread, else it | ||
224 | consumes any posted completions and returns true. | ||
225 | |||
226 | bool try_wait_for_completion(struct completion *done) | ||
227 | |||
228 | Finally to check state of a completions without changing it in any way is | ||
229 | provided by completion_done() returning false if there are any posted | ||
230 | completion that was not yet consumed by waiters implying that there are | ||
231 | waiters and true otherwise; | ||
232 | |||
233 | bool completion_done(struct completion *done) | ||
234 | |||
235 | Both try_wait_for_completion() and completion_done() are safe to be called in | ||
236 | hard-irq context. | ||
diff --git a/Documentation/security/keys.txt b/Documentation/security/keys.txt index 821c936e1a63..c9e7f4f223a5 100644 --- a/Documentation/security/keys.txt +++ b/Documentation/security/keys.txt | |||
@@ -323,8 +323,6 @@ about the status of the key service: | |||
323 | U Under construction by callback to userspace | 323 | U Under construction by callback to userspace |
324 | N Negative key | 324 | N Negative key |
325 | 325 | ||
326 | This file must be enabled at kernel configuration time as it allows anyone | ||
327 | to list the keys database. | ||
328 | 326 | ||
329 | (*) /proc/key-users | 327 | (*) /proc/key-users |
330 | 328 | ||
diff --git a/Documentation/stable_kernel_rules.txt b/Documentation/stable_kernel_rules.txt index aee73e78c7d4..02f8331edb8b 100644 --- a/Documentation/stable_kernel_rules.txt +++ b/Documentation/stable_kernel_rules.txt | |||
@@ -32,18 +32,42 @@ Procedure for submitting patches to the -stable tree: | |||
32 | - If the patch covers files in net/ or drivers/net please follow netdev stable | 32 | - If the patch covers files in net/ or drivers/net please follow netdev stable |
33 | submission guidelines as described in | 33 | submission guidelines as described in |
34 | Documentation/networking/netdev-FAQ.txt | 34 | Documentation/networking/netdev-FAQ.txt |
35 | - Send the patch, after verifying that it follows the above rules, to | 35 | - Security patches should not be handled (solely) by the -stable review |
36 | stable@vger.kernel.org. You must note the upstream commit ID in the | 36 | process but should follow the procedures in Documentation/SecurityBugs. |
37 | changelog of your submission, as well as the kernel version you wish | 37 | |
38 | it to be applied to. | 38 | For all other submissions, choose one of the following procedures: |
39 | - To have the patch automatically included in the stable tree, add the tag | 39 | |
40 | --- Option 1 --- | ||
41 | |||
42 | To have the patch automatically included in the stable tree, add the tag | ||
40 | Cc: stable@vger.kernel.org | 43 | Cc: stable@vger.kernel.org |
41 | in the sign-off area. Once the patch is merged it will be applied to | 44 | in the sign-off area. Once the patch is merged it will be applied to |
42 | the stable tree without anything else needing to be done by the author | 45 | the stable tree without anything else needing to be done by the author |
43 | or subsystem maintainer. | 46 | or subsystem maintainer. |
44 | - If the patch requires other patches as prerequisites which can be | 47 | |
45 | cherry-picked, then this can be specified in the following format in | 48 | --- Option 2 --- |
46 | the sign-off area: | 49 | |
50 | After the patch has been merged to Linus' tree, send an email to | ||
51 | stable@vger.kernel.org containing the subject of the patch, the commit ID, | ||
52 | why you think it should be applied, and what kernel version you wish it to | ||
53 | be applied to. | ||
54 | |||
55 | --- Option 3 --- | ||
56 | |||
57 | Send the patch, after verifying that it follows the above rules, to | ||
58 | stable@vger.kernel.org. You must note the upstream commit ID in the | ||
59 | changelog of your submission, as well as the kernel version you wish | ||
60 | it to be applied to. | ||
61 | |||
62 | Option 1 is probably the easiest and most common. Options 2 and 3 are more | ||
63 | useful if the patch isn't deemed worthy at the time it is applied to a public | ||
64 | git tree (for instance, because it deserves more regression testing first). | ||
65 | Option 3 is especially useful if the patch needs some special handling to apply | ||
66 | to an older kernel (e.g., if API's have changed in the meantime). | ||
67 | |||
68 | Additionally, some patches submitted via Option 1 may have additional patch | ||
69 | prerequisites which can be cherry-picked. This can be specified in the following | ||
70 | format in the sign-off area: | ||
47 | 71 | ||
48 | Cc: <stable@vger.kernel.org> # 3.3.x: a1f84a3: sched: Check for idle | 72 | Cc: <stable@vger.kernel.org> # 3.3.x: a1f84a3: sched: Check for idle |
49 | Cc: <stable@vger.kernel.org> # 3.3.x: 1b9508f: sched: Rate-limit newidle | 73 | Cc: <stable@vger.kernel.org> # 3.3.x: 1b9508f: sched: Rate-limit newidle |
@@ -57,13 +81,13 @@ Procedure for submitting patches to the -stable tree: | |||
57 | git cherry-pick fd21073 | 81 | git cherry-pick fd21073 |
58 | git cherry-pick <this commit> | 82 | git cherry-pick <this commit> |
59 | 83 | ||
84 | Following the submission: | ||
85 | |||
60 | - The sender will receive an ACK when the patch has been accepted into the | 86 | - The sender will receive an ACK when the patch has been accepted into the |
61 | queue, or a NAK if the patch is rejected. This response might take a few | 87 | queue, or a NAK if the patch is rejected. This response might take a few |
62 | days, according to the developer's schedules. | 88 | days, according to the developer's schedules. |
63 | - If accepted, the patch will be added to the -stable queue, for review by | 89 | - If accepted, the patch will be added to the -stable queue, for review by |
64 | other developers and by the relevant subsystem maintainer. | 90 | other developers and by the relevant subsystem maintainer. |
65 | - Security patches should not be sent to this alias, but instead to the | ||
66 | documented security@kernel.org address. | ||
67 | 91 | ||
68 | 92 | ||
69 | Review cycle: | 93 | Review cycle: |
diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt index 75511efefc64..83ab25660fc9 100644 --- a/Documentation/sysctl/kernel.txt +++ b/Documentation/sysctl/kernel.txt | |||
@@ -843,6 +843,7 @@ can be ORed together: | |||
843 | 8192 - An unsigned module has been loaded in a kernel supporting module | 843 | 8192 - An unsigned module has been loaded in a kernel supporting module |
844 | signature. | 844 | signature. |
845 | 16384 - A soft lockup has previously occurred on the system. | 845 | 16384 - A soft lockup has previously occurred on the system. |
846 | 32768 - The kernel has been live patched. | ||
846 | 847 | ||
847 | ============================================================== | 848 | ============================================================== |
848 | 849 | ||
diff --git a/Documentation/sysctl/net.txt b/Documentation/sysctl/net.txt index 666594b43cff..6294b5186ae5 100644 --- a/Documentation/sysctl/net.txt +++ b/Documentation/sysctl/net.txt | |||
@@ -97,6 +97,14 @@ rmem_max | |||
97 | 97 | ||
98 | The maximum receive socket buffer size in bytes. | 98 | The maximum receive socket buffer size in bytes. |
99 | 99 | ||
100 | tstamp_allow_data | ||
101 | ----------------- | ||
102 | Allow processes to receive tx timestamps looped together with the original | ||
103 | packet contents. If disabled, transmit timestamp requests from unprivileged | ||
104 | processes are dropped unless socket option SOF_TIMESTAMPING_OPT_TSONLY is set. | ||
105 | Default: 1 (on) | ||
106 | |||
107 | |||
100 | wmem_default | 108 | wmem_default |
101 | ------------ | 109 | ------------ |
102 | 110 | ||
diff --git a/Documentation/sysctl/vm.txt b/Documentation/sysctl/vm.txt index 4415aa915681..902b4574acfb 100644 --- a/Documentation/sysctl/vm.txt +++ b/Documentation/sysctl/vm.txt | |||
@@ -555,12 +555,12 @@ this is causing problems for your system/application. | |||
555 | 555 | ||
556 | oom_dump_tasks | 556 | oom_dump_tasks |
557 | 557 | ||
558 | Enables a system-wide task dump (excluding kernel threads) to be | 558 | Enables a system-wide task dump (excluding kernel threads) to be produced |
559 | produced when the kernel performs an OOM-killing and includes such | 559 | when the kernel performs an OOM-killing and includes such information as |
560 | information as pid, uid, tgid, vm size, rss, nr_ptes, swapents, | 560 | pid, uid, tgid, vm size, rss, nr_ptes, nr_pmds, swapents, oom_score_adj |
561 | oom_score_adj score, and name. This is helpful to determine why the | 561 | score, and name. This is helpful to determine why the OOM killer was |
562 | OOM killer was invoked, to identify the rogue task that caused it, | 562 | invoked, to identify the rogue task that caused it, and to determine why |
563 | and to determine why the OOM killer chose the task it did to kill. | 563 | the OOM killer chose the task it did to kill. |
564 | 564 | ||
565 | If this is set to zero, this information is suppressed. On very | 565 | If this is set to zero, this information is suppressed. On very |
566 | large systems with thousands of tasks it may not be feasible to dump | 566 | large systems with thousands of tasks it may not be feasible to dump |
@@ -728,7 +728,7 @@ The default value is 60. | |||
728 | 728 | ||
729 | - user_reserve_kbytes | 729 | - user_reserve_kbytes |
730 | 730 | ||
731 | When overcommit_memory is set to 2, "never overommit" mode, reserve | 731 | When overcommit_memory is set to 2, "never overcommit" mode, reserve |
732 | min(3% of current process size, user_reserve_kbytes) of free memory. | 732 | min(3% of current process size, user_reserve_kbytes) of free memory. |
733 | This is intended to prevent a user from starting a single memory hogging | 733 | This is intended to prevent a user from starting a single memory hogging |
734 | process, such that they cannot recover (kill the hog). | 734 | process, such that they cannot recover (kill the hog). |
diff --git a/Documentation/target/tcm_mod_builder.py b/Documentation/target/tcm_mod_builder.py index 230ce71f4d75..2b47704f75cb 100755 --- a/Documentation/target/tcm_mod_builder.py +++ b/Documentation/target/tcm_mod_builder.py | |||
@@ -389,9 +389,6 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): | |||
389 | buf += " .release_cmd = " + fabric_mod_name + "_release_cmd,\n" | 389 | buf += " .release_cmd = " + fabric_mod_name + "_release_cmd,\n" |
390 | buf += " .shutdown_session = " + fabric_mod_name + "_shutdown_session,\n" | 390 | buf += " .shutdown_session = " + fabric_mod_name + "_shutdown_session,\n" |
391 | buf += " .close_session = " + fabric_mod_name + "_close_session,\n" | 391 | buf += " .close_session = " + fabric_mod_name + "_close_session,\n" |
392 | buf += " .stop_session = " + fabric_mod_name + "_stop_session,\n" | ||
393 | buf += " .fall_back_to_erl0 = " + fabric_mod_name + "_reset_nexus,\n" | ||
394 | buf += " .sess_logged_in = " + fabric_mod_name + "_sess_logged_in,\n" | ||
395 | buf += " .sess_get_index = " + fabric_mod_name + "_sess_get_index,\n" | 392 | buf += " .sess_get_index = " + fabric_mod_name + "_sess_get_index,\n" |
396 | buf += " .sess_get_initiator_sid = NULL,\n" | 393 | buf += " .sess_get_initiator_sid = NULL,\n" |
397 | buf += " .write_pending = " + fabric_mod_name + "_write_pending,\n" | 394 | buf += " .write_pending = " + fabric_mod_name + "_write_pending,\n" |
@@ -402,7 +399,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): | |||
402 | buf += " .queue_data_in = " + fabric_mod_name + "_queue_data_in,\n" | 399 | buf += " .queue_data_in = " + fabric_mod_name + "_queue_data_in,\n" |
403 | buf += " .queue_status = " + fabric_mod_name + "_queue_status,\n" | 400 | buf += " .queue_status = " + fabric_mod_name + "_queue_status,\n" |
404 | buf += " .queue_tm_rsp = " + fabric_mod_name + "_queue_tm_rsp,\n" | 401 | buf += " .queue_tm_rsp = " + fabric_mod_name + "_queue_tm_rsp,\n" |
405 | buf += " .is_state_remove = " + fabric_mod_name + "_is_state_remove,\n" | 402 | buf += " .aborted_task = " + fabric_mod_name + "_aborted_task,\n" |
406 | buf += " /*\n" | 403 | buf += " /*\n" |
407 | buf += " * Setup function pointers for generic logic in target_core_fabric_configfs.c\n" | 404 | buf += " * Setup function pointers for generic logic in target_core_fabric_configfs.c\n" |
408 | buf += " */\n" | 405 | buf += " */\n" |
@@ -428,7 +425,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): | |||
428 | buf += " /*\n" | 425 | buf += " /*\n" |
429 | buf += " * Register the top level struct config_item_type with TCM core\n" | 426 | buf += " * Register the top level struct config_item_type with TCM core\n" |
430 | buf += " */\n" | 427 | buf += " */\n" |
431 | buf += " fabric = target_fabric_configfs_init(THIS_MODULE, \"" + fabric_mod_name[4:] + "\");\n" | 428 | buf += " fabric = target_fabric_configfs_init(THIS_MODULE, \"" + fabric_mod_name + "\");\n" |
432 | buf += " if (IS_ERR(fabric)) {\n" | 429 | buf += " if (IS_ERR(fabric)) {\n" |
433 | buf += " printk(KERN_ERR \"target_fabric_configfs_init() failed\\n\");\n" | 430 | buf += " printk(KERN_ERR \"target_fabric_configfs_init() failed\\n\");\n" |
434 | buf += " return PTR_ERR(fabric);\n" | 431 | buf += " return PTR_ERR(fabric);\n" |
@@ -595,7 +592,7 @@ def tcm_mod_dump_fabric_ops(proto_ident, fabric_mod_dir_var, fabric_mod_name): | |||
595 | if re.search('get_fabric_name', fo): | 592 | if re.search('get_fabric_name', fo): |
596 | buf += "char *" + fabric_mod_name + "_get_fabric_name(void)\n" | 593 | buf += "char *" + fabric_mod_name + "_get_fabric_name(void)\n" |
597 | buf += "{\n" | 594 | buf += "{\n" |
598 | buf += " return \"" + fabric_mod_name[4:] + "\";\n" | 595 | buf += " return \"" + fabric_mod_name + "\";\n" |
599 | buf += "}\n\n" | 596 | buf += "}\n\n" |
600 | bufi += "char *" + fabric_mod_name + "_get_fabric_name(void);\n" | 597 | bufi += "char *" + fabric_mod_name + "_get_fabric_name(void);\n" |
601 | continue | 598 | continue |
@@ -820,27 +817,6 @@ def tcm_mod_dump_fabric_ops(proto_ident, fabric_mod_dir_var, fabric_mod_name): | |||
820 | buf += "}\n\n" | 817 | buf += "}\n\n" |
821 | bufi += "void " + fabric_mod_name + "_close_session(struct se_session *);\n" | 818 | bufi += "void " + fabric_mod_name + "_close_session(struct se_session *);\n" |
822 | 819 | ||
823 | if re.search('stop_session\)\(', fo): | ||
824 | buf += "void " + fabric_mod_name + "_stop_session(struct se_session *se_sess, int sess_sleep , int conn_sleep)\n" | ||
825 | buf += "{\n" | ||
826 | buf += " return;\n" | ||
827 | buf += "}\n\n" | ||
828 | bufi += "void " + fabric_mod_name + "_stop_session(struct se_session *, int, int);\n" | ||
829 | |||
830 | if re.search('fall_back_to_erl0\)\(', fo): | ||
831 | buf += "void " + fabric_mod_name + "_reset_nexus(struct se_session *se_sess)\n" | ||
832 | buf += "{\n" | ||
833 | buf += " return;\n" | ||
834 | buf += "}\n\n" | ||
835 | bufi += "void " + fabric_mod_name + "_reset_nexus(struct se_session *);\n" | ||
836 | |||
837 | if re.search('sess_logged_in\)\(', fo): | ||
838 | buf += "int " + fabric_mod_name + "_sess_logged_in(struct se_session *se_sess)\n" | ||
839 | buf += "{\n" | ||
840 | buf += " return 0;\n" | ||
841 | buf += "}\n\n" | ||
842 | bufi += "int " + fabric_mod_name + "_sess_logged_in(struct se_session *);\n" | ||
843 | |||
844 | if re.search('sess_get_index\)\(', fo): | 820 | if re.search('sess_get_index\)\(', fo): |
845 | buf += "u32 " + fabric_mod_name + "_sess_get_index(struct se_session *se_sess)\n" | 821 | buf += "u32 " + fabric_mod_name + "_sess_get_index(struct se_session *se_sess)\n" |
846 | buf += "{\n" | 822 | buf += "{\n" |
@@ -898,19 +874,18 @@ def tcm_mod_dump_fabric_ops(proto_ident, fabric_mod_dir_var, fabric_mod_name): | |||
898 | bufi += "int " + fabric_mod_name + "_queue_status(struct se_cmd *);\n" | 874 | bufi += "int " + fabric_mod_name + "_queue_status(struct se_cmd *);\n" |
899 | 875 | ||
900 | if re.search('queue_tm_rsp\)\(', fo): | 876 | if re.search('queue_tm_rsp\)\(', fo): |
901 | buf += "int " + fabric_mod_name + "_queue_tm_rsp(struct se_cmd *se_cmd)\n" | 877 | buf += "void " + fabric_mod_name + "_queue_tm_rsp(struct se_cmd *se_cmd)\n" |
902 | buf += "{\n" | 878 | buf += "{\n" |
903 | buf += " return 0;\n" | 879 | buf += " return;\n" |
904 | buf += "}\n\n" | 880 | buf += "}\n\n" |
905 | bufi += "int " + fabric_mod_name + "_queue_tm_rsp(struct se_cmd *);\n" | 881 | bufi += "void " + fabric_mod_name + "_queue_tm_rsp(struct se_cmd *);\n" |
906 | 882 | ||
907 | if re.search('is_state_remove\)\(', fo): | 883 | if re.search('aborted_task\)\(', fo): |
908 | buf += "int " + fabric_mod_name + "_is_state_remove(struct se_cmd *se_cmd)\n" | 884 | buf += "void " + fabric_mod_name + "_aborted_task(struct se_cmd *se_cmd)\n" |
909 | buf += "{\n" | 885 | buf += "{\n" |
910 | buf += " return 0;\n" | 886 | buf += " return;\n" |
911 | buf += "}\n\n" | 887 | buf += "}\n\n" |
912 | bufi += "int " + fabric_mod_name + "_is_state_remove(struct se_cmd *);\n" | 888 | bufi += "void " + fabric_mod_name + "_aborted_task(struct se_cmd *);\n" |
913 | |||
914 | 889 | ||
915 | ret = p.write(buf) | 890 | ret = p.write(buf) |
916 | if ret: | 891 | if ret: |
@@ -1018,11 +993,11 @@ def main(modname, proto_ident): | |||
1018 | tcm_mod_build_kbuild(fabric_mod_dir, fabric_mod_name) | 993 | tcm_mod_build_kbuild(fabric_mod_dir, fabric_mod_name) |
1019 | tcm_mod_build_kconfig(fabric_mod_dir, fabric_mod_name) | 994 | tcm_mod_build_kconfig(fabric_mod_dir, fabric_mod_name) |
1020 | 995 | ||
1021 | input = raw_input("Would you like to add " + fabric_mod_name + "to drivers/target/Makefile..? [yes,no]: ") | 996 | input = raw_input("Would you like to add " + fabric_mod_name + " to drivers/target/Makefile..? [yes,no]: ") |
1022 | if input == "yes" or input == "y": | 997 | if input == "yes" or input == "y": |
1023 | tcm_mod_add_kbuild(tcm_dir, fabric_mod_name) | 998 | tcm_mod_add_kbuild(tcm_dir, fabric_mod_name) |
1024 | 999 | ||
1025 | input = raw_input("Would you like to add " + fabric_mod_name + "to drivers/target/Kconfig..? [yes,no]: ") | 1000 | input = raw_input("Would you like to add " + fabric_mod_name + " to drivers/target/Kconfig..? [yes,no]: ") |
1026 | if input == "yes" or input == "y": | 1001 | if input == "yes" or input == "y": |
1027 | tcm_mod_add_kconfig(tcm_dir, fabric_mod_name) | 1002 | tcm_mod_add_kconfig(tcm_dir, fabric_mod_name) |
1028 | 1003 | ||
diff --git a/Documentation/thermal/cpu-cooling-api.txt b/Documentation/thermal/cpu-cooling-api.txt index fca24c931ec8..753e47cc2e20 100644 --- a/Documentation/thermal/cpu-cooling-api.txt +++ b/Documentation/thermal/cpu-cooling-api.txt | |||
@@ -3,7 +3,7 @@ CPU cooling APIs How To | |||
3 | 3 | ||
4 | Written by Amit Daniel Kachhap <amit.kachhap@linaro.org> | 4 | Written by Amit Daniel Kachhap <amit.kachhap@linaro.org> |
5 | 5 | ||
6 | Updated: 12 May 2012 | 6 | Updated: 6 Jan 2015 |
7 | 7 | ||
8 | Copyright (c) 2012 Samsung Electronics Co., Ltd(http://www.samsung.com) | 8 | Copyright (c) 2012 Samsung Electronics Co., Ltd(http://www.samsung.com) |
9 | 9 | ||
@@ -25,7 +25,18 @@ the user. The registration APIs returns the cooling device pointer. | |||
25 | 25 | ||
26 | clip_cpus: cpumask of cpus where the frequency constraints will happen. | 26 | clip_cpus: cpumask of cpus where the frequency constraints will happen. |
27 | 27 | ||
28 | 1.1.2 void cpufreq_cooling_unregister(struct thermal_cooling_device *cdev) | 28 | 1.1.2 struct thermal_cooling_device *of_cpufreq_cooling_register( |
29 | struct device_node *np, const struct cpumask *clip_cpus) | ||
30 | |||
31 | This interface function registers the cpufreq cooling device with | ||
32 | the name "thermal-cpufreq-%x" linking it with a device tree node, in | ||
33 | order to bind it via the thermal DT code. This api can support multiple | ||
34 | instances of cpufreq cooling devices. | ||
35 | |||
36 | np: pointer to the cooling device device tree node | ||
37 | clip_cpus: cpumask of cpus where the frequency constraints will happen. | ||
38 | |||
39 | 1.1.3 void cpufreq_cooling_unregister(struct thermal_cooling_device *cdev) | ||
29 | 40 | ||
30 | This interface function unregisters the "thermal-cpufreq-%x" cooling device. | 41 | This interface function unregisters the "thermal-cpufreq-%x" cooling device. |
31 | 42 | ||
diff --git a/Documentation/trace/coresight.txt b/Documentation/trace/coresight.txt index bba7dbfc49ed..02361552a3ea 100644 --- a/Documentation/trace/coresight.txt +++ b/Documentation/trace/coresight.txt | |||
@@ -46,7 +46,7 @@ At typical coresight system would look like this: | |||
46 | | | . | ! | | . | ! | ! . | | SWD/ | 46 | | | . | ! | | . | ! | ! . | | SWD/ |
47 | | | . | ! | | . | ! | ! . | | JTAG | 47 | | | . | ! | | . | ! | ! . | | JTAG |
48 | *****************************************************************<-| | 48 | *****************************************************************<-| |
49 | *************************** AMBA Debug ABP ************************ | 49 | *************************** AMBA Debug APB ************************ |
50 | ***************************************************************** | 50 | ***************************************************************** |
51 | | . ! . ! ! . | | 51 | | . ! . ! ! . | |
52 | | . * . * * . | | 52 | | . * . * * . | |
@@ -79,7 +79,7 @@ At typical coresight system would look like this: | |||
79 | To trace port TPIU= Trace Port Interface Unit | 79 | To trace port TPIU= Trace Port Interface Unit |
80 | SWD = Serial Wire Debug | 80 | SWD = Serial Wire Debug |
81 | 81 | ||
82 | While on target configuration of the components is done via the ABP bus, | 82 | While on target configuration of the components is done via the APB bus, |
83 | all trace data are carried out-of-band on the ATB bus. The CTM provides | 83 | all trace data are carried out-of-band on the ATB bus. The CTM provides |
84 | a way to aggregate and distribute signals between CoreSight components. | 84 | a way to aggregate and distribute signals between CoreSight components. |
85 | 85 | ||
diff --git a/Documentation/trace/ftrace.txt b/Documentation/trace/ftrace.txt index 8408e040f06f..572ca923631a 100644 --- a/Documentation/trace/ftrace.txt +++ b/Documentation/trace/ftrace.txt | |||
@@ -1740,7 +1740,7 @@ no pid | |||
1740 | yum-updatesd-3111 [003] 1637.254683: lock_hrtimer_base <-hrtimer_try_to_cancel | 1740 | yum-updatesd-3111 [003] 1637.254683: lock_hrtimer_base <-hrtimer_try_to_cancel |
1741 | yum-updatesd-3111 [003] 1637.254685: fget_light <-do_sys_poll | 1741 | yum-updatesd-3111 [003] 1637.254685: fget_light <-do_sys_poll |
1742 | yum-updatesd-3111 [003] 1637.254686: pipe_poll <-do_sys_poll | 1742 | yum-updatesd-3111 [003] 1637.254686: pipe_poll <-do_sys_poll |
1743 | # echo -1 > set_ftrace_pid | 1743 | # echo > set_ftrace_pid |
1744 | # cat trace |head | 1744 | # cat trace |head |
1745 | # tracer: function | 1745 | # tracer: function |
1746 | # | 1746 | # |
diff --git a/Documentation/usb/gadget-testing.txt b/Documentation/usb/gadget-testing.txt new file mode 100644 index 000000000000..076ac7ba7f93 --- /dev/null +++ b/Documentation/usb/gadget-testing.txt | |||
@@ -0,0 +1,728 @@ | |||
1 | This file summarizes information on basic testing of USB functions | ||
2 | provided by gadgets. | ||
3 | |||
4 | 1. ACM function | ||
5 | 2. ECM function | ||
6 | 3. ECM subset function | ||
7 | 4. EEM function | ||
8 | 5. FFS function | ||
9 | 6. HID function | ||
10 | 7. LOOPBACK function | ||
11 | 8. MASS STORAGE function | ||
12 | 9. MIDI function | ||
13 | 10. NCM function | ||
14 | 11. OBEX function | ||
15 | 12. PHONET function | ||
16 | 13. RNDIS function | ||
17 | 14. SERIAL function | ||
18 | 15. SOURCESINK function | ||
19 | 16. UAC1 function | ||
20 | 17. UAC2 function | ||
21 | 18. UVC function | ||
22 | |||
23 | |||
24 | 1. ACM function | ||
25 | =============== | ||
26 | |||
27 | The function is provided by usb_f_acm.ko module. | ||
28 | |||
29 | Function-specific configfs interface | ||
30 | ------------------------------------ | ||
31 | |||
32 | The function name to use when creating the function directory is "acm". | ||
33 | The ACM function provides just one attribute in its function directory: | ||
34 | |||
35 | port_num | ||
36 | |||
37 | The attribute is read-only. | ||
38 | |||
39 | There can be at most 4 ACM/generic serial/OBEX ports in the system. | ||
40 | |||
41 | |||
42 | Testing the ACM function | ||
43 | ------------------------ | ||
44 | |||
45 | On the host: cat > /dev/ttyACM<X> | ||
46 | On the device : cat /dev/ttyGS<Y> | ||
47 | |||
48 | then the other way round | ||
49 | |||
50 | On the device: cat > /dev/ttyGS<Y> | ||
51 | On the host: cat /dev/ttyACM<X> | ||
52 | |||
53 | 2. ECM function | ||
54 | =============== | ||
55 | |||
56 | The function is provided by usb_f_ecm.ko module. | ||
57 | |||
58 | Function-specific configfs interface | ||
59 | ------------------------------------ | ||
60 | |||
61 | The function name to use when creating the function directory is "ecm". | ||
62 | The ECM function provides these attributes in its function directory: | ||
63 | |||
64 | ifname - network device interface name associated with this | ||
65 | function instance | ||
66 | qmult - queue length multiplier for high and super speed | ||
67 | host_addr - MAC address of host's end of this | ||
68 | Ethernet over USB link | ||
69 | dev_addr - MAC address of device's end of this | ||
70 | Ethernet over USB link | ||
71 | |||
72 | and after creating the functions/ecm.<instance name> they contain default | ||
73 | values: qmult is 5, dev_addr and host_addr are randomly selected. | ||
74 | Except for ifname they can be written to until the function is linked to a | ||
75 | configuration. The ifname is read-only and contains the name of the interface | ||
76 | which was assigned by the net core, e. g. usb0. | ||
77 | |||
78 | Testing the ECM function | ||
79 | ------------------------ | ||
80 | |||
81 | Configure IP addresses of the device and the host. Then: | ||
82 | |||
83 | On the device: ping <host's IP> | ||
84 | On the host: ping <device's IP> | ||
85 | |||
86 | 3. ECM subset function | ||
87 | ====================== | ||
88 | |||
89 | The function is provided by usb_f_ecm_subset.ko module. | ||
90 | |||
91 | Function-specific configfs interface | ||
92 | ------------------------------------ | ||
93 | |||
94 | The function name to use when creating the function directory is "geth". | ||
95 | The ECM subset function provides these attributes in its function directory: | ||
96 | |||
97 | ifname - network device interface name associated with this | ||
98 | function instance | ||
99 | qmult - queue length multiplier for high and super speed | ||
100 | host_addr - MAC address of host's end of this | ||
101 | Ethernet over USB link | ||
102 | dev_addr - MAC address of device's end of this | ||
103 | Ethernet over USB link | ||
104 | |||
105 | and after creating the functions/ecm.<instance name> they contain default | ||
106 | values: qmult is 5, dev_addr and host_addr are randomly selected. | ||
107 | Except for ifname they can be written to until the function is linked to a | ||
108 | configuration. The ifname is read-only and contains the name of the interface | ||
109 | which was assigned by the net core, e. g. usb0. | ||
110 | |||
111 | Testing the ECM subset function | ||
112 | ------------------------------- | ||
113 | |||
114 | Configure IP addresses of the device and the host. Then: | ||
115 | |||
116 | On the device: ping <host's IP> | ||
117 | On the host: ping <device's IP> | ||
118 | |||
119 | 4. EEM function | ||
120 | =============== | ||
121 | |||
122 | The function is provided by usb_f_eem.ko module. | ||
123 | |||
124 | Function-specific configfs interface | ||
125 | ------------------------------------ | ||
126 | |||
127 | The function name to use when creating the function directory is "eem". | ||
128 | The EEM function provides these attributes in its function directory: | ||
129 | |||
130 | ifname - network device interface name associated with this | ||
131 | function instance | ||
132 | qmult - queue length multiplier for high and super speed | ||
133 | host_addr - MAC address of host's end of this | ||
134 | Ethernet over USB link | ||
135 | dev_addr - MAC address of device's end of this | ||
136 | Ethernet over USB link | ||
137 | |||
138 | and after creating the functions/eem.<instance name> they contain default | ||
139 | values: qmult is 5, dev_addr and host_addr are randomly selected. | ||
140 | Except for ifname they can be written to until the function is linked to a | ||
141 | configuration. The ifname is read-only and contains the name of the interface | ||
142 | which was assigned by the net core, e. g. usb0. | ||
143 | |||
144 | Testing the EEM function | ||
145 | ------------------------ | ||
146 | |||
147 | Configure IP addresses of the device and the host. Then: | ||
148 | |||
149 | On the device: ping <host's IP> | ||
150 | On the host: ping <device's IP> | ||
151 | |||
152 | 5. FFS function | ||
153 | =============== | ||
154 | |||
155 | The function is provided by usb_f_fs.ko module. | ||
156 | |||
157 | Function-specific configfs interface | ||
158 | ------------------------------------ | ||
159 | |||
160 | The function name to use when creating the function directory is "ffs". | ||
161 | The function directory is intentionally empty and not modifiable. | ||
162 | |||
163 | After creating the directory there is a new instance (a "device") of FunctionFS | ||
164 | available in the system. Once a "device" is available, the user should follow | ||
165 | the standard procedure for using FunctionFS (mount it, run the userspace | ||
166 | process which implements the function proper). The gadget should be enabled | ||
167 | by writing a suitable string to usb_gadget/<gadget>/UDC. | ||
168 | |||
169 | Testing the FFS function | ||
170 | ------------------------ | ||
171 | |||
172 | On the device: start the function's userspace daemon, enable the gadget | ||
173 | On the host: use the USB function provided by the device | ||
174 | |||
175 | 6. HID function | ||
176 | =============== | ||
177 | |||
178 | The function is provided by usb_f_hid.ko module. | ||
179 | |||
180 | Function-specific configfs interface | ||
181 | ------------------------------------ | ||
182 | |||
183 | The function name to use when creating the function directory is "hid". | ||
184 | The HID function provides these attributes in its function directory: | ||
185 | |||
186 | protocol - HID protocol to use | ||
187 | report_desc - data to be used in HID reports, except data | ||
188 | passed with /dev/hidg<X> | ||
189 | report_length - HID report length | ||
190 | subclass - HID subclass to use | ||
191 | |||
192 | For a keyboard the protocol and the subclass are 1, the report_length is 8, | ||
193 | while the report_desc is: | ||
194 | |||
195 | $ hd my_report_desc | ||
196 | 00000000 05 01 09 06 a1 01 05 07 19 e0 29 e7 15 00 25 01 |..........)...%.| | ||
197 | 00000010 75 01 95 08 81 02 95 01 75 08 81 03 95 05 75 01 |u.......u.....u.| | ||
198 | 00000020 05 08 19 01 29 05 91 02 95 01 75 03 91 03 95 06 |....).....u.....| | ||
199 | 00000030 75 08 15 00 25 65 05 07 19 00 29 65 81 00 c0 |u...%e....)e...| | ||
200 | 0000003f | ||
201 | |||
202 | Such a sequence of bytes can be stored to the attribute with echo: | ||
203 | |||
204 | $ echo -ne \\x05\\x01\\x09\\x06\\xa1..... | ||
205 | |||
206 | Testing the HID function | ||
207 | ------------------------ | ||
208 | |||
209 | Device: | ||
210 | - create the gadget | ||
211 | - connect the gadget to a host, preferably not the one used | ||
212 | to control the gadget | ||
213 | - run a program which writes to /dev/hidg<N>, e.g. | ||
214 | a userspace program found in Documentation/usb/gadget_hid.txt: | ||
215 | |||
216 | $ ./hid_gadget_test /dev/hidg0 keyboard | ||
217 | |||
218 | Host: | ||
219 | - observe the keystrokes from the gadget | ||
220 | |||
221 | 7. LOOPBACK function | ||
222 | ==================== | ||
223 | |||
224 | The function is provided by usb_f_ss_lb.ko module. | ||
225 | |||
226 | Function-specific configfs interface | ||
227 | ------------------------------------ | ||
228 | |||
229 | The function name to use when creating the function directory is "Loopback". | ||
230 | The LOOPBACK function provides these attributes in its function directory: | ||
231 | |||
232 | qlen - depth of loopback queue | ||
233 | bulk_buflen - buffer length | ||
234 | |||
235 | Testing the LOOPBACK function | ||
236 | ----------------------------- | ||
237 | |||
238 | device: run the gadget | ||
239 | host: test-usb | ||
240 | |||
241 | http://www.linux-usb.org/usbtest/testusb.c | ||
242 | |||
243 | 8. MASS STORAGE function | ||
244 | ======================== | ||
245 | |||
246 | The function is provided by usb_f_mass_storage.ko module. | ||
247 | |||
248 | Function-specific configfs interface | ||
249 | ------------------------------------ | ||
250 | |||
251 | The function name to use when creating the function directory is "mass_storage". | ||
252 | The MASS STORAGE function provides these attributes in its directory: | ||
253 | files: | ||
254 | |||
255 | stall - Set to permit function to halt bulk endpoints. | ||
256 | Disabled on some USB devices known not to work | ||
257 | correctly. You should set it to true. | ||
258 | num_buffers - Number of pipeline buffers. Valid numbers | ||
259 | are 2..4. Available only if | ||
260 | CONFIG_USB_GADGET_DEBUG_FILES is set. | ||
261 | |||
262 | and a default lun.0 directory corresponding to SCSI LUN #0. | ||
263 | |||
264 | A new lun can be added with mkdir: | ||
265 | |||
266 | $ mkdir functions/mass_storage.0/partition.5 | ||
267 | |||
268 | Lun numbering does not have to be continuous, except for lun #0 which is | ||
269 | created by default. A maximum of 8 luns can be specified and they all must be | ||
270 | named following the <name>.<number> scheme. The numbers can be 0..8. | ||
271 | Probably a good convention is to name the luns "lun.<number>", | ||
272 | although it is not mandatory. | ||
273 | |||
274 | In each lun directory there are the following attribute files: | ||
275 | |||
276 | file - The path to the backing file for the LUN. | ||
277 | Required if LUN is not marked as removable. | ||
278 | ro - Flag specifying access to the LUN shall be | ||
279 | read-only. This is implied if CD-ROM emulation | ||
280 | is enabled as well as when it was impossible | ||
281 | to open "filename" in R/W mode. | ||
282 | removable - Flag specifying that LUN shall be indicated as | ||
283 | being removable. | ||
284 | cdrom - Flag specifying that LUN shall be reported as | ||
285 | being a CD-ROM. | ||
286 | nofua - Flag specifying that FUA flag | ||
287 | in SCSI WRITE(10,12) | ||
288 | |||
289 | Testing the MASS STORAGE function | ||
290 | --------------------------------- | ||
291 | |||
292 | device: connect the gadget, enable it | ||
293 | host: dmesg, see the USB drives appear (if system configured to automatically | ||
294 | mount) | ||
295 | |||
296 | 9. MIDI function | ||
297 | ================ | ||
298 | |||
299 | The function is provided by usb_f_midi.ko module. | ||
300 | |||
301 | Function-specific configfs interface | ||
302 | ------------------------------------ | ||
303 | |||
304 | The function name to use when creating the function directory is "midi". | ||
305 | The MIDI function provides these attributes in its function directory: | ||
306 | |||
307 | buflen - MIDI buffer length | ||
308 | id - ID string for the USB MIDI adapter | ||
309 | in_ports - number of MIDI input ports | ||
310 | index - index value for the USB MIDI adapter | ||
311 | out_ports - number of MIDI output ports | ||
312 | qlen - USB read request queue length | ||
313 | |||
314 | Testing the MIDI function | ||
315 | ------------------------- | ||
316 | |||
317 | There are two cases: playing a mid from the gadget to | ||
318 | the host and playing a mid from the host to the gadget. | ||
319 | |||
320 | 1) Playing a mid from the gadget to the host | ||
321 | host) | ||
322 | |||
323 | $ arecordmidi -l | ||
324 | Port Client name Port name | ||
325 | 14:0 Midi Through Midi Through Port-0 | ||
326 | 24:0 MIDI Gadget MIDI Gadget MIDI 1 | ||
327 | $ arecordmidi -p 24:0 from_gadget.mid | ||
328 | |||
329 | gadget) | ||
330 | |||
331 | $ aplaymidi -l | ||
332 | Port Client name Port name | ||
333 | 20:0 f_midi f_midi | ||
334 | |||
335 | $ aplaymidi -p 20:0 to_host.mid | ||
336 | |||
337 | 2) Playing a mid from the host to the gadget | ||
338 | gadget) | ||
339 | |||
340 | $ arecordmidi -l | ||
341 | Port Client name Port name | ||
342 | 20:0 f_midi f_midi | ||
343 | |||
344 | $ arecordmidi -p 20:0 from_host.mid | ||
345 | |||
346 | host) | ||
347 | |||
348 | $ aplaymidi -l | ||
349 | Port Client name Port name | ||
350 | 14:0 Midi Through Midi Through Port-0 | ||
351 | 24:0 MIDI Gadget MIDI Gadget MIDI 1 | ||
352 | |||
353 | $ aplaymidi -p24:0 to_gadget.mid | ||
354 | |||
355 | The from_gadget.mid should sound identical to the to_host.mid. | ||
356 | The from_host.id should sound identical to the to_gadget.mid. | ||
357 | |||
358 | MIDI files can be played to speakers/headphones with e.g. timidity installed | ||
359 | |||
360 | $ aplaymidi -l | ||
361 | Port Client name Port name | ||
362 | 14:0 Midi Through Midi Through Port-0 | ||
363 | 24:0 MIDI Gadget MIDI Gadget MIDI 1 | ||
364 | 128:0 TiMidity TiMidity port 0 | ||
365 | 128:1 TiMidity TiMidity port 1 | ||
366 | 128:2 TiMidity TiMidity port 2 | ||
367 | 128:3 TiMidity TiMidity port 3 | ||
368 | |||
369 | $ aplaymidi -p 128:0 file.mid | ||
370 | |||
371 | MIDI ports can be logically connected using the aconnect utility, e.g.: | ||
372 | |||
373 | $ aconnect 24:0 128:0 # try it on the host | ||
374 | |||
375 | After the gadget's MIDI port is connected to timidity's MIDI port, | ||
376 | whatever is played at the gadget side with aplaymidi -l is audible | ||
377 | in host's speakers/headphones. | ||
378 | |||
379 | 10. NCM function | ||
380 | ================ | ||
381 | |||
382 | The function is provided by usb_f_ncm.ko module. | ||
383 | |||
384 | Function-specific configfs interface | ||
385 | ------------------------------------ | ||
386 | |||
387 | The function name to use when creating the function directory is "ncm". | ||
388 | The NCM function provides these attributes in its function directory: | ||
389 | |||
390 | ifname - network device interface name associated with this | ||
391 | function instance | ||
392 | qmult - queue length multiplier for high and super speed | ||
393 | host_addr - MAC address of host's end of this | ||
394 | Ethernet over USB link | ||
395 | dev_addr - MAC address of device's end of this | ||
396 | Ethernet over USB link | ||
397 | |||
398 | and after creating the functions/ncm.<instance name> they contain default | ||
399 | values: qmult is 5, dev_addr and host_addr are randomly selected. | ||
400 | Except for ifname they can be written to until the function is linked to a | ||
401 | configuration. The ifname is read-only and contains the name of the interface | ||
402 | which was assigned by the net core, e. g. usb0. | ||
403 | |||
404 | Testing the NCM function | ||
405 | ------------------------ | ||
406 | |||
407 | Configure IP addresses of the device and the host. Then: | ||
408 | |||
409 | On the device: ping <host's IP> | ||
410 | On the host: ping <device's IP> | ||
411 | |||
412 | 11. OBEX function | ||
413 | ================= | ||
414 | |||
415 | The function is provided by usb_f_obex.ko module. | ||
416 | |||
417 | Function-specific configfs interface | ||
418 | ------------------------------------ | ||
419 | |||
420 | The function name to use when creating the function directory is "obex". | ||
421 | The OBEX function provides just one attribute in its function directory: | ||
422 | |||
423 | port_num | ||
424 | |||
425 | The attribute is read-only. | ||
426 | |||
427 | There can be at most 4 ACM/generic serial/OBEX ports in the system. | ||
428 | |||
429 | Testing the OBEX function | ||
430 | ------------------------- | ||
431 | |||
432 | On device: seriald -f /dev/ttyGS<Y> -s 1024 | ||
433 | On host: serialc -v <vendorID> -p <productID> -i<interface#> -a1 -s1024 \ | ||
434 | -t<out endpoint addr> -r<in endpoint addr> | ||
435 | |||
436 | where seriald and serialc are Felipe's utilities found here: | ||
437 | |||
438 | https://git.gitorious.org/usb/usb-tools.git master | ||
439 | |||
440 | 12. PHONET function | ||
441 | =================== | ||
442 | |||
443 | The function is provided by usb_f_phonet.ko module. | ||
444 | |||
445 | Function-specific configfs interface | ||
446 | ------------------------------------ | ||
447 | |||
448 | The function name to use when creating the function directory is "phonet". | ||
449 | The PHONET function provides just one attribute in its function directory: | ||
450 | |||
451 | ifname - network device interface name associated with this | ||
452 | function instance | ||
453 | |||
454 | Testing the PHONET function | ||
455 | --------------------------- | ||
456 | |||
457 | It is not possible to test the SOCK_STREAM protocol without a specific piece | ||
458 | of hardware, so only SOCK_DGRAM has been tested. For the latter to work, | ||
459 | in the past I had to apply the patch mentioned here: | ||
460 | |||
461 | http://www.spinics.net/lists/linux-usb/msg85689.html | ||
462 | |||
463 | These tools are required: | ||
464 | |||
465 | git://git.gitorious.org/meego-cellular/phonet-utils.git | ||
466 | |||
467 | On the host: | ||
468 | |||
469 | $ ./phonet -a 0x10 -i usbpn0 | ||
470 | $ ./pnroute add 0x6c usbpn0 | ||
471 | $./pnroute add 0x10 usbpn0 | ||
472 | $ ifconfig usbpn0 up | ||
473 | |||
474 | On the device: | ||
475 | |||
476 | $ ./phonet -a 0x6c -i upnlink0 | ||
477 | $ ./pnroute add 0x10 upnlink0 | ||
478 | $ ifconfig upnlink0 up | ||
479 | |||
480 | Then a test program can be used: | ||
481 | |||
482 | http://www.spinics.net/lists/linux-usb/msg85690.html | ||
483 | |||
484 | On the device: | ||
485 | |||
486 | $ ./pnxmit -a 0x6c -r | ||
487 | |||
488 | On the host: | ||
489 | |||
490 | $ ./pnxmit -a 0x10 -s 0x6c | ||
491 | |||
492 | As a result some data should be sent from host to device. | ||
493 | Then the other way round: | ||
494 | |||
495 | On the host: | ||
496 | |||
497 | $ ./pnxmit -a 0x10 -r | ||
498 | |||
499 | On the device: | ||
500 | |||
501 | $ ./pnxmit -a 0x6c -s 0x10 | ||
502 | |||
503 | 13. RNDIS function | ||
504 | ================== | ||
505 | |||
506 | The function is provided by usb_f_rndis.ko module. | ||
507 | |||
508 | Function-specific configfs interface | ||
509 | ------------------------------------ | ||
510 | |||
511 | The function name to use when creating the function directory is "rndis". | ||
512 | The RNDIS function provides these attributes in its function directory: | ||
513 | |||
514 | ifname - network device interface name associated with this | ||
515 | function instance | ||
516 | qmult - queue length multiplier for high and super speed | ||
517 | host_addr - MAC address of host's end of this | ||
518 | Ethernet over USB link | ||
519 | dev_addr - MAC address of device's end of this | ||
520 | Ethernet over USB link | ||
521 | |||
522 | and after creating the functions/rndis.<instance name> they contain default | ||
523 | values: qmult is 5, dev_addr and host_addr are randomly selected. | ||
524 | Except for ifname they can be written to until the function is linked to a | ||
525 | configuration. The ifname is read-only and contains the name of the interface | ||
526 | which was assigned by the net core, e. g. usb0. | ||
527 | |||
528 | By default there can be only 1 RNDIS interface in the system. | ||
529 | |||
530 | Testing the RNDIS function | ||
531 | -------------------------- | ||
532 | |||
533 | Configure IP addresses of the device and the host. Then: | ||
534 | |||
535 | On the device: ping <host's IP> | ||
536 | On the host: ping <device's IP> | ||
537 | |||
538 | 14. SERIAL function | ||
539 | =================== | ||
540 | |||
541 | The function is provided by usb_f_gser.ko module. | ||
542 | |||
543 | Function-specific configfs interface | ||
544 | ------------------------------------ | ||
545 | |||
546 | The function name to use when creating the function directory is "gser". | ||
547 | The SERIAL function provides just one attribute in its function directory: | ||
548 | |||
549 | port_num | ||
550 | |||
551 | The attribute is read-only. | ||
552 | |||
553 | There can be at most 4 ACM/generic serial/OBEX ports in the system. | ||
554 | |||
555 | Testing the SERIAL function | ||
556 | --------------------------- | ||
557 | |||
558 | On host: insmod usbserial | ||
559 | echo VID PID >/sys/bus/usb-serial/drivers/generic/new_id | ||
560 | On host: cat > /dev/ttyUSB<X> | ||
561 | On target: cat /dev/ttyGS<Y> | ||
562 | |||
563 | then the other way round | ||
564 | |||
565 | On target: cat > /dev/ttyGS<Y> | ||
566 | On host: cat /dev/ttyUSB<X> | ||
567 | |||
568 | 15. SOURCESINK function | ||
569 | ======================= | ||
570 | |||
571 | The function is provided by usb_f_ss_lb.ko module. | ||
572 | |||
573 | Function-specific configfs interface | ||
574 | ------------------------------------ | ||
575 | |||
576 | The function name to use when creating the function directory is "SourceSink". | ||
577 | The SOURCESINK function provides these attributes in its function directory: | ||
578 | |||
579 | pattern - 0 (all zeros), 1 (mod63), 2 (none) | ||
580 | isoc_interval - 1..16 | ||
581 | isoc_maxpacket - 0 - 1023 (fs), 0 - 1024 (hs/ss) | ||
582 | isoc_mult - 0..2 (hs/ss only) | ||
583 | isoc_maxburst - 0..15 (ss only) | ||
584 | bulk_buflen - buffer length | ||
585 | |||
586 | Testing the SOURCESINK function | ||
587 | ------------------------------- | ||
588 | |||
589 | device: run the gadget | ||
590 | host: test-usb | ||
591 | |||
592 | http://www.linux-usb.org/usbtest/testusb.c | ||
593 | |||
594 | 16. UAC1 function | ||
595 | ================= | ||
596 | |||
597 | The function is provided by usb_f_uac1.ko module. | ||
598 | |||
599 | Function-specific configfs interface | ||
600 | ------------------------------------ | ||
601 | |||
602 | The function name to use when creating the function directory is "uac1". | ||
603 | The uac1 function provides these attributes in its function directory: | ||
604 | |||
605 | audio_buf_size - audio buffer size | ||
606 | fn_cap - capture pcm device file name | ||
607 | fn_cntl - control device file name | ||
608 | fn_play - playback pcm device file name | ||
609 | req_buf_size - ISO OUT endpoint request buffer size | ||
610 | req_count - ISO OUT endpoint request count | ||
611 | |||
612 | The attributes have sane default values. | ||
613 | |||
614 | Testing the UAC1 function | ||
615 | ------------------------- | ||
616 | |||
617 | device: run the gadget | ||
618 | host: aplay -l # should list our USB Audio Gadget | ||
619 | |||
620 | 17. UAC2 function | ||
621 | ================= | ||
622 | |||
623 | The function is provided by usb_f_uac2.ko module. | ||
624 | |||
625 | Function-specific configfs interface | ||
626 | ------------------------------------ | ||
627 | |||
628 | The function name to use when creating the function directory is "uac2". | ||
629 | The uac2 function provides these attributes in its function directory: | ||
630 | |||
631 | chmask - capture channel mask | ||
632 | c_srate - capture sampling rate | ||
633 | c_ssize - capture sample size (bytes) | ||
634 | p_chmask - playback channel mask | ||
635 | p_srate - playback sampling rate | ||
636 | p_ssize - playback sample size (bytes) | ||
637 | |||
638 | The attributes have sane default values. | ||
639 | |||
640 | Testing the UAC2 function | ||
641 | ------------------------- | ||
642 | |||
643 | device: run the gadget | ||
644 | host: aplay -l # should list our USB Audio Gadget | ||
645 | |||
646 | This function does not require real hardware support, it just | ||
647 | sends a stream of audio data to/from the host. In order to | ||
648 | actually hear something at the device side, a command similar | ||
649 | to this must be used at the device side: | ||
650 | |||
651 | $ arecord -f dat -t wav -D hw:2,0 | aplay -D hw:0,0 & | ||
652 | |||
653 | e.g.: | ||
654 | |||
655 | $ arecord -f dat -t wav -D hw:CARD=UAC2Gadget,DEV=0 | \ | ||
656 | aplay -D default:CARD=OdroidU3 | ||
657 | |||
658 | 18. UVC function | ||
659 | ================ | ||
660 | |||
661 | The function is provided by usb_f_uvc.ko module. | ||
662 | |||
663 | Function-specific configfs interface | ||
664 | ------------------------------------ | ||
665 | |||
666 | The function name to use when creating the function directory is "uvc". | ||
667 | The uvc function provides these attributes in its function directory: | ||
668 | |||
669 | streaming_interval - interval for polling endpoint for data transfers | ||
670 | streaming_maxburst - bMaxBurst for super speed companion descriptor | ||
671 | streaming_maxpacket - maximum packet size this endpoint is capable of | ||
672 | sending or receiving when this configuration is | ||
673 | selected | ||
674 | |||
675 | There are also "control" and "streaming" subdirectories, each of which contain | ||
676 | a number of their subdirectories. There are some sane defaults provided, but | ||
677 | the user must provide the following: | ||
678 | |||
679 | control header - create in control/header, link from control/class/fs | ||
680 | and/or control/class/ss | ||
681 | streaming header - create in streaming/header, link from | ||
682 | streaming/class/fs and/or streaming/class/hs and/or | ||
683 | streaming/class/ss | ||
684 | format description - create in streaming/mjpeg and/or | ||
685 | streaming/uncompressed | ||
686 | frame description - create in streaming/mjpeg/<format> and/or in | ||
687 | streaming/uncompressed/<format> | ||
688 | |||
689 | Each frame description contains frame interval specification, and each | ||
690 | such specification consists of a number of lines with an inverval value | ||
691 | in each line. The rules stated above are best illustrated with an example: | ||
692 | |||
693 | # mkdir functions/uvc.usb0/control/header/h | ||
694 | # cd functions/uvc.usb0/control/header/h | ||
695 | # ln -s header/h class/fs | ||
696 | # ln -s header/h class/ss | ||
697 | # mkdir -p functions/uvc.usb0/streaming/uncompressed/u/360p | ||
698 | # cat <<EOF > functions/uvc.usb0/streaming/uncompressed/u/360p/dwFrameInterval | ||
699 | 666666 | ||
700 | 1000000 | ||
701 | 5000000 | ||
702 | EOF | ||
703 | # cd $GADGET_CONFIGFS_ROOT | ||
704 | # mkdir functions/uvc.usb0/streaming/header/h | ||
705 | # cd functions/uvc.usb0/streaming/header/h | ||
706 | # ln -s ../../uncompressed/u | ||
707 | # cd ../../class/fs | ||
708 | # ln -s ../../header/h | ||
709 | # cd ../../class/hs | ||
710 | # ln -s ../../header/h | ||
711 | # cd ../../class/ss | ||
712 | # ln -s ../../header/h | ||
713 | |||
714 | |||
715 | Testing the UVC function | ||
716 | ------------------------ | ||
717 | |||
718 | device: run the gadget, modprobe vivid | ||
719 | |||
720 | # uvc-gadget -u /dev/video<uvc video node #> -v /dev/video<vivid video node #> | ||
721 | |||
722 | where uvc-gadget is this program: | ||
723 | http://git.ideasonboard.org/uvc-gadget.git | ||
724 | |||
725 | with these patches: | ||
726 | http://www.spinics.net/lists/linux-usb/msg99220.html | ||
727 | |||
728 | host: luvcview -f yuv | ||
diff --git a/Documentation/usb/gadget_serial.txt b/Documentation/usb/gadget_serial.txt index 61e67f6a20a0..6b4a88a8c8e3 100644 --- a/Documentation/usb/gadget_serial.txt +++ b/Documentation/usb/gadget_serial.txt | |||
@@ -236,8 +236,12 @@ I: If#= 0 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=serial | |||
236 | E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms | 236 | E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
237 | E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms | 237 | E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
238 | 238 | ||
239 | You must explicitly load the usbserial driver with parameters to | 239 | You must load the usbserial driver and explicitly set its parameters |
240 | configure it to recognize the gadget serial device, like this: | 240 | to configure it to recognize the gadget serial device, like this: |
241 | |||
242 | echo 0x0525 0xA4A6 >/sys/bus/usb-serial/drivers/generic/new_id | ||
243 | |||
244 | The legacy way is to use module parameters: | ||
241 | 245 | ||
242 | modprobe usbserial vendor=0x0525 product=0xA4A6 | 246 | modprobe usbserial vendor=0x0525 product=0xA4A6 |
243 | 247 | ||
diff --git a/Documentation/usb/usbmon.txt b/Documentation/usb/usbmon.txt index c42bb9cd3b43..28425f736756 100644 --- a/Documentation/usb/usbmon.txt +++ b/Documentation/usb/usbmon.txt | |||
@@ -72,7 +72,7 @@ to listen on a single bus, otherwise, to listen on all buses, type: | |||
72 | 72 | ||
73 | # cat /sys/kernel/debug/usb/usbmon/0u > /tmp/1.mon.out | 73 | # cat /sys/kernel/debug/usb/usbmon/0u > /tmp/1.mon.out |
74 | 74 | ||
75 | This process will be reading until killed. Naturally, the output can be | 75 | This process will read until it is killed. Naturally, the output can be |
76 | redirected to a desirable location. This is preferred, because it is going | 76 | redirected to a desirable location. This is preferred, because it is going |
77 | to be quite long. | 77 | to be quite long. |
78 | 78 | ||
@@ -231,7 +231,7 @@ number. Number zero (/dev/usbmon0) is special and means "all buses". | |||
231 | Note that specific naming policy is set by your Linux distribution. | 231 | Note that specific naming policy is set by your Linux distribution. |
232 | 232 | ||
233 | If you create /dev/usbmon0 by hand, make sure that it is owned by root | 233 | If you create /dev/usbmon0 by hand, make sure that it is owned by root |
234 | and has mode 0600. Otherwise, unpriviledged users will be able to snoop | 234 | and has mode 0600. Otherwise, unprivileged users will be able to snoop |
235 | keyboard traffic. | 235 | keyboard traffic. |
236 | 236 | ||
237 | The following ioctl calls are available, with MON_IOC_MAGIC 0x92: | 237 | The following ioctl calls are available, with MON_IOC_MAGIC 0x92: |
diff --git a/Documentation/video4linux/CQcam.txt b/Documentation/video4linux/CQcam.txt deleted file mode 100644 index 0b69e4ee8e31..000000000000 --- a/Documentation/video4linux/CQcam.txt +++ /dev/null | |||
@@ -1,205 +0,0 @@ | |||
1 | c-qcam - Connectix Color QuickCam video4linux kernel driver | ||
2 | |||
3 | Copyright (C) 1999 Dave Forrest <drf5n@virginia.edu> | ||
4 | released under GNU GPL. | ||
5 | |||
6 | 1999-12-08 Dave Forrest, written with kernel version 2.2.12 in mind | ||
7 | |||
8 | |||
9 | Table of Contents | ||
10 | |||
11 | 1.0 Introduction | ||
12 | 2.0 Compilation, Installation, and Configuration | ||
13 | 3.0 Troubleshooting | ||
14 | 4.0 Future Work / current work arounds | ||
15 | 9.0 Sample Program, v4lgrab | ||
16 | 10.0 Other Information | ||
17 | |||
18 | |||
19 | 1.0 Introduction | ||
20 | |||
21 | The file ../../drivers/media/parport/c-qcam.c is a device driver for | ||
22 | the Logitech (nee Connectix) parallel port interface color CCD camera. | ||
23 | This is a fairly inexpensive device for capturing images. Logitech | ||
24 | does not currently provide information for developers, but many people | ||
25 | have engineered several solutions for non-Microsoft use of the Color | ||
26 | Quickcam. | ||
27 | |||
28 | 1.1 Motivation | ||
29 | |||
30 | I spent a number of hours trying to get my camera to work, and I | ||
31 | hope this document saves you some time. My camera will not work with | ||
32 | the 2.2.13 kernel as distributed, but with a few patches to the | ||
33 | module, I was able to grab some frames. See 4.0, Future Work. | ||
34 | |||
35 | |||
36 | |||
37 | 2.0 Compilation, Installation, and Configuration | ||
38 | |||
39 | The c-qcam depends on parallel port support, video4linux, and the | ||
40 | Color Quickcam. It is also nice to have the parallel port readback | ||
41 | support enabled. I enabled these as modules during the kernel | ||
42 | configuration. The appropriate flags are: | ||
43 | |||
44 | CONFIG_PRINTER M for lp.o, parport.o parport_pc.o modules | ||
45 | CONFIG_PNP_PARPORT M for autoprobe.o IEEE1284 readback module | ||
46 | CONFIG_PRINTER_READBACK M for parport_probe.o IEEE1284 readback module | ||
47 | CONFIG_VIDEO_DEV M for videodev.o video4linux module | ||
48 | CONFIG_VIDEO_CQCAM M for c-qcam.o Color Quickcam module | ||
49 | |||
50 | With these flags, the kernel should compile and install the modules. | ||
51 | To record and monitor the compilation, I use: | ||
52 | |||
53 | (make zlilo ; \ | ||
54 | make modules; \ | ||
55 | make modules_install ; | ||
56 | depmod -a ) &>log & | ||
57 | less log # then a capital 'F' to watch the progress | ||
58 | |||
59 | But that is my personal preference. | ||
60 | |||
61 | 2.2 Configuration | ||
62 | |||
63 | The configuration requires module configuration and device | ||
64 | configuration. The following sections detail these procedures. | ||
65 | |||
66 | |||
67 | 2.1 Module Configuration | ||
68 | |||
69 | Using modules requires a bit of work to install and pass the | ||
70 | parameters. Understand that entries in /etc/modprobe.d/*.conf of: | ||
71 | |||
72 | alias parport_lowlevel parport_pc | ||
73 | options parport_pc io=0x378 irq=none | ||
74 | alias char-major-81 videodev | ||
75 | alias char-major-81-0 c-qcam | ||
76 | |||
77 | 2.2 Device Configuration | ||
78 | |||
79 | At this point, we need to ensure that the device files exist. | ||
80 | Video4linux used the /dev/video* files, and we want to attach the | ||
81 | Quickcam to one of these. | ||
82 | |||
83 | ls -lad /dev/video* # should produce a list of the video devices | ||
84 | |||
85 | If the video devices do not exist, you can create them with: | ||
86 | |||
87 | su | ||
88 | cd /dev | ||
89 | for ii in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ; do | ||
90 | mknod video$ii c 81 $ii # char-major-81-[0-16] | ||
91 | chown root.root video$ii # owned by root | ||
92 | chmod 600 video$ii # read/writable by root only | ||
93 | done | ||
94 | |||
95 | Lots of people connect video0 to video and bttv, but you might want | ||
96 | your c-qcam to mean something more: | ||
97 | |||
98 | ln -s video0 c-qcam # make /dev/c-qcam a working file | ||
99 | ln -s c-qcam video # make /dev/c-qcam your default video source | ||
100 | |||
101 | But these are conveniences. The important part is to make the proper | ||
102 | special character files with the right major and minor numbers. All | ||
103 | of the special device files are listed in ../devices.txt. If you | ||
104 | would like the c-qcam readable by non-root users, you will need to | ||
105 | change the permissions. | ||
106 | |||
107 | 3.0 Troubleshooting | ||
108 | |||
109 | If the sample program below, v4lgrab, gives you output then | ||
110 | everything is working. | ||
111 | |||
112 | v4lgrab | wc # should give you a count of characters | ||
113 | |||
114 | Otherwise, you have some problem. | ||
115 | |||
116 | The c-qcam is IEEE1284 compatible, so if you are using the proc file | ||
117 | system (CONFIG_PROC_FS), the parallel printer support | ||
118 | (CONFIG_PRINTER), the IEEE 1284 system,(CONFIG_PRINTER_READBACK), you | ||
119 | should be able to read some identification from your quickcam with | ||
120 | |||
121 | modprobe -v parport | ||
122 | modprobe -v parport_probe | ||
123 | cat /proc/parport/PORTNUMBER/autoprobe | ||
124 | Returns: | ||
125 | CLASS:MEDIA; | ||
126 | MODEL:Color QuickCam 2.0; | ||
127 | MANUFACTURER:Connectix; | ||
128 | |||
129 | A good response to this indicates that your color quickcam is alive | ||
130 | and well. A common problem is that the current driver does not | ||
131 | reliably detect a c-qcam, even though one is attached. In this case, | ||
132 | |||
133 | modprobe -v c-qcam | ||
134 | or | ||
135 | insmod -v c-qcam | ||
136 | |||
137 | Returns a message saying "Device or resource busy" Development is | ||
138 | currently underway, but a workaround is to patch the module to skip | ||
139 | the detection code and attach to a defined port. Check the | ||
140 | video4linux mailing list and archive for more current information. | ||
141 | |||
142 | 3.1 Checklist: | ||
143 | |||
144 | Can you get an image? | ||
145 | v4lgrab >qcam.ppm ; wc qcam.ppm ; xv qcam.ppm | ||
146 | |||
147 | Is a working c-qcam connected to the port? | ||
148 | grep ^ /proc/parport/?/autoprobe | ||
149 | |||
150 | Do the /dev/video* files exist? | ||
151 | ls -lad /dev/video | ||
152 | |||
153 | Is the c-qcam module loaded? | ||
154 | modprobe -v c-qcam ; lsmod | ||
155 | |||
156 | Does the camera work with alternate programs? cqcam, etc? | ||
157 | |||
158 | |||
159 | |||
160 | |||
161 | 4.0 Future Work / current workarounds | ||
162 | |||
163 | It is hoped that this section will soon become obsolete, but if it | ||
164 | isn't, you might try patching the c-qcam module to add a parport=xxx | ||
165 | option as in the bw-qcam module so you can specify the parallel port: | ||
166 | |||
167 | insmod -v c-qcam parport=0 | ||
168 | |||
169 | And bypass the detection code, see ../../drivers/char/c-qcam.c and | ||
170 | look for the 'qc_detect' code and call. | ||
171 | |||
172 | Note that there is work in progress to change the video4linux API, | ||
173 | this work is documented at the video4linux2 site listed below. | ||
174 | |||
175 | |||
176 | 9.0 --- A sample program using v4lgrabber, | ||
177 | |||
178 | v4lgrab is a simple image grabber that will copy a frame from the | ||
179 | first video device, /dev/video0 to standard output in portable pixmap | ||
180 | format (.ppm) To produce .jpg output, you can use it like this: | ||
181 | 'v4lgrab | convert - c-qcam.jpg' | ||
182 | |||
183 | |||
184 | 10.0 --- Other Information | ||
185 | |||
186 | Use the ../../Maintainers file, particularly the VIDEO FOR LINUX and PARALLEL | ||
187 | PORT SUPPORT sections | ||
188 | |||
189 | The video4linux page: | ||
190 | http://linuxtv.org | ||
191 | |||
192 | The V4L2 API spec: | ||
193 | http://v4l2spec.bytesex.org/ | ||
194 | |||
195 | Some web pages about the quickcams: | ||
196 | http://www.pingouin-land.com/howto/QuickCam-HOWTO.html | ||
197 | |||
198 | http://www.crynwr.com/qcpc/ QuickCam Third-Party Drivers | ||
199 | http://www.crynwr.com/qcpc/re.html Some Reverse Engineering | ||
200 | http://www.wirelesscouch.net/software/gqcam/ v4l client | ||
201 | http://phobos.illtel.denver.co.us/pub/qcread/ doesn't use v4l | ||
202 | ftp://ftp.cs.unm.edu/pub/chris/quickcam/ Has lots of drivers | ||
203 | http://www.cs.duke.edu/~reynolds/quickcam/ Has lots of information | ||
204 | |||
205 | |||
diff --git a/Documentation/video4linux/README.tlg2300 b/Documentation/video4linux/README.tlg2300 deleted file mode 100644 index 416ccb93d8c9..000000000000 --- a/Documentation/video4linux/README.tlg2300 +++ /dev/null | |||
@@ -1,47 +0,0 @@ | |||
1 | tlg2300 release notes | ||
2 | ==================== | ||
3 | |||
4 | This is a v4l2/dvb device driver for the tlg2300 chip. | ||
5 | |||
6 | |||
7 | current status | ||
8 | ============== | ||
9 | |||
10 | video | ||
11 | - support mmap and read().(no overlay) | ||
12 | |||
13 | audio | ||
14 | - The driver will register a ALSA card for the audio input. | ||
15 | |||
16 | vbi | ||
17 | - Works for almost TV norms. | ||
18 | |||
19 | dvb-t | ||
20 | - works for DVB-T | ||
21 | |||
22 | FM | ||
23 | - Works for radio. | ||
24 | |||
25 | --------------------------------------------------------------------------- | ||
26 | TESTED APPLICATIONS: | ||
27 | |||
28 | -VLC1.0.4 test the video and dvb. The GUI is friendly to use. | ||
29 | |||
30 | -Mplayer test the video. | ||
31 | |||
32 | -Mplayer test the FM. The mplayer should be compiled with --enable-radio and | ||
33 | --enable-radio-capture. | ||
34 | The command runs as this(The alsa audio registers to card 1): | ||
35 | #mplayer radio://103.7/capture/ -radio adevice=hw=1,0:arate=48000 \ | ||
36 | -rawaudio rate=48000:channels=2 | ||
37 | |||
38 | --------------------------------------------------------------------------- | ||
39 | KNOWN PROBLEMS: | ||
40 | about preemphasis: | ||
41 | You can set the preemphasis for radio by the following command: | ||
42 | #v4l2-ctl -d /dev/radio0 --set-ctrl=pre_emphasis_settings=1 | ||
43 | |||
44 | "pre_emphasis_settings=1" means that you select the 50us. If you want | ||
45 | to select the 75us, please use "pre_emphasis_settings=2" | ||
46 | |||
47 | |||
diff --git a/Documentation/video4linux/v4l2-framework.txt b/Documentation/video4linux/v4l2-framework.txt index a11dff07ef71..f586e29ce221 100644 --- a/Documentation/video4linux/v4l2-framework.txt +++ b/Documentation/video4linux/v4l2-framework.txt | |||
@@ -793,8 +793,10 @@ video_register_device_no_warn() instead. | |||
793 | 793 | ||
794 | Whenever a device node is created some attributes are also created for you. | 794 | Whenever a device node is created some attributes are also created for you. |
795 | If you look in /sys/class/video4linux you see the devices. Go into e.g. | 795 | If you look in /sys/class/video4linux you see the devices. Go into e.g. |
796 | video0 and you will see 'name' and 'index' attributes. The 'name' attribute | 796 | video0 and you will see 'name', 'debug' and 'index' attributes. The 'name' |
797 | is the 'name' field of the video_device struct. | 797 | attribute is the 'name' field of the video_device struct. The 'debug' attribute |
798 | can be used to enable core debugging. See the next section for more detailed | ||
799 | information on this. | ||
798 | 800 | ||
799 | The 'index' attribute is the index of the device node: for each call to | 801 | The 'index' attribute is the index of the device node: for each call to |
800 | video_register_device() the index is just increased by 1. The first video | 802 | video_register_device() the index is just increased by 1. The first video |
@@ -816,6 +818,25 @@ video_device was embedded in it. The vdev->release() callback will never | |||
816 | be called if the registration failed, nor should you ever attempt to | 818 | be called if the registration failed, nor should you ever attempt to |
817 | unregister the device if the registration failed. | 819 | unregister the device if the registration failed. |
818 | 820 | ||
821 | video device debugging | ||
822 | ---------------------- | ||
823 | |||
824 | The 'debug' attribute that is created for each video, vbi, radio or swradio | ||
825 | device in /sys/class/video4linux/<devX>/ allows you to enable logging of | ||
826 | file operations. | ||
827 | |||
828 | It is a bitmask and the following bits can be set: | ||
829 | |||
830 | 0x01: Log the ioctl name and error code. VIDIOC_(D)QBUF ioctls are only logged | ||
831 | if bit 0x08 is also set. | ||
832 | 0x02: Log the ioctl name arguments and error code. VIDIOC_(D)QBUF ioctls are | ||
833 | only logged if bit 0x08 is also set. | ||
834 | 0x04: Log the file operations open, release, read, write, mmap and | ||
835 | get_unmapped_area. The read and write operations are only logged if | ||
836 | bit 0x08 is also set. | ||
837 | 0x08: Log the read and write file operations and the VIDIOC_QBUF and | ||
838 | VIDIOC_DQBUF ioctls. | ||
839 | 0x10: Log the poll file operation. | ||
819 | 840 | ||
820 | video_device cleanup | 841 | video_device cleanup |
821 | -------------------- | 842 | -------------------- |
diff --git a/Documentation/video4linux/v4l2-pci-skeleton.c b/Documentation/video4linux/v4l2-pci-skeleton.c index 006721e43b2a..7bd1b975bfd2 100644 --- a/Documentation/video4linux/v4l2-pci-skeleton.c +++ b/Documentation/video4linux/v4l2-pci-skeleton.c | |||
@@ -42,7 +42,6 @@ | |||
42 | MODULE_DESCRIPTION("V4L2 PCI Skeleton Driver"); | 42 | MODULE_DESCRIPTION("V4L2 PCI Skeleton Driver"); |
43 | MODULE_AUTHOR("Hans Verkuil"); | 43 | MODULE_AUTHOR("Hans Verkuil"); |
44 | MODULE_LICENSE("GPL v2"); | 44 | MODULE_LICENSE("GPL v2"); |
45 | MODULE_DEVICE_TABLE(pci, skeleton_pci_tbl); | ||
46 | 45 | ||
47 | /** | 46 | /** |
48 | * struct skeleton - All internal data for one instance of device | 47 | * struct skeleton - All internal data for one instance of device |
@@ -95,6 +94,7 @@ static const struct pci_device_id skeleton_pci_tbl[] = { | |||
95 | /* { PCI_DEVICE(PCI_VENDOR_ID_, PCI_DEVICE_ID_) }, */ | 94 | /* { PCI_DEVICE(PCI_VENDOR_ID_, PCI_DEVICE_ID_) }, */ |
96 | { 0, } | 95 | { 0, } |
97 | }; | 96 | }; |
97 | MODULE_DEVICE_TABLE(pci, skeleton_pci_tbl); | ||
98 | 98 | ||
99 | /* | 99 | /* |
100 | * HDTV: this structure has the capabilities of the HDTV receiver. | 100 | * HDTV: this structure has the capabilities of the HDTV receiver. |
diff --git a/Documentation/video4linux/w9966.txt b/Documentation/video4linux/w9966.txt deleted file mode 100644 index 855024525fd2..000000000000 --- a/Documentation/video4linux/w9966.txt +++ /dev/null | |||
@@ -1,33 +0,0 @@ | |||
1 | W9966 Camera driver, written by Jakob Kemi (jakob.kemi@telia.com) | ||
2 | |||
3 | After a lot of work in softice & wdasm, reading .pdf-files and tiresome | ||
4 | trial-and-error work I've finally got everything to work. I needed vision for a | ||
5 | robotics project so I borrowed this camera from a friend and started hacking. | ||
6 | Anyway I've converted my original code from the AVR 8bit RISC C/ASM code into | ||
7 | a working Linux driver. | ||
8 | |||
9 | To get it working simply configure your kernel to support | ||
10 | parport, ieee1284, video4linux and w9966 | ||
11 | |||
12 | If w9966 is statically linked it will always perform aggressive probing for | ||
13 | the camera. If built as a module you'll have more configuration options. | ||
14 | |||
15 | Options: | ||
16 | modprobe w9966.o pardev=parport0(or whatever) parmode=0 (0=auto, 1=ecp, 2=epp) | ||
17 | voila! | ||
18 | |||
19 | you can also type 'modinfo -p w9966.o' for option usage | ||
20 | (or checkout w9966.c) | ||
21 | |||
22 | The only thing to keep in mind is that the image format is in Y-U-Y-V format | ||
23 | where every two pixels take 4 bytes. In SDL (www.libsdl.org) this format | ||
24 | is called VIDEO_PALETTE_YUV422 (16 bpp). | ||
25 | |||
26 | A minimal test application (with source) is available from: | ||
27 | http://www.slackwaresupport.com/howtos/Webcam-HOWTO | ||
28 | |||
29 | The slow framerate is due to missing DMA ECP read support in the | ||
30 | parport drivers. I might add working EPP support later. | ||
31 | |||
32 | Good luck! | ||
33 | /Jakob Kemi | ||
diff --git a/Documentation/virtual/00-INDEX b/Documentation/virtual/00-INDEX index e952d30bbf0f..af0d23968ee7 100644 --- a/Documentation/virtual/00-INDEX +++ b/Documentation/virtual/00-INDEX | |||
@@ -2,6 +2,9 @@ Virtualization support in the Linux kernel. | |||
2 | 2 | ||
3 | 00-INDEX | 3 | 00-INDEX |
4 | - this file. | 4 | - this file. |
5 | |||
6 | paravirt_ops.txt | ||
7 | - Describes the Linux kernel pv_ops to support different hypervisors | ||
5 | kvm/ | 8 | kvm/ |
6 | - Kernel Virtual Machine. See also http://linux-kvm.org | 9 | - Kernel Virtual Machine. See also http://linux-kvm.org |
7 | uml/ | 10 | uml/ |
diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt index 0007fef4ed81..b112efc816f1 100644 --- a/Documentation/virtual/kvm/api.txt +++ b/Documentation/virtual/kvm/api.txt | |||
@@ -612,11 +612,14 @@ Type: vm ioctl | |||
612 | Parameters: none | 612 | Parameters: none |
613 | Returns: 0 on success, -1 on error | 613 | Returns: 0 on success, -1 on error |
614 | 614 | ||
615 | Creates an interrupt controller model in the kernel. On x86, creates a virtual | 615 | Creates an interrupt controller model in the kernel. |
616 | ioapic, a virtual PIC (two PICs, nested), and sets up future vcpus to have a | 616 | On x86, creates a virtual ioapic, a virtual PIC (two PICs, nested), and sets up |
617 | local APIC. IRQ routing for GSIs 0-15 is set to both PIC and IOAPIC; GSI 16-23 | 617 | future vcpus to have a local APIC. IRQ routing for GSIs 0-15 is set to both |
618 | only go to the IOAPIC. On ARM/arm64, a GIC is | 618 | PIC and IOAPIC; GSI 16-23 only go to the IOAPIC. |
619 | created. On s390, a dummy irq routing table is created. | 619 | On ARM/arm64, a GICv2 is created. Any other GIC versions require the usage of |
620 | KVM_CREATE_DEVICE, which also supports creating a GICv2. Using | ||
621 | KVM_CREATE_DEVICE is preferred over KVM_CREATE_IRQCHIP for GICv2. | ||
622 | On s390, a dummy irq routing table is created. | ||
620 | 623 | ||
621 | Note that on s390 the KVM_CAP_S390_IRQCHIP vm capability needs to be enabled | 624 | Note that on s390 the KVM_CAP_S390_IRQCHIP vm capability needs to be enabled |
622 | before KVM_CREATE_IRQCHIP can be used. | 625 | before KVM_CREATE_IRQCHIP can be used. |
@@ -2312,7 +2315,7 @@ struct kvm_s390_interrupt { | |||
2312 | 2315 | ||
2313 | type can be one of the following: | 2316 | type can be one of the following: |
2314 | 2317 | ||
2315 | KVM_S390_SIGP_STOP (vcpu) - sigp restart | 2318 | KVM_S390_SIGP_STOP (vcpu) - sigp stop; optional flags in parm |
2316 | KVM_S390_PROGRAM_INT (vcpu) - program check; code in parm | 2319 | KVM_S390_PROGRAM_INT (vcpu) - program check; code in parm |
2317 | KVM_S390_SIGP_SET_PREFIX (vcpu) - sigp set prefix; prefix address in parm | 2320 | KVM_S390_SIGP_SET_PREFIX (vcpu) - sigp set prefix; prefix address in parm |
2318 | KVM_S390_RESTART (vcpu) - restart | 2321 | KVM_S390_RESTART (vcpu) - restart |
@@ -3225,3 +3228,23 @@ userspace from doing that. | |||
3225 | If the hcall number specified is not one that has an in-kernel | 3228 | If the hcall number specified is not one that has an in-kernel |
3226 | implementation, the KVM_ENABLE_CAP ioctl will fail with an EINVAL | 3229 | implementation, the KVM_ENABLE_CAP ioctl will fail with an EINVAL |
3227 | error. | 3230 | error. |
3231 | |||
3232 | 7.2 KVM_CAP_S390_USER_SIGP | ||
3233 | |||
3234 | Architectures: s390 | ||
3235 | Parameters: none | ||
3236 | |||
3237 | This capability controls which SIGP orders will be handled completely in user | ||
3238 | space. With this capability enabled, all fast orders will be handled completely | ||
3239 | in the kernel: | ||
3240 | - SENSE | ||
3241 | - SENSE RUNNING | ||
3242 | - EXTERNAL CALL | ||
3243 | - EMERGENCY SIGNAL | ||
3244 | - CONDITIONAL EMERGENCY SIGNAL | ||
3245 | |||
3246 | All other orders will be handled completely in user space. | ||
3247 | |||
3248 | Only privileged operation exceptions will be checked for in the kernel (or even | ||
3249 | in the hardware prior to interception). If this capability is not enabled, the | ||
3250 | old way of handling SIGP orders is used (partially in kernel and user space). | ||
diff --git a/Documentation/virtual/kvm/devices/arm-vgic.txt b/Documentation/virtual/kvm/devices/arm-vgic.txt index df8b0c7540b6..3fb905429e8a 100644 --- a/Documentation/virtual/kvm/devices/arm-vgic.txt +++ b/Documentation/virtual/kvm/devices/arm-vgic.txt | |||
@@ -3,22 +3,42 @@ ARM Virtual Generic Interrupt Controller (VGIC) | |||
3 | 3 | ||
4 | Device types supported: | 4 | Device types supported: |
5 | KVM_DEV_TYPE_ARM_VGIC_V2 ARM Generic Interrupt Controller v2.0 | 5 | KVM_DEV_TYPE_ARM_VGIC_V2 ARM Generic Interrupt Controller v2.0 |
6 | KVM_DEV_TYPE_ARM_VGIC_V3 ARM Generic Interrupt Controller v3.0 | ||
6 | 7 | ||
7 | Only one VGIC instance may be instantiated through either this API or the | 8 | 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 | 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 | controller, requiring emulated user-space devices to inject interrupts to the |
10 | VGIC instead of directly to CPUs. | 11 | VGIC instead of directly to CPUs. |
11 | 12 | ||
13 | Creating a guest GICv3 device requires a host GICv3 as well. | ||
14 | GICv3 implementations with hardware compatibility support allow a guest GICv2 | ||
15 | as well. | ||
16 | |||
12 | Groups: | 17 | Groups: |
13 | KVM_DEV_ARM_VGIC_GRP_ADDR | 18 | KVM_DEV_ARM_VGIC_GRP_ADDR |
14 | Attributes: | 19 | Attributes: |
15 | KVM_VGIC_V2_ADDR_TYPE_DIST (rw, 64-bit) | 20 | KVM_VGIC_V2_ADDR_TYPE_DIST (rw, 64-bit) |
16 | Base address in the guest physical address space of the GIC distributor | 21 | Base address in the guest physical address space of the GIC distributor |
17 | register mappings. | 22 | register mappings. Only valid for KVM_DEV_TYPE_ARM_VGIC_V2. |
23 | This address needs to be 4K aligned and the region covers 4 KByte. | ||
18 | 24 | ||
19 | KVM_VGIC_V2_ADDR_TYPE_CPU (rw, 64-bit) | 25 | KVM_VGIC_V2_ADDR_TYPE_CPU (rw, 64-bit) |
20 | Base address in the guest physical address space of the GIC virtual cpu | 26 | Base address in the guest physical address space of the GIC virtual cpu |
21 | interface register mappings. | 27 | interface register mappings. Only valid for KVM_DEV_TYPE_ARM_VGIC_V2. |
28 | This address needs to be 4K aligned and the region covers 4 KByte. | ||
29 | |||
30 | KVM_VGIC_V3_ADDR_TYPE_DIST (rw, 64-bit) | ||
31 | Base address in the guest physical address space of the GICv3 distributor | ||
32 | register mappings. Only valid for KVM_DEV_TYPE_ARM_VGIC_V3. | ||
33 | This address needs to be 64K aligned and the region covers 64 KByte. | ||
34 | |||
35 | KVM_VGIC_V3_ADDR_TYPE_REDIST (rw, 64-bit) | ||
36 | Base address in the guest physical address space of the GICv3 | ||
37 | redistributor register mappings. There are two 64K pages for each | ||
38 | VCPU and all of the redistributor pages are contiguous. | ||
39 | Only valid for KVM_DEV_TYPE_ARM_VGIC_V3. | ||
40 | This address needs to be 64K aligned. | ||
41 | |||
22 | 42 | ||
23 | KVM_DEV_ARM_VGIC_GRP_DIST_REGS | 43 | KVM_DEV_ARM_VGIC_GRP_DIST_REGS |
24 | Attributes: | 44 | Attributes: |
@@ -36,6 +56,7 @@ Groups: | |||
36 | the register. | 56 | the register. |
37 | Limitations: | 57 | Limitations: |
38 | - Priorities are not implemented, and registers are RAZ/WI | 58 | - Priorities are not implemented, and registers are RAZ/WI |
59 | - Currently only implemented for KVM_DEV_TYPE_ARM_VGIC_V2. | ||
39 | Errors: | 60 | Errors: |
40 | -ENODEV: Getting or setting this register is not yet supported | 61 | -ENODEV: Getting or setting this register is not yet supported |
41 | -EBUSY: One or more VCPUs are running | 62 | -EBUSY: One or more VCPUs are running |
@@ -68,6 +89,7 @@ Groups: | |||
68 | 89 | ||
69 | Limitations: | 90 | Limitations: |
70 | - Priorities are not implemented, and registers are RAZ/WI | 91 | - Priorities are not implemented, and registers are RAZ/WI |
92 | - Currently only implemented for KVM_DEV_TYPE_ARM_VGIC_V2. | ||
71 | Errors: | 93 | Errors: |
72 | -ENODEV: Getting or setting this register is not yet supported | 94 | -ENODEV: Getting or setting this register is not yet supported |
73 | -EBUSY: One or more VCPUs are running | 95 | -EBUSY: One or more VCPUs are running |
@@ -81,3 +103,14 @@ Groups: | |||
81 | -EINVAL: Value set is out of the expected range | 103 | -EINVAL: Value set is out of the expected range |
82 | -EBUSY: Value has already be set, or GIC has already been initialized | 104 | -EBUSY: Value has already be set, or GIC has already been initialized |
83 | with default values. | 105 | with default values. |
106 | |||
107 | KVM_DEV_ARM_VGIC_GRP_CTRL | ||
108 | Attributes: | ||
109 | KVM_DEV_ARM_VGIC_CTRL_INIT | ||
110 | request the initialization of the VGIC, no additional parameter in | ||
111 | kvm_device_attr.addr. | ||
112 | Errors: | ||
113 | -ENXIO: VGIC not properly configured as required prior to calling | ||
114 | this attribute | ||
115 | -ENODEV: no online VCPU | ||
116 | -ENOMEM: memory shortage when allocating vgic internal data | ||
diff --git a/Documentation/virtual/kvm/devices/vm.txt b/Documentation/virtual/kvm/devices/vm.txt index d426fc87fe93..5542c4641a3c 100644 --- a/Documentation/virtual/kvm/devices/vm.txt +++ b/Documentation/virtual/kvm/devices/vm.txt | |||
@@ -24,3 +24,62 @@ Returns: 0 | |||
24 | 24 | ||
25 | Clear the CMMA status for all guest pages, so any pages the guest marked | 25 | Clear the CMMA status for all guest pages, so any pages the guest marked |
26 | as unused are again used any may not be reclaimed by the host. | 26 | as unused are again used any may not be reclaimed by the host. |
27 | |||
28 | 1.3. ATTRIBUTE KVM_S390_VM_MEM_LIMIT_SIZE | ||
29 | Parameters: in attr->addr the address for the new limit of guest memory | ||
30 | Returns: -EFAULT if the given address is not accessible | ||
31 | -EINVAL if the virtual machine is of type UCONTROL | ||
32 | -E2BIG if the given guest memory is to big for that machine | ||
33 | -EBUSY if a vcpu is already defined | ||
34 | -ENOMEM if not enough memory is available for a new shadow guest mapping | ||
35 | 0 otherwise | ||
36 | |||
37 | Allows userspace to query the actual limit and set a new limit for | ||
38 | the maximum guest memory size. The limit will be rounded up to | ||
39 | 2048 MB, 4096 GB, 8192 TB respectively, as this limit is governed by | ||
40 | the number of page table levels. | ||
41 | |||
42 | 2. GROUP: KVM_S390_VM_CPU_MODEL | ||
43 | Architectures: s390 | ||
44 | |||
45 | 2.1. ATTRIBUTE: KVM_S390_VM_CPU_MACHINE (r/o) | ||
46 | |||
47 | Allows user space to retrieve machine and kvm specific cpu related information: | ||
48 | |||
49 | struct kvm_s390_vm_cpu_machine { | ||
50 | __u64 cpuid; # CPUID of host | ||
51 | __u32 ibc; # IBC level range offered by host | ||
52 | __u8 pad[4]; | ||
53 | __u64 fac_mask[256]; # set of cpu facilities enabled by KVM | ||
54 | __u64 fac_list[256]; # set of cpu facilities offered by host | ||
55 | } | ||
56 | |||
57 | Parameters: address of buffer to store the machine related cpu data | ||
58 | of type struct kvm_s390_vm_cpu_machine* | ||
59 | Returns: -EFAULT if the given address is not accessible from kernel space | ||
60 | -ENOMEM if not enough memory is available to process the ioctl | ||
61 | 0 in case of success | ||
62 | |||
63 | 2.2. ATTRIBUTE: KVM_S390_VM_CPU_PROCESSOR (r/w) | ||
64 | |||
65 | Allows user space to retrieve or request to change cpu related information for a vcpu: | ||
66 | |||
67 | struct kvm_s390_vm_cpu_processor { | ||
68 | __u64 cpuid; # CPUID currently (to be) used by this vcpu | ||
69 | __u16 ibc; # IBC level currently (to be) used by this vcpu | ||
70 | __u8 pad[6]; | ||
71 | __u64 fac_list[256]; # set of cpu facilities currently (to be) used | ||
72 | # by this vcpu | ||
73 | } | ||
74 | |||
75 | KVM does not enforce or limit the cpu model data in any form. Take the information | ||
76 | retrieved by means of KVM_S390_VM_CPU_MACHINE as hint for reasonable configuration | ||
77 | setups. Instruction interceptions triggered by additionally set facilitiy bits that | ||
78 | are not handled by KVM need to by imlemented in the VM driver code. | ||
79 | |||
80 | Parameters: address of buffer to store/set the processor related cpu | ||
81 | data of type struct kvm_s390_vm_cpu_processor*. | ||
82 | Returns: -EBUSY in case 1 or more vcpus are already activated (only in write case) | ||
83 | -EFAULT if the given address is not accessible from kernel space | ||
84 | -ENOMEM if not enough memory is available to process the ioctl | ||
85 | 0 in case of success | ||
diff --git a/Documentation/virtual/paravirt_ops.txt b/Documentation/virtual/paravirt_ops.txt new file mode 100644 index 000000000000..d4881c00e339 --- /dev/null +++ b/Documentation/virtual/paravirt_ops.txt | |||
@@ -0,0 +1,32 @@ | |||
1 | Paravirt_ops | ||
2 | ============ | ||
3 | |||
4 | Linux provides support for different hypervisor virtualization technologies. | ||
5 | Historically different binary kernels would be required in order to support | ||
6 | different hypervisors, this restriction was removed with pv_ops. | ||
7 | Linux pv_ops is a virtualization API which enables support for different | ||
8 | hypervisors. It allows each hypervisor to override critical operations and | ||
9 | allows a single kernel binary to run on all supported execution environments | ||
10 | including native machine -- without any hypervisors. | ||
11 | |||
12 | pv_ops provides a set of function pointers which represent operations | ||
13 | corresponding to low level critical instructions and high level | ||
14 | functionalities in various areas. pv-ops allows for optimizations at run | ||
15 | time by enabling binary patching of the low-ops critical operations | ||
16 | at boot time. | ||
17 | |||
18 | pv_ops operations are classified into three categories: | ||
19 | |||
20 | - simple indirect call | ||
21 | These operations correspond to high level functionality where it is | ||
22 | known that the overhead of indirect call isn't very important. | ||
23 | |||
24 | - indirect call which allows optimization with binary patch | ||
25 | Usually these operations correspond to low level critical instructions. They | ||
26 | are called frequently and are performance critical. The overhead is | ||
27 | very important. | ||
28 | |||
29 | - a set of macros for hand written assembly code | ||
30 | Hand written assembly codes (.S files) also need paravirtualization | ||
31 | because they include sensitive instructions or some of code paths in | ||
32 | them are very performance critical. | ||
diff --git a/Documentation/vm/cleancache.txt b/Documentation/vm/cleancache.txt index 142fbb0f325a..01d76282444e 100644 --- a/Documentation/vm/cleancache.txt +++ b/Documentation/vm/cleancache.txt | |||
@@ -85,7 +85,7 @@ lock the page to ensure serial behavior. | |||
85 | CLEANCACHE PERFORMANCE METRICS | 85 | CLEANCACHE PERFORMANCE METRICS |
86 | 86 | ||
87 | If properly configured, monitoring of cleancache is done via debugfs in | 87 | If properly configured, monitoring of cleancache is done via debugfs in |
88 | the /sys/kernel/debug/mm/cleancache directory. The effectiveness of cleancache | 88 | the /sys/kernel/debug/cleancache directory. The effectiveness of cleancache |
89 | can be measured (across all filesystems) with: | 89 | can be measured (across all filesystems) with: |
90 | 90 | ||
91 | succ_gets - number of gets that were successful | 91 | succ_gets - number of gets that were successful |
diff --git a/Documentation/vm/pagemap.txt b/Documentation/vm/pagemap.txt index 5948e455c4d2..6fbd55ef6b45 100644 --- a/Documentation/vm/pagemap.txt +++ b/Documentation/vm/pagemap.txt | |||
@@ -62,6 +62,8 @@ There are three components to pagemap: | |||
62 | 20. NOPAGE | 62 | 20. NOPAGE |
63 | 21. KSM | 63 | 21. KSM |
64 | 22. THP | 64 | 22. THP |
65 | 23. BALLOON | ||
66 | 24. ZERO_PAGE | ||
65 | 67 | ||
66 | Short descriptions to the page flags: | 68 | Short descriptions to the page flags: |
67 | 69 | ||
@@ -102,6 +104,12 @@ Short descriptions to the page flags: | |||
102 | 22. THP | 104 | 22. THP |
103 | contiguous pages which construct transparent hugepages | 105 | contiguous pages which construct transparent hugepages |
104 | 106 | ||
107 | 23. BALLOON | ||
108 | balloon compaction page | ||
109 | |||
110 | 24. ZERO_PAGE | ||
111 | zero page for pfn_zero or huge_zero page | ||
112 | |||
105 | [IO related page flags] | 113 | [IO related page flags] |
106 | 1. ERROR IO error occurred | 114 | 1. ERROR IO error occurred |
107 | 3. UPTODATE page has up-to-date data | 115 | 3. UPTODATE page has up-to-date data |
diff --git a/Documentation/vm/remap_file_pages.txt b/Documentation/vm/remap_file_pages.txt index 560e4363a55d..f609142f406a 100644 --- a/Documentation/vm/remap_file_pages.txt +++ b/Documentation/vm/remap_file_pages.txt | |||
@@ -18,10 +18,9 @@ on 32-bit systems to map files bigger than can linearly fit into 32-bit | |||
18 | virtual address space. This use-case is not critical anymore since 64-bit | 18 | virtual address space. This use-case is not critical anymore since 64-bit |
19 | systems are widely available. | 19 | systems are widely available. |
20 | 20 | ||
21 | The plan is to deprecate the syscall and replace it with an emulation. | 21 | The syscall is deprecated and replaced it with an emulation now. The |
22 | The emulation will create new VMAs instead of nonlinear mappings. It's | 22 | emulation creates new VMAs instead of nonlinear mappings. It's going to |
23 | going to work slower for rare users of remap_file_pages() but ABI is | 23 | work slower for rare users of remap_file_pages() but ABI is preserved. |
24 | preserved. | ||
25 | 24 | ||
26 | One side effect of emulation (apart from performance) is that user can hit | 25 | One side effect of emulation (apart from performance) is that user can hit |
27 | vm.max_map_count limit more easily due to additional VMAs. See comment for | 26 | vm.max_map_count limit more easily due to additional VMAs. See comment for |
diff --git a/Documentation/x86/entry_64.txt b/Documentation/x86/entry_64.txt index 4a1c5c2dc5a9..9132b86176a3 100644 --- a/Documentation/x86/entry_64.txt +++ b/Documentation/x86/entry_64.txt | |||
@@ -78,9 +78,6 @@ The expensive (paranoid) way is to read back the MSR_GS_BASE value | |||
78 | xorl %ebx,%ebx | 78 | xorl %ebx,%ebx |
79 | 1: ret | 79 | 1: ret |
80 | 80 | ||
81 | and the whole paranoid non-paranoid macro complexity is about whether | ||
82 | to suffer that RDMSR cost. | ||
83 | |||
84 | If we are at an interrupt or user-trap/gate-alike boundary then we can | 81 | If we are at an interrupt or user-trap/gate-alike boundary then we can |
85 | use the faster check: the stack will be a reliable indicator of | 82 | use the faster check: the stack will be a reliable indicator of |
86 | whether SWAPGS was already done: if we see that we are a secondary | 83 | whether SWAPGS was already done: if we see that we are a secondary |
@@ -93,6 +90,15 @@ which might have triggered right after a normal entry wrote CS to the | |||
93 | stack but before we executed SWAPGS, then the only safe way to check | 90 | stack but before we executed SWAPGS, then the only safe way to check |
94 | for GS is the slower method: the RDMSR. | 91 | for GS is the slower method: the RDMSR. |
95 | 92 | ||
96 | So we try only to mark those entry methods 'paranoid' that absolutely | 93 | Therefore, super-atomic entries (except NMI, which is handled separately) |
97 | need the more expensive check for the GS base - and we generate all | 94 | must use idtentry with paranoid=1 to handle gsbase correctly. This |
98 | 'normal' entry points with the regular (faster) entry macros. | 95 | triggers three main behavior changes: |
96 | |||
97 | - Interrupt entry will use the slower gsbase check. | ||
98 | - Interrupt entry from user mode will switch off the IST stack. | ||
99 | - Interrupt exit to kernel mode will not attempt to reschedule. | ||
100 | |||
101 | We try to only use IST entries and the paranoid entry code for vectors | ||
102 | that absolutely need the more expensive check for the GS base - and we | ||
103 | generate all 'normal' entry points with the regular (faster) paranoid=0 | ||
104 | variant. | ||
diff --git a/Documentation/x86/x86_64/kernel-stacks b/Documentation/x86/x86_64/kernel-stacks index a01eec5d1d0b..e3c8a49d1a2f 100644 --- a/Documentation/x86/x86_64/kernel-stacks +++ b/Documentation/x86/x86_64/kernel-stacks | |||
@@ -40,9 +40,11 @@ An IST is selected by a non-zero value in the IST field of an | |||
40 | interrupt-gate descriptor. When an interrupt occurs and the hardware | 40 | interrupt-gate descriptor. When an interrupt occurs and the hardware |
41 | loads such a descriptor, the hardware automatically sets the new stack | 41 | loads such a descriptor, the hardware automatically sets the new stack |
42 | pointer based on the IST value, then invokes the interrupt handler. If | 42 | pointer based on the IST value, then invokes the interrupt handler. If |
43 | software wants to allow nested IST interrupts then the handler must | 43 | the interrupt came from user mode, then the interrupt handler prologue |
44 | adjust the IST values on entry to and exit from the interrupt handler. | 44 | will switch back to the per-thread stack. If software wants to allow |
45 | (This is occasionally done, e.g. for debug exceptions.) | 45 | nested IST interrupts then the handler must adjust the IST values on |
46 | entry to and exit from the interrupt handler. (This is occasionally | ||
47 | done, e.g. for debug exceptions.) | ||
46 | 48 | ||
47 | Events with different IST codes (i.e. with different stacks) can be | 49 | Events with different IST codes (i.e. with different stacks) can be |
48 | nested. For example, a debug interrupt can safely be interrupted by an | 50 | nested. For example, a debug interrupt can safely be interrupted by an |
diff --git a/Documentation/x86/x86_64/mm.txt b/Documentation/x86/x86_64/mm.txt index 052ee643a32e..05712ac83e38 100644 --- a/Documentation/x86/x86_64/mm.txt +++ b/Documentation/x86/x86_64/mm.txt | |||
@@ -12,6 +12,8 @@ ffffc90000000000 - ffffe8ffffffffff (=45 bits) vmalloc/ioremap space | |||
12 | ffffe90000000000 - ffffe9ffffffffff (=40 bits) hole | 12 | ffffe90000000000 - ffffe9ffffffffff (=40 bits) hole |
13 | ffffea0000000000 - ffffeaffffffffff (=40 bits) virtual memory map (1TB) | 13 | ffffea0000000000 - ffffeaffffffffff (=40 bits) virtual memory map (1TB) |
14 | ... unused hole ... | 14 | ... unused hole ... |
15 | ffffec0000000000 - fffffc0000000000 (=44 bits) kasan shadow memory (16TB) | ||
16 | ... unused hole ... | ||
15 | ffffff0000000000 - ffffff7fffffffff (=39 bits) %esp fixup stacks | 17 | ffffff0000000000 - ffffff7fffffffff (=39 bits) %esp fixup stacks |
16 | ... unused hole ... | 18 | ... unused hole ... |
17 | ffffffff80000000 - ffffffffa0000000 (=512 MB) kernel text mapping, from phys 0 | 19 | ffffffff80000000 - ffffffffa0000000 (=512 MB) kernel text mapping, from phys 0 |
diff --git a/Documentation/x86/zero-page.txt b/Documentation/x86/zero-page.txt index 199f453cb4de..82fbdbc1e0b0 100644 --- a/Documentation/x86/zero-page.txt +++ b/Documentation/x86/zero-page.txt | |||
@@ -3,7 +3,7 @@ protocol of kernel. These should be filled by bootloader or 16-bit | |||
3 | real-mode setup code of the kernel. References/settings to it mainly | 3 | real-mode setup code of the kernel. References/settings to it mainly |
4 | are in: | 4 | are in: |
5 | 5 | ||
6 | arch/x86/include/asm/bootparam.h | 6 | arch/x86/include/uapi/asm/bootparam.h |
7 | 7 | ||
8 | 8 | ||
9 | Offset Proto Name Meaning | 9 | Offset Proto Name Meaning |