diff options
Diffstat (limited to 'Documentation')
199 files changed, 4544 insertions, 1392 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/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-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-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-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/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/kgdb.tmpl b/Documentation/DocBook/kgdb.tmpl index f77358f96930..2428cc04dbc8 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 |
@@ -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> |
@@ -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 |
@@ -354,7 +351,7 @@ | |||
354 | </listitem> | 351 | </listitem> |
355 | </orderedlist> | 352 | </orderedlist> |
356 | <para>IMPORTANT NOTE: You cannot use kgdboc + kgdbcon on a tty that is an | 353 | <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> | 354 | active system console. An example of incorrect usage is <constant>console=ttyS0,115200 kgdboc=ttyS0 kgdbcon</constant> |
358 | </para> | 355 | </para> |
359 | <para>It is possible to use this option with kgdboc on a tty that is not a system console. | 356 | <para>It is possible to use this option with kgdboc on a tty that is not a system console. |
360 | </para> | 357 | </para> |
@@ -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/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/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/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/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/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/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/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/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..dd75b972ee37 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. |
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/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/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/renesas,rcar-dmac.txt b/Documentation/devicetree/bindings/dma/renesas,rcar-dmac.txt index df0f48bcf75a..f7e21b1c2a05 100644 --- a/Documentation/devicetree/bindings/dma/renesas,rcar-dmac.txt +++ b/Documentation/devicetree/bindings/dma/renesas,rcar-dmac.txt | |||
@@ -1,6 +1,6 @@ | |||
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. |
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/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/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/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/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/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/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/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/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/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/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/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-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/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/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/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/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/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/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/of-serial.txt b/Documentation/devicetree/bindings/serial/of-serial.txt index b52b98234b9b..bea60ef6cdc5 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" |
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/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/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/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/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/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/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/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt index d443279c95dc..7075698abd8c 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.txt +++ b/Documentation/devicetree/bindings/vendor-prefixes.txt | |||
@@ -7,6 +7,7 @@ abilis Abilis Systems | |||
7 | active-semi Active-Semi International Inc | 7 | active-semi Active-Semi International Inc |
8 | ad Avionic Design GmbH | 8 | ad Avionic Design GmbH |
9 | adapteva Adapteva, Inc. | 9 | adapteva Adapteva, Inc. |
10 | adh AD Holdings Plc. | ||
10 | adi Analog Devices, Inc. | 11 | adi Analog Devices, Inc. |
11 | aeroflexgaisler Aeroflex Gaisler AB | 12 | aeroflexgaisler Aeroflex Gaisler AB |
12 | allwinner Allwinner Technology Co., Ltd. | 13 | allwinner Allwinner Technology Co., Ltd. |
@@ -54,8 +55,10 @@ epcos EPCOS AG | |||
54 | epfl Ecole Polytechnique Fédérale de Lausanne | 55 | epfl Ecole Polytechnique Fédérale de Lausanne |
55 | epson Seiko Epson Corp. | 56 | epson Seiko Epson Corp. |
56 | est ESTeem Wireless Modems | 57 | est ESTeem Wireless Modems |
58 | ettus NI Ettus Research | ||
57 | eukrea Eukréa Electromatique | 59 | eukrea Eukréa Electromatique |
58 | everest Everest Semiconductor Co. Ltd. | 60 | everest Everest Semiconductor Co. Ltd. |
61 | everspin Everspin Technologies, Inc. | ||
59 | excito Excito | 62 | excito Excito |
60 | fcs Fairchild Semiconductor | 63 | fcs Fairchild Semiconductor |
61 | fsl Freescale Semiconductor | 64 | fsl Freescale Semiconductor |
@@ -69,6 +72,7 @@ gumstix Gumstix, Inc. | |||
69 | gw Gateworks Corporation | 72 | gw Gateworks Corporation |
70 | hannstar HannStar Display Corporation | 73 | hannstar HannStar Display Corporation |
71 | haoyu Haoyu Microelectronic Co. Ltd. | 74 | haoyu Haoyu Microelectronic Co. Ltd. |
75 | himax Himax Technologies, Inc. | ||
72 | hisilicon Hisilicon Limited. | 76 | hisilicon Hisilicon Limited. |
73 | hit Hitachi Ltd. | 77 | hit Hitachi Ltd. |
74 | honeywell Honeywell | 78 | honeywell Honeywell |
@@ -82,8 +86,7 @@ innolux Innolux Corporation | |||
82 | intel Intel Corporation | 86 | intel Intel Corporation |
83 | intercontrol Inter Control Group | 87 | intercontrol Inter Control Group |
84 | isee ISEE 2007 S.L. | 88 | isee ISEE 2007 S.L. |
85 | isil Intersil (deprecated, use isl) | 89 | isil Intersil |
86 | isl Intersil | ||
87 | karo Ka-Ro electronics GmbH | 90 | karo Ka-Ro electronics GmbH |
88 | keymile Keymile GmbH | 91 | keymile Keymile GmbH |
89 | lacie LaCie | 92 | lacie LaCie |
@@ -118,6 +121,7 @@ nvidia NVIDIA | |||
118 | nxp NXP Semiconductors | 121 | nxp NXP Semiconductors |
119 | onnn ON Semiconductor Corp. | 122 | onnn ON Semiconductor Corp. |
120 | opencores OpenCores.org | 123 | opencores OpenCores.org |
124 | ovti OmniVision Technologies | ||
121 | panasonic Panasonic Corporation | 125 | panasonic Panasonic Corporation |
122 | pericom Pericom Technology Inc. | 126 | pericom Pericom Technology Inc. |
123 | phytec PHYTEC Messtechnik GmbH | 127 | phytec PHYTEC Messtechnik GmbH |
@@ -142,8 +146,10 @@ sandisk Sandisk Corporation | |||
142 | sbs Smart Battery System | 146 | sbs Smart Battery System |
143 | schindler Schindler | 147 | schindler Schindler |
144 | seagate Seagate Technology PLC | 148 | seagate Seagate Technology PLC |
149 | semtech Semtech Corporation | ||
145 | sil Silicon Image | 150 | sil Silicon Image |
146 | silabs Silicon Laboratories | 151 | silabs Silicon Laboratories |
152 | siliconmitus Silicon Mitus, Inc. | ||
147 | simtek | 153 | simtek |
148 | sii Seiko Instruments, Inc. | 154 | sii Seiko Instruments, Inc. |
149 | silergy Silergy Corp. | 155 | silergy Silergy Corp. |
@@ -165,6 +171,7 @@ tlm Trusted Logic Mobility | |||
165 | toradex Toradex AG | 171 | toradex Toradex AG |
166 | toshiba Toshiba Corporation | 172 | toshiba Toshiba Corporation |
167 | toumaz Toumaz | 173 | toumaz Toumaz |
174 | truly Truly Semiconductors Limited | ||
168 | usi Universal Scientific Industrial Co., Ltd. | 175 | usi Universal Scientific Industrial Co., Ltd. |
169 | v3 V3 Semiconductor | 176 | v3 V3 Semiconductor |
170 | variscite Variscite Ltd. | 177 | variscite Variscite Ltd. |
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/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/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/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/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..cf8fc2f0b34b 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 |
@@ -1763,6 +1764,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' | 1764 | with TIMER_ABSTIME option which will be shown in 'settime flags', but 'it_value' |
1764 | still exhibits timer's remaining time. | 1765 | still exhibits timer's remaining time. |
1765 | 1766 | ||
1767 | 3.9 /proc/<pid>/map_files - Information about memory mapped files | ||
1768 | --------------------------------------------------------------------- | ||
1769 | This directory contains symbolic links which represent memory mapped files | ||
1770 | the process is maintaining. Example output: | ||
1771 | |||
1772 | | lr-------- 1 root root 64 Jan 27 11:24 333c600000-333c620000 -> /usr/lib64/ld-2.18.so | ||
1773 | | lr-------- 1 root root 64 Jan 27 11:24 333c81f000-333c820000 -> /usr/lib64/ld-2.18.so | ||
1774 | | lr-------- 1 root root 64 Jan 27 11:24 333c820000-333c821000 -> /usr/lib64/ld-2.18.so | ||
1775 | | ... | ||
1776 | | lr-------- 1 root root 64 Jan 27 11:24 35d0421000-35d0422000 -> /usr/lib64/libselinux.so.1 | ||
1777 | | lr-------- 1 root root 64 Jan 27 11:24 400000-41a000 -> /usr/bin/ls | ||
1778 | |||
1779 | The name of a link represents the virtual memory bounds of a mapping, i.e. | ||
1780 | vm_area_struct::vm_start-vm_area_struct::vm_end. | ||
1781 | |||
1782 | The main purpose of the map_files is to retrieve a set of memory mapped | ||
1783 | files in a fast way instead of parsing /proc/<pid>/maps or | ||
1784 | /proc/<pid>/smaps, both of which contain many more records. At the same | ||
1785 | time one can open(2) mappings from the listings of two processes and | ||
1786 | comparing their inode numbers to figure out which anonymous memory areas | ||
1787 | are actually shared. | ||
1788 | |||
1766 | ------------------------------------------------------------------------------ | 1789 | ------------------------------------------------------------------------------ |
1767 | Configuring procfs | 1790 | Configuring procfs |
1768 | ------------------------------------------------------------------------------ | 1791 | ------------------------------------------------------------------------------ |
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/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/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/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/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 176d4fe4f076..a89e32637570 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -1470,6 +1470,9 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
1470 | no_hwp | 1470 | no_hwp |
1471 | Do not enable hardware P state control (HWP) | 1471 | Do not enable hardware P state control (HWP) |
1472 | if available. | 1472 | if available. |
1473 | hwp_only | ||
1474 | Only load intel_pstate on systems which support | ||
1475 | hardware P state control (HWP) if available. | ||
1473 | 1476 | ||
1474 | intremap= [X86-64, Intel-IOMMU] | 1477 | intremap= [X86-64, Intel-IOMMU] |
1475 | on enable Interrupt Remapping (default) | 1478 | on enable Interrupt Remapping (default) |
@@ -1494,6 +1497,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
1494 | forcesac | 1497 | forcesac |
1495 | soft | 1498 | soft |
1496 | pt [x86, IA-64] | 1499 | pt [x86, IA-64] |
1500 | nobypass [PPC/POWERNV] | ||
1501 | Disable IOMMU bypass, using IOMMU for PCI devices. | ||
1497 | 1502 | ||
1498 | 1503 | ||
1499 | io7= [HW] IO7 for Marvel based alpha systems | 1504 | io7= [HW] IO7 for Marvel based alpha systems |
@@ -3207,6 +3212,18 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
3207 | 3212 | ||
3208 | retain_initrd [RAM] Keep initrd memory after extraction | 3213 | retain_initrd [RAM] Keep initrd memory after extraction |
3209 | 3214 | ||
3215 | rfkill.default_state= | ||
3216 | 0 "airplane mode". All wifi, bluetooth, wimax, gps, fm, | ||
3217 | etc. communication is blocked by default. | ||
3218 | 1 Unblocked. | ||
3219 | |||
3220 | rfkill.master_switch_mode= | ||
3221 | 0 The "airplane mode" button does nothing. | ||
3222 | 1 The "airplane mode" button toggles between everything | ||
3223 | blocked and the previous configuration. | ||
3224 | 2 The "airplane mode" button toggles between everything | ||
3225 | blocked and everything unblocked. | ||
3226 | |||
3210 | rhash_entries= [KNL,NET] | 3227 | rhash_entries= [KNL,NET] |
3211 | Set number of hash buckets for route cache | 3228 | Set number of hash buckets for route cache |
3212 | 3229 | ||
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 85b022179104..1b8c964b0d17 100644 --- a/Documentation/networking/ip-sysctl.txt +++ b/Documentation/networking/ip-sysctl.txt | |||
@@ -290,6 +290,28 @@ tcp_frto - INTEGER | |||
290 | 290 | ||
291 | 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. |
292 | 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 | |||
293 | tcp_keepalive_time - INTEGER | 315 | tcp_keepalive_time - INTEGER |
294 | How often TCP sends out keepalive messages when keepalive is enabled. | 316 | How often TCP sends out keepalive messages when keepalive is enabled. |
295 | Default: 2hours. | 317 | Default: 2hours. |
@@ -1287,6 +1309,13 @@ accept_ra_rtr_pref - BOOLEAN | |||
1287 | Functional default: enabled if accept_ra is enabled. | 1309 | Functional default: enabled if accept_ra is enabled. |
1288 | disabled if accept_ra is disabled. | 1310 | disabled if accept_ra is disabled. |
1289 | 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 | |||
1290 | accept_redirects - BOOLEAN | 1319 | accept_redirects - BOOLEAN |
1291 | Accept Redirects. | 1320 | Accept Redirects. |
1292 | 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/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/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/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/usbmon.txt b/Documentation/usb/usbmon.txt index c42bb9cd3b43..7587d84ebd16 100644 --- a/Documentation/usb/usbmon.txt +++ b/Documentation/usb/usbmon.txt | |||
@@ -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/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/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 |