diff options
Diffstat (limited to 'Documentation')
359 files changed, 9482 insertions, 2030 deletions
diff --git a/Documentation/00-INDEX b/Documentation/00-INDEX index 1750fcef1ab4..cd077ca0e1b8 100644 --- a/Documentation/00-INDEX +++ b/Documentation/00-INDEX | |||
| @@ -29,8 +29,6 @@ DMA-ISA-LPC.txt | |||
| 29 | - How to do DMA with ISA (and LPC) devices. | 29 | - How to do DMA with ISA (and LPC) devices. |
| 30 | DMA-attributes.txt | 30 | DMA-attributes.txt |
| 31 | - listing of the various possible attributes a DMA region can have | 31 | - listing of the various possible attributes a DMA region can have |
| 32 | dmatest.txt | ||
| 33 | - how to compile, configure and use the dmatest system. | ||
| 34 | DocBook/ | 32 | DocBook/ |
| 35 | - directory with DocBook templates etc. for kernel documentation. | 33 | - directory with DocBook templates etc. for kernel documentation. |
| 36 | EDID/ | 34 | EDID/ |
| @@ -163,8 +161,6 @@ digsig.txt | |||
| 163 | -info on the Digital Signature Verification API | 161 | -info on the Digital Signature Verification API |
| 164 | dma-buf-sharing.txt | 162 | dma-buf-sharing.txt |
| 165 | - the DMA Buffer Sharing API Guide | 163 | - the DMA Buffer Sharing API Guide |
| 166 | dmaengine.txt | ||
| 167 | -the DMA Engine API Guide | ||
| 168 | dontdiff | 164 | dontdiff |
| 169 | - file containing a list of files that should never be diff'ed. | 165 | - file containing a list of files that should never be diff'ed. |
| 170 | driver-model/ | 166 | driver-model/ |
| @@ -209,6 +205,8 @@ hid/ | |||
| 209 | - directory with information on human interface devices | 205 | - directory with information on human interface devices |
| 210 | highuid.txt | 206 | highuid.txt |
| 211 | - notes on the change from 16 bit to 32 bit user/group IDs. | 207 | - notes on the change from 16 bit to 32 bit user/group IDs. |
| 208 | hsi.txt | ||
| 209 | - HSI subsystem overview. | ||
| 212 | hwspinlock.txt | 210 | hwspinlock.txt |
| 213 | - hardware spinlock provides hardware assistance for synchronization | 211 | - hardware spinlock provides hardware assistance for synchronization |
| 214 | timers/ | 212 | timers/ |
| @@ -277,6 +275,8 @@ kprobes.txt | |||
| 277 | - documents the kernel probes debugging feature. | 275 | - documents the kernel probes debugging feature. |
| 278 | kref.txt | 276 | kref.txt |
| 279 | - docs on adding reference counters (krefs) to kernel objects. | 277 | - docs on adding reference counters (krefs) to kernel objects. |
| 278 | kselftest.txt | ||
| 279 | - small unittests for (some) individual codepaths in the kernel. | ||
| 280 | laptops/ | 280 | laptops/ |
| 281 | - directory with laptop related info and laptop driver documentation. | 281 | - directory with laptop related info and laptop driver documentation. |
| 282 | ldm.txt | 282 | ldm.txt |
| @@ -285,22 +285,22 @@ leds/ | |||
| 285 | - directory with info about LED handling under Linux. | 285 | - directory with info about LED handling under Linux. |
| 286 | local_ops.txt | 286 | local_ops.txt |
| 287 | - semantics and behavior of local atomic operations. | 287 | - semantics and behavior of local atomic operations. |
| 288 | lockdep-design.txt | ||
| 289 | - documentation on the runtime locking correctness validator. | ||
| 290 | locking/ | 288 | locking/ |
| 291 | - directory with info about kernel locking primitives | 289 | - directory with info about kernel locking primitives |
| 292 | lockstat.txt | ||
| 293 | - info on collecting statistics on locks (and contention). | ||
| 294 | lockup-watchdogs.txt | 290 | lockup-watchdogs.txt |
| 295 | - info on soft and hard lockup detectors (aka nmi_watchdog). | 291 | - info on soft and hard lockup detectors (aka nmi_watchdog). |
| 296 | logo.gif | 292 | logo.gif |
| 297 | - full colour GIF image of Linux logo (penguin - Tux). | 293 | - full colour GIF image of Linux logo (penguin - Tux). |
| 298 | logo.txt | 294 | logo.txt |
| 299 | - info on creator of above logo & site to get additional images from. | 295 | - info on creator of above logo & site to get additional images from. |
| 296 | lzo.txt | ||
| 297 | - kernel LZO decompressor input formats | ||
| 300 | m68k/ | 298 | m68k/ |
| 301 | - directory with info about Linux on Motorola 68k architecture. | 299 | - directory with info about Linux on Motorola 68k architecture. |
| 302 | magic-number.txt | 300 | magic-number.txt |
| 303 | - list of magic numbers used to mark/protect kernel data structures. | 301 | - list of magic numbers used to mark/protect kernel data structures. |
| 302 | mailbox.txt | ||
| 303 | - How to write drivers for the common mailbox framework (IPC). | ||
| 304 | md.txt | 304 | md.txt |
| 305 | - info on boot arguments for the multiple devices driver. | 305 | - info on boot arguments for the multiple devices driver. |
| 306 | media-framework.txt | 306 | media-framework.txt |
| @@ -327,8 +327,6 @@ mtd/ | |||
| 327 | - directory with info about memory technology devices (flash) | 327 | - directory with info about memory technology devices (flash) |
| 328 | mono.txt | 328 | mono.txt |
| 329 | - how to execute Mono-based .NET binaries with the help of BINFMT_MISC. | 329 | - how to execute Mono-based .NET binaries with the help of BINFMT_MISC. |
| 330 | mutex-design.txt | ||
| 331 | - info on the generic mutex subsystem. | ||
| 332 | namespaces/ | 330 | namespaces/ |
| 333 | - directory with various information about namespaces | 331 | - directory with various information about namespaces |
| 334 | netlabel/ | 332 | netlabel/ |
| @@ -395,10 +393,6 @@ robust-futexes.txt | |||
| 395 | - a description of what robust futexes are. | 393 | - a description of what robust futexes are. |
| 396 | rpmsg.txt | 394 | rpmsg.txt |
| 397 | - info on the Remote Processor Messaging (rpmsg) Framework | 395 | - info on the Remote Processor Messaging (rpmsg) Framework |
| 398 | rt-mutex-design.txt | ||
| 399 | - description of the RealTime mutex implementation design. | ||
| 400 | rt-mutex.txt | ||
| 401 | - desc. of RT-mutex subsystem with PI (Priority Inheritance) support. | ||
| 402 | rtc.txt | 396 | rtc.txt |
| 403 | - notes on how to use the Real Time Clock (aka CMOS clock) driver. | 397 | - notes on how to use the Real Time Clock (aka CMOS clock) driver. |
| 404 | s390/ | 398 | s390/ |
| @@ -425,8 +419,6 @@ sparse.txt | |||
| 425 | - info on how to obtain and use the sparse tool for typechecking. | 419 | - info on how to obtain and use the sparse tool for typechecking. |
| 426 | spi/ | 420 | spi/ |
| 427 | - overview of Linux kernel Serial Peripheral Interface (SPI) support. | 421 | - overview of Linux kernel Serial Peripheral Interface (SPI) support. |
| 428 | spinlocks.txt | ||
| 429 | - info on using spinlocks to provide exclusive access in kernel. | ||
| 430 | stable_api_nonsense.txt | 422 | stable_api_nonsense.txt |
| 431 | - info on why the kernel does not have a stable in-kernel api or abi. | 423 | - info on why the kernel does not have a stable in-kernel api or abi. |
| 432 | stable_kernel_rules.txt | 424 | stable_kernel_rules.txt |
| @@ -483,10 +475,10 @@ wimax/ | |||
| 483 | - directory with info about Intel Wireless Wimax Connections | 475 | - directory with info about Intel Wireless Wimax Connections |
| 484 | workqueue.txt | 476 | workqueue.txt |
| 485 | - information on the Concurrency Managed Workqueue implementation | 477 | - information on the Concurrency Managed Workqueue implementation |
| 486 | ww-mutex-design.txt | ||
| 487 | - Intro to Mutex wait/would deadlock handling.s | ||
| 488 | x86/x86_64/ | 478 | x86/x86_64/ |
| 489 | - directory with info on Linux support for AMD x86-64 (Hammer) machines. | 479 | - directory with info on Linux support for AMD x86-64 (Hammer) machines. |
| 480 | xillybus.txt | ||
| 481 | - Overview and basic ui of xillybus driver | ||
| 490 | xtensa/ | 482 | xtensa/ |
| 491 | - directory with documents relating to arch/xtensa port/implementation | 483 | - directory with documents relating to arch/xtensa port/implementation |
| 492 | xz.txt | 484 | xz.txt |
diff --git a/Documentation/ABI/stable/sysfs-class-tpm b/Documentation/ABI/stable/sysfs-class-tpm index a60b45e2493b..9f790eebb5d2 100644 --- a/Documentation/ABI/stable/sysfs-class-tpm +++ b/Documentation/ABI/stable/sysfs-class-tpm | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | What: /sys/class/misc/tpmX/device/ | 1 | What: /sys/class/tpm/tpmX/device/ |
| 2 | Date: April 2005 | 2 | Date: April 2005 |
| 3 | KernelVersion: 2.6.12 | 3 | KernelVersion: 2.6.12 |
| 4 | Contact: tpmdd-devel@lists.sf.net | 4 | Contact: tpmdd-devel@lists.sf.net |
| @@ -6,7 +6,7 @@ Description: The device/ directory under a specific TPM instance exposes | |||
| 6 | the properties of that TPM chip | 6 | the properties of that TPM chip |
| 7 | 7 | ||
| 8 | 8 | ||
| 9 | What: /sys/class/misc/tpmX/device/active | 9 | What: /sys/class/tpm/tpmX/device/active |
| 10 | Date: April 2006 | 10 | Date: April 2006 |
| 11 | KernelVersion: 2.6.17 | 11 | KernelVersion: 2.6.17 |
| 12 | Contact: tpmdd-devel@lists.sf.net | 12 | Contact: tpmdd-devel@lists.sf.net |
| @@ -18,7 +18,7 @@ Description: The "active" property prints a '1' if the TPM chip is accepting | |||
| 18 | section 17 for more information on which commands are | 18 | section 17 for more information on which commands are |
| 19 | available. | 19 | available. |
| 20 | 20 | ||
| 21 | What: /sys/class/misc/tpmX/device/cancel | 21 | What: /sys/class/tpm/tpmX/device/cancel |
| 22 | Date: June 2005 | 22 | Date: June 2005 |
| 23 | KernelVersion: 2.6.13 | 23 | KernelVersion: 2.6.13 |
| 24 | Contact: tpmdd-devel@lists.sf.net | 24 | Contact: tpmdd-devel@lists.sf.net |
| @@ -26,7 +26,7 @@ Description: The "cancel" property allows you to cancel the currently | |||
| 26 | pending TPM command. Writing any value to cancel will call the | 26 | pending TPM command. Writing any value to cancel will call the |
| 27 | TPM vendor specific cancel operation. | 27 | TPM vendor specific cancel operation. |
| 28 | 28 | ||
| 29 | What: /sys/class/misc/tpmX/device/caps | 29 | What: /sys/class/tpm/tpmX/device/caps |
| 30 | Date: April 2005 | 30 | Date: April 2005 |
| 31 | KernelVersion: 2.6.12 | 31 | KernelVersion: 2.6.12 |
| 32 | Contact: tpmdd-devel@lists.sf.net | 32 | Contact: tpmdd-devel@lists.sf.net |
| @@ -43,7 +43,7 @@ Description: The "caps" property contains TPM manufacturer and version info. | |||
| 43 | the chip supports. Firmware version is that of the chip and | 43 | the chip supports. Firmware version is that of the chip and |
| 44 | is manufacturer specific. | 44 | is manufacturer specific. |
| 45 | 45 | ||
| 46 | What: /sys/class/misc/tpmX/device/durations | 46 | What: /sys/class/tpm/tpmX/device/durations |
| 47 | Date: March 2011 | 47 | Date: March 2011 |
| 48 | KernelVersion: 3.1 | 48 | KernelVersion: 3.1 |
| 49 | Contact: tpmdd-devel@lists.sf.net | 49 | Contact: tpmdd-devel@lists.sf.net |
| @@ -66,7 +66,7 @@ Description: The "durations" property shows the 3 vendor-specific values | |||
| 66 | scaled to be displayed in usecs. In this case "[adjusted]" | 66 | scaled to be displayed in usecs. In this case "[adjusted]" |
| 67 | will be displayed in place of "[original]". | 67 | will be displayed in place of "[original]". |
| 68 | 68 | ||
| 69 | What: /sys/class/misc/tpmX/device/enabled | 69 | What: /sys/class/tpm/tpmX/device/enabled |
| 70 | Date: April 2006 | 70 | Date: April 2006 |
| 71 | KernelVersion: 2.6.17 | 71 | KernelVersion: 2.6.17 |
| 72 | Contact: tpmdd-devel@lists.sf.net | 72 | Contact: tpmdd-devel@lists.sf.net |
| @@ -75,7 +75,7 @@ Description: The "enabled" property prints a '1' if the TPM chip is enabled, | |||
| 75 | may be visible but produce a '0' after some operation that | 75 | may be visible but produce a '0' after some operation that |
| 76 | disables the TPM. | 76 | disables the TPM. |
| 77 | 77 | ||
| 78 | What: /sys/class/misc/tpmX/device/owned | 78 | What: /sys/class/tpm/tpmX/device/owned |
| 79 | Date: April 2006 | 79 | Date: April 2006 |
| 80 | KernelVersion: 2.6.17 | 80 | KernelVersion: 2.6.17 |
| 81 | Contact: tpmdd-devel@lists.sf.net | 81 | Contact: tpmdd-devel@lists.sf.net |
| @@ -83,7 +83,7 @@ Description: The "owned" property produces a '1' if the TPM_TakeOwnership | |||
| 83 | ordinal has been executed successfully in the chip. A '0' | 83 | ordinal has been executed successfully in the chip. A '0' |
| 84 | indicates that ownership hasn't been taken. | 84 | indicates that ownership hasn't been taken. |
| 85 | 85 | ||
| 86 | What: /sys/class/misc/tpmX/device/pcrs | 86 | What: /sys/class/tpm/tpmX/device/pcrs |
| 87 | Date: April 2005 | 87 | Date: April 2005 |
| 88 | KernelVersion: 2.6.12 | 88 | KernelVersion: 2.6.12 |
| 89 | Contact: tpmdd-devel@lists.sf.net | 89 | Contact: tpmdd-devel@lists.sf.net |
| @@ -106,7 +106,7 @@ Description: The "pcrs" property will dump the current value of all Platform | |||
| 106 | 1.2 chips, PCRs represent SHA-1 hashes, which are 20 bytes | 106 | 1.2 chips, PCRs represent SHA-1 hashes, which are 20 bytes |
| 107 | long. Use the "caps" property to determine TPM version. | 107 | long. Use the "caps" property to determine TPM version. |
| 108 | 108 | ||
| 109 | What: /sys/class/misc/tpmX/device/pubek | 109 | What: /sys/class/tpm/tpmX/device/pubek |
| 110 | Date: April 2005 | 110 | Date: April 2005 |
| 111 | KernelVersion: 2.6.12 | 111 | KernelVersion: 2.6.12 |
| 112 | Contact: tpmdd-devel@lists.sf.net | 112 | Contact: tpmdd-devel@lists.sf.net |
| @@ -158,7 +158,7 @@ Description: The "pubek" property will return the TPM's public endorsement | |||
| 158 | Modulus Length: 256 (bytes) | 158 | Modulus Length: 256 (bytes) |
| 159 | Modulus: The 256 byte Endorsement Key modulus | 159 | Modulus: The 256 byte Endorsement Key modulus |
| 160 | 160 | ||
| 161 | What: /sys/class/misc/tpmX/device/temp_deactivated | 161 | What: /sys/class/tpm/tpmX/device/temp_deactivated |
| 162 | Date: April 2006 | 162 | Date: April 2006 |
| 163 | KernelVersion: 2.6.17 | 163 | KernelVersion: 2.6.17 |
| 164 | Contact: tpmdd-devel@lists.sf.net | 164 | Contact: tpmdd-devel@lists.sf.net |
| @@ -167,7 +167,7 @@ Description: The "temp_deactivated" property returns a '1' if the chip has | |||
| 167 | cycle. Whether a warm boot (reboot) will clear a TPM chip | 167 | cycle. Whether a warm boot (reboot) will clear a TPM chip |
| 168 | from a temp_deactivated state is platform specific. | 168 | from a temp_deactivated state is platform specific. |
| 169 | 169 | ||
| 170 | What: /sys/class/misc/tpmX/device/timeouts | 170 | What: /sys/class/tpm/tpmX/device/timeouts |
| 171 | Date: March 2011 | 171 | Date: March 2011 |
| 172 | KernelVersion: 3.1 | 172 | KernelVersion: 3.1 |
| 173 | Contact: tpmdd-devel@lists.sf.net | 173 | Contact: tpmdd-devel@lists.sf.net |
diff --git a/Documentation/ABI/testing/configfs-usb-gadget-uvc b/Documentation/ABI/testing/configfs-usb-gadget-uvc new file mode 100644 index 000000000000..2f4a0051b32d --- /dev/null +++ b/Documentation/ABI/testing/configfs-usb-gadget-uvc | |||
| @@ -0,0 +1,265 @@ | |||
| 1 | What: /config/usb-gadget/gadget/functions/uvc.name | ||
| 2 | Date: Dec 2014 | ||
| 3 | KernelVersion: 3.20 | ||
| 4 | Description: UVC function directory | ||
| 5 | |||
| 6 | streaming_maxburst - 0..15 (ss only) | ||
| 7 | streaming_maxpacket - 1..1023 (fs), 1..3072 (hs/ss) | ||
| 8 | streaming_interval - 1..16 | ||
| 9 | |||
| 10 | What: /config/usb-gadget/gadget/functions/uvc.name/control | ||
| 11 | Date: Dec 2014 | ||
| 12 | KernelVersion: 3.20 | ||
| 13 | Description: Control descriptors | ||
| 14 | |||
| 15 | What: /config/usb-gadget/gadget/functions/uvc.name/control/class | ||
| 16 | Date: Dec 2014 | ||
| 17 | KernelVersion: 3.20 | ||
| 18 | Description: Class descriptors | ||
| 19 | |||
| 20 | What: /config/usb-gadget/gadget/functions/uvc.name/control/class/ss | ||
| 21 | Date: Dec 2014 | ||
| 22 | KernelVersion: 3.20 | ||
| 23 | Description: Super speed control class descriptors | ||
| 24 | |||
| 25 | What: /config/usb-gadget/gadget/functions/uvc.name/control/class/fs | ||
| 26 | Date: Dec 2014 | ||
| 27 | KernelVersion: 3.20 | ||
| 28 | Description: Full speed control class descriptors | ||
| 29 | |||
| 30 | What: /config/usb-gadget/gadget/functions/uvc.name/control/terminal | ||
| 31 | Date: Dec 2014 | ||
| 32 | KernelVersion: 3.20 | ||
| 33 | Description: Terminal descriptors | ||
| 34 | |||
| 35 | What: /config/usb-gadget/gadget/functions/uvc.name/control/terminal/output | ||
| 36 | Date: Dec 2014 | ||
| 37 | KernelVersion: 3.20 | ||
| 38 | Description: Output terminal descriptors | ||
| 39 | |||
| 40 | What: /config/usb-gadget/gadget/functions/uvc.name/control/terminal/output/default | ||
| 41 | Date: Dec 2014 | ||
| 42 | KernelVersion: 3.20 | ||
| 43 | Description: Default output terminal descriptors | ||
| 44 | |||
| 45 | All attributes read only: | ||
| 46 | iTerminal - index of string descriptor | ||
| 47 | bSourceID - id of the terminal to which this terminal | ||
| 48 | is connected | ||
| 49 | bAssocTerminal - id of the input terminal to which this output | ||
| 50 | terminal is associated | ||
| 51 | wTerminalType - terminal type | ||
| 52 | bTerminalID - a non-zero id of this terminal | ||
| 53 | |||
| 54 | What: /config/usb-gadget/gadget/functions/uvc.name/control/terminal/camera | ||
| 55 | Date: Dec 2014 | ||
| 56 | KernelVersion: 3.20 | ||
| 57 | Description: Camera terminal descriptors | ||
| 58 | |||
| 59 | What: /config/usb-gadget/gadget/functions/uvc.name/control/terminal/camera/default | ||
| 60 | Date: Dec 2014 | ||
| 61 | KernelVersion: 3.20 | ||
| 62 | Description: Default camera terminal descriptors | ||
| 63 | |||
| 64 | All attributes read only: | ||
| 65 | bmControls - bitmap specifying which controls are | ||
| 66 | supported for the video stream | ||
| 67 | wOcularFocalLength - the value of Locular | ||
| 68 | wObjectiveFocalLengthMax- the value of Lmin | ||
| 69 | wObjectiveFocalLengthMin- the value of Lmax | ||
| 70 | iTerminal - index of string descriptor | ||
| 71 | bAssocTerminal - id of the output terminal to which | ||
| 72 | this terminal is connected | ||
| 73 | wTerminalType - terminal type | ||
| 74 | bTerminalID - a non-zero id of this terminal | ||
| 75 | |||
| 76 | What: /config/usb-gadget/gadget/functions/uvc.name/control/processing | ||
| 77 | Date: Dec 2014 | ||
| 78 | KernelVersion: 3.20 | ||
| 79 | Description: Processing unit descriptors | ||
| 80 | |||
| 81 | What: /config/usb-gadget/gadget/functions/uvc.name/control/processing/default | ||
| 82 | Date: Dec 2014 | ||
| 83 | KernelVersion: 3.20 | ||
| 84 | Description: Default processing unit descriptors | ||
| 85 | |||
| 86 | All attributes read only: | ||
| 87 | iProcessing - index of string descriptor | ||
| 88 | bmControls - bitmap specifying which controls are | ||
| 89 | supported for the video stream | ||
| 90 | wMaxMultiplier - maximum digital magnification x100 | ||
| 91 | bSourceID - id of the terminal to which this unit is | ||
| 92 | connected | ||
| 93 | bUnitID - a non-zero id of this unit | ||
| 94 | |||
| 95 | What: /config/usb-gadget/gadget/functions/uvc.name/control/header | ||
| 96 | Date: Dec 2014 | ||
| 97 | KernelVersion: 3.20 | ||
| 98 | Description: Control header descriptors | ||
| 99 | |||
| 100 | What: /config/usb-gadget/gadget/functions/uvc.name/control/header/name | ||
| 101 | Date: Dec 2014 | ||
| 102 | KernelVersion: 3.20 | ||
| 103 | Description: Specific control header descriptors | ||
| 104 | |||
| 105 | dwClockFrequency | ||
| 106 | bcdUVC | ||
| 107 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming | ||
| 108 | Date: Dec 2014 | ||
| 109 | KernelVersion: 3.20 | ||
| 110 | Description: Streaming descriptors | ||
| 111 | |||
| 112 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming/class | ||
| 113 | Date: Dec 2014 | ||
| 114 | KernelVersion: 3.20 | ||
| 115 | Description: Streaming class descriptors | ||
| 116 | |||
| 117 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming/class/ss | ||
| 118 | Date: Dec 2014 | ||
| 119 | KernelVersion: 3.20 | ||
| 120 | Description: Super speed streaming class descriptors | ||
| 121 | |||
| 122 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming/class/hs | ||
| 123 | Date: Dec 2014 | ||
| 124 | KernelVersion: 3.20 | ||
| 125 | Description: High speed streaming class descriptors | ||
| 126 | |||
| 127 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming/class/fs | ||
| 128 | Date: Dec 2014 | ||
| 129 | KernelVersion: 3.20 | ||
| 130 | Description: Full speed streaming class descriptors | ||
| 131 | |||
| 132 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming/color_matching | ||
| 133 | Date: Dec 2014 | ||
| 134 | KernelVersion: 3.20 | ||
| 135 | Description: Color matching descriptors | ||
| 136 | |||
| 137 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming/color_matching/default | ||
| 138 | Date: Dec 2014 | ||
| 139 | KernelVersion: 3.20 | ||
| 140 | Description: Default color matching descriptors | ||
| 141 | |||
| 142 | All attributes read only: | ||
| 143 | bMatrixCoefficients - matrix used to compute luma and | ||
| 144 | chroma values from the color primaries | ||
| 145 | bTransferCharacteristics- optoelectronic transfer | ||
| 146 | characteristic of the source picutre, | ||
| 147 | also called the gamma function | ||
| 148 | bColorPrimaries - color primaries and the reference | ||
| 149 | white | ||
| 150 | |||
| 151 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming/mjpeg | ||
| 152 | Date: Dec 2014 | ||
| 153 | KernelVersion: 3.20 | ||
| 154 | Description: MJPEG format descriptors | ||
| 155 | |||
| 156 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming/mjpeg/name | ||
| 157 | Date: Dec 2014 | ||
| 158 | KernelVersion: 3.20 | ||
| 159 | Description: Specific MJPEG format descriptors | ||
| 160 | |||
| 161 | All attributes read only, | ||
| 162 | except bmaControls and bDefaultFrameIndex: | ||
| 163 | bmaControls - this format's data for bmaControls in | ||
| 164 | the streaming header | ||
| 165 | bmInterfaceFlags - specifies interlace information, | ||
| 166 | read-only | ||
| 167 | bAspectRatioY - the X dimension of the picture aspect | ||
| 168 | ratio, read-only | ||
| 169 | bAspectRatioX - the Y dimension of the picture aspect | ||
| 170 | ratio, read-only | ||
| 171 | bmFlags - characteristics of this format, | ||
| 172 | read-only | ||
| 173 | bDefaultFrameIndex - optimum frame index for this stream | ||
| 174 | |||
| 175 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming/mjpeg/name/name | ||
| 176 | Date: Dec 2014 | ||
| 177 | KernelVersion: 3.20 | ||
| 178 | Description: Specific MJPEG frame descriptors | ||
| 179 | |||
| 180 | dwFrameInterval - indicates how frame interval can be | ||
| 181 | programmed; a number of values | ||
| 182 | separated by newline can be specified | ||
| 183 | dwDefaultFrameInterval - the frame interval the device would | ||
| 184 | like to use as default | ||
| 185 | dwMaxVideoFrameBufferSize- the maximum number of bytes the | ||
| 186 | compressor will produce for a video | ||
| 187 | frame or still image | ||
| 188 | dwMaxBitRate - the maximum bit rate at the shortest | ||
| 189 | frame interval in bps | ||
| 190 | dwMinBitRate - the minimum bit rate at the longest | ||
| 191 | frame interval in bps | ||
| 192 | wHeight - height of decoded bitmap frame in px | ||
| 193 | wWidth - width of decoded bitmam frame in px | ||
| 194 | bmCapabilities - still image support, fixed frame-rate | ||
| 195 | support | ||
| 196 | |||
| 197 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming/uncompressed | ||
| 198 | Date: Dec 2014 | ||
| 199 | KernelVersion: 3.20 | ||
| 200 | Description: Uncompressed format descriptors | ||
| 201 | |||
| 202 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming/uncompressed/name | ||
| 203 | Date: Dec 2014 | ||
| 204 | KernelVersion: 3.20 | ||
| 205 | Description: Specific uncompressed format descriptors | ||
| 206 | |||
| 207 | bmaControls - this format's data for bmaControls in | ||
| 208 | the streaming header | ||
| 209 | bmInterfaceFlags - specifies interlace information, | ||
| 210 | read-only | ||
| 211 | bAspectRatioY - the X dimension of the picture aspect | ||
| 212 | ratio, read-only | ||
| 213 | bAspectRatioX - the Y dimension of the picture aspect | ||
| 214 | ratio, read-only | ||
| 215 | bDefaultFrameIndex - optimum frame index for this stream | ||
| 216 | bBitsPerPixel - number of bits per pixel used to | ||
| 217 | specify color in the decoded video | ||
| 218 | frame | ||
| 219 | guidFormat - globally unique id used to identify | ||
| 220 | stream-encoding format | ||
| 221 | |||
| 222 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming/uncompressed/name/name | ||
| 223 | Date: Dec 2014 | ||
| 224 | KernelVersion: 3.20 | ||
| 225 | Description: Specific uncompressed frame descriptors | ||
| 226 | |||
| 227 | dwFrameInterval - indicates how frame interval can be | ||
| 228 | programmed; a number of values | ||
| 229 | separated by newline can be specified | ||
| 230 | dwDefaultFrameInterval - the frame interval the device would | ||
| 231 | like to use as default | ||
| 232 | dwMaxVideoFrameBufferSize- the maximum number of bytes the | ||
| 233 | compressor will produce for a video | ||
| 234 | frame or still image | ||
| 235 | dwMaxBitRate - the maximum bit rate at the shortest | ||
| 236 | frame interval in bps | ||
| 237 | dwMinBitRate - the minimum bit rate at the longest | ||
| 238 | frame interval in bps | ||
| 239 | wHeight - height of decoded bitmap frame in px | ||
| 240 | wWidth - width of decoded bitmam frame in px | ||
| 241 | bmCapabilities - still image support, fixed frame-rate | ||
| 242 | support | ||
| 243 | |||
| 244 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming/header | ||
| 245 | Date: Dec 2014 | ||
| 246 | KernelVersion: 3.20 | ||
| 247 | Description: Streaming header descriptors | ||
| 248 | |||
| 249 | What: /config/usb-gadget/gadget/functions/uvc.name/streaming/header/name | ||
| 250 | Date: Dec 2014 | ||
| 251 | KernelVersion: 3.20 | ||
| 252 | Description: Specific streaming header descriptors | ||
| 253 | |||
| 254 | All attributes read only: | ||
| 255 | bTriggerUsage - how the host software will respond to | ||
| 256 | a hardware trigger interrupt event | ||
| 257 | bTriggerSupport - flag specifying if hardware | ||
| 258 | triggering is supported | ||
| 259 | bStillCaptureMethod - method of still image caputre | ||
| 260 | supported | ||
| 261 | bTerminalLink - id of the output terminal to which | ||
| 262 | the video endpoint of this interface | ||
| 263 | is connected | ||
| 264 | bmInfo - capabilities of this video streaming | ||
| 265 | interface | ||
diff --git a/Documentation/ABI/testing/sysfs-bus-amba b/Documentation/ABI/testing/sysfs-bus-amba new file mode 100644 index 000000000000..e7b54677cfbe --- /dev/null +++ b/Documentation/ABI/testing/sysfs-bus-amba | |||
| @@ -0,0 +1,20 @@ | |||
| 1 | What: /sys/bus/amba/devices/.../driver_override | ||
| 2 | Date: September 2014 | ||
| 3 | Contact: Antonios Motakis <a.motakis@virtualopensystems.com> | ||
| 4 | Description: | ||
| 5 | This file allows the driver for a device to be specified which | ||
| 6 | will override standard OF, ACPI, ID table, and name matching. | ||
| 7 | When specified, only a driver with a name matching the value | ||
| 8 | written to driver_override will have an opportunity to bind to | ||
| 9 | the device. The override is specified by writing a string to the | ||
| 10 | driver_override file (echo vfio-amba > driver_override) and may | ||
| 11 | be cleared with an empty string (echo > driver_override). | ||
| 12 | This returns the device to standard matching rules binding. | ||
| 13 | Writing to driver_override does not automatically unbind the | ||
| 14 | device from its current driver or make any attempt to | ||
| 15 | automatically load the specified driver. If no driver with a | ||
| 16 | matching name is currently loaded in the kernel, the device will | ||
| 17 | not bind to any driver. This also allows devices to opt-out of | ||
| 18 | driver binding using a driver_override name such as "none". | ||
| 19 | Only a single driver may be specified in the override, there is | ||
| 20 | no support for parsing delimiters. | ||
diff --git a/Documentation/ABI/testing/sysfs-bus-event_source-devices-events b/Documentation/ABI/testing/sysfs-bus-event_source-devices-events index 20979f8b3edb..505f080d20a1 100644 --- a/Documentation/ABI/testing/sysfs-bus-event_source-devices-events +++ b/Documentation/ABI/testing/sysfs-bus-event_source-devices-events | |||
| @@ -52,12 +52,18 @@ Description: Per-pmu performance monitoring events specific to the running syste | |||
| 52 | event=0x2abc | 52 | event=0x2abc |
| 53 | event=0x423,inv,cmask=0x3 | 53 | event=0x423,inv,cmask=0x3 |
| 54 | domain=0x1,offset=0x8,starting_index=0xffff | 54 | domain=0x1,offset=0x8,starting_index=0xffff |
| 55 | domain=0x1,offset=0x8,core=? | ||
| 55 | 56 | ||
| 56 | Each of the assignments indicates a value to be assigned to a | 57 | Each of the assignments indicates a value to be assigned to a |
| 57 | particular set of bits (as defined by the format file | 58 | particular set of bits (as defined by the format file |
| 58 | corresponding to the <term>) in the perf_event structure passed | 59 | corresponding to the <term>) in the perf_event structure passed |
| 59 | to the perf_open syscall. | 60 | to the perf_open syscall. |
| 60 | 61 | ||
| 62 | In the case of the last example, a value replacing "?" would | ||
| 63 | need to be provided by the user selecting the particular event. | ||
| 64 | This is referred to as "event parameterization". Event | ||
| 65 | parameters have the format 'param=?'. | ||
| 66 | |||
| 61 | What: /sys/bus/event_source/devices/<pmu>/events/<event>.unit | 67 | What: /sys/bus/event_source/devices/<pmu>/events/<event>.unit |
| 62 | Date: 2014/02/24 | 68 | Date: 2014/02/24 |
| 63 | Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> | 69 | Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> |
diff --git a/Documentation/ABI/testing/sysfs-bus-event_source-devices-hv_24x7 b/Documentation/ABI/testing/sysfs-bus-event_source-devices-hv_24x7 index 32f3f5f8bba2..f893337570c1 100644 --- a/Documentation/ABI/testing/sysfs-bus-event_source-devices-hv_24x7 +++ b/Documentation/ABI/testing/sysfs-bus-event_source-devices-hv_24x7 | |||
| @@ -21,3 +21,25 @@ Contact: Linux on PowerPC Developer List <linuxppc-dev@lists.ozlabs.org> | |||
| 21 | Description: | 21 | Description: |
| 22 | Exposes the "version" field of the 24x7 catalog. This is also | 22 | Exposes the "version" field of the 24x7 catalog. This is also |
| 23 | extractable from the provided binary "catalog" sysfs entry. | 23 | extractable from the provided binary "catalog" sysfs entry. |
| 24 | |||
| 25 | What: /sys/bus/event_source/devices/hv_24x7/event_descs/<event-name> | ||
| 26 | Date: February 2014 | ||
| 27 | Contact: Linux on PowerPC Developer List <linuxppc-dev@lists.ozlabs.org> | ||
| 28 | Description: | ||
| 29 | Provides the description of a particular event as provided by | ||
| 30 | the firmware. If firmware does not provide a description, no | ||
| 31 | file will be created. | ||
| 32 | |||
| 33 | Note that the event-name lacks the domain suffix appended for | ||
| 34 | events in the events/ dir. | ||
| 35 | |||
| 36 | What: /sys/bus/event_source/devices/hv_24x7/event_long_descs/<event-name> | ||
| 37 | Date: February 2014 | ||
| 38 | Contact: Linux on PowerPC Developer List <linuxppc-dev@lists.ozlabs.org> | ||
| 39 | Description: | ||
| 40 | Provides the "long" description of a particular event as | ||
| 41 | provided by the firmware. If firmware does not provide a | ||
| 42 | description, no file will be created. | ||
| 43 | |||
| 44 | Note that the event-name lacks the domain suffix appended for | ||
| 45 | events in the events/ dir. | ||
diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio index 117521dbf2b3..9a70c31619ea 100644 --- a/Documentation/ABI/testing/sysfs-bus-iio +++ b/Documentation/ABI/testing/sysfs-bus-iio | |||
| @@ -92,6 +92,18 @@ Description: | |||
| 92 | is required is a consistent labeling. Units after application | 92 | is required is a consistent labeling. Units after application |
| 93 | of scale and offset are millivolts. | 93 | of scale and offset are millivolts. |
| 94 | 94 | ||
| 95 | What: /sys/bus/iio/devices/iio:deviceX/in_currentY_raw | ||
| 96 | What: /sys/bus/iio/devices/iio:deviceX/in_currentY_supply_raw | ||
| 97 | KernelVersion: 3.17 | ||
| 98 | Contact: linux-iio@vger.kernel.org | ||
| 99 | Description: | ||
| 100 | Raw (unscaled no bias removal etc.) current measurement from | ||
| 101 | channel Y. In special cases where the channel does not | ||
| 102 | correspond to externally available input one of the named | ||
| 103 | versions may be used. The number must always be specified and | ||
| 104 | unique to allow association with event codes. Units after | ||
| 105 | application of scale and offset are milliamps. | ||
| 106 | |||
| 95 | What: /sys/bus/iio/devices/iio:deviceX/in_capacitanceY_raw | 107 | What: /sys/bus/iio/devices/iio:deviceX/in_capacitanceY_raw |
| 96 | KernelVersion: 3.2 | 108 | KernelVersion: 3.2 |
| 97 | Contact: linux-iio@vger.kernel.org | 109 | Contact: linux-iio@vger.kernel.org |
| @@ -234,6 +246,8 @@ What: /sys/bus/iio/devices/iio:deviceX/in_accel_y_offset | |||
| 234 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_z_offset | 246 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_z_offset |
| 235 | What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_offset | 247 | What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_offset |
| 236 | What: /sys/bus/iio/devices/iio:deviceX/in_voltage_offset | 248 | What: /sys/bus/iio/devices/iio:deviceX/in_voltage_offset |
| 249 | What: /sys/bus/iio/devices/iio:deviceX/in_currentY_offset | ||
| 250 | What: /sys/bus/iio/devices/iio:deviceX/in_current_offset | ||
| 237 | What: /sys/bus/iio/devices/iio:deviceX/in_tempY_offset | 251 | What: /sys/bus/iio/devices/iio:deviceX/in_tempY_offset |
| 238 | What: /sys/bus/iio/devices/iio:deviceX/in_temp_offset | 252 | What: /sys/bus/iio/devices/iio:deviceX/in_temp_offset |
| 239 | What: /sys/bus/iio/devices/iio:deviceX/in_pressureY_offset | 253 | What: /sys/bus/iio/devices/iio:deviceX/in_pressureY_offset |
| @@ -262,9 +276,14 @@ What: /sys/bus/iio/devices/iio:deviceX/in_voltage_scale | |||
| 262 | What: /sys/bus/iio/devices/iio:deviceX/in_voltage-voltage_scale | 276 | What: /sys/bus/iio/devices/iio:deviceX/in_voltage-voltage_scale |
| 263 | What: /sys/bus/iio/devices/iio:deviceX/out_voltageY_scale | 277 | What: /sys/bus/iio/devices/iio:deviceX/out_voltageY_scale |
| 264 | What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_scale | 278 | What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_scale |
| 279 | What: /sys/bus/iio/devices/iio:deviceX/in_currentY_scale | ||
| 280 | What: /sys/bus/iio/devices/iio:deviceX/in_currentY_supply_scale | ||
| 281 | What: /sys/bus/iio/devices/iio:deviceX/in_current_scale | ||
| 265 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_scale | 282 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_scale |
| 266 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_peak_scale | 283 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_peak_scale |
| 267 | What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_scale | 284 | What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_scale |
| 285 | What: /sys/bus/iio/devices/iio:deviceX/in_energy_scale | ||
| 286 | What: /sys/bus/iio/devices/iio:deviceX/in_distance_scale | ||
| 268 | What: /sys/bus/iio/devices/iio:deviceX/in_magn_scale | 287 | What: /sys/bus/iio/devices/iio:deviceX/in_magn_scale |
| 269 | What: /sys/bus/iio/devices/iio:deviceX/in_magn_x_scale | 288 | What: /sys/bus/iio/devices/iio:deviceX/in_magn_x_scale |
| 270 | What: /sys/bus/iio/devices/iio:deviceX/in_magn_y_scale | 289 | What: /sys/bus/iio/devices/iio:deviceX/in_magn_y_scale |
| @@ -276,6 +295,7 @@ What: /sys/bus/iio/devices/iio:deviceX/in_rot_from_north_true_tilt_comp_scale | |||
| 276 | What: /sys/bus/iio/devices/iio:deviceX/in_pressureY_scale | 295 | What: /sys/bus/iio/devices/iio:deviceX/in_pressureY_scale |
| 277 | What: /sys/bus/iio/devices/iio:deviceX/in_pressure_scale | 296 | What: /sys/bus/iio/devices/iio:deviceX/in_pressure_scale |
| 278 | What: /sys/bus/iio/devices/iio:deviceX/in_humidityrelative_scale | 297 | What: /sys/bus/iio/devices/iio:deviceX/in_humidityrelative_scale |
| 298 | What: /sys/bus/iio/devices/iio:deviceX/in_velocity_sqrt(x^2+y^2+z^2)_scale | ||
| 279 | KernelVersion: 2.6.35 | 299 | KernelVersion: 2.6.35 |
| 280 | Contact: linux-iio@vger.kernel.org | 300 | Contact: linux-iio@vger.kernel.org |
| 281 | Description: | 301 | Description: |
| @@ -323,6 +343,44 @@ Description: | |||
| 323 | production inaccuracies). If shared across all channels, | 343 | production inaccuracies). If shared across all channels, |
| 324 | <type>_calibscale is used. | 344 | <type>_calibscale is used. |
| 325 | 345 | ||
| 346 | What: /sys/bus/iio/devices/iio:deviceX/in_activity_calibgender | ||
| 347 | What: /sys/bus/iio/devices/iio:deviceX/in_energy_calibgender | ||
| 348 | What: /sys/bus/iio/devices/iio:deviceX/in_distance_calibgender | ||
| 349 | What: /sys/bus/iio/devices/iio:deviceX/in_velocity_calibgender | ||
| 350 | KernelVersion: 3.20 | ||
| 351 | Contact: linux-iio@vger.kernel.org | ||
| 352 | Description: | ||
| 353 | Gender of the user (e.g.: male, female) used by some pedometers | ||
| 354 | to compute the stride length, distance, speed and activity | ||
| 355 | type. | ||
| 356 | |||
| 357 | What: /sys/bus/iio/devices/iio:deviceX/in_activity_calibgender_available | ||
| 358 | What: /sys/bus/iio/devices/iio:deviceX/in_energy_calibgender_available | ||
| 359 | What: /sys/bus/iio/devices/iio:deviceX/in_distance_calibgender_available | ||
| 360 | What: /sys/bus/iio/devices/iio:deviceX/in_velocity_calibgender_available | ||
| 361 | KernelVersion: 3.20 | ||
| 362 | Contact: linux-iio@vger.kernel.org | ||
| 363 | Description: | ||
| 364 | Lists all available gender values (e.g.: male, female). | ||
| 365 | |||
| 366 | What: /sys/bus/iio/devices/iio:deviceX/in_activity_calibheight | ||
| 367 | What: /sys/bus/iio/devices/iio:deviceX/in_energy_calibheight | ||
| 368 | What: /sys/bus/iio/devices/iio:deviceX/in_distance_calibheight | ||
| 369 | What: /sys/bus/iio/devices/iio:deviceX/in_velocity_calibheight | ||
| 370 | KernelVersion: 3.19 | ||
| 371 | Contact: linux-iio@vger.kernel.org | ||
| 372 | Description: | ||
| 373 | Height of the user (in meters) used by some pedometers | ||
| 374 | to compute the stride length, distance, speed and activity | ||
| 375 | type. | ||
| 376 | |||
| 377 | What: /sys/bus/iio/devices/iio:deviceX/in_energy_calibweight | ||
| 378 | KernelVersion: 3.20 | ||
| 379 | Contact: linux-iio@vger.kernel.org | ||
| 380 | Description: | ||
| 381 | Weight of the user (in kg). It is needed by some pedometers | ||
| 382 | to compute the calories burnt by the user. | ||
| 383 | |||
| 326 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_scale_available | 384 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_scale_available |
| 327 | What: /sys/.../iio:deviceX/in_voltageX_scale_available | 385 | What: /sys/.../iio:deviceX/in_voltageX_scale_available |
| 328 | What: /sys/.../iio:deviceX/in_voltage-voltage_scale_available | 386 | What: /sys/.../iio:deviceX/in_voltage-voltage_scale_available |
| @@ -783,6 +841,14 @@ What: /sys/.../events/in_tempY_roc_falling_period | |||
| 783 | What: /sys/.../events/in_accel_x&y&z_mag_falling_period | 841 | What: /sys/.../events/in_accel_x&y&z_mag_falling_period |
| 784 | What: /sys/.../events/in_intensity0_thresh_period | 842 | What: /sys/.../events/in_intensity0_thresh_period |
| 785 | What: /sys/.../events/in_proximity0_thresh_period | 843 | What: /sys/.../events/in_proximity0_thresh_period |
| 844 | What: /sys/.../events/in_activity_still_thresh_rising_period | ||
| 845 | What: /sys/.../events/in_activity_still_thresh_falling_period | ||
| 846 | What: /sys/.../events/in_activity_walking_thresh_rising_period | ||
| 847 | What: /sys/.../events/in_activity_walking_thresh_falling_period | ||
| 848 | What: /sys/.../events/in_activity_jogging_thresh_rising_period | ||
| 849 | What: /sys/.../events/in_activity_jogging_thresh_falling_period | ||
| 850 | What: /sys/.../events/in_activity_running_thresh_rising_period | ||
| 851 | What: /sys/.../events/in_activity_running_thresh_falling_period | ||
| 786 | KernelVersion: 2.6.37 | 852 | KernelVersion: 2.6.37 |
| 787 | Contact: linux-iio@vger.kernel.org | 853 | Contact: linux-iio@vger.kernel.org |
| 788 | Description: | 854 | Description: |
| @@ -790,6 +856,40 @@ Description: | |||
| 790 | met before an event is generated. If direction is not | 856 | met before an event is generated. If direction is not |
| 791 | specified then this period applies to both directions. | 857 | specified then this period applies to both directions. |
| 792 | 858 | ||
| 859 | What: /sys/.../events/in_activity_still_thresh_rising_en | ||
| 860 | What: /sys/.../events/in_activity_still_thresh_falling_en | ||
| 861 | What: /sys/.../events/in_activity_walking_thresh_rising_en | ||
| 862 | What: /sys/.../events/in_activity_walking_thresh_falling_en | ||
| 863 | What: /sys/.../events/in_activity_jogging_thresh_rising_en | ||
| 864 | What: /sys/.../events/in_activity_jogging_thresh_falling_en | ||
| 865 | What: /sys/.../events/in_activity_running_thresh_rising_en | ||
| 866 | What: /sys/.../events/in_activity_running_thresh_falling_en | ||
| 867 | KernelVersion: 3.19 | ||
| 868 | Contact: linux-iio@vger.kernel.org | ||
| 869 | Description: | ||
| 870 | Enables or disables activitity events. Depending on direction | ||
| 871 | an event is generated when sensor ENTERS or LEAVES a given state. | ||
| 872 | |||
| 873 | What: /sys/.../events/in_activity_still_thresh_rising_value | ||
| 874 | What: /sys/.../events/in_activity_still_thresh_falling_value | ||
| 875 | What: /sys/.../events/in_activity_walking_thresh_rising_value | ||
| 876 | What: /sys/.../events/in_activity_walking_thresh_falling_value | ||
| 877 | What: /sys/.../events/in_activity_jogging_thresh_rising_value | ||
| 878 | What: /sys/.../events/in_activity_jogging_thresh_falling_value | ||
| 879 | What: /sys/.../events/in_activity_running_thresh_rising_value | ||
| 880 | What: /sys/.../events/in_activity_running_thresh_falling_value | ||
| 881 | KernelVersion: 3.19 | ||
| 882 | Contact: linux-iio@vger.kernel.org | ||
| 883 | Description: | ||
| 884 | Confidence value (in units as percentage) to be used | ||
| 885 | for deciding when an event should be generated. E.g for | ||
| 886 | running: If the confidence value reported by the sensor | ||
| 887 | is greater than in_activity_running_thresh_rising_value | ||
| 888 | then the sensor ENTERS running state. Conversely, if the | ||
| 889 | confidence value reported by the sensor is lower than | ||
| 890 | in_activity_running_thresh_falling_value then the sensor | ||
| 891 | is LEAVING running state. | ||
| 892 | |||
| 793 | What: /sys/.../iio:deviceX/events/in_accel_mag_en | 893 | What: /sys/.../iio:deviceX/events/in_accel_mag_en |
| 794 | What: /sys/.../iio:deviceX/events/in_accel_mag_rising_en | 894 | What: /sys/.../iio:deviceX/events/in_accel_mag_rising_en |
| 795 | What: /sys/.../iio:deviceX/events/in_accel_mag_falling_en | 895 | What: /sys/.../iio:deviceX/events/in_accel_mag_falling_en |
| @@ -822,6 +922,25 @@ Description: | |||
| 822 | number or direction is not specified, applies to all channels of | 922 | number or direction is not specified, applies to all channels of |
| 823 | this type. | 923 | this type. |
| 824 | 924 | ||
| 925 | What: /sys/.../events/in_steps_change_en | ||
| 926 | KernelVersion: 3.20 | ||
| 927 | Contact: linux-iio@vger.kernel.org | ||
| 928 | Description: | ||
| 929 | Event generated when channel passes a threshold on the absolute | ||
| 930 | change in value. E.g. for steps: a step change event is | ||
| 931 | generated each time the user takes N steps, where N is set using | ||
| 932 | in_steps_change_value. | ||
| 933 | |||
| 934 | What: /sys/.../events/in_steps_change_value | ||
| 935 | KernelVersion: 3.20 | ||
| 936 | Contact: linux-iio@vger.kernel.org | ||
| 937 | Description: | ||
| 938 | Specifies the value of change threshold that the | ||
| 939 | device is comparing against for the events enabled by | ||
| 940 | <type>[Y][_name]_roc[_rising|falling|]_en. E.g. for steps: | ||
| 941 | if set to 3, a step change event will be generated every 3 | ||
| 942 | steps. | ||
| 943 | |||
| 825 | What: /sys/bus/iio/devices/iio:deviceX/trigger/current_trigger | 944 | What: /sys/bus/iio/devices/iio:deviceX/trigger/current_trigger |
| 826 | KernelVersion: 2.6.35 | 945 | KernelVersion: 2.6.35 |
| 827 | Contact: linux-iio@vger.kernel.org | 946 | Contact: linux-iio@vger.kernel.org |
| @@ -956,6 +1075,16 @@ Description: | |||
| 956 | and the relevant _type attributes to establish the data storage | 1075 | and the relevant _type attributes to establish the data storage |
| 957 | format. | 1076 | format. |
| 958 | 1077 | ||
| 1078 | What: /sys/.../iio:deviceX/in_activity_still_input | ||
| 1079 | What: /sys/.../iio:deviceX/in_activity_walking_input | ||
| 1080 | What: /sys/.../iio:deviceX/in_activity_jogging_input | ||
| 1081 | What: /sys/.../iio:deviceX/in_activity_running_input | ||
| 1082 | KernelVersion: 3.19 | ||
| 1083 | Contact: linux-iio@vger.kernel.org | ||
| 1084 | Description: | ||
| 1085 | This attribute is used to read the confidence for an activity | ||
| 1086 | expressed in units as percentage. | ||
| 1087 | |||
| 959 | What: /sys/.../iio:deviceX/in_anglvel_z_quadrature_correction_raw | 1088 | What: /sys/.../iio:deviceX/in_anglvel_z_quadrature_correction_raw |
| 960 | KernelVersion: 2.6.38 | 1089 | KernelVersion: 2.6.38 |
| 961 | Contact: linux-iio@vger.kernel.org | 1090 | Contact: linux-iio@vger.kernel.org |
| @@ -973,6 +1102,24 @@ Description: | |||
| 973 | For a list of available output power modes read | 1102 | For a list of available output power modes read |
| 974 | in_accel_power_mode_available. | 1103 | in_accel_power_mode_available. |
| 975 | 1104 | ||
| 1105 | What: /sys/.../iio:deviceX/in_energy_input | ||
| 1106 | What: /sys/.../iio:deviceX/in_energy_raw | ||
| 1107 | KernelVersion: 3.20 | ||
| 1108 | Contact: linux-iio@vger.kernel.org | ||
| 1109 | Description: | ||
| 1110 | This attribute is used to read the energy value reported by the | ||
| 1111 | device (e.g.: human activity sensors report energy burnt by the | ||
| 1112 | user). Units after application of scale are Joules. | ||
| 1113 | |||
| 1114 | What: /sys/.../iio:deviceX/in_distance_input | ||
| 1115 | What: /sys/.../iio:deviceX/in_distance_raw | ||
| 1116 | KernelVersion: 3.20 | ||
| 1117 | Contact: linux-iio@vger.kernel.org | ||
| 1118 | Description: | ||
| 1119 | This attribute is used to read the distance covered by the user | ||
| 1120 | since the last reboot while activated. Units after application | ||
| 1121 | of scale are meters. | ||
| 1122 | |||
| 976 | What: /sys/bus/iio/devices/iio:deviceX/store_eeprom | 1123 | What: /sys/bus/iio/devices/iio:deviceX/store_eeprom |
| 977 | KernelVersion: 3.4.0 | 1124 | KernelVersion: 3.4.0 |
| 978 | Contact: linux-iio@vger.kernel.org | 1125 | Contact: linux-iio@vger.kernel.org |
| @@ -992,7 +1139,9 @@ Description: | |||
| 992 | reflectivity of infrared or ultrasound emitted. | 1139 | reflectivity of infrared or ultrasound emitted. |
| 993 | Often these sensors are unit less and as such conversion | 1140 | Often these sensors are unit less and as such conversion |
| 994 | to SI units is not possible. Where it is, the units should | 1141 | to SI units is not possible. Where it is, the units should |
| 995 | be meters. | 1142 | be meters. If such a conversion is not possible, the reported |
| 1143 | values should behave in the same way as a distance, i.e. lower | ||
| 1144 | values indicate something is closer to the sensor. | ||
| 996 | 1145 | ||
| 997 | What: /sys/.../iio:deviceX/in_illuminanceY_input | 1146 | What: /sys/.../iio:deviceX/in_illuminanceY_input |
| 998 | What: /sys/.../iio:deviceX/in_illuminanceY_raw | 1147 | What: /sys/.../iio:deviceX/in_illuminanceY_raw |
| @@ -1024,6 +1173,12 @@ Description: | |||
| 1024 | This attribute is used to get/set the integration time in | 1173 | This attribute is used to get/set the integration time in |
| 1025 | seconds. | 1174 | seconds. |
| 1026 | 1175 | ||
| 1176 | What: /sys/.../iio:deviceX/in_velocity_sqrt(x^2+y^2+z^2)_integration_time | ||
| 1177 | KernelVersion: 3.20 | ||
| 1178 | Contact: linux-iio@vger.kernel.org | ||
| 1179 | Description: | ||
| 1180 | Number of seconds in which to compute speed. | ||
| 1181 | |||
| 1027 | What: /sys/bus/iio/devices/iio:deviceX/in_rot_quaternion_raw | 1182 | What: /sys/bus/iio/devices/iio:deviceX/in_rot_quaternion_raw |
| 1028 | KernelVersion: 3.15 | 1183 | KernelVersion: 3.15 |
| 1029 | Contact: linux-iio@vger.kernel.org | 1184 | Contact: linux-iio@vger.kernel.org |
| @@ -1051,3 +1206,46 @@ Description: | |||
| 1051 | after application of scale and offset. If no offset or scale is | 1206 | after application of scale and offset. If no offset or scale is |
| 1052 | present, output should be considered as processed with the | 1207 | present, output should be considered as processed with the |
| 1053 | unit in milliamps. | 1208 | unit in milliamps. |
| 1209 | |||
| 1210 | What: /sys/.../iio:deviceX/in_energy_en | ||
| 1211 | What: /sys/.../iio:deviceX/in_distance_en | ||
| 1212 | What: /sys/.../iio:deviceX/in_velocity_sqrt(x^2+y^2+z^2)_en | ||
| 1213 | What: /sys/.../iio:deviceX/in_steps_en | ||
| 1214 | KernelVersion: 3.19 | ||
| 1215 | Contact: linux-iio@vger.kernel.org | ||
| 1216 | Description: | ||
| 1217 | Activates a device feature that runs in firmware/hardware. | ||
| 1218 | E.g. for steps: the pedometer saves power while not used; | ||
| 1219 | when activated, it will count the steps taken by the user in | ||
| 1220 | firmware and export them through in_steps_input. | ||
| 1221 | |||
| 1222 | What: /sys/.../iio:deviceX/in_steps_input | ||
| 1223 | KernelVersion: 3.19 | ||
| 1224 | Contact: linux-iio@vger.kernel.org | ||
| 1225 | Description: | ||
| 1226 | This attribute is used to read the number of steps taken by the user | ||
| 1227 | since the last reboot while activated. | ||
| 1228 | |||
| 1229 | What: /sys/.../iio:deviceX/in_velocity_sqrt(x^2+y^2+z^2)_input | ||
| 1230 | What: /sys/.../iio:deviceX/in_velocity_sqrt(x^2+y^2+z^2)_raw | ||
| 1231 | KernelVersion: 3.19 | ||
| 1232 | Contact: linux-iio@vger.kernel.org | ||
| 1233 | Description: | ||
| 1234 | This attribute is used to read the current speed value of the | ||
| 1235 | user (which is the norm or magnitude of the velocity vector). | ||
| 1236 | Units after application of scale are m/s. | ||
| 1237 | |||
| 1238 | What: /sys/.../iio:deviceX/in_steps_debounce_count | ||
| 1239 | KernelVersion: 3.20 | ||
| 1240 | Contact: linux-iio@vger.kernel.org | ||
| 1241 | Description: | ||
| 1242 | Specifies the number of steps that must occur within | ||
| 1243 | in_steps_filter_debounce_time for the pedometer to decide the | ||
| 1244 | consumer is making steps. | ||
| 1245 | |||
| 1246 | What: /sys/.../iio:deviceX/in_steps_debounce_time | ||
| 1247 | KernelVersion: 3.20 | ||
| 1248 | Contact: linux-iio@vger.kernel.org | ||
| 1249 | Description: | ||
| 1250 | Specifies number of seconds in which we compute the steps | ||
| 1251 | that occur in order to decide if the consumer is making steps. | ||
diff --git a/Documentation/ABI/testing/sysfs-class-cxl b/Documentation/ABI/testing/sysfs-class-cxl index 554405ec1955..3680364b4048 100644 --- a/Documentation/ABI/testing/sysfs-class-cxl +++ b/Documentation/ABI/testing/sysfs-class-cxl | |||
| @@ -1,3 +1,9 @@ | |||
| 1 | Note: Attributes that are shared between devices are stored in the directory | ||
| 2 | pointed to by the symlink device/. | ||
| 3 | Example: The real path of the attribute /sys/class/cxl/afu0.0s/irqs_max is | ||
| 4 | /sys/class/cxl/afu0.0s/device/irqs_max, i.e. /sys/class/cxl/afu0.0/irqs_max. | ||
| 5 | |||
| 6 | |||
| 1 | Slave contexts (eg. /sys/class/cxl/afu0.0s): | 7 | Slave contexts (eg. /sys/class/cxl/afu0.0s): |
| 2 | 8 | ||
| 3 | What: /sys/class/cxl/<afu>/irqs_max | 9 | What: /sys/class/cxl/<afu>/irqs_max |
| @@ -67,7 +73,7 @@ Contact: linuxppc-dev@lists.ozlabs.org | |||
| 67 | Description: read only | 73 | Description: read only |
| 68 | Decimal value of the current version of the kernel/user API. | 74 | Decimal value of the current version of the kernel/user API. |
| 69 | 75 | ||
| 70 | What: /sys/class/cxl/<afu>/api_version_com | 76 | What: /sys/class/cxl/<afu>/api_version_compatible |
| 71 | Date: September 2014 | 77 | Date: September 2014 |
| 72 | Contact: linuxppc-dev@lists.ozlabs.org | 78 | Contact: linuxppc-dev@lists.ozlabs.org |
| 73 | Description: read only | 79 | Description: read only |
| @@ -75,6 +81,42 @@ Description: read only | |||
| 75 | this this kernel supports. | 81 | this this kernel supports. |
| 76 | 82 | ||
| 77 | 83 | ||
| 84 | AFU configuration records (eg. /sys/class/cxl/afu0.0/cr0): | ||
| 85 | |||
| 86 | An AFU may optionally export one or more PCIe like configuration records, known | ||
| 87 | as AFU configuration records, which will show up here (if present). | ||
| 88 | |||
| 89 | What: /sys/class/cxl/<afu>/cr<config num>/vendor | ||
| 90 | Date: February 2015 | ||
| 91 | Contact: linuxppc-dev@lists.ozlabs.org | ||
| 92 | Description: read only | ||
| 93 | Hexadecimal value of the vendor ID found in this AFU | ||
| 94 | configuration record. | ||
| 95 | |||
| 96 | What: /sys/class/cxl/<afu>/cr<config num>/device | ||
| 97 | Date: February 2015 | ||
| 98 | Contact: linuxppc-dev@lists.ozlabs.org | ||
| 99 | Description: read only | ||
| 100 | Hexadecimal value of the device ID found in this AFU | ||
| 101 | configuration record. | ||
| 102 | |||
| 103 | What: /sys/class/cxl/<afu>/cr<config num>/vendor | ||
| 104 | Date: February 2015 | ||
| 105 | Contact: linuxppc-dev@lists.ozlabs.org | ||
| 106 | Description: read only | ||
| 107 | Hexadecimal value of the class code found in this AFU | ||
| 108 | configuration record. | ||
| 109 | |||
| 110 | What: /sys/class/cxl/<afu>/cr<config num>/config | ||
| 111 | Date: February 2015 | ||
| 112 | Contact: linuxppc-dev@lists.ozlabs.org | ||
| 113 | Description: read only | ||
| 114 | This binary file provides raw access to the AFU configuration | ||
| 115 | record. The format is expected to match the either the standard | ||
| 116 | or extended configuration space defined by the PCIe | ||
| 117 | specification. | ||
| 118 | |||
| 119 | |||
| 78 | 120 | ||
| 79 | Master contexts (eg. /sys/class/cxl/afu0.0m) | 121 | Master contexts (eg. /sys/class/cxl/afu0.0m) |
| 80 | 122 | ||
| @@ -106,7 +148,7 @@ Contact: linuxppc-dev@lists.ozlabs.org | |||
| 106 | Description: read only | 148 | Description: read only |
| 107 | Identifies the CAIA Version the card implements. | 149 | Identifies the CAIA Version the card implements. |
| 108 | 150 | ||
| 109 | What: /sys/class/cxl/<card>/psl_version | 151 | What: /sys/class/cxl/<card>/psl_revision |
| 110 | Date: September 2014 | 152 | Date: September 2014 |
| 111 | Contact: linuxppc-dev@lists.ozlabs.org | 153 | Contact: linuxppc-dev@lists.ozlabs.org |
| 112 | Description: read only | 154 | Description: read only |
| @@ -127,3 +169,24 @@ Contact: linuxppc-dev@lists.ozlabs.org | |||
| 127 | Description: read only | 169 | Description: read only |
| 128 | Will return "user" or "factory" depending on the image loaded | 170 | Will return "user" or "factory" depending on the image loaded |
| 129 | onto the card. | 171 | onto the card. |
| 172 | |||
| 173 | What: /sys/class/cxl/<card>/load_image_on_perst | ||
| 174 | Date: December 2014 | ||
| 175 | Contact: linuxppc-dev@lists.ozlabs.org | ||
| 176 | Description: read/write | ||
| 177 | Valid entries are "none", "user", and "factory". | ||
| 178 | "none" means PERST will not cause image to be loaded to the | ||
| 179 | card. A power cycle is required to load the image. | ||
| 180 | "none" could be useful for debugging because the trace arrays | ||
| 181 | are preserved. | ||
| 182 | "user" and "factory" means PERST will cause either the user or | ||
| 183 | user or factory image to be loaded. | ||
| 184 | Default is to reload on PERST whichever image the card has | ||
| 185 | loaded. | ||
| 186 | |||
| 187 | What: /sys/class/cxl/<card>/reset | ||
| 188 | Date: October 2014 | ||
| 189 | Contact: linuxppc-dev@lists.ozlabs.org | ||
| 190 | Description: write only | ||
| 191 | Writing 1 will issue a PERST to card which may cause the card | ||
| 192 | to reload the FPGA depending on load_image_on_perst. | ||
diff --git a/Documentation/ABI/testing/sysfs-class-mei b/Documentation/ABI/testing/sysfs-class-mei index 0ec8b8178c41..80d9888a8ece 100644 --- a/Documentation/ABI/testing/sysfs-class-mei +++ b/Documentation/ABI/testing/sysfs-class-mei | |||
| @@ -14,3 +14,18 @@ Description: | |||
| 14 | The /sys/class/mei/meiN directory is created for | 14 | The /sys/class/mei/meiN directory is created for |
| 15 | each probed mei device | 15 | each probed mei device |
| 16 | 16 | ||
| 17 | What: /sys/class/mei/meiN/fw_status | ||
| 18 | Date: Nov 2014 | ||
| 19 | KernelVersion: 3.19 | ||
| 20 | Contact: Tomas Winkler <tomas.winkler@intel.com> | ||
| 21 | Description: Display fw status registers content | ||
| 22 | |||
| 23 | The ME FW writes its status information into fw status | ||
| 24 | registers for BIOS and OS to monitor fw health. | ||
| 25 | |||
| 26 | The register contains running state, power management | ||
| 27 | state, error codes, and others. The way the registers | ||
| 28 | are decoded depends on PCH or SoC generation. | ||
| 29 | Also number of registers varies between 1 and 6 | ||
| 30 | depending on generation. | ||
| 31 | |||
diff --git a/Documentation/ABI/testing/sysfs-class-power b/Documentation/ABI/testing/sysfs-class-power index 909e7602c717..369d2a2d7d3e 100644 --- a/Documentation/ABI/testing/sysfs-class-power +++ b/Documentation/ABI/testing/sysfs-class-power | |||
| @@ -32,3 +32,45 @@ Description: | |||
| 32 | Valid values: | 32 | Valid values: |
| 33 | - 5, 6 or 7 (hours), | 33 | - 5, 6 or 7 (hours), |
| 34 | - 0: disabled. | 34 | - 0: disabled. |
| 35 | |||
| 36 | What: /sys/class/power_supply/max77693-charger/device/fast_charge_timer | ||
| 37 | Date: January 2015 | ||
| 38 | KernelVersion: 3.19.0 | ||
| 39 | Contact: Krzysztof Kozlowski <k.kozlowski@samsung.com> | ||
| 40 | Description: | ||
| 41 | This entry shows and sets the maximum time the max77693 | ||
| 42 | charger operates in fast-charge mode. When the timer expires | ||
| 43 | the device will terminate fast-charge mode (charging current | ||
| 44 | will drop to 0 A) and will trigger interrupt. | ||
| 45 | |||
| 46 | Valid values: | ||
| 47 | - 4 - 16 (hours), step by 2 (rounded down) | ||
| 48 | - 0: disabled. | ||
| 49 | |||
| 50 | What: /sys/class/power_supply/max77693-charger/device/top_off_threshold_current | ||
| 51 | Date: January 2015 | ||
| 52 | KernelVersion: 3.19.0 | ||
| 53 | Contact: Krzysztof Kozlowski <k.kozlowski@samsung.com> | ||
| 54 | Description: | ||
| 55 | This entry shows and sets the charging current threshold for | ||
| 56 | entering top-off charging mode. When charging current in fast | ||
| 57 | charge mode drops below this value, the charger will trigger | ||
| 58 | interrupt and start top-off charging mode. | ||
| 59 | |||
| 60 | Valid values: | ||
| 61 | - 100000 - 200000 (microamps), step by 25000 (rounded down) | ||
| 62 | - 200000 - 350000 (microamps), step by 50000 (rounded down) | ||
| 63 | - 0: disabled. | ||
| 64 | |||
| 65 | What: /sys/class/power_supply/max77693-charger/device/top_off_timer | ||
| 66 | Date: January 2015 | ||
| 67 | KernelVersion: 3.19.0 | ||
| 68 | Contact: Krzysztof Kozlowski <k.kozlowski@samsung.com> | ||
| 69 | Description: | ||
| 70 | This entry shows and sets the maximum time the max77693 | ||
| 71 | charger operates in top-off charge mode. When the timer expires | ||
| 72 | the device will terminate top-off charge mode (charging current | ||
| 73 | will drop to 0 A) and will trigger interrupt. | ||
| 74 | |||
| 75 | Valid values: | ||
| 76 | - 0 - 70 (minutes), step by 10 (rounded down) | ||
diff --git a/Documentation/ABI/testing/sysfs-driver-input-axp-pek b/Documentation/ABI/testing/sysfs-driver-input-axp-pek new file mode 100644 index 000000000000..a5e671b9fa79 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-driver-input-axp-pek | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | What: /sys/class/input/input(x)/device/startup | ||
| 2 | Date: March 2014 | ||
| 3 | Contact: Carlo Caione <carlo@caione.org> | ||
| 4 | Description: Startup time in us. Board is powered on if the button is pressed | ||
| 5 | for more than <startup_time> | ||
| 6 | |||
| 7 | What: /sys/class/input/input(x)/device/shutdown | ||
| 8 | Date: March 2014 | ||
| 9 | Contact: Carlo Caione <carlo@caione.org> | ||
| 10 | Description: Shutdown time in us. Board is powered off if the button is pressed | ||
| 11 | for more than <shutdown_time> | ||
diff --git a/Documentation/ABI/testing/sysfs-driver-samsung-laptop b/Documentation/ABI/testing/sysfs-driver-samsung-laptop index 678819a3f8bf..63c1ad0212fc 100644 --- a/Documentation/ABI/testing/sysfs-driver-samsung-laptop +++ b/Documentation/ABI/testing/sysfs-driver-samsung-laptop | |||
| @@ -35,3 +35,11 @@ Contact: Corentin Chary <corentin.chary@gmail.com> | |||
| 35 | Description: Use your USB ports to charge devices, even | 35 | Description: Use your USB ports to charge devices, even |
| 36 | when your laptop is powered off. | 36 | when your laptop is powered off. |
| 37 | 1 means enabled, 0 means disabled. | 37 | 1 means enabled, 0 means disabled. |
| 38 | |||
| 39 | What: /sys/devices/platform/samsung/lid_handling | ||
| 40 | Date: December 11, 2014 | ||
| 41 | KernelVersion: 3.19 | ||
| 42 | Contact: Julijonas Kikutis <julijonas.kikutis@gmail.com> | ||
| 43 | Description: Some Samsung laptops handle lid closing quicker and | ||
| 44 | only handle lid opening with this mode enabled. | ||
| 45 | 1 means enabled, 0 means disabled. | ||
diff --git a/Documentation/ABI/testing/sysfs-driver-toshiba_acpi b/Documentation/ABI/testing/sysfs-driver-toshiba_acpi new file mode 100644 index 000000000000..ca9c71a531c5 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-driver-toshiba_acpi | |||
| @@ -0,0 +1,114 @@ | |||
| 1 | What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/kbd_backlight_mode | ||
| 2 | Date: June 8, 2014 | ||
| 3 | KernelVersion: 3.15 | ||
| 4 | Contact: Azael Avalos <coproscefalo@gmail.com> | ||
| 5 | Description: This file controls the keyboard backlight operation mode, valid | ||
| 6 | values are: | ||
| 7 | * 0x1 -> FN-Z | ||
| 8 | * 0x2 -> AUTO (also called TIMER) | ||
| 9 | * 0x8 -> ON | ||
| 10 | * 0x10 -> OFF | ||
| 11 | Note that the kernel 3.16 onwards this file accepts all listed | ||
| 12 | parameters, kernel 3.15 only accepts the first two (FN-Z and | ||
| 13 | AUTO). | ||
| 14 | Users: KToshiba | ||
| 15 | |||
| 16 | What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/kbd_backlight_timeout | ||
| 17 | Date: June 8, 2014 | ||
| 18 | KernelVersion: 3.15 | ||
| 19 | Contact: Azael Avalos <coproscefalo@gmail.com> | ||
| 20 | Description: This file controls the timeout of the keyboard backlight | ||
| 21 | whenever the operation mode is set to AUTO (or TIMER), | ||
| 22 | valid values range from 0-60. | ||
| 23 | Note that the kernel 3.15 only had support for the first | ||
| 24 | keyboard type, the kernel 3.16 added support for the second | ||
| 25 | type and the range accepted for type 2 is 1-60. | ||
| 26 | See the entry named "kbd_type" | ||
| 27 | Users: KToshiba | ||
| 28 | |||
| 29 | What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/position | ||
| 30 | Date: June 8, 2014 | ||
| 31 | KernelVersion: 3.15 | ||
| 32 | Contact: Azael Avalos <coproscefalo@gmail.com> | ||
| 33 | Description: This file shows the absolute position of the built-in | ||
| 34 | accelereometer. | ||
| 35 | |||
| 36 | What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/touchpad | ||
| 37 | Date: June 8, 2014 | ||
| 38 | KernelVersion: 3.15 | ||
| 39 | Contact: Azael Avalos <coproscefalo@gmail.com> | ||
| 40 | Description: This files controls the status of the touchpad and pointing | ||
| 41 | stick (if available), valid values are: | ||
| 42 | * 0 -> OFF | ||
| 43 | * 1 -> ON | ||
| 44 | Users: KToshiba | ||
| 45 | |||
| 46 | What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/available_kbd_modes | ||
| 47 | Date: August 3, 2014 | ||
| 48 | KernelVersion: 3.16 | ||
| 49 | Contact: Azael Avalos <coproscefalo@gmail.com> | ||
| 50 | Description: This file shows the supported keyboard backlight modes | ||
| 51 | the system supports, which can be: | ||
| 52 | * 0x1 -> FN-Z | ||
| 53 | * 0x2 -> AUTO (also called TIMER) | ||
| 54 | * 0x8 -> ON | ||
| 55 | * 0x10 -> OFF | ||
| 56 | Note that not all keyboard types support the listed modes. | ||
| 57 | See the entry named "available_kbd_modes" | ||
| 58 | Users: KToshiba | ||
| 59 | |||
| 60 | What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/kbd_type | ||
| 61 | Date: August 3, 2014 | ||
| 62 | KernelVersion: 3.16 | ||
| 63 | Contact: Azael Avalos <coproscefalo@gmail.com> | ||
| 64 | Description: This file shows the current keyboard backlight type, | ||
| 65 | which can be: | ||
| 66 | * 1 -> Type 1, supporting modes FN-Z and AUTO | ||
| 67 | * 2 -> Type 2, supporting modes TIMER, ON and OFF | ||
| 68 | Users: KToshiba | ||
| 69 | |||
| 70 | What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/version | ||
| 71 | Date: February, 2015 | ||
| 72 | KernelVersion: 3.20 | ||
| 73 | Contact: Azael Avalos <coproscefalo@gmail.com> | ||
| 74 | Description: This file shows the current version of the driver | ||
| 75 | |||
| 76 | What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/fan | ||
| 77 | Date: February, 2015 | ||
| 78 | KernelVersion: 3.20 | ||
| 79 | Contact: Azael Avalos <coproscefalo@gmail.com> | ||
| 80 | Description: This file controls the state of the internal fan, valid | ||
| 81 | values are: | ||
| 82 | * 0 -> OFF | ||
| 83 | * 1 -> ON | ||
| 84 | |||
| 85 | What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/kbd_function_keys | ||
| 86 | Date: February, 2015 | ||
| 87 | KernelVersion: 3.20 | ||
| 88 | Contact: Azael Avalos <coproscefalo@gmail.com> | ||
| 89 | Description: This file controls the Special Functions (hotkeys) operation | ||
| 90 | mode, valid values are: | ||
| 91 | * 0 -> Normal Operation | ||
| 92 | * 1 -> Special Functions | ||
| 93 | In the "Normal Operation" mode, the F{1-12} keys are as usual | ||
| 94 | and the hotkeys are accessed via FN-F{1-12}. | ||
| 95 | In the "Special Functions" mode, the F{1-12} keys trigger the | ||
| 96 | hotkey and the F{1-12} keys are accessed via FN-F{1-12}. | ||
| 97 | |||
| 98 | What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/panel_power_on | ||
| 99 | Date: February, 2015 | ||
| 100 | KernelVersion: 3.20 | ||
| 101 | Contact: Azael Avalos <coproscefalo@gmail.com> | ||
| 102 | Description: This file controls whether the laptop should turn ON whenever | ||
| 103 | the LID is opened, valid values are: | ||
| 104 | * 0 -> Disabled | ||
| 105 | * 1 -> Enabled | ||
| 106 | |||
| 107 | What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/usb_three | ||
| 108 | Date: February, 2015 | ||
| 109 | KernelVersion: 3.20 | ||
| 110 | Contact: Azael Avalos <coproscefalo@gmail.com> | ||
| 111 | Description: This file controls whether the USB 3 functionality, valid | ||
| 112 | values are: | ||
| 113 | * 0 -> Disabled (Acts as a regular USB 2) | ||
| 114 | * 1 -> Enabled (Full USB 3 functionality) | ||
diff --git a/Documentation/ABI/testing/sysfs-fs-f2fs b/Documentation/ABI/testing/sysfs-fs-f2fs index 6f9157f16725..2c4cc42006e8 100644 --- a/Documentation/ABI/testing/sysfs-fs-f2fs +++ b/Documentation/ABI/testing/sysfs-fs-f2fs | |||
| @@ -74,3 +74,9 @@ Date: March 2014 | |||
| 74 | Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com> | 74 | Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com> |
| 75 | Description: | 75 | Description: |
| 76 | Controls the memory footprint used by f2fs. | 76 | Controls the memory footprint used by f2fs. |
| 77 | |||
| 78 | What: /sys/fs/f2fs/<disk>/trim_sections | ||
| 79 | Date: February 2015 | ||
| 80 | Contact: "Jaegeuk Kim" <jaegeuk@kernel.org> | ||
| 81 | Description: | ||
| 82 | Controls the trimming rate in batch mode. | ||
diff --git a/Documentation/ABI/testing/sysfs-kernel-livepatch b/Documentation/ABI/testing/sysfs-kernel-livepatch new file mode 100644 index 000000000000..5bf42a840b22 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-kernel-livepatch | |||
| @@ -0,0 +1,44 @@ | |||
| 1 | What: /sys/kernel/livepatch | ||
| 2 | Date: Nov 2014 | ||
| 3 | KernelVersion: 3.19.0 | ||
| 4 | Contact: live-patching@vger.kernel.org | ||
| 5 | Description: | ||
| 6 | Interface for kernel live patching | ||
| 7 | |||
| 8 | The /sys/kernel/livepatch directory contains subdirectories for | ||
| 9 | each loaded live patch module. | ||
| 10 | |||
| 11 | What: /sys/kernel/livepatch/<patch> | ||
| 12 | Date: Nov 2014 | ||
| 13 | KernelVersion: 3.19.0 | ||
| 14 | Contact: live-patching@vger.kernel.org | ||
| 15 | Description: | ||
| 16 | The patch directory contains subdirectories for each kernel | ||
| 17 | object (vmlinux or a module) in which it patched functions. | ||
| 18 | |||
| 19 | What: /sys/kernel/livepatch/<patch>/enabled | ||
| 20 | Date: Nov 2014 | ||
| 21 | KernelVersion: 3.19.0 | ||
| 22 | Contact: live-patching@vger.kernel.org | ||
| 23 | Description: | ||
| 24 | A writable attribute that indicates whether the patched | ||
| 25 | code is currently applied. Writing 0 will disable the patch | ||
| 26 | while writing 1 will re-enable the patch. | ||
| 27 | |||
| 28 | What: /sys/kernel/livepatch/<patch>/<object> | ||
| 29 | Date: Nov 2014 | ||
| 30 | KernelVersion: 3.19.0 | ||
| 31 | Contact: live-patching@vger.kernel.org | ||
| 32 | Description: | ||
| 33 | The object directory contains subdirectories for each function | ||
| 34 | that is patched within the object. | ||
| 35 | |||
| 36 | What: /sys/kernel/livepatch/<patch>/<object>/<function> | ||
| 37 | Date: Nov 2014 | ||
| 38 | KernelVersion: 3.19.0 | ||
| 39 | Contact: live-patching@vger.kernel.org | ||
| 40 | Description: | ||
| 41 | The function directory contains attributes regarding the | ||
| 42 | properties and state of the patched function. | ||
| 43 | |||
| 44 | There are currently no such attributes. | ||
diff --git a/Documentation/ABI/testing/sysfs-platform-dell-laptop b/Documentation/ABI/testing/sysfs-platform-dell-laptop deleted file mode 100644 index 7969443ef0ef..000000000000 --- a/Documentation/ABI/testing/sysfs-platform-dell-laptop +++ /dev/null | |||
| @@ -1,60 +0,0 @@ | |||
| 1 | What: /sys/class/leds/dell::kbd_backlight/als_setting | ||
| 2 | Date: December 2014 | ||
| 3 | KernelVersion: 3.19 | ||
| 4 | Contact: Gabriele Mazzotta <gabriele.mzt@gmail.com>, | ||
| 5 | Pali Rohár <pali.rohar@gmail.com> | ||
| 6 | Description: | ||
| 7 | This file allows to control the automatic keyboard | ||
| 8 | illumination mode on some systems that have an ambient | ||
| 9 | light sensor. Write 1 to this file to enable the auto | ||
| 10 | mode, 0 to disable it. | ||
| 11 | |||
| 12 | What: /sys/class/leds/dell::kbd_backlight/start_triggers | ||
| 13 | Date: December 2014 | ||
| 14 | KernelVersion: 3.19 | ||
| 15 | Contact: Gabriele Mazzotta <gabriele.mzt@gmail.com>, | ||
| 16 | Pali Rohár <pali.rohar@gmail.com> | ||
| 17 | Description: | ||
| 18 | This file allows to control the input triggers that | ||
| 19 | turn on the keyboard backlight illumination that is | ||
| 20 | disabled because of inactivity. | ||
| 21 | Read the file to see the triggers available. The ones | ||
| 22 | enabled are preceded by '+', those disabled by '-'. | ||
| 23 | |||
| 24 | To enable a trigger, write its name preceded by '+' to | ||
| 25 | this file. To disable a trigger, write its name preceded | ||
| 26 | by '-' instead. | ||
| 27 | |||
| 28 | For example, to enable the keyboard as trigger run: | ||
| 29 | echo +keyboard > /sys/class/leds/dell::kbd_backlight/start_triggers | ||
| 30 | To disable it: | ||
| 31 | echo -keyboard > /sys/class/leds/dell::kbd_backlight/start_triggers | ||
| 32 | |||
| 33 | Note that not all the available triggers can be configured. | ||
| 34 | |||
| 35 | What: /sys/class/leds/dell::kbd_backlight/stop_timeout | ||
| 36 | Date: December 2014 | ||
| 37 | KernelVersion: 3.19 | ||
| 38 | Contact: Gabriele Mazzotta <gabriele.mzt@gmail.com>, | ||
| 39 | Pali Rohár <pali.rohar@gmail.com> | ||
| 40 | Description: | ||
| 41 | This file allows to specify the interval after which the | ||
| 42 | keyboard illumination is disabled because of inactivity. | ||
| 43 | The timeouts are expressed in seconds, minutes, hours and | ||
| 44 | days, for which the symbols are 's', 'm', 'h' and 'd' | ||
| 45 | respectively. | ||
| 46 | |||
| 47 | To configure the timeout, write to this file a value along | ||
| 48 | with any the above units. If no unit is specified, the value | ||
| 49 | is assumed to be expressed in seconds. | ||
| 50 | |||
| 51 | For example, to set the timeout to 10 minutes run: | ||
| 52 | echo 10m > /sys/class/leds/dell::kbd_backlight/stop_timeout | ||
| 53 | |||
| 54 | Note that when this file is read, the returned value might be | ||
| 55 | expressed in a different unit than the one used when the timeout | ||
| 56 | was set. | ||
| 57 | |||
| 58 | Also note that only some timeouts are supported and that | ||
| 59 | some systems might fall back to a specific timeout in case | ||
| 60 | an invalid timeout is written to this file. | ||
diff --git a/Documentation/Changes b/Documentation/Changes index 74bdda9272a4..646cdaa6e9d1 100644 --- a/Documentation/Changes +++ b/Documentation/Changes | |||
| @@ -21,8 +21,8 @@ running a Linux kernel. Also, not all tools are necessary on all | |||
| 21 | systems; obviously, if you don't have any ISDN hardware, for example, | 21 | systems; obviously, if you don't have any ISDN hardware, for example, |
| 22 | you probably needn't concern yourself with isdn4k-utils. | 22 | you probably needn't concern yourself with isdn4k-utils. |
| 23 | 23 | ||
| 24 | o Gnu C 3.2 # gcc --version | 24 | o GNU C 3.2 # gcc --version |
| 25 | o Gnu make 3.80 # make --version | 25 | o GNU make 3.80 # make --version |
| 26 | o binutils 2.12 # ld -v | 26 | o binutils 2.12 # ld -v |
| 27 | o util-linux 2.10o # fdformat --version | 27 | o util-linux 2.10o # fdformat --version |
| 28 | o module-init-tools 0.9.10 # depmod -V | 28 | o module-init-tools 0.9.10 # depmod -V |
| @@ -57,7 +57,7 @@ computer. | |||
| 57 | Make | 57 | Make |
| 58 | ---- | 58 | ---- |
| 59 | 59 | ||
| 60 | You will need Gnu make 3.80 or later to build the kernel. | 60 | You will need GNU make 3.80 or later to build the kernel. |
| 61 | 61 | ||
| 62 | Binutils | 62 | Binutils |
| 63 | -------- | 63 | -------- |
diff --git a/Documentation/CodingStyle b/Documentation/CodingStyle index 618a33c940df..449a8a19fc21 100644 --- a/Documentation/CodingStyle +++ b/Documentation/CodingStyle | |||
| @@ -527,6 +527,7 @@ values. To do the latter, you can stick the following in your .emacs file: | |||
| 527 | (string-match (expand-file-name "~/src/linux-trees") | 527 | (string-match (expand-file-name "~/src/linux-trees") |
| 528 | filename)) | 528 | filename)) |
| 529 | (setq indent-tabs-mode t) | 529 | (setq indent-tabs-mode t) |
| 530 | (setq show-trailing-whitespace t) | ||
| 530 | (c-set-style "linux-tabs-only"))))) | 531 | (c-set-style "linux-tabs-only"))))) |
| 531 | 532 | ||
| 532 | This will make emacs go better with the kernel coding style for C | 533 | This will make emacs go better with the kernel coding style for C |
diff --git a/Documentation/DocBook/80211.tmpl b/Documentation/DocBook/80211.tmpl index d9b9416c989f..aac9357d4866 100644 --- a/Documentation/DocBook/80211.tmpl +++ b/Documentation/DocBook/80211.tmpl | |||
| @@ -113,7 +113,6 @@ | |||
| 113 | !Finclude/net/cfg80211.h cfg80211_beacon_data | 113 | !Finclude/net/cfg80211.h cfg80211_beacon_data |
| 114 | !Finclude/net/cfg80211.h cfg80211_ap_settings | 114 | !Finclude/net/cfg80211.h cfg80211_ap_settings |
| 115 | !Finclude/net/cfg80211.h station_parameters | 115 | !Finclude/net/cfg80211.h station_parameters |
| 116 | !Finclude/net/cfg80211.h station_info_flags | ||
| 117 | !Finclude/net/cfg80211.h rate_info_flags | 116 | !Finclude/net/cfg80211.h rate_info_flags |
| 118 | !Finclude/net/cfg80211.h rate_info | 117 | !Finclude/net/cfg80211.h rate_info |
| 119 | !Finclude/net/cfg80211.h station_info | 118 | !Finclude/net/cfg80211.h station_info |
| @@ -435,7 +434,6 @@ | |||
| 435 | <section id="ps-client"> | 434 | <section id="ps-client"> |
| 436 | <title>support for powersaving clients</title> | 435 | <title>support for powersaving clients</title> |
| 437 | !Pinclude/net/mac80211.h AP support for powersaving clients | 436 | !Pinclude/net/mac80211.h AP support for powersaving clients |
| 438 | </section> | ||
| 439 | !Finclude/net/mac80211.h ieee80211_get_buffered_bc | 437 | !Finclude/net/mac80211.h ieee80211_get_buffered_bc |
| 440 | !Finclude/net/mac80211.h ieee80211_beacon_get | 438 | !Finclude/net/mac80211.h ieee80211_beacon_get |
| 441 | !Finclude/net/mac80211.h ieee80211_sta_eosp | 439 | !Finclude/net/mac80211.h ieee80211_sta_eosp |
| @@ -444,6 +442,7 @@ | |||
| 444 | !Finclude/net/mac80211.h ieee80211_sta_ps_transition_ni | 442 | !Finclude/net/mac80211.h ieee80211_sta_ps_transition_ni |
| 445 | !Finclude/net/mac80211.h ieee80211_sta_set_buffered | 443 | !Finclude/net/mac80211.h ieee80211_sta_set_buffered |
| 446 | !Finclude/net/mac80211.h ieee80211_sta_block_awake | 444 | !Finclude/net/mac80211.h ieee80211_sta_block_awake |
| 445 | </section> | ||
| 447 | </chapter> | 446 | </chapter> |
| 448 | 447 | ||
| 449 | <chapter id="multi-iface"> | 448 | <chapter id="multi-iface"> |
| @@ -488,8 +487,8 @@ | |||
| 488 | <title>RX A-MPDU aggregation</title> | 487 | <title>RX A-MPDU aggregation</title> |
| 489 | !Pnet/mac80211/agg-rx.c RX A-MPDU aggregation | 488 | !Pnet/mac80211/agg-rx.c RX A-MPDU aggregation |
| 490 | !Cnet/mac80211/agg-rx.c | 489 | !Cnet/mac80211/agg-rx.c |
| 491 | </sect1> | ||
| 492 | !Finclude/net/mac80211.h ieee80211_ampdu_mlme_action | 490 | !Finclude/net/mac80211.h ieee80211_ampdu_mlme_action |
| 491 | </sect1> | ||
| 493 | </chapter> | 492 | </chapter> |
| 494 | 493 | ||
| 495 | <chapter id="smps"> | 494 | <chapter id="smps"> |
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile index 9c7d92d03f62..b6a6a2e0dd3b 100644 --- a/Documentation/DocBook/Makefile +++ b/Documentation/DocBook/Makefile | |||
| @@ -56,7 +56,7 @@ htmldocs: $(HTML) | |||
| 56 | 56 | ||
| 57 | MAN := $(patsubst %.xml, %.9, $(BOOKS)) | 57 | MAN := $(patsubst %.xml, %.9, $(BOOKS)) |
| 58 | mandocs: $(MAN) | 58 | mandocs: $(MAN) |
| 59 | $(if $(wildcard $(obj)/man/*.9),gzip -f $(obj)/man/*.9) | 59 | find $(obj)/man -name '*.9' | xargs gzip -f |
| 60 | 60 | ||
| 61 | installmandocs: mandocs | 61 | installmandocs: mandocs |
| 62 | mkdir -p /usr/local/man/man9/ | 62 | mkdir -p /usr/local/man/man9/ |
diff --git a/Documentation/DocBook/crypto-API.tmpl b/Documentation/DocBook/crypto-API.tmpl index c763d30f4893..04a8c24ead47 100644 --- a/Documentation/DocBook/crypto-API.tmpl +++ b/Documentation/DocBook/crypto-API.tmpl | |||
| @@ -111,7 +111,7 @@ | |||
| 111 | <para> | 111 | <para> |
| 112 | This specification is intended for consumers of the kernel crypto | 112 | This specification is intended for consumers of the kernel crypto |
| 113 | API as well as for developers implementing ciphers. This API | 113 | API as well as for developers implementing ciphers. This API |
| 114 | specification, however, does not discusses all API calls available | 114 | specification, however, does not discuss all API calls available |
| 115 | to data transformation implementations (i.e. implementations of | 115 | to data transformation implementations (i.e. implementations of |
| 116 | ciphers and other transformations (such as CRC or even compression | 116 | ciphers and other transformations (such as CRC or even compression |
| 117 | algorithms) that can register with the kernel crypto API). | 117 | algorithms) that can register with the kernel crypto API). |
diff --git a/Documentation/DocBook/device-drivers.tmpl b/Documentation/DocBook/device-drivers.tmpl index f2130586ef5d..faf09d4a0ea8 100644 --- a/Documentation/DocBook/device-drivers.tmpl +++ b/Documentation/DocBook/device-drivers.tmpl | |||
| @@ -190,23 +190,6 @@ X!Edrivers/pnp/system.c | |||
| 190 | !Idrivers/message/fusion/mptfc.c | 190 | !Idrivers/message/fusion/mptfc.c |
| 191 | !Idrivers/message/fusion/mptlan.c | 191 | !Idrivers/message/fusion/mptlan.c |
| 192 | </sect1> | 192 | </sect1> |
| 193 | <sect1><title>I2O message devices</title> | ||
| 194 | !Iinclude/linux/i2o.h | ||
| 195 | !Idrivers/message/i2o/core.h | ||
| 196 | !Edrivers/message/i2o/iop.c | ||
| 197 | !Idrivers/message/i2o/iop.c | ||
| 198 | !Idrivers/message/i2o/config-osm.c | ||
| 199 | !Edrivers/message/i2o/exec-osm.c | ||
| 200 | !Idrivers/message/i2o/exec-osm.c | ||
| 201 | !Idrivers/message/i2o/bus-osm.c | ||
| 202 | !Edrivers/message/i2o/device.c | ||
| 203 | !Idrivers/message/i2o/device.c | ||
| 204 | !Idrivers/message/i2o/driver.c | ||
| 205 | !Idrivers/message/i2o/pci.c | ||
| 206 | !Idrivers/message/i2o/i2o_block.c | ||
| 207 | !Idrivers/message/i2o/i2o_scsi.c | ||
| 208 | !Idrivers/message/i2o/i2o_proc.c | ||
| 209 | </sect1> | ||
| 210 | </chapter> | 193 | </chapter> |
| 211 | 194 | ||
| 212 | <chapter id="snddev"> | 195 | <chapter id="snddev"> |
diff --git a/Documentation/DocBook/drm.tmpl b/Documentation/DocBook/drm.tmpl index 4b592ffbafee..03f1985a4bd1 100644 --- a/Documentation/DocBook/drm.tmpl +++ b/Documentation/DocBook/drm.tmpl | |||
| @@ -239,6 +239,14 @@ | |||
| 239 | Driver supports dedicated render nodes. | 239 | Driver supports dedicated render nodes. |
| 240 | </para></listitem> | 240 | </para></listitem> |
| 241 | </varlistentry> | 241 | </varlistentry> |
| 242 | <varlistentry> | ||
| 243 | <term>DRIVER_ATOMIC</term> | ||
| 244 | <listitem><para> | ||
| 245 | Driver supports atomic properties. In this case the driver | ||
| 246 | must implement appropriate obj->atomic_get_property() vfuncs | ||
| 247 | for any modeset objects with driver specific properties. | ||
| 248 | </para></listitem> | ||
| 249 | </varlistentry> | ||
| 242 | </variablelist> | 250 | </variablelist> |
| 243 | </sect3> | 251 | </sect3> |
| 244 | <sect3> | 252 | <sect3> |
| @@ -1377,7 +1385,7 @@ int max_width, max_height;</synopsis> | |||
| 1377 | <itemizedlist> | 1385 | <itemizedlist> |
| 1378 | <listitem> | 1386 | <listitem> |
| 1379 | DRM_PLANE_TYPE_PRIMARY represents a "main" plane for a CRTC. Primary | 1387 | DRM_PLANE_TYPE_PRIMARY represents a "main" plane for a CRTC. Primary |
| 1380 | planes are the planes operated upon by by CRTC modesetting and flipping | 1388 | planes are the planes operated upon by CRTC modesetting and flipping |
| 1381 | operations described in <xref linkend="drm-kms-crtcops"/>. | 1389 | operations described in <xref linkend="drm-kms-crtcops"/>. |
| 1382 | </listitem> | 1390 | </listitem> |
| 1383 | <listitem> | 1391 | <listitem> |
| @@ -2362,6 +2370,7 @@ void intel_crt_init(struct drm_device *dev) | |||
| 2362 | </sect2> | 2370 | </sect2> |
| 2363 | <sect2> | 2371 | <sect2> |
| 2364 | <title>Modeset Helper Functions Reference</title> | 2372 | <title>Modeset Helper Functions Reference</title> |
| 2373 | !Iinclude/drm/drm_crtc_helper.h | ||
| 2365 | !Edrivers/gpu/drm/drm_crtc_helper.c | 2374 | !Edrivers/gpu/drm/drm_crtc_helper.c |
| 2366 | !Pdrivers/gpu/drm/drm_crtc_helper.c overview | 2375 | !Pdrivers/gpu/drm/drm_crtc_helper.c overview |
| 2367 | </sect2> | 2376 | </sect2> |
| @@ -2564,8 +2573,8 @@ void intel_crt_init(struct drm_device *dev) | |||
| 2564 | <td valign="top" >Description/Restrictions</td> | 2573 | <td valign="top" >Description/Restrictions</td> |
| 2565 | </tr> | 2574 | </tr> |
| 2566 | <tr> | 2575 | <tr> |
| 2567 | <td rowspan="25" valign="top" >DRM</td> | 2576 | <td rowspan="36" valign="top" >DRM</td> |
| 2568 | <td rowspan="4" valign="top" >Generic</td> | 2577 | <td rowspan="5" valign="top" >Connector</td> |
| 2569 | <td valign="top" >“EDID”</td> | 2578 | <td valign="top" >“EDID”</td> |
| 2570 | <td valign="top" >BLOB | IMMUTABLE</td> | 2579 | <td valign="top" >BLOB | IMMUTABLE</td> |
| 2571 | <td valign="top" >0</td> | 2580 | <td valign="top" >0</td> |
| @@ -2594,7 +2603,14 @@ void intel_crt_init(struct drm_device *dev) | |||
| 2594 | <td valign="top" >Contains tiling information for a connector.</td> | 2603 | <td valign="top" >Contains tiling information for a connector.</td> |
| 2595 | </tr> | 2604 | </tr> |
| 2596 | <tr> | 2605 | <tr> |
| 2597 | <td rowspan="1" valign="top" >Plane</td> | 2606 | <td valign="top" >“CRTC_ID”</td> |
| 2607 | <td valign="top" >OBJECT</td> | ||
| 2608 | <td valign="top" >DRM_MODE_OBJECT_CRTC</td> | ||
| 2609 | <td valign="top" >Connector</td> | ||
| 2610 | <td valign="top" >CRTC that connector is attached to (atomic)</td> | ||
| 2611 | </tr> | ||
| 2612 | <tr> | ||
| 2613 | <td rowspan="11" valign="top" >Plane</td> | ||
| 2598 | <td valign="top" >“type”</td> | 2614 | <td valign="top" >“type”</td> |
| 2599 | <td valign="top" >ENUM | IMMUTABLE</td> | 2615 | <td valign="top" >ENUM | IMMUTABLE</td> |
| 2600 | <td valign="top" >{ "Overlay", "Primary", "Cursor" }</td> | 2616 | <td valign="top" >{ "Overlay", "Primary", "Cursor" }</td> |
| @@ -2602,6 +2618,76 @@ void intel_crt_init(struct drm_device *dev) | |||
| 2602 | <td valign="top" >Plane type</td> | 2618 | <td valign="top" >Plane type</td> |
| 2603 | </tr> | 2619 | </tr> |
| 2604 | <tr> | 2620 | <tr> |
| 2621 | <td valign="top" >“SRC_X”</td> | ||
| 2622 | <td valign="top" >RANGE</td> | ||
| 2623 | <td valign="top" >Min=0, Max=UINT_MAX</td> | ||
| 2624 | <td valign="top" >Plane</td> | ||
| 2625 | <td valign="top" >Scanout source x coordinate in 16.16 fixed point (atomic)</td> | ||
| 2626 | </tr> | ||
| 2627 | <tr> | ||
| 2628 | <td valign="top" >“SRC_Y”</td> | ||
| 2629 | <td valign="top" >RANGE</td> | ||
| 2630 | <td valign="top" >Min=0, Max=UINT_MAX</td> | ||
| 2631 | <td valign="top" >Plane</td> | ||
| 2632 | <td valign="top" >Scanout source y coordinate in 16.16 fixed point (atomic)</td> | ||
| 2633 | </tr> | ||
| 2634 | <tr> | ||
| 2635 | <td valign="top" >“SRC_W”</td> | ||
| 2636 | <td valign="top" >RANGE</td> | ||
| 2637 | <td valign="top" >Min=0, Max=UINT_MAX</td> | ||
| 2638 | <td valign="top" >Plane</td> | ||
| 2639 | <td valign="top" >Scanout source width in 16.16 fixed point (atomic)</td> | ||
| 2640 | </tr> | ||
| 2641 | <tr> | ||
| 2642 | <td valign="top" >“SRC_H”</td> | ||
| 2643 | <td valign="top" >RANGE</td> | ||
| 2644 | <td valign="top" >Min=0, Max=UINT_MAX</td> | ||
| 2645 | <td valign="top" >Plane</td> | ||
| 2646 | <td valign="top" >Scanout source height in 16.16 fixed point (atomic)</td> | ||
| 2647 | </tr> | ||
| 2648 | <tr> | ||
| 2649 | <td valign="top" >“CRTC_X”</td> | ||
| 2650 | <td valign="top" >SIGNED_RANGE</td> | ||
| 2651 | <td valign="top" >Min=INT_MIN, Max=INT_MAX</td> | ||
| 2652 | <td valign="top" >Plane</td> | ||
| 2653 | <td valign="top" >Scanout CRTC (destination) x coordinate (atomic)</td> | ||
| 2654 | </tr> | ||
| 2655 | <tr> | ||
| 2656 | <td valign="top" >“CRTC_Y”</td> | ||
| 2657 | <td valign="top" >SIGNED_RANGE</td> | ||
| 2658 | <td valign="top" >Min=INT_MIN, Max=INT_MAX</td> | ||
| 2659 | <td valign="top" >Plane</td> | ||
| 2660 | <td valign="top" >Scanout CRTC (destination) y coordinate (atomic)</td> | ||
| 2661 | </tr> | ||
| 2662 | <tr> | ||
| 2663 | <td valign="top" >“CRTC_W”</td> | ||
| 2664 | <td valign="top" >RANGE</td> | ||
| 2665 | <td valign="top" >Min=0, Max=UINT_MAX</td> | ||
| 2666 | <td valign="top" >Plane</td> | ||
| 2667 | <td valign="top" >Scanout CRTC (destination) width (atomic)</td> | ||
| 2668 | </tr> | ||
| 2669 | <tr> | ||
| 2670 | <td valign="top" >“CRTC_H”</td> | ||
| 2671 | <td valign="top" >RANGE</td> | ||
| 2672 | <td valign="top" >Min=0, Max=UINT_MAX</td> | ||
| 2673 | <td valign="top" >Plane</td> | ||
| 2674 | <td valign="top" >Scanout CRTC (destination) height (atomic)</td> | ||
| 2675 | </tr> | ||
| 2676 | <tr> | ||
| 2677 | <td valign="top" >“FB_ID”</td> | ||
| 2678 | <td valign="top" >OBJECT</td> | ||
| 2679 | <td valign="top" >DRM_MODE_OBJECT_FB</td> | ||
| 2680 | <td valign="top" >Plane</td> | ||
| 2681 | <td valign="top" >Scanout framebuffer (atomic)</td> | ||
| 2682 | </tr> | ||
| 2683 | <tr> | ||
| 2684 | <td valign="top" >“CRTC_ID”</td> | ||
| 2685 | <td valign="top" >OBJECT</td> | ||
| 2686 | <td valign="top" >DRM_MODE_OBJECT_CRTC</td> | ||
| 2687 | <td valign="top" >Plane</td> | ||
| 2688 | <td valign="top" >CRTC that plane is attached to (atomic)</td> | ||
| 2689 | </tr> | ||
| 2690 | <tr> | ||
| 2605 | <td rowspan="2" valign="top" >DVI-I</td> | 2691 | <td rowspan="2" valign="top" >DVI-I</td> |
| 2606 | <td valign="top" >“subconnector”</td> | 2692 | <td valign="top" >“subconnector”</td> |
| 2607 | <td valign="top" >ENUM</td> | 2693 | <td valign="top" >ENUM</td> |
| @@ -3883,6 +3969,7 @@ int num_ioctls;</synopsis> | |||
| 3883 | <title>Runtime Power Management</title> | 3969 | <title>Runtime Power Management</title> |
| 3884 | !Pdrivers/gpu/drm/i915/intel_runtime_pm.c runtime pm | 3970 | !Pdrivers/gpu/drm/i915/intel_runtime_pm.c runtime pm |
| 3885 | !Idrivers/gpu/drm/i915/intel_runtime_pm.c | 3971 | !Idrivers/gpu/drm/i915/intel_runtime_pm.c |
| 3972 | !Idrivers/gpu/drm/i915/intel_uncore.c | ||
| 3886 | </sect2> | 3973 | </sect2> |
| 3887 | <sect2> | 3974 | <sect2> |
| 3888 | <title>Interrupt Handling</title> | 3975 | <title>Interrupt Handling</title> |
| @@ -3932,6 +4019,11 @@ int num_ioctls;</synopsis> | |||
| 3932 | </para> | 4019 | </para> |
| 3933 | </sect2> | 4020 | </sect2> |
| 3934 | <sect2> | 4021 | <sect2> |
| 4022 | <title>Atomic Plane Helpers</title> | ||
| 4023 | !Pdrivers/gpu/drm/i915/intel_atomic_plane.c atomic plane helpers | ||
| 4024 | !Idrivers/gpu/drm/i915/intel_atomic_plane.c | ||
| 4025 | </sect2> | ||
| 4026 | <sect2> | ||
| 3935 | <title>Output Probing</title> | 4027 | <title>Output Probing</title> |
| 3936 | <para> | 4028 | <para> |
| 3937 | This section covers output probing and related infrastructure like the | 4029 | This section covers output probing and related infrastructure like the |
| @@ -3951,6 +4043,11 @@ int num_ioctls;</synopsis> | |||
| 3951 | !Idrivers/gpu/drm/i915/intel_psr.c | 4043 | !Idrivers/gpu/drm/i915/intel_psr.c |
| 3952 | </sect2> | 4044 | </sect2> |
| 3953 | <sect2> | 4045 | <sect2> |
| 4046 | <title>Frame Buffer Compression (FBC)</title> | ||
| 4047 | !Pdrivers/gpu/drm/i915/intel_fbc.c Frame Buffer Compression (FBC) | ||
| 4048 | !Idrivers/gpu/drm/i915/intel_fbc.c | ||
| 4049 | </sect2> | ||
| 4050 | <sect2> | ||
| 3954 | <title>DPIO</title> | 4051 | <title>DPIO</title> |
| 3955 | !Pdrivers/gpu/drm/i915/i915_reg.h DPIO | 4052 | !Pdrivers/gpu/drm/i915/i915_reg.h DPIO |
| 3956 | <table id="dpiox2"> | 4053 | <table id="dpiox2"> |
| @@ -4054,10 +4151,31 @@ int num_ioctls;</synopsis> | |||
| 4054 | !Idrivers/gpu/drm/i915/i915_cmd_parser.c | 4151 | !Idrivers/gpu/drm/i915/i915_cmd_parser.c |
| 4055 | </sect2> | 4152 | </sect2> |
| 4056 | <sect2> | 4153 | <sect2> |
| 4154 | <title>Batchbuffer Pools</title> | ||
| 4155 | !Pdrivers/gpu/drm/i915/i915_gem_batch_pool.c batch pool | ||
| 4156 | !Idrivers/gpu/drm/i915/i915_gem_batch_pool.c | ||
| 4157 | </sect2> | ||
| 4158 | <sect2> | ||
| 4057 | <title>Logical Rings, Logical Ring Contexts and Execlists</title> | 4159 | <title>Logical Rings, Logical Ring Contexts and Execlists</title> |
| 4058 | !Pdrivers/gpu/drm/i915/intel_lrc.c Logical Rings, Logical Ring Contexts and Execlists | 4160 | !Pdrivers/gpu/drm/i915/intel_lrc.c Logical Rings, Logical Ring Contexts and Execlists |
| 4059 | !Idrivers/gpu/drm/i915/intel_lrc.c | 4161 | !Idrivers/gpu/drm/i915/intel_lrc.c |
| 4060 | </sect2> | 4162 | </sect2> |
| 4163 | <sect2> | ||
| 4164 | <title>Global GTT views</title> | ||
| 4165 | !Pdrivers/gpu/drm/i915/i915_gem_gtt.c Global GTT views | ||
| 4166 | !Idrivers/gpu/drm/i915/i915_gem_gtt.c | ||
| 4167 | </sect2> | ||
| 4168 | <sect2> | ||
| 4169 | <title>Buffer Object Eviction</title> | ||
| 4170 | <para> | ||
| 4171 | This section documents the interface function for evicting buffer | ||
| 4172 | objects to make space available in the virtual gpu address spaces. | ||
| 4173 | Note that this is mostly orthogonal to shrinking buffer objects | ||
| 4174 | caches, which has the goal to make main memory (shared with the gpu | ||
| 4175 | through the unified memory architecture) available. | ||
| 4176 | </para> | ||
| 4177 | !Idrivers/gpu/drm/i915/i915_gem_evict.c | ||
| 4178 | </sect2> | ||
| 4061 | </sect1> | 4179 | </sect1> |
| 4062 | 4180 | ||
| 4063 | <sect1> | 4181 | <sect1> |
diff --git a/Documentation/DocBook/kgdb.tmpl b/Documentation/DocBook/kgdb.tmpl index f77358f96930..f3abca7ec53d 100644 --- a/Documentation/DocBook/kgdb.tmpl +++ b/Documentation/DocBook/kgdb.tmpl | |||
| @@ -75,7 +75,7 @@ | |||
| 75 | a development machine and the other is the target machine. The | 75 | a development machine and the other is the target machine. The |
| 76 | kernel to be debugged runs on the target machine. The development | 76 | kernel to be debugged runs on the target machine. The development |
| 77 | machine runs an instance of gdb against the vmlinux file which | 77 | machine runs an instance of gdb against the vmlinux file which |
| 78 | contains the symbols (not boot image such as bzImage, zImage, | 78 | contains the symbols (not a boot image such as bzImage, zImage, |
| 79 | uImage...). In gdb the developer specifies the connection | 79 | uImage...). In gdb the developer specifies the connection |
| 80 | parameters and connects to kgdb. The type of connection a | 80 | parameters and connects to kgdb. The type of connection a |
| 81 | developer makes with gdb depends on the availability of kgdb I/O | 81 | developer makes with gdb depends on the availability of kgdb I/O |
| @@ -95,7 +95,7 @@ | |||
| 95 | <title>Kernel config options for kgdb</title> | 95 | <title>Kernel config options for kgdb</title> |
| 96 | <para> | 96 | <para> |
| 97 | To enable <symbol>CONFIG_KGDB</symbol> you should look under | 97 | To enable <symbol>CONFIG_KGDB</symbol> you should look under |
| 98 | "Kernel debugging" and select "KGDB: kernel debugger". | 98 | "Kernel hacking" / "Kernel debugging" and select "KGDB: kernel debugger". |
| 99 | </para> | 99 | </para> |
| 100 | <para> | 100 | <para> |
| 101 | While it is not a hard requirement that you have symbols in your | 101 | While it is not a hard requirement that you have symbols in your |
| @@ -105,7 +105,7 @@ | |||
| 105 | kernel with debug info" in the config menu. | 105 | kernel with debug info" in the config menu. |
| 106 | </para> | 106 | </para> |
| 107 | <para> | 107 | <para> |
| 108 | It is advised, but not required that you turn on the | 108 | It is advised, but not required, that you turn on the |
| 109 | <symbol>CONFIG_FRAME_POINTER</symbol> kernel option which is called "Compile the | 109 | <symbol>CONFIG_FRAME_POINTER</symbol> kernel option which is called "Compile the |
| 110 | kernel with frame pointers" in the config menu. This option | 110 | kernel with frame pointers" in the config menu. This option |
| 111 | inserts code to into the compiled executable which saves the frame | 111 | inserts code to into the compiled executable which saves the frame |
| @@ -181,7 +181,7 @@ | |||
| 181 | <para>This section describes the various runtime kernel | 181 | <para>This section describes the various runtime kernel |
| 182 | parameters that affect the configuration of the kernel debugger. | 182 | parameters that affect the configuration of the kernel debugger. |
| 183 | The following chapter covers using kdb and kgdb as well as | 183 | The following chapter covers using kdb and kgdb as well as |
| 184 | provides some examples of the configuration parameters.</para> | 184 | providing some examples of the configuration parameters.</para> |
| 185 | <sect1 id="kgdboc"> | 185 | <sect1 id="kgdboc"> |
| 186 | <title>Kernel parameter: kgdboc</title> | 186 | <title>Kernel parameter: kgdboc</title> |
| 187 | <para>The kgdboc driver was originally an abbreviation meant to | 187 | <para>The kgdboc driver was originally an abbreviation meant to |
| @@ -197,6 +197,7 @@ | |||
| 197 | may be configured as a kernel built-in or a kernel loadable module. | 197 | may be configured as a kernel built-in or a kernel loadable module. |
| 198 | You can only make use of <constant>kgdbwait</constant> and early | 198 | You can only make use of <constant>kgdbwait</constant> and early |
| 199 | debugging if you build kgdboc into the kernel as a built-in. | 199 | debugging if you build kgdboc into the kernel as a built-in. |
| 200 | </para> | ||
| 200 | <para>Optionally you can elect to activate kms (Kernel Mode | 201 | <para>Optionally you can elect to activate kms (Kernel Mode |
| 201 | Setting) integration. When you use kms with kgdboc and you have a | 202 | Setting) integration. When you use kms with kgdboc and you have a |
| 202 | video driver that has atomic mode setting hooks, it is possible to | 203 | video driver that has atomic mode setting hooks, it is possible to |
| @@ -206,7 +207,6 @@ | |||
| 206 | crashes or doing analysis of memory with kdb while allowing the | 207 | crashes or doing analysis of memory with kdb while allowing the |
| 207 | full graphics console applications to run. | 208 | full graphics console applications to run. |
| 208 | </para> | 209 | </para> |
| 209 | </para> | ||
| 210 | <sect2 id="kgdbocArgs"> | 210 | <sect2 id="kgdbocArgs"> |
| 211 | <title>kgdboc arguments</title> | 211 | <title>kgdboc arguments</title> |
| 212 | <para>Usage: <constant>kgdboc=[kms][[,]kbd][[,]serial_device][,baud]</constant></para> | 212 | <para>Usage: <constant>kgdboc=[kms][[,]kbd][[,]serial_device][,baud]</constant></para> |
| @@ -219,8 +219,8 @@ | |||
| 219 | <listitem><para>kbd = Keyboard</para></listitem> | 219 | <listitem><para>kbd = Keyboard</para></listitem> |
| 220 | </itemizedlist> | 220 | </itemizedlist> |
| 221 | </para> | 221 | </para> |
| 222 | <para>You can configure kgdboc to use the keyboard, and or a serial | 222 | <para>You can configure kgdboc to use the keyboard, and/or a serial |
| 223 | device depending on if you are using kdb and or kgdb, in one of the | 223 | device depending on if you are using kdb and/or kgdb, in one of the |
| 224 | following scenarios. The order listed above must be observed if | 224 | following scenarios. The order listed above must be observed if |
| 225 | you use any of the optional configurations together. Using kms + | 225 | you use any of the optional configurations together. Using kms + |
| 226 | only gdb is generally not a useful combination.</para> | 226 | only gdb is generally not a useful combination.</para> |
| @@ -261,11 +261,8 @@ | |||
| 261 | </sect3> | 261 | </sect3> |
| 262 | <sect3 id="kgdbocArgs3"> | 262 | <sect3 id="kgdbocArgs3"> |
| 263 | <title>More examples</title> | 263 | <title>More examples</title> |
| 264 | <para>You can configure kgdboc to use the keyboard, and or a serial | 264 | <para>You can configure kgdboc to use the keyboard, and/or a serial device |
| 265 | device depending on if you are using kdb and or kgdb, in one of the | 265 | depending on if you are using kdb and/or kgdb, in one of the |
| 266 | following scenarios.</para> | ||
| 267 | <para>You can configure kgdboc to use the keyboard, and or a serial device | ||
| 268 | depending on if you are using kdb and or kgdb, in one of the | ||
| 269 | following scenarios. | 266 | following scenarios. |
| 270 | <orderedlist> | 267 | <orderedlist> |
| 271 | <listitem><para>kdb and kgdb over only a serial port</para> | 268 | <listitem><para>kdb and kgdb over only a serial port</para> |
| @@ -287,7 +284,6 @@ | |||
| 287 | </listitem> | 284 | </listitem> |
| 288 | </orderedlist> | 285 | </orderedlist> |
| 289 | </para> | 286 | </para> |
| 290 | </sect3> | ||
| 291 | <para>NOTE: Kgdboc does not support interrupting the target via the | 287 | <para>NOTE: Kgdboc does not support interrupting the target via the |
| 292 | gdb remote protocol. You must manually send a sysrq-g unless you | 288 | gdb remote protocol. You must manually send a sysrq-g unless you |
| 293 | have a proxy that splits console output to a terminal program. | 289 | have a proxy that splits console output to a terminal program. |
| @@ -308,6 +304,7 @@ | |||
| 308 | as well as on the initial connect, or to use a debugger proxy that | 304 | as well as on the initial connect, or to use a debugger proxy that |
| 309 | allows an unmodified gdb to do the debugging. | 305 | allows an unmodified gdb to do the debugging. |
| 310 | </para> | 306 | </para> |
| 307 | </sect3> | ||
| 311 | </sect2> | 308 | </sect2> |
| 312 | </sect1> | 309 | </sect1> |
| 313 | <sect1 id="kgdbwait"> | 310 | <sect1 id="kgdbwait"> |
| @@ -315,7 +312,7 @@ | |||
| 315 | <para> | 312 | <para> |
| 316 | The Kernel command line option <constant>kgdbwait</constant> makes | 313 | The Kernel command line option <constant>kgdbwait</constant> makes |
| 317 | kgdb wait for a debugger connection during booting of a kernel. You | 314 | kgdb wait for a debugger connection during booting of a kernel. You |
| 318 | can only use this option you compiled a kgdb I/O driver into the | 315 | can only use this option if you compiled a kgdb I/O driver into the |
| 319 | kernel and you specified the I/O driver configuration as a kernel | 316 | kernel and you specified the I/O driver configuration as a kernel |
| 320 | command line option. The kgdbwait parameter should always follow the | 317 | command line option. The kgdbwait parameter should always follow the |
| 321 | configuration parameter for the kgdb I/O driver in the kernel | 318 | configuration parameter for the kgdb I/O driver in the kernel |
| @@ -353,12 +350,12 @@ | |||
| 353 | </para> | 350 | </para> |
| 354 | </listitem> | 351 | </listitem> |
| 355 | </orderedlist> | 352 | </orderedlist> |
| 353 | </para> | ||
| 356 | <para>IMPORTANT NOTE: You cannot use kgdboc + kgdbcon on a tty that is an | 354 | <para>IMPORTANT NOTE: You cannot use kgdboc + kgdbcon on a tty that is an |
| 357 | active system console. An example incorrect usage is <constant>console=ttyS0,115200 kgdboc=ttyS0 kgdbcon</constant> | 355 | active system console. An example of incorrect usage is <constant>console=ttyS0,115200 kgdboc=ttyS0 kgdbcon</constant> |
| 358 | </para> | 356 | </para> |
| 359 | <para>It is possible to use this option with kgdboc on a tty that is not a system console. | 357 | <para>It is possible to use this option with kgdboc on a tty that is not a system console. |
| 360 | </para> | 358 | </para> |
| 361 | </para> | ||
| 362 | </sect1> | 359 | </sect1> |
| 363 | <sect1 id="kgdbreboot"> | 360 | <sect1 id="kgdbreboot"> |
| 364 | <title>Run time parameter: kgdbreboot</title> | 361 | <title>Run time parameter: kgdbreboot</title> |
| @@ -386,12 +383,12 @@ | |||
| 386 | <title>Quick start for kdb on a serial port</title> | 383 | <title>Quick start for kdb on a serial port</title> |
| 387 | <para>This is a quick example of how to use kdb.</para> | 384 | <para>This is a quick example of how to use kdb.</para> |
| 388 | <para><orderedlist> | 385 | <para><orderedlist> |
| 389 | <listitem><para>Boot kernel with arguments: | 386 | <listitem><para>Configure kgdboc at boot using kernel parameters: |
| 390 | <itemizedlist> | 387 | <itemizedlist> |
| 391 | <listitem><para><constant>console=ttyS0,115200 kgdboc=ttyS0,115200</constant></para></listitem> | 388 | <listitem><para><constant>console=ttyS0,115200 kgdboc=ttyS0,115200</constant></para></listitem> |
| 392 | </itemizedlist></para> | 389 | </itemizedlist></para> |
| 393 | <para>OR</para> | 390 | <para>OR</para> |
| 394 | <para>Configure kgdboc after the kernel booted; assuming you are using a serial port console: | 391 | <para>Configure kgdboc after the kernel has booted; assuming you are using a serial port console: |
| 395 | <itemizedlist> | 392 | <itemizedlist> |
| 396 | <listitem><para><constant>echo ttyS0 > /sys/module/kgdboc/parameters/kgdboc</constant></para></listitem> | 393 | <listitem><para><constant>echo ttyS0 > /sys/module/kgdboc/parameters/kgdboc</constant></para></listitem> |
| 397 | </itemizedlist> | 394 | </itemizedlist> |
| @@ -442,12 +439,12 @@ | |||
| 442 | <title>Quick start for kdb using a keyboard connected console</title> | 439 | <title>Quick start for kdb using a keyboard connected console</title> |
| 443 | <para>This is a quick example of how to use kdb with a keyboard.</para> | 440 | <para>This is a quick example of how to use kdb with a keyboard.</para> |
| 444 | <para><orderedlist> | 441 | <para><orderedlist> |
| 445 | <listitem><para>Boot kernel with arguments: | 442 | <listitem><para>Configure kgdboc at boot using kernel parameters: |
| 446 | <itemizedlist> | 443 | <itemizedlist> |
| 447 | <listitem><para><constant>kgdboc=kbd</constant></para></listitem> | 444 | <listitem><para><constant>kgdboc=kbd</constant></para></listitem> |
| 448 | </itemizedlist></para> | 445 | </itemizedlist></para> |
| 449 | <para>OR</para> | 446 | <para>OR</para> |
| 450 | <para>Configure kgdboc after the kernel booted: | 447 | <para>Configure kgdboc after the kernel has booted: |
| 451 | <itemizedlist> | 448 | <itemizedlist> |
| 452 | <listitem><para><constant>echo kbd > /sys/module/kgdboc/parameters/kgdboc</constant></para></listitem> | 449 | <listitem><para><constant>echo kbd > /sys/module/kgdboc/parameters/kgdboc</constant></para></listitem> |
| 453 | </itemizedlist> | 450 | </itemizedlist> |
| @@ -501,12 +498,12 @@ | |||
| 501 | <title>Connecting with gdb to a serial port</title> | 498 | <title>Connecting with gdb to a serial port</title> |
| 502 | <orderedlist> | 499 | <orderedlist> |
| 503 | <listitem><para>Configure kgdboc</para> | 500 | <listitem><para>Configure kgdboc</para> |
| 504 | <para>Boot kernel with arguments: | 501 | <para>Configure kgdboc at boot using kernel parameters: |
| 505 | <itemizedlist> | 502 | <itemizedlist> |
| 506 | <listitem><para><constant>kgdboc=ttyS0,115200</constant></para></listitem> | 503 | <listitem><para><constant>kgdboc=ttyS0,115200</constant></para></listitem> |
| 507 | </itemizedlist></para> | 504 | </itemizedlist></para> |
| 508 | <para>OR</para> | 505 | <para>OR</para> |
| 509 | <para>Configure kgdboc after the kernel booted: | 506 | <para>Configure kgdboc after the kernel has booted: |
| 510 | <itemizedlist> | 507 | <itemizedlist> |
| 511 | <listitem><para><constant>echo ttyS0 > /sys/module/kgdboc/parameters/kgdboc</constant></para></listitem> | 508 | <listitem><para><constant>echo ttyS0 > /sys/module/kgdboc/parameters/kgdboc</constant></para></listitem> |
| 512 | </itemizedlist></para> | 509 | </itemizedlist></para> |
| @@ -536,7 +533,7 @@ | |||
| 536 | </para> | 533 | </para> |
| 537 | </listitem> | 534 | </listitem> |
| 538 | <listitem> | 535 | <listitem> |
| 539 | <para>Connect from from gdb</para> | 536 | <para>Connect from gdb</para> |
| 540 | <para> | 537 | <para> |
| 541 | Example (using a directly connected port): | 538 | Example (using a directly connected port): |
| 542 | </para> | 539 | </para> |
| @@ -584,7 +581,7 @@ | |||
| 584 | <para> | 581 | <para> |
| 585 | There are two ways to switch from kgdb to kdb: you can use gdb to | 582 | There are two ways to switch from kgdb to kdb: you can use gdb to |
| 586 | issue a maintenance packet, or you can blindly type the command $3#33. | 583 | issue a maintenance packet, or you can blindly type the command $3#33. |
| 587 | Whenever kernel debugger stops in kgdb mode it will print the | 584 | Whenever the kernel debugger stops in kgdb mode it will print the |
| 588 | message <constant>KGDB or $3#33 for KDB</constant>. It is important | 585 | message <constant>KGDB or $3#33 for KDB</constant>. It is important |
| 589 | to note that you have to type the sequence correctly in one pass. | 586 | to note that you have to type the sequence correctly in one pass. |
| 590 | You cannot type a backspace or delete because kgdb will interpret | 587 | You cannot type a backspace or delete because kgdb will interpret |
| @@ -704,7 +701,7 @@ Task Addr Pid Parent [*] cpu State Thread Command | |||
| 704 | <listitem><para>Registration and unregistration of architecture specific trap hooks</para></listitem> | 701 | <listitem><para>Registration and unregistration of architecture specific trap hooks</para></listitem> |
| 705 | <listitem><para>Any special exception handling and cleanup</para></listitem> | 702 | <listitem><para>Any special exception handling and cleanup</para></listitem> |
| 706 | <listitem><para>NMI exception handling and cleanup</para></listitem> | 703 | <listitem><para>NMI exception handling and cleanup</para></listitem> |
| 707 | <listitem><para>(optional)HW breakpoints</para></listitem> | 704 | <listitem><para>(optional) HW breakpoints</para></listitem> |
| 708 | </itemizedlist> | 705 | </itemizedlist> |
| 709 | </para> | 706 | </para> |
| 710 | </listitem> | 707 | </listitem> |
| @@ -760,7 +757,7 @@ Task Addr Pid Parent [*] cpu State Thread Command | |||
| 760 | a kgdb I/O driver for characters when it needs input. The I/O | 757 | a kgdb I/O driver for characters when it needs input. The I/O |
| 761 | driver is expected to return immediately if there is no data | 758 | driver is expected to return immediately if there is no data |
| 762 | available. Doing so allows for the future possibility to touch | 759 | available. Doing so allows for the future possibility to touch |
| 763 | watch dog hardware in such a way as to have a target system not | 760 | watchdog hardware in such a way as to have a target system not |
| 764 | reset when these are enabled. | 761 | reset when these are enabled. |
| 765 | </para> | 762 | </para> |
| 766 | </listitem> | 763 | </listitem> |
| @@ -779,21 +776,25 @@ Task Addr Pid Parent [*] cpu State Thread Command | |||
| 779 | their <asm/kgdb.h> file. These are: | 776 | their <asm/kgdb.h> file. These are: |
| 780 | <itemizedlist> | 777 | <itemizedlist> |
| 781 | <listitem> | 778 | <listitem> |
| 782 | <para> | 779 | <para> |
| 783 | NUMREGBYTES: The size in bytes of all of the registers, so | 780 | NUMREGBYTES: The size in bytes of all of the registers, so |
| 784 | that we can ensure they will all fit into a packet. | 781 | that we can ensure they will all fit into a packet. |
| 785 | </para> | 782 | </para> |
| 786 | <para> | 783 | </listitem> |
| 787 | BUFMAX: The size in bytes of the buffer GDB will read into. | 784 | <listitem> |
| 788 | This must be larger than NUMREGBYTES. | 785 | <para> |
| 789 | </para> | 786 | BUFMAX: The size in bytes of the buffer GDB will read into. |
| 790 | <para> | 787 | This must be larger than NUMREGBYTES. |
| 791 | CACHE_FLUSH_IS_SAFE: Set to 1 if it is always safe to call | 788 | </para> |
| 792 | flush_cache_range or flush_icache_range. On some architectures, | 789 | </listitem> |
| 793 | these functions may not be safe to call on SMP since we keep other | 790 | <listitem> |
| 794 | CPUs in a holding pattern. | 791 | <para> |
| 795 | </para> | 792 | CACHE_FLUSH_IS_SAFE: Set to 1 if it is always safe to call |
| 796 | </listitem> | 793 | flush_cache_range or flush_icache_range. On some architectures, |
| 794 | these functions may not be safe to call on SMP since we keep other | ||
| 795 | CPUs in a holding pattern. | ||
| 796 | </para> | ||
| 797 | </listitem> | ||
| 797 | </itemizedlist> | 798 | </itemizedlist> |
| 798 | </para> | 799 | </para> |
| 799 | <para> | 800 | <para> |
| @@ -812,8 +813,8 @@ Task Addr Pid Parent [*] cpu State Thread Command | |||
| 812 | <para> | 813 | <para> |
| 813 | The kgdboc driver is actually a very thin driver that relies on the | 814 | The kgdboc driver is actually a very thin driver that relies on the |
| 814 | underlying low level to the hardware driver having "polling hooks" | 815 | underlying low level to the hardware driver having "polling hooks" |
| 815 | which the to which the tty driver is attached. In the initial | 816 | to which the tty driver is attached. In the initial |
| 816 | implementation of kgdboc it the serial_core was changed to expose a | 817 | implementation of kgdboc the serial_core was changed to expose a |
| 817 | low level UART hook for doing polled mode reading and writing of a | 818 | low level UART hook for doing polled mode reading and writing of a |
| 818 | single character while in an atomic context. When kgdb makes an I/O | 819 | single character while in an atomic context. When kgdb makes an I/O |
| 819 | request to the debugger, kgdboc invokes a callback in the serial | 820 | request to the debugger, kgdboc invokes a callback in the serial |
diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml index e013e4bf244c..4e9462f1ab4c 100644 --- a/Documentation/DocBook/media/v4l/controls.xml +++ b/Documentation/DocBook/media/v4l/controls.xml | |||
| @@ -2692,12 +2692,11 @@ in the S5P family of SoCs by Samsung. | |||
| 2692 | <row><entry></entry></row> | 2692 | <row><entry></entry></row> |
| 2693 | <row> | 2693 | <row> |
| 2694 | <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE</constant> </entry> | 2694 | <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE</constant> </entry> |
| 2695 | <entry>integer</entry> | 2695 | <entry>boolean</entry> |
| 2696 | </row><row><entry spanname="descr">If the display delay is enabled then the decoder has to return a | 2696 | </row><row><entry spanname="descr">If the display delay is enabled then the decoder is forced to return a |
| 2697 | CAPTURE buffer after processing a certain number of OUTPUT buffers. If this number is low, then it may result in | 2697 | CAPTURE buffer (decoded frame) after processing a certain number of OUTPUT buffers. The delay can be set through |
| 2698 | buffers not being dequeued in display order. In addition hardware may still use those buffers as reference, thus | 2698 | <constant>V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY</constant>. This feature can be used for example |
| 2699 | application should not write to those buffers. This feature can be used for example for generating thumbnails of videos. | 2699 | for generating thumbnails of videos. Applicable to the H264 decoder. |
| 2700 | Applicable to the H264 decoder. | ||
| 2701 | </entry> | 2700 | </entry> |
| 2702 | </row> | 2701 | </row> |
| 2703 | <row><entry></entry></row> | 2702 | <row><entry></entry></row> |
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml index c1c62a9acc2a..f34d03ebda3a 100644 --- a/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml | |||
| @@ -17,7 +17,7 @@ | |||
| 17 | <refsect1> | 17 | <refsect1> |
| 18 | <title>Description</title> | 18 | <title>Description</title> |
| 19 | 19 | ||
| 20 | <para>The following four pixel formats are raw sRGB / Bayer formats with | 20 | <para>These four pixel formats are raw sRGB / Bayer formats with |
| 21 | 10 bits per colour. Each colour component is stored in a 16-bit word, with 6 | 21 | 10 bits per colour. Each colour component is stored in a 16-bit word, with 6 |
| 22 | unused high bits filled with zeros. Each n-pixel row contains n/2 green samples | 22 | unused high bits filled with zeros. Each n-pixel row contains n/2 green samples |
| 23 | and n/2 blue or red samples, with alternating red and blue rows. Bytes are | 23 | and n/2 blue or red samples, with alternating red and blue rows. Bytes are |
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb10alaw8.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb10alaw8.xml index 29acc2098cc2..d2e5845e57fb 100644 --- a/Documentation/DocBook/media/v4l/pixfmt-srggb10alaw8.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-srggb10alaw8.xml | |||
| @@ -25,7 +25,7 @@ | |||
| 25 | </refnamediv> | 25 | </refnamediv> |
| 26 | <refsect1> | 26 | <refsect1> |
| 27 | <title>Description</title> | 27 | <title>Description</title> |
| 28 | <para>The following four pixel formats are raw sRGB / Bayer | 28 | <para>These four pixel formats are raw sRGB / Bayer |
| 29 | formats with 10 bits per color compressed to 8 bits each, | 29 | formats with 10 bits per color compressed to 8 bits each, |
| 30 | using the A-LAW algorithm. Each color component consumes 8 | 30 | using the A-LAW algorithm. Each color component consumes 8 |
| 31 | bits of memory. In other respects this format is similar to | 31 | bits of memory. In other respects this format is similar to |
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml index 2d3f0b1aefe0..bde89878c5c5 100644 --- a/Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml | |||
| @@ -18,7 +18,7 @@ | |||
| 18 | <refsect1> | 18 | <refsect1> |
| 19 | <title>Description</title> | 19 | <title>Description</title> |
| 20 | 20 | ||
| 21 | <para>The following four pixel formats are raw sRGB / Bayer formats | 21 | <para>These four pixel formats are raw sRGB / Bayer formats |
| 22 | with 10 bits per colour compressed to 8 bits each, using DPCM | 22 | with 10 bits per colour compressed to 8 bits each, using DPCM |
| 23 | compression. DPCM, differential pulse-code modulation, is lossy. | 23 | compression. DPCM, differential pulse-code modulation, is lossy. |
| 24 | Each colour component consumes 8 bits of memory. In other respects | 24 | Each colour component consumes 8 bits of memory. In other respects |
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb10p.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb10p.xml new file mode 100644 index 000000000000..30aa63581fe3 --- /dev/null +++ b/Documentation/DocBook/media/v4l/pixfmt-srggb10p.xml | |||
| @@ -0,0 +1,99 @@ | |||
| 1 | <refentry id="pixfmt-srggb10p"> | ||
| 2 | <refmeta> | ||
| 3 | <refentrytitle>V4L2_PIX_FMT_SRGGB10P ('pRAA'), | ||
| 4 | V4L2_PIX_FMT_SGRBG10P ('pgAA'), | ||
| 5 | V4L2_PIX_FMT_SGBRG10P ('pGAA'), | ||
| 6 | V4L2_PIX_FMT_SBGGR10P ('pBAA'), | ||
| 7 | </refentrytitle> | ||
| 8 | &manvol; | ||
| 9 | </refmeta> | ||
| 10 | <refnamediv> | ||
| 11 | <refname id="V4L2-PIX-FMT-SRGGB10P"><constant>V4L2_PIX_FMT_SRGGB10P</constant></refname> | ||
| 12 | <refname id="V4L2-PIX-FMT-SGRBG10P"><constant>V4L2_PIX_FMT_SGRBG10P</constant></refname> | ||
| 13 | <refname id="V4L2-PIX-FMT-SGBRG10P"><constant>V4L2_PIX_FMT_SGBRG10P</constant></refname> | ||
| 14 | <refname id="V4L2-PIX-FMT-SBGGR10P"><constant>V4L2_PIX_FMT_SBGGR10P</constant></refname> | ||
| 15 | <refpurpose>10-bit packed Bayer formats</refpurpose> | ||
| 16 | </refnamediv> | ||
| 17 | <refsect1> | ||
| 18 | <title>Description</title> | ||
| 19 | |||
| 20 | <para>These four pixel formats are packed raw sRGB / | ||
| 21 | Bayer formats with 10 bits per colour. Every four consecutive | ||
| 22 | colour components are packed into 5 bytes. Each of the first 4 | ||
| 23 | bytes contain the 8 high order bits of the pixels, and the | ||
| 24 | fifth byte contains the two least significants bits of each | ||
| 25 | pixel, in the same order.</para> | ||
| 26 | |||
| 27 | <para>Each n-pixel row contains n/2 green samples and n/2 blue | ||
| 28 | or red samples, with alternating green-red and green-blue | ||
| 29 | rows. They are conventionally described as GRGR... BGBG..., | ||
| 30 | RGRG... GBGB..., etc. Below is an example of one of these | ||
| 31 | formats:</para> | ||
| 32 | |||
| 33 | <example> | ||
| 34 | <title><constant>V4L2_PIX_FMT_SBGGR10P</constant> 4 × 4 | ||
| 35 | pixel image</title> | ||
| 36 | |||
| 37 | <formalpara> | ||
| 38 | <title>Byte Order.</title> | ||
| 39 | <para>Each cell is one byte. | ||
| 40 | <informaltable frame="topbot" colsep="1" rowsep="1"> | ||
| 41 | <tgroup cols="5" align="center" border="1"> | ||
| 42 | <colspec align="left" colwidth="2*" /> | ||
| 43 | <tbody valign="top"> | ||
| 44 | <row> | ||
| 45 | <entry>start + 0:</entry> | ||
| 46 | <entry>B<subscript>00high</subscript></entry> | ||
| 47 | <entry>G<subscript>01high</subscript></entry> | ||
| 48 | <entry>B<subscript>02high</subscript></entry> | ||
| 49 | <entry>G<subscript>03high</subscript></entry> | ||
| 50 | <entry>B<subscript>00low</subscript>(bits 7--6) | ||
| 51 | G<subscript>01low</subscript>(bits 5--4) | ||
| 52 | B<subscript>02low</subscript>(bits 3--2) | ||
| 53 | G<subscript>03low</subscript>(bits 1--0) | ||
| 54 | </entry> | ||
| 55 | </row> | ||
| 56 | <row> | ||
| 57 | <entry>start + 5:</entry> | ||
| 58 | <entry>G<subscript>10high</subscript></entry> | ||
| 59 | <entry>R<subscript>11high</subscript></entry> | ||
| 60 | <entry>G<subscript>12high</subscript></entry> | ||
| 61 | <entry>R<subscript>13high</subscript></entry> | ||
| 62 | <entry>G<subscript>10low</subscript>(bits 7--6) | ||
| 63 | R<subscript>11low</subscript>(bits 5--4) | ||
| 64 | G<subscript>12low</subscript>(bits 3--2) | ||
| 65 | R<subscript>13low</subscript>(bits 1--0) | ||
| 66 | </entry> | ||
| 67 | </row> | ||
| 68 | <row> | ||
| 69 | <entry>start + 10:</entry> | ||
| 70 | <entry>B<subscript>20high</subscript></entry> | ||
| 71 | <entry>G<subscript>21high</subscript></entry> | ||
| 72 | <entry>B<subscript>22high</subscript></entry> | ||
| 73 | <entry>G<subscript>23high</subscript></entry> | ||
| 74 | <entry>B<subscript>20low</subscript>(bits 7--6) | ||
| 75 | G<subscript>21low</subscript>(bits 5--4) | ||
| 76 | B<subscript>22low</subscript>(bits 3--2) | ||
| 77 | G<subscript>23low</subscript>(bits 1--0) | ||
| 78 | </entry> | ||
| 79 | </row> | ||
| 80 | <row> | ||
| 81 | <entry>start + 15:</entry> | ||
| 82 | <entry>G<subscript>30high</subscript></entry> | ||
| 83 | <entry>R<subscript>31high</subscript></entry> | ||
| 84 | <entry>G<subscript>32high</subscript></entry> | ||
| 85 | <entry>R<subscript>33high</subscript></entry> | ||
| 86 | <entry>G<subscript>30low</subscript>(bits 7--6) | ||
| 87 | R<subscript>31low</subscript>(bits 5--4) | ||
| 88 | G<subscript>32low</subscript>(bits 3--2) | ||
| 89 | R<subscript>33low</subscript>(bits 1--0) | ||
| 90 | </entry> | ||
| 91 | </row> | ||
| 92 | </tbody> | ||
| 93 | </tgroup> | ||
| 94 | </informaltable> | ||
| 95 | </para> | ||
| 96 | </formalpara> | ||
| 97 | </example> | ||
| 98 | </refsect1> | ||
| 99 | </refentry> | ||
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb12.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb12.xml index 96947f17fca1..0c8e4adf417f 100644 --- a/Documentation/DocBook/media/v4l/pixfmt-srggb12.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-srggb12.xml | |||
| @@ -17,7 +17,7 @@ | |||
| 17 | <refsect1> | 17 | <refsect1> |
| 18 | <title>Description</title> | 18 | <title>Description</title> |
| 19 | 19 | ||
| 20 | <para>The following four pixel formats are raw sRGB / Bayer formats with | 20 | <para>These four pixel formats are raw sRGB / Bayer formats with |
| 21 | 12 bits per colour. Each colour component is stored in a 16-bit word, with 4 | 21 | 12 bits per colour. Each colour component is stored in a 16-bit word, with 4 |
| 22 | unused high bits filled with zeros. Each n-pixel row contains n/2 green samples | 22 | unused high bits filled with zeros. Each n-pixel row contains n/2 green samples |
| 23 | and n/2 blue or red samples, with alternating red and blue rows. Bytes are | 23 | and n/2 blue or red samples, with alternating red and blue rows. Bytes are |
diff --git a/Documentation/DocBook/media/v4l/pixfmt.xml b/Documentation/DocBook/media/v4l/pixfmt.xml index d5eca4b8f74b..5e0352c50324 100644 --- a/Documentation/DocBook/media/v4l/pixfmt.xml +++ b/Documentation/DocBook/media/v4l/pixfmt.xml | |||
| @@ -1405,6 +1405,7 @@ access the palette, this must be done with ioctls of the Linux framebuffer API.< | |||
| 1405 | &sub-srggb8; | 1405 | &sub-srggb8; |
| 1406 | &sub-sbggr16; | 1406 | &sub-sbggr16; |
| 1407 | &sub-srggb10; | 1407 | &sub-srggb10; |
| 1408 | &sub-srggb10p; | ||
| 1408 | &sub-srggb10alaw8; | 1409 | &sub-srggb10alaw8; |
| 1409 | &sub-srggb10dpcm8; | 1410 | &sub-srggb10dpcm8; |
| 1410 | &sub-srggb12; | 1411 | &sub-srggb12; |
diff --git a/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml b/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml index 28a8c1e1c705..a2017bfcaed2 100644 --- a/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml +++ b/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml | |||
| @@ -212,11 +212,3 @@ standards set in the <structfield>standards</structfield> field. | |||
| 212 | &return-value; | 212 | &return-value; |
| 213 | </refsect1> | 213 | </refsect1> |
| 214 | </refentry> | 214 | </refentry> |
| 215 | |||
| 216 | <!-- | ||
| 217 | Local Variables: | ||
| 218 | mode: sgml | ||
| 219 | sgml-parent-document: "v4l2.sgml" | ||
| 220 | indent-tabs-mode: nil | ||
| 221 | End: | ||
| 222 | --> | ||
diff --git a/Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml b/Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml index b9fdfeacdbcb..6e3cadd4e1f9 100644 --- a/Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml +++ b/Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml | |||
| @@ -131,11 +131,3 @@ is out of bounds or the <structfield>pad</structfield> number is invalid.</para> | |||
| 131 | </variablelist> | 131 | </variablelist> |
| 132 | </refsect1> | 132 | </refsect1> |
| 133 | </refentry> | 133 | </refentry> |
| 134 | |||
| 135 | <!-- | ||
| 136 | Local Variables: | ||
| 137 | mode: sgml | ||
| 138 | sgml-parent-document: "v4l2.sgml" | ||
| 139 | indent-tabs-mode: nil | ||
| 140 | End: | ||
| 141 | --> | ||
diff --git a/Documentation/DocBook/uio-howto.tmpl b/Documentation/DocBook/uio-howto.tmpl index 1fdc246e4256..cd0e452dfed5 100644 --- a/Documentation/DocBook/uio-howto.tmpl +++ b/Documentation/DocBook/uio-howto.tmpl | |||
| @@ -719,7 +719,7 @@ framework to set up sysfs files for this region. Simply leave it alone. | |||
| 719 | </para> | 719 | </para> |
| 720 | </sect1> | 720 | </sect1> |
| 721 | 721 | ||
| 722 | <sect1 id="using uio_dmem_genirq"> | 722 | <sect1 id="using-uio_dmem_genirq"> |
| 723 | <title>Using uio_dmem_genirq for platform devices</title> | 723 | <title>Using uio_dmem_genirq for platform devices</title> |
| 724 | <para> | 724 | <para> |
| 725 | In addition to statically allocated memory ranges, they may also be | 725 | In addition to statically allocated memory ranges, they may also be |
| @@ -746,16 +746,16 @@ framework to set up sysfs files for this region. Simply leave it alone. | |||
| 746 | following elements: | 746 | following elements: |
| 747 | </para> | 747 | </para> |
| 748 | <itemizedlist> | 748 | <itemizedlist> |
| 749 | <listitem><varname>struct uio_info uioinfo</varname>: The same | 749 | <listitem><para><varname>struct uio_info uioinfo</varname>: The same |
| 750 | structure used as the <varname>uio_pdrv_genirq</varname> platform | 750 | structure used as the <varname>uio_pdrv_genirq</varname> platform |
| 751 | data</listitem> | 751 | data</para></listitem> |
| 752 | <listitem><varname>unsigned int *dynamic_region_sizes</varname>: | 752 | <listitem><para><varname>unsigned int *dynamic_region_sizes</varname>: |
| 753 | Pointer to list of sizes of dynamic memory regions to be mapped into | 753 | Pointer to list of sizes of dynamic memory regions to be mapped into |
| 754 | user space. | 754 | user space. |
| 755 | </listitem> | 755 | </para></listitem> |
| 756 | <listitem><varname>unsigned int num_dynamic_regions</varname>: | 756 | <listitem><para><varname>unsigned int num_dynamic_regions</varname>: |
| 757 | Number of elements in <varname>dynamic_region_sizes</varname> array. | 757 | Number of elements in <varname>dynamic_region_sizes</varname> array. |
| 758 | </listitem> | 758 | </para></listitem> |
| 759 | </itemizedlist> | 759 | </itemizedlist> |
| 760 | <para> | 760 | <para> |
| 761 | The dynamic regions defined in the platform data will be appended to | 761 | The dynamic regions defined in the platform data will be appended to |
diff --git a/Documentation/RCU/stallwarn.txt b/Documentation/RCU/stallwarn.txt index ed186a902d31..b57c0c1cdac6 100644 --- a/Documentation/RCU/stallwarn.txt +++ b/Documentation/RCU/stallwarn.txt | |||
| @@ -15,7 +15,7 @@ CONFIG_RCU_CPU_STALL_TIMEOUT | |||
| 15 | 21 seconds. | 15 | 21 seconds. |
| 16 | 16 | ||
| 17 | This configuration parameter may be changed at runtime via the | 17 | This configuration parameter may be changed at runtime via the |
| 18 | /sys/module/rcutree/parameters/rcu_cpu_stall_timeout, however | 18 | /sys/module/rcupdate/parameters/rcu_cpu_stall_timeout, however |
| 19 | this parameter is checked only at the beginning of a cycle. | 19 | this parameter is checked only at the beginning of a cycle. |
| 20 | So if you are 10 seconds into a 40-second stall, setting this | 20 | So if you are 10 seconds into a 40-second stall, setting this |
| 21 | sysfs parameter to (say) five will shorten the timeout for the | 21 | sysfs parameter to (say) five will shorten the timeout for the |
| @@ -152,6 +152,15 @@ no non-lazy callbacks ("." is printed otherwise, as shown above) and | |||
| 152 | "D" indicates that dyntick-idle processing is enabled ("." is printed | 152 | "D" indicates that dyntick-idle processing is enabled ("." is printed |
| 153 | otherwise, for example, if disabled via the "nohz=" kernel boot parameter). | 153 | otherwise, for example, if disabled via the "nohz=" kernel boot parameter). |
| 154 | 154 | ||
| 155 | If the relevant grace-period kthread has been unable to run prior to | ||
| 156 | the stall warning, the following additional line is printed: | ||
| 157 | |||
| 158 | rcu_preempt kthread starved for 2023 jiffies! | ||
| 159 | |||
| 160 | Starving the grace-period kthreads of CPU time can of course result in | ||
| 161 | RCU CPU stall warnings even when all CPUs and tasks have passed through | ||
| 162 | the required quiescent states. | ||
| 163 | |||
| 155 | 164 | ||
| 156 | Multiple Warnings From One Stall | 165 | Multiple Warnings From One Stall |
| 157 | 166 | ||
| @@ -187,6 +196,11 @@ o For !CONFIG_PREEMPT kernels, a CPU looping anywhere in the | |||
| 187 | behavior, you might need to replace some of the cond_resched() | 196 | behavior, you might need to replace some of the cond_resched() |
| 188 | calls with calls to cond_resched_rcu_qs(). | 197 | calls with calls to cond_resched_rcu_qs(). |
| 189 | 198 | ||
| 199 | o Anything that prevents RCU's grace-period kthreads from running. | ||
| 200 | This can result in the "All QSes seen" console-log message. | ||
| 201 | This message will include information on when the kthread last | ||
| 202 | ran and how often it should be expected to run. | ||
| 203 | |||
| 190 | o A CPU-bound real-time task in a CONFIG_PREEMPT kernel, which might | 204 | o A CPU-bound real-time task in a CONFIG_PREEMPT kernel, which might |
| 191 | happen to preempt a low-priority task in the middle of an RCU | 205 | happen to preempt a low-priority task in the middle of an RCU |
| 192 | read-side critical section. This is especially damaging if | 206 | read-side critical section. This is especially damaging if |
diff --git a/Documentation/RCU/trace.txt b/Documentation/RCU/trace.txt index b63b9bb3bc0c..08651da15448 100644 --- a/Documentation/RCU/trace.txt +++ b/Documentation/RCU/trace.txt | |||
| @@ -56,14 +56,14 @@ rcuboost: | |||
| 56 | 56 | ||
| 57 | The output of "cat rcu/rcu_preempt/rcudata" looks as follows: | 57 | The output of "cat rcu/rcu_preempt/rcudata" looks as follows: |
| 58 | 58 | ||
| 59 | 0!c=30455 g=30456 pq=1 qp=1 dt=126535/140000000000000/0 df=2002 of=4 ql=0/0 qs=N... b=10 ci=74572 nci=0 co=1131 ca=716 | 59 | 0!c=30455 g=30456 pq=1/0 qp=1 dt=126535/140000000000000/0 df=2002 of=4 ql=0/0 qs=N... b=10 ci=74572 nci=0 co=1131 ca=716 |
| 60 | 1!c=30719 g=30720 pq=1 qp=0 dt=132007/140000000000000/0 df=1874 of=10 ql=0/0 qs=N... b=10 ci=123209 nci=0 co=685 ca=982 | 60 | 1!c=30719 g=30720 pq=1/0 qp=0 dt=132007/140000000000000/0 df=1874 of=10 ql=0/0 qs=N... b=10 ci=123209 nci=0 co=685 ca=982 |
| 61 | 2!c=30150 g=30151 pq=1 qp=1 dt=138537/140000000000000/0 df=1707 of=8 ql=0/0 qs=N... b=10 ci=80132 nci=0 co=1328 ca=1458 | 61 | 2!c=30150 g=30151 pq=1/1 qp=1 dt=138537/140000000000000/0 df=1707 of=8 ql=0/0 qs=N... b=10 ci=80132 nci=0 co=1328 ca=1458 |
| 62 | 3 c=31249 g=31250 pq=1 qp=0 dt=107255/140000000000000/0 df=1749 of=6 ql=0/450 qs=NRW. b=10 ci=151700 nci=0 co=509 ca=622 | 62 | 3 c=31249 g=31250 pq=1/1 qp=0 dt=107255/140000000000000/0 df=1749 of=6 ql=0/450 qs=NRW. b=10 ci=151700 nci=0 co=509 ca=622 |
| 63 | 4!c=29502 g=29503 pq=1 qp=1 dt=83647/140000000000000/0 df=965 of=5 ql=0/0 qs=N... b=10 ci=65643 nci=0 co=1373 ca=1521 | 63 | 4!c=29502 g=29503 pq=1/0 qp=1 dt=83647/140000000000000/0 df=965 of=5 ql=0/0 qs=N... b=10 ci=65643 nci=0 co=1373 ca=1521 |
| 64 | 5 c=31201 g=31202 pq=1 qp=1 dt=70422/0/0 df=535 of=7 ql=0/0 qs=.... b=10 ci=58500 nci=0 co=764 ca=698 | 64 | 5 c=31201 g=31202 pq=1/0 qp=1 dt=70422/0/0 df=535 of=7 ql=0/0 qs=.... b=10 ci=58500 nci=0 co=764 ca=698 |
| 65 | 6!c=30253 g=30254 pq=1 qp=1 dt=95363/140000000000000/0 df=780 of=5 ql=0/0 qs=N... b=10 ci=100607 nci=0 co=1414 ca=1353 | 65 | 6!c=30253 g=30254 pq=1/0 qp=1 dt=95363/140000000000000/0 df=780 of=5 ql=0/0 qs=N... b=10 ci=100607 nci=0 co=1414 ca=1353 |
| 66 | 7 c=31178 g=31178 pq=1 qp=0 dt=91536/0/0 df=547 of=4 ql=0/0 qs=.... b=10 ci=109819 nci=0 co=1115 ca=969 | 66 | 7 c=31178 g=31178 pq=1/0 qp=0 dt=91536/0/0 df=547 of=4 ql=0/0 qs=.... b=10 ci=109819 nci=0 co=1115 ca=969 |
| 67 | 67 | ||
| 68 | This file has one line per CPU, or eight for this 8-CPU system. | 68 | This file has one line per CPU, or eight for this 8-CPU system. |
| 69 | The fields are as follows: | 69 | The fields are as follows: |
| @@ -188,14 +188,14 @@ o "ca" is the number of RCU callbacks that have been adopted by this | |||
| 188 | Kernels compiled with CONFIG_RCU_BOOST=y display the following from | 188 | Kernels compiled with CONFIG_RCU_BOOST=y display the following from |
| 189 | /debug/rcu/rcu_preempt/rcudata: | 189 | /debug/rcu/rcu_preempt/rcudata: |
| 190 | 190 | ||
| 191 | 0!c=12865 g=12866 pq=1 qp=1 dt=83113/140000000000000/0 df=288 of=11 ql=0/0 qs=N... kt=0/O ktl=944 b=10 ci=60709 nci=0 co=748 ca=871 | 191 | 0!c=12865 g=12866 pq=1/0 qp=1 dt=83113/140000000000000/0 df=288 of=11 ql=0/0 qs=N... kt=0/O ktl=944 b=10 ci=60709 nci=0 co=748 ca=871 |
| 192 | 1 c=14407 g=14408 pq=1 qp=0 dt=100679/140000000000000/0 df=378 of=7 ql=0/119 qs=NRW. kt=0/W ktl=9b6 b=10 ci=109740 nci=0 co=589 ca=485 | 192 | 1 c=14407 g=14408 pq=1/0 qp=0 dt=100679/140000000000000/0 df=378 of=7 ql=0/119 qs=NRW. kt=0/W ktl=9b6 b=10 ci=109740 nci=0 co=589 ca=485 |
| 193 | 2 c=14407 g=14408 pq=1 qp=0 dt=105486/0/0 df=90 of=9 ql=0/89 qs=NRW. kt=0/W ktl=c0c b=10 ci=83113 nci=0 co=533 ca=490 | 193 | 2 c=14407 g=14408 pq=1/0 qp=0 dt=105486/0/0 df=90 of=9 ql=0/89 qs=NRW. kt=0/W ktl=c0c b=10 ci=83113 nci=0 co=533 ca=490 |
| 194 | 3 c=14407 g=14408 pq=1 qp=0 dt=107138/0/0 df=142 of=8 ql=0/188 qs=NRW. kt=0/W ktl=b96 b=10 ci=121114 nci=0 co=426 ca=290 | 194 | 3 c=14407 g=14408 pq=1/0 qp=0 dt=107138/0/0 df=142 of=8 ql=0/188 qs=NRW. kt=0/W ktl=b96 b=10 ci=121114 nci=0 co=426 ca=290 |
| 195 | 4 c=14405 g=14406 pq=1 qp=1 dt=50238/0/0 df=706 of=7 ql=0/0 qs=.... kt=0/W ktl=812 b=10 ci=34929 nci=0 co=643 ca=114 | 195 | 4 c=14405 g=14406 pq=1/0 qp=1 dt=50238/0/0 df=706 of=7 ql=0/0 qs=.... kt=0/W ktl=812 b=10 ci=34929 nci=0 co=643 ca=114 |
| 196 | 5!c=14168 g=14169 pq=1 qp=0 dt=45465/140000000000000/0 df=161 of=11 ql=0/0 qs=N... kt=0/O ktl=b4d b=10 ci=47712 nci=0 co=677 ca=722 | 196 | 5!c=14168 g=14169 pq=1/0 qp=0 dt=45465/140000000000000/0 df=161 of=11 ql=0/0 qs=N... kt=0/O ktl=b4d b=10 ci=47712 nci=0 co=677 ca=722 |
| 197 | 6 c=14404 g=14405 pq=1 qp=0 dt=59454/0/0 df=94 of=6 ql=0/0 qs=.... kt=0/W ktl=e57 b=10 ci=55597 nci=0 co=701 ca=811 | 197 | 6 c=14404 g=14405 pq=1/0 qp=0 dt=59454/0/0 df=94 of=6 ql=0/0 qs=.... kt=0/W ktl=e57 b=10 ci=55597 nci=0 co=701 ca=811 |
| 198 | 7 c=14407 g=14408 pq=1 qp=1 dt=68850/0/0 df=31 of=8 ql=0/0 qs=.... kt=0/W ktl=14bd b=10 ci=77475 nci=0 co=508 ca=1042 | 198 | 7 c=14407 g=14408 pq=1/0 qp=1 dt=68850/0/0 df=31 of=8 ql=0/0 qs=.... kt=0/W ktl=14bd b=10 ci=77475 nci=0 co=508 ca=1042 |
| 199 | 199 | ||
| 200 | This is similar to the output discussed above, but contains the following | 200 | This is similar to the output discussed above, but contains the following |
| 201 | additional fields: | 201 | additional fields: |
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches index 1fa1caa198eb..447671bd2927 100644 --- a/Documentation/SubmittingPatches +++ b/Documentation/SubmittingPatches | |||
| @@ -10,27 +10,49 @@ kernel, the process can sometimes be daunting if you're not familiar | |||
| 10 | with "the system." This text is a collection of suggestions which | 10 | with "the system." This text is a collection of suggestions which |
| 11 | can greatly increase the chances of your change being accepted. | 11 | can greatly increase the chances of your change being accepted. |
| 12 | 12 | ||
| 13 | Read Documentation/SubmitChecklist for a list of items to check | 13 | This document contains a large number of suggestions in a relatively terse |
| 14 | before submitting code. If you are submitting a driver, also read | 14 | format. For detailed information on how the kernel development process |
| 15 | Documentation/SubmittingDrivers. | 15 | works, see Documentation/development-process. Also, read |
| 16 | Documentation/SubmitChecklist for a list of items to check before | ||
| 17 | submitting code. If you are submitting a driver, also read | ||
| 18 | Documentation/SubmittingDrivers; for device tree binding patches, read | ||
| 19 | Documentation/devicetree/bindings/submitting-patches.txt. | ||
| 16 | 20 | ||
| 17 | Many of these steps describe the default behavior of the git version | 21 | Many of these steps describe the default behavior of the git version |
| 18 | control system; if you use git to prepare your patches, you'll find much | 22 | control system; if you use git to prepare your patches, you'll find much |
| 19 | of the mechanical work done for you, though you'll still need to prepare | 23 | of the mechanical work done for you, though you'll still need to prepare |
| 20 | and document a sensible set of patches. | 24 | and document a sensible set of patches. In general, use of git will make |
| 25 | your life as a kernel developer easier. | ||
| 21 | 26 | ||
| 22 | -------------------------------------------- | 27 | -------------------------------------------- |
| 23 | SECTION 1 - CREATING AND SENDING YOUR CHANGE | 28 | SECTION 1 - CREATING AND SENDING YOUR CHANGE |
| 24 | -------------------------------------------- | 29 | -------------------------------------------- |
| 25 | 30 | ||
| 26 | 31 | ||
| 32 | 0) Obtain a current source tree | ||
| 33 | ------------------------------- | ||
| 34 | |||
| 35 | If you do not have a repository with the current kernel source handy, use | ||
| 36 | git to obtain one. You'll want to start with the mainline repository, | ||
| 37 | which can be grabbed with: | ||
| 38 | |||
| 39 | git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git | ||
| 40 | |||
| 41 | Note, however, that you may not want to develop against the mainline tree | ||
| 42 | directly. Most subsystem maintainers run their own trees and want to see | ||
| 43 | patches prepared against those trees. See the "T:" entry for the subsystem | ||
| 44 | in the MAINTAINERS file to find that tree, or simply ask the maintainer if | ||
| 45 | the tree is not listed there. | ||
| 46 | |||
| 47 | It is still possible to download kernel releases via tarballs (as described | ||
| 48 | in the next section), but that is the hard way to do kernel development. | ||
| 27 | 49 | ||
| 28 | 1) "diff -up" | 50 | 1) "diff -up" |
| 29 | ------------ | 51 | ------------ |
| 30 | 52 | ||
| 31 | Use "diff -up" or "diff -uprN" to create patches. git generates patches | 53 | If you must generate your patches by hand, use "diff -up" or "diff -uprN" |
| 32 | in this form by default; if you're using git, you can skip this section | 54 | to create patches. Git generates patches in this form by default; if |
| 33 | entirely. | 55 | you're using git, you can skip this section entirely. |
| 34 | 56 | ||
| 35 | All changes to the Linux kernel occur in the form of patches, as | 57 | All changes to the Linux kernel occur in the form of patches, as |
| 36 | generated by diff(1). When creating your patch, make sure to create it | 58 | generated by diff(1). When creating your patch, make sure to create it |
| @@ -42,7 +64,7 @@ not in any lower subdirectory. | |||
| 42 | 64 | ||
| 43 | To create a patch for a single file, it is often sufficient to do: | 65 | To create a patch for a single file, it is often sufficient to do: |
| 44 | 66 | ||
| 45 | SRCTREE= linux-2.6 | 67 | SRCTREE= linux |
| 46 | MYFILE= drivers/net/mydriver.c | 68 | MYFILE= drivers/net/mydriver.c |
| 47 | 69 | ||
| 48 | cd $SRCTREE | 70 | cd $SRCTREE |
| @@ -55,17 +77,16 @@ To create a patch for multiple files, you should unpack a "vanilla", | |||
| 55 | or unmodified kernel source tree, and generate a diff against your | 77 | or unmodified kernel source tree, and generate a diff against your |
| 56 | own source tree. For example: | 78 | own source tree. For example: |
| 57 | 79 | ||
| 58 | MYSRC= /devel/linux-2.6 | 80 | MYSRC= /devel/linux |
| 59 | 81 | ||
| 60 | tar xvfz linux-2.6.12.tar.gz | 82 | tar xvfz linux-3.19.tar.gz |
| 61 | mv linux-2.6.12 linux-2.6.12-vanilla | 83 | mv linux-3.19 linux-3.19-vanilla |
| 62 | diff -uprN -X linux-2.6.12-vanilla/Documentation/dontdiff \ | 84 | diff -uprN -X linux-3.19-vanilla/Documentation/dontdiff \ |
| 63 | linux-2.6.12-vanilla $MYSRC > /tmp/patch | 85 | linux-3.19-vanilla $MYSRC > /tmp/patch |
| 64 | 86 | ||
| 65 | "dontdiff" is a list of files which are generated by the kernel during | 87 | "dontdiff" is a list of files which are generated by the kernel during |
| 66 | the build process, and should be ignored in any diff(1)-generated | 88 | the build process, and should be ignored in any diff(1)-generated |
| 67 | patch. The "dontdiff" file is included in the kernel tree in | 89 | patch. |
| 68 | 2.6.12 and later. | ||
| 69 | 90 | ||
| 70 | Make sure your patch does not include any extra files which do not | 91 | Make sure your patch does not include any extra files which do not |
| 71 | belong in a patch submission. Make sure to review your patch -after- | 92 | belong in a patch submission. Make sure to review your patch -after- |
| @@ -83,6 +104,7 @@ is another popular alternative. | |||
| 83 | 104 | ||
| 84 | 105 | ||
| 85 | 2) Describe your changes. | 106 | 2) Describe your changes. |
| 107 | ------------------------- | ||
| 86 | 108 | ||
| 87 | Describe your problem. Whether your patch is a one-line bug fix or | 109 | Describe your problem. Whether your patch is a one-line bug fix or |
| 88 | 5000 lines of a new feature, there must be an underlying problem that | 110 | 5000 lines of a new feature, there must be an underlying problem that |
| @@ -124,10 +146,10 @@ See #3, next. | |||
| 124 | When you submit or resubmit a patch or patch series, include the | 146 | When you submit or resubmit a patch or patch series, include the |
| 125 | complete patch description and justification for it. Don't just | 147 | complete patch description and justification for it. Don't just |
| 126 | say that this is version N of the patch (series). Don't expect the | 148 | say that this is version N of the patch (series). Don't expect the |
| 127 | patch merger to refer back to earlier patch versions or referenced | 149 | subsystem maintainer to refer back to earlier patch versions or referenced |
| 128 | URLs to find the patch description and put that into the patch. | 150 | URLs to find the patch description and put that into the patch. |
| 129 | I.e., the patch (series) and its description should be self-contained. | 151 | I.e., the patch (series) and its description should be self-contained. |
| 130 | This benefits both the patch merger(s) and reviewers. Some reviewers | 152 | This benefits both the maintainers and reviewers. Some reviewers |
| 131 | probably didn't even receive earlier versions of the patch. | 153 | probably didn't even receive earlier versions of the patch. |
| 132 | 154 | ||
| 133 | Describe your changes in imperative mood, e.g. "make xyzzy do frotz" | 155 | Describe your changes in imperative mood, e.g. "make xyzzy do frotz" |
| @@ -156,10 +178,15 @@ Example: | |||
| 156 | platform_set_drvdata(), but left the variable "dev" unused, | 178 | platform_set_drvdata(), but left the variable "dev" unused, |
| 157 | delete it. | 179 | delete it. |
| 158 | 180 | ||
| 181 | You should also be sure to use at least the first twelve characters of the | ||
| 182 | SHA-1 ID. The kernel repository holds a *lot* of objects, making | ||
| 183 | collisions with shorter IDs a real possibility. Bear in mind that, even if | ||
| 184 | there is no collision with your six-character ID now, that condition may | ||
| 185 | change five years from now. | ||
| 186 | |||
| 159 | If your patch fixes a bug in a specific commit, e.g. you found an issue using | 187 | If your patch fixes a bug in a specific commit, e.g. you found an issue using |
| 160 | git-bisect, please use the 'Fixes:' tag with the first 12 characters of the | 188 | git-bisect, please use the 'Fixes:' tag with the first 12 characters of the |
| 161 | SHA-1 ID, and the one line summary. | 189 | SHA-1 ID, and the one line summary. For example: |
| 162 | Example: | ||
| 163 | 190 | ||
| 164 | Fixes: e21d2170f366 ("video: remove unnecessary platform_set_drvdata()") | 191 | Fixes: e21d2170f366 ("video: remove unnecessary platform_set_drvdata()") |
| 165 | 192 | ||
| @@ -172,8 +199,9 @@ outputting the above style in the git log or git show commands | |||
| 172 | fixes = Fixes: %h (\"%s\") | 199 | fixes = Fixes: %h (\"%s\") |
| 173 | 200 | ||
| 174 | 3) Separate your changes. | 201 | 3) Separate your changes. |
| 202 | ------------------------- | ||
| 175 | 203 | ||
| 176 | Separate _logical changes_ into a single patch file. | 204 | Separate each _logical change_ into a separate patch. |
| 177 | 205 | ||
| 178 | For example, if your changes include both bug fixes and performance | 206 | For example, if your changes include both bug fixes and performance |
| 179 | enhancements for a single driver, separate those changes into two | 207 | enhancements for a single driver, separate those changes into two |
| @@ -184,90 +212,116 @@ On the other hand, if you make a single change to numerous files, | |||
| 184 | group those changes into a single patch. Thus a single logical change | 212 | group those changes into a single patch. Thus a single logical change |
| 185 | is contained within a single patch. | 213 | is contained within a single patch. |
| 186 | 214 | ||
| 215 | The point to remember is that each patch should make an easily understood | ||
| 216 | change that can be verified by reviewers. Each patch should be justifiable | ||
| 217 | on its own merits. | ||
| 218 | |||
| 187 | If one patch depends on another patch in order for a change to be | 219 | If one patch depends on another patch in order for a change to be |
| 188 | complete, that is OK. Simply note "this patch depends on patch X" | 220 | complete, that is OK. Simply note "this patch depends on patch X" |
| 189 | in your patch description. | 221 | in your patch description. |
| 190 | 222 | ||
| 223 | When dividing your change into a series of patches, take special care to | ||
| 224 | ensure that the kernel builds and runs properly after each patch in the | ||
| 225 | series. Developers using "git bisect" to track down a problem can end up | ||
| 226 | splitting your patch series at any point; they will not thank you if you | ||
| 227 | introduce bugs in the middle. | ||
| 228 | |||
| 191 | If you cannot condense your patch set into a smaller set of patches, | 229 | If you cannot condense your patch set into a smaller set of patches, |
| 192 | then only post say 15 or so at a time and wait for review and integration. | 230 | then only post say 15 or so at a time and wait for review and integration. |
| 193 | 231 | ||
| 194 | 232 | ||
| 195 | 233 | ||
| 196 | 4) Style check your changes. | 234 | 4) Style-check your changes. |
| 235 | ---------------------------- | ||
| 197 | 236 | ||
| 198 | Check your patch for basic style violations, details of which can be | 237 | Check your patch for basic style violations, details of which can be |
| 199 | found in Documentation/CodingStyle. Failure to do so simply wastes | 238 | found in Documentation/CodingStyle. Failure to do so simply wastes |
| 200 | the reviewers time and will get your patch rejected, probably | 239 | the reviewers time and will get your patch rejected, probably |
| 201 | without even being read. | 240 | without even being read. |
| 202 | 241 | ||
| 203 | At a minimum you should check your patches with the patch style | 242 | One significant exception is when moving code from one file to |
| 204 | checker prior to submission (scripts/checkpatch.pl). You should | 243 | another -- in this case you should not modify the moved code at all in |
| 205 | be able to justify all violations that remain in your patch. | 244 | the same patch which moves it. This clearly delineates the act of |
| 206 | 245 | moving the code and your changes. This greatly aids review of the | |
| 207 | 246 | actual differences and allows tools to better track the history of | |
| 247 | the code itself. | ||
| 208 | 248 | ||
| 209 | 5) Select e-mail destination. | 249 | Check your patches with the patch style checker prior to submission |
| 250 | (scripts/checkpatch.pl). Note, though, that the style checker should be | ||
| 251 | viewed as a guide, not as a replacement for human judgment. If your code | ||
| 252 | looks better with a violation then its probably best left alone. | ||
| 210 | 253 | ||
| 211 | Look through the MAINTAINERS file and the source code, and determine | 254 | The checker reports at three levels: |
| 212 | if your change applies to a specific subsystem of the kernel, with | 255 | - ERROR: things that are very likely to be wrong |
| 213 | an assigned maintainer. If so, e-mail that person. The script | 256 | - WARNING: things requiring careful review |
| 214 | scripts/get_maintainer.pl can be very useful at this step. | 257 | - CHECK: things requiring thought |
| 215 | 258 | ||
| 216 | If no maintainer is listed, or the maintainer does not respond, send | 259 | You should be able to justify all violations that remain in your |
| 217 | your patch to the primary Linux kernel developer's mailing list, | 260 | patch. |
| 218 | linux-kernel@vger.kernel.org. Most kernel developers monitor this | ||
| 219 | e-mail list, and can comment on your changes. | ||
| 220 | 261 | ||
| 221 | 262 | ||
| 222 | Do not send more than 15 patches at once to the vger mailing lists!!! | 263 | 5) Select the recipients for your patch. |
| 264 | ---------------------------------------- | ||
| 223 | 265 | ||
| 266 | You should always copy the appropriate subsystem maintainer(s) on any patch | ||
| 267 | to code that they maintain; look through the MAINTAINERS file and the | ||
| 268 | source code revision history to see who those maintainers are. The | ||
| 269 | script scripts/get_maintainer.pl can be very useful at this step. If you | ||
| 270 | cannot find a maintainer for the subsystem your are working on, Andrew | ||
| 271 | Morton (akpm@linux-foundation.org) serves as a maintainer of last resort. | ||
| 224 | 272 | ||
| 225 | Linus Torvalds is the final arbiter of all changes accepted into the | 273 | You should also normally choose at least one mailing list to receive a copy |
| 226 | Linux kernel. His e-mail address is <torvalds@linux-foundation.org>. | 274 | of your patch set. linux-kernel@vger.kernel.org functions as a list of |
| 227 | He gets a lot of e-mail, so typically you should do your best to -avoid- | 275 | last resort, but the volume on that list has caused a number of developers |
| 228 | sending him e-mail. | 276 | to tune it out. Look in the MAINTAINERS file for a subsystem-specific |
| 277 | list; your patch will probably get more attention there. Please do not | ||
| 278 | spam unrelated lists, though. | ||
| 229 | 279 | ||
| 230 | Patches which are bug fixes, are "obvious" changes, or similarly | 280 | Many kernel-related lists are hosted on vger.kernel.org; you can find a |
| 231 | require little discussion should be sent or CC'd to Linus. Patches | 281 | list of them at http://vger.kernel.org/vger-lists.html. There are |
| 232 | which require discussion or do not have a clear advantage should | 282 | kernel-related lists hosted elsewhere as well, though. |
| 233 | usually be sent first to linux-kernel. Only after the patch is | ||
| 234 | discussed should the patch then be submitted to Linus. | ||
| 235 | 283 | ||
| 284 | Do not send more than 15 patches at once to the vger mailing lists!!! | ||
| 236 | 285 | ||
| 286 | Linus Torvalds is the final arbiter of all changes accepted into the | ||
| 287 | Linux kernel. His e-mail address is <torvalds@linux-foundation.org>. | ||
| 288 | He gets a lot of e-mail, and, at this point, very few patches go through | ||
| 289 | Linus directly, so typically you should do your best to -avoid- | ||
| 290 | sending him e-mail. | ||
| 237 | 291 | ||
| 238 | 6) Select your CC (e-mail carbon copy) list. | 292 | If you have a patch that fixes an exploitable security bug, send that patch |
| 293 | to security@kernel.org. For severe bugs, a short embargo may be considered | ||
| 294 | to allow distrbutors to get the patch out to users; in such cases, | ||
| 295 | obviously, the patch should not be sent to any public lists. | ||
| 239 | 296 | ||
| 240 | Unless you have a reason NOT to do so, CC linux-kernel@vger.kernel.org. | 297 | Patches that fix a severe bug in a released kernel should be directed |
| 298 | toward the stable maintainers by putting a line like this: | ||
| 241 | 299 | ||
| 242 | Other kernel developers besides Linus need to be aware of your change, | 300 | Cc: stable@vger.kernel.org |
| 243 | so that they may comment on it and offer code review and suggestions. | ||
| 244 | linux-kernel is the primary Linux kernel developer mailing list. | ||
| 245 | Other mailing lists are available for specific subsystems, such as | ||
| 246 | USB, framebuffer devices, the VFS, the SCSI subsystem, etc. See the | ||
| 247 | MAINTAINERS file for a mailing list that relates specifically to | ||
| 248 | your change. | ||
| 249 | 301 | ||
| 250 | Majordomo lists of VGER.KERNEL.ORG at: | 302 | into your patch. |
| 251 | <http://vger.kernel.org/vger-lists.html> | ||
| 252 | 303 | ||
| 253 | If changes affect userland-kernel interfaces, please send | 304 | Note, however, that some subsystem maintainers want to come to their own |
| 254 | the MAN-PAGES maintainer (as listed in the MAINTAINERS file) | 305 | conclusions on which patches should go to the stable trees. The networking |
| 255 | a man-pages patch, or at least a notification of the change, | 306 | maintainer, in particular, would rather not see individual developers |
| 256 | so that some information makes its way into the manual pages. | 307 | adding lines like the above to their patches. |
| 257 | 308 | ||
| 258 | Even if the maintainer did not respond in step #5, make sure to ALWAYS | 309 | If changes affect userland-kernel interfaces, please send the MAN-PAGES |
| 259 | copy the maintainer when you change their code. | 310 | maintainer (as listed in the MAINTAINERS file) a man-pages patch, or at |
| 311 | least a notification of the change, so that some information makes its way | ||
| 312 | into the manual pages. User-space API changes should also be copied to | ||
| 313 | linux-api@vger.kernel.org. | ||
| 260 | 314 | ||
| 261 | For small patches you may want to CC the Trivial Patch Monkey | 315 | For small patches you may want to CC the Trivial Patch Monkey |
| 262 | trivial@kernel.org which collects "trivial" patches. Have a look | 316 | trivial@kernel.org which collects "trivial" patches. Have a look |
| 263 | into the MAINTAINERS file for its current manager. | 317 | into the MAINTAINERS file for its current manager. |
| 264 | Trivial patches must qualify for one of the following rules: | 318 | Trivial patches must qualify for one of the following rules: |
| 265 | Spelling fixes in documentation | 319 | Spelling fixes in documentation |
| 266 | Spelling fixes which could break grep(1) | 320 | Spelling fixes for errors which could break grep(1) |
| 267 | Warning fixes (cluttering with useless warnings is bad) | 321 | Warning fixes (cluttering with useless warnings is bad) |
| 268 | Compilation fixes (only if they are actually correct) | 322 | Compilation fixes (only if they are actually correct) |
| 269 | Runtime fixes (only if they actually fix things) | 323 | Runtime fixes (only if they actually fix things) |
| 270 | Removing use of deprecated functions/macros (eg. check_region) | 324 | Removing use of deprecated functions/macros |
| 271 | Contact detail and documentation fixes | 325 | Contact detail and documentation fixes |
| 272 | Non-portable code replaced by portable code (even in arch-specific, | 326 | Non-portable code replaced by portable code (even in arch-specific, |
| 273 | since people copy, as long as it's trivial) | 327 | since people copy, as long as it's trivial) |
| @@ -276,7 +330,8 @@ Trivial patches must qualify for one of the following rules: | |||
| 276 | 330 | ||
| 277 | 331 | ||
| 278 | 332 | ||
| 279 | 7) No MIME, no links, no compression, no attachments. Just plain text. | 333 | 6) No MIME, no links, no compression, no attachments. Just plain text. |
| 334 | ----------------------------------------------------------------------- | ||
| 280 | 335 | ||
| 281 | Linus and other kernel developers need to be able to read and comment | 336 | Linus and other kernel developers need to be able to read and comment |
| 282 | on the changes you are submitting. It is important for a kernel | 337 | on the changes you are submitting. It is important for a kernel |
| @@ -299,54 +354,48 @@ you to re-send them using MIME. | |||
| 299 | See Documentation/email-clients.txt for hints about configuring | 354 | See Documentation/email-clients.txt for hints about configuring |
| 300 | your e-mail client so that it sends your patches untouched. | 355 | your e-mail client so that it sends your patches untouched. |
| 301 | 356 | ||
| 302 | 8) E-mail size. | 357 | 7) E-mail size. |
| 303 | 358 | --------------- | |
| 304 | When sending patches to Linus, always follow step #7. | ||
| 305 | 359 | ||
| 306 | Large changes are not appropriate for mailing lists, and some | 360 | Large changes are not appropriate for mailing lists, and some |
| 307 | maintainers. If your patch, uncompressed, exceeds 300 kB in size, | 361 | maintainers. If your patch, uncompressed, exceeds 300 kB in size, |
| 308 | it is preferred that you store your patch on an Internet-accessible | 362 | it is preferred that you store your patch on an Internet-accessible |
| 309 | server, and provide instead a URL (link) pointing to your patch. | 363 | server, and provide instead a URL (link) pointing to your patch. But note |
| 364 | that if your patch exceeds 300 kB, it almost certainly needs to be broken up | ||
| 365 | anyway. | ||
| 310 | 366 | ||
| 367 | 8) Respond to review comments. | ||
| 368 | ------------------------------ | ||
| 311 | 369 | ||
| 370 | Your patch will almost certainly get comments from reviewers on ways in | ||
| 371 | which the patch can be improved. You must respond to those comments; | ||
| 372 | ignoring reviewers is a good way to get ignored in return. Review comments | ||
| 373 | or questions that do not lead to a code change should almost certainly | ||
| 374 | bring about a comment or changelog entry so that the next reviewer better | ||
| 375 | understands what is going on. | ||
| 312 | 376 | ||
| 313 | 9) Name your kernel version. | 377 | Be sure to tell the reviewers what changes you are making and to thank them |
| 378 | for their time. Code review is a tiring and time-consuming process, and | ||
| 379 | reviewers sometimes get grumpy. Even in that case, though, respond | ||
| 380 | politely and address the problems they have pointed out. | ||
| 314 | 381 | ||
| 315 | It is important to note, either in the subject line or in the patch | ||
| 316 | description, the kernel version to which this patch applies. | ||
| 317 | 382 | ||
| 318 | If the patch does not apply cleanly to the latest kernel version, | 383 | 9) Don't get discouraged - or impatient. |
| 319 | Linus will not apply it. | 384 | ---------------------------------------- |
| 320 | 385 | ||
| 386 | After you have submitted your change, be patient and wait. Reviewers are | ||
| 387 | busy people and may not get to your patch right away. | ||
| 321 | 388 | ||
| 389 | Once upon a time, patches used to disappear into the void without comment, | ||
| 390 | but the development process works more smoothly than that now. You should | ||
| 391 | receive comments within a week or so; if that does not happen, make sure | ||
| 392 | that you have sent your patches to the right place. Wait for a minimum of | ||
| 393 | one week before resubmitting or pinging reviewers - possibly longer during | ||
| 394 | busy times like merge windows. | ||
| 322 | 395 | ||
| 323 | 10) Don't get discouraged. Re-submit. | ||
| 324 | 396 | ||
| 325 | After you have submitted your change, be patient and wait. If Linus | 397 | 10) Include PATCH in the subject |
| 326 | likes your change and applies it, it will appear in the next version | 398 | -------------------------------- |
| 327 | of the kernel that he releases. | ||
| 328 | |||
| 329 | However, if your change doesn't appear in the next version of the | ||
| 330 | kernel, there could be any number of reasons. It's YOUR job to | ||
| 331 | narrow down those reasons, correct what was wrong, and submit your | ||
| 332 | updated change. | ||
| 333 | |||
| 334 | It is quite common for Linus to "drop" your patch without comment. | ||
| 335 | That's the nature of the system. If he drops your patch, it could be | ||
| 336 | due to | ||
| 337 | * Your patch did not apply cleanly to the latest kernel version. | ||
| 338 | * Your patch was not sufficiently discussed on linux-kernel. | ||
| 339 | * A style issue (see section 2). | ||
| 340 | * An e-mail formatting issue (re-read this section). | ||
| 341 | * A technical problem with your change. | ||
| 342 | * He gets tons of e-mail, and yours got lost in the shuffle. | ||
| 343 | * You are being annoying. | ||
| 344 | |||
| 345 | When in doubt, solicit comments on linux-kernel mailing list. | ||
| 346 | |||
| 347 | |||
| 348 | |||
| 349 | 11) Include PATCH in the subject | ||
| 350 | 399 | ||
| 351 | Due to high e-mail traffic to Linus, and to linux-kernel, it is common | 400 | Due to high e-mail traffic to Linus, and to linux-kernel, it is common |
| 352 | convention to prefix your subject line with [PATCH]. This lets Linus | 401 | convention to prefix your subject line with [PATCH]. This lets Linus |
| @@ -355,7 +404,8 @@ e-mail discussions. | |||
| 355 | 404 | ||
| 356 | 405 | ||
| 357 | 406 | ||
| 358 | 12) Sign your work | 407 | 11) Sign your work |
| 408 | ------------------ | ||
| 359 | 409 | ||
| 360 | To improve tracking of who did what, especially with patches that can | 410 | To improve tracking of who did what, especially with patches that can |
| 361 | percolate to their final resting place in the kernel through several | 411 | percolate to their final resting place in the kernel through several |
| @@ -387,11 +437,11 @@ can certify the below: | |||
| 387 | person who certified (a), (b) or (c) and I have not modified | 437 | person who certified (a), (b) or (c) and I have not modified |
| 388 | it. | 438 | it. |
| 389 | 439 | ||
| 390 | (d) I understand and agree that this project and the contribution | 440 | (d) I understand and agree that this project and the contribution |
| 391 | are public and that a record of the contribution (including all | 441 | are public and that a record of the contribution (including all |
| 392 | personal information I submit with it, including my sign-off) is | 442 | personal information I submit with it, including my sign-off) is |
| 393 | maintained indefinitely and may be redistributed consistent with | 443 | maintained indefinitely and may be redistributed consistent with |
| 394 | this project or the open source license(s) involved. | 444 | this project or the open source license(s) involved. |
| 395 | 445 | ||
| 396 | then you just add a line saying | 446 | then you just add a line saying |
| 397 | 447 | ||
| @@ -401,7 +451,7 @@ using your real name (sorry, no pseudonyms or anonymous contributions.) | |||
| 401 | 451 | ||
| 402 | Some people also put extra tags at the end. They'll just be ignored for | 452 | Some people also put extra tags at the end. They'll just be ignored for |
| 403 | now, but you can do this to mark internal company procedures or just | 453 | now, but you can do this to mark internal company procedures or just |
| 404 | point out some special detail about the sign-off. | 454 | point out some special detail about the sign-off. |
| 405 | 455 | ||
| 406 | If you are a subsystem or branch maintainer, sometimes you need to slightly | 456 | If you are a subsystem or branch maintainer, sometimes you need to slightly |
| 407 | modify patches you receive in order to merge them, because the code is not | 457 | modify patches you receive in order to merge them, because the code is not |
| @@ -429,15 +479,15 @@ which appears in the changelog. | |||
| 429 | Special note to back-porters: It seems to be a common and useful practice | 479 | Special note to back-porters: It seems to be a common and useful practice |
| 430 | to insert an indication of the origin of a patch at the top of the commit | 480 | to insert an indication of the origin of a patch at the top of the commit |
| 431 | message (just after the subject line) to facilitate tracking. For instance, | 481 | message (just after the subject line) to facilitate tracking. For instance, |
| 432 | here's what we see in 2.6-stable : | 482 | here's what we see in a 3.x-stable release: |
| 433 | 483 | ||
| 434 | Date: Tue May 13 19:10:30 2008 +0000 | 484 | Date: Tue Oct 7 07:26:38 2014 -0400 |
| 435 | 485 | ||
| 436 | SCSI: libiscsi regression in 2.6.25: fix nop timer handling | 486 | libata: Un-break ATA blacklist |
| 437 | 487 | ||
| 438 | commit 4cf1043593db6a337f10e006c23c69e5fc93e722 upstream | 488 | commit 1c40279960bcd7d52dbdf1d466b20d24b99176c8 upstream. |
| 439 | 489 | ||
| 440 | And here's what appears in 2.4 : | 490 | And here's what might appear in an older kernel once a patch is backported: |
| 441 | 491 | ||
| 442 | Date: Tue May 13 22:12:27 2008 +0200 | 492 | Date: Tue May 13 22:12:27 2008 +0200 |
| 443 | 493 | ||
| @@ -446,18 +496,19 @@ And here's what appears in 2.4 : | |||
| 446 | [backport of 2.6 commit b7acbdfbd1f277c1eb23f344f899cfa4cd0bf36a] | 496 | [backport of 2.6 commit b7acbdfbd1f277c1eb23f344f899cfa4cd0bf36a] |
| 447 | 497 | ||
| 448 | Whatever the format, this information provides a valuable help to people | 498 | Whatever the format, this information provides a valuable help to people |
| 449 | tracking your trees, and to people trying to trouble-shoot bugs in your | 499 | tracking your trees, and to people trying to troubleshoot bugs in your |
| 450 | tree. | 500 | tree. |
| 451 | 501 | ||
| 452 | 502 | ||
| 453 | 13) When to use Acked-by: and Cc: | 503 | 12) When to use Acked-by: and Cc: |
| 504 | --------------------------------- | ||
| 454 | 505 | ||
| 455 | The Signed-off-by: tag indicates that the signer was involved in the | 506 | The Signed-off-by: tag indicates that the signer was involved in the |
| 456 | development of the patch, or that he/she was in the patch's delivery path. | 507 | development of the patch, or that he/she was in the patch's delivery path. |
| 457 | 508 | ||
| 458 | If a person was not directly involved in the preparation or handling of a | 509 | If a person was not directly involved in the preparation or handling of a |
| 459 | patch but wishes to signify and record their approval of it then they can | 510 | patch but wishes to signify and record their approval of it then they can |
| 460 | arrange to have an Acked-by: line added to the patch's changelog. | 511 | ask to have an Acked-by: line added to the patch's changelog. |
| 461 | 512 | ||
| 462 | Acked-by: is often used by the maintainer of the affected code when that | 513 | Acked-by: is often used by the maintainer of the affected code when that |
| 463 | maintainer neither contributed to nor forwarded the patch. | 514 | maintainer neither contributed to nor forwarded the patch. |
| @@ -465,7 +516,8 @@ maintainer neither contributed to nor forwarded the patch. | |||
| 465 | Acked-by: is not as formal as Signed-off-by:. It is a record that the acker | 516 | Acked-by: is not as formal as Signed-off-by:. It is a record that the acker |
| 466 | has at least reviewed the patch and has indicated acceptance. Hence patch | 517 | has at least reviewed the patch and has indicated acceptance. Hence patch |
| 467 | mergers will sometimes manually convert an acker's "yep, looks good to me" | 518 | mergers will sometimes manually convert an acker's "yep, looks good to me" |
| 468 | into an Acked-by:. | 519 | into an Acked-by: (but note that it is usually better to ask for an |
| 520 | explicit ack). | ||
| 469 | 521 | ||
| 470 | Acked-by: does not necessarily indicate acknowledgement of the entire patch. | 522 | Acked-by: does not necessarily indicate acknowledgement of the entire patch. |
| 471 | For example, if a patch affects multiple subsystems and has an Acked-by: from | 523 | For example, if a patch affects multiple subsystems and has an Acked-by: from |
| @@ -477,11 +529,13 @@ list archives. | |||
| 477 | If a person has had the opportunity to comment on a patch, but has not | 529 | If a person has had the opportunity to comment on a patch, but has not |
| 478 | provided such comments, you may optionally add a "Cc:" tag to the patch. | 530 | provided such comments, you may optionally add a "Cc:" tag to the patch. |
| 479 | This is the only tag which might be added without an explicit action by the | 531 | This is the only tag which might be added without an explicit action by the |
| 480 | person it names. This tag documents that potentially interested parties | 532 | person it names - but it should indicate that this person was copied on the |
| 481 | have been included in the discussion | 533 | patch. This tag documents that potentially interested parties |
| 534 | have been included in the discussion. | ||
| 482 | 535 | ||
| 483 | 536 | ||
| 484 | 14) Using Reported-by:, Tested-by:, Reviewed-by:, Suggested-by: and Fixes: | 537 | 13) Using Reported-by:, Tested-by:, Reviewed-by:, Suggested-by: and Fixes: |
| 538 | -------------------------------------------------------------------------- | ||
| 485 | 539 | ||
| 486 | The Reported-by tag gives credit to people who find bugs and report them and it | 540 | The Reported-by tag gives credit to people who find bugs and report them and it |
| 487 | hopefully inspires them to help us again in the future. Please note that if | 541 | hopefully inspires them to help us again in the future. Please note that if |
| @@ -541,7 +595,13 @@ which stable kernel versions should receive your fix. This is the preferred | |||
| 541 | method for indicating a bug fixed by the patch. See #2 above for more details. | 595 | method for indicating a bug fixed by the patch. See #2 above for more details. |
| 542 | 596 | ||
| 543 | 597 | ||
| 544 | 15) The canonical patch format | 598 | 14) The canonical patch format |
| 599 | ------------------------------ | ||
| 600 | |||
| 601 | This section describes how the patch itself should be formatted. Note | ||
| 602 | that, if you have your patches stored in a git repository, proper patch | ||
| 603 | formatting can be had with "git format-patch". The tools cannot create | ||
| 604 | the necessary text, though, so read the instructions below anyway. | ||
| 545 | 605 | ||
| 546 | The canonical patch subject line is: | 606 | The canonical patch subject line is: |
| 547 | 607 | ||
| @@ -549,7 +609,8 @@ The canonical patch subject line is: | |||
| 549 | 609 | ||
| 550 | The canonical patch message body contains the following: | 610 | The canonical patch message body contains the following: |
| 551 | 611 | ||
| 552 | - A "from" line specifying the patch author. | 612 | - A "from" line specifying the patch author (only needed if the person |
| 613 | sending the patch is not the author). | ||
| 553 | 614 | ||
| 554 | - An empty line. | 615 | - An empty line. |
| 555 | 616 | ||
| @@ -656,128 +717,63 @@ See more details on the proper patch format in the following | |||
| 656 | references. | 717 | references. |
| 657 | 718 | ||
| 658 | 719 | ||
| 659 | 16) Sending "git pull" requests (from Linus emails) | 720 | 15) Sending "git pull" requests |
| 660 | 721 | ------------------------------- | |
| 661 | Please write the git repo address and branch name alone on the same line | ||
| 662 | so that I can't even by mistake pull from the wrong branch, and so | ||
| 663 | that a triple-click just selects the whole thing. | ||
| 664 | |||
| 665 | So the proper format is something along the lines of: | ||
| 666 | |||
| 667 | "Please pull from | ||
| 668 | |||
| 669 | git://jdelvare.pck.nerim.net/jdelvare-2.6 i2c-for-linus | ||
| 670 | |||
| 671 | to get these changes:" | ||
| 672 | |||
| 673 | so that I don't have to hunt-and-peck for the address and inevitably | ||
| 674 | get it wrong (actually, I've only gotten it wrong a few times, and | ||
| 675 | checking against the diffstat tells me when I get it wrong, but I'm | ||
| 676 | just a lot more comfortable when I don't have to "look for" the right | ||
| 677 | thing to pull, and double-check that I have the right branch-name). | ||
| 678 | |||
| 679 | |||
| 680 | Please use "git diff -M --stat --summary" to generate the diffstat: | ||
| 681 | the -M enables rename detection, and the summary enables a summary of | ||
| 682 | new/deleted or renamed files. | ||
| 683 | |||
| 684 | With rename detection, the statistics are rather different [...] | ||
| 685 | because git will notice that a fair number of the changes are renames. | ||
| 686 | |||
| 687 | ----------------------------------- | ||
| 688 | SECTION 2 - HINTS, TIPS, AND TRICKS | ||
| 689 | ----------------------------------- | ||
| 690 | |||
| 691 | This section lists many of the common "rules" associated with code | ||
| 692 | submitted to the kernel. There are always exceptions... but you must | ||
| 693 | have a really good reason for doing so. You could probably call this | ||
| 694 | section Linus Computer Science 101. | ||
| 695 | |||
| 696 | |||
| 697 | |||
| 698 | 1) Read Documentation/CodingStyle | ||
| 699 | |||
| 700 | Nuff said. If your code deviates too much from this, it is likely | ||
| 701 | to be rejected without further review, and without comment. | ||
| 702 | |||
| 703 | One significant exception is when moving code from one file to | ||
| 704 | another -- in this case you should not modify the moved code at all in | ||
| 705 | the same patch which moves it. This clearly delineates the act of | ||
| 706 | moving the code and your changes. This greatly aids review of the | ||
| 707 | actual differences and allows tools to better track the history of | ||
| 708 | the code itself. | ||
| 709 | |||
| 710 | Check your patches with the patch style checker prior to submission | ||
| 711 | (scripts/checkpatch.pl). The style checker should be viewed as | ||
| 712 | a guide not as the final word. If your code looks better with | ||
| 713 | a violation then its probably best left alone. | ||
| 714 | |||
| 715 | The checker reports at three levels: | ||
| 716 | - ERROR: things that are very likely to be wrong | ||
| 717 | - WARNING: things requiring careful review | ||
| 718 | - CHECK: things requiring thought | ||
| 719 | |||
| 720 | You should be able to justify all violations that remain in your | ||
| 721 | patch. | ||
| 722 | |||
| 723 | |||
| 724 | |||
| 725 | 2) #ifdefs are ugly | ||
| 726 | |||
| 727 | Code cluttered with ifdefs is difficult to read and maintain. Don't do | ||
| 728 | it. Instead, put your ifdefs in a header, and conditionally define | ||
| 729 | 'static inline' functions, or macros, which are used in the code. | ||
| 730 | Let the compiler optimize away the "no-op" case. | ||
| 731 | |||
| 732 | Simple example, of poor code: | ||
| 733 | |||
| 734 | dev = alloc_etherdev (sizeof(struct funky_private)); | ||
| 735 | if (!dev) | ||
| 736 | return -ENODEV; | ||
| 737 | #ifdef CONFIG_NET_FUNKINESS | ||
| 738 | init_funky_net(dev); | ||
| 739 | #endif | ||
| 740 | |||
| 741 | Cleaned-up example: | ||
| 742 | |||
| 743 | (in header) | ||
| 744 | #ifndef CONFIG_NET_FUNKINESS | ||
| 745 | static inline void init_funky_net (struct net_device *d) {} | ||
| 746 | #endif | ||
| 747 | 722 | ||
| 748 | (in the code itself) | 723 | If you have a series of patches, it may be most convenient to have the |
| 749 | dev = alloc_etherdev (sizeof(struct funky_private)); | 724 | maintainer pull them directly into the subsystem repository with a |
| 750 | if (!dev) | 725 | "git pull" operation. Note, however, that pulling patches from a developer |
| 751 | return -ENODEV; | 726 | requires a higher degree of trust than taking patches from a mailing list. |
| 752 | init_funky_net(dev); | 727 | As a result, many subsystem maintainers are reluctant to take pull |
| 728 | requests, especially from new, unknown developers. If in doubt you can use | ||
| 729 | the pull request as the cover letter for a normal posting of the patch | ||
| 730 | series, giving the maintainer the option of using either. | ||
| 753 | 731 | ||
| 732 | A pull request should have [GIT] or [PULL] in the subject line. The | ||
| 733 | request itself should include the repository name and the branch of | ||
| 734 | interest on a single line; it should look something like: | ||
| 754 | 735 | ||
| 736 | Please pull from | ||
| 755 | 737 | ||
| 756 | 3) 'static inline' is better than a macro | 738 | git://jdelvare.pck.nerim.net/jdelvare-2.6 i2c-for-linus |
| 757 | 739 | ||
| 758 | Static inline functions are greatly preferred over macros. | 740 | to get these changes:" |
| 759 | They provide type safety, have no length limitations, no formatting | ||
| 760 | limitations, and under gcc they are as cheap as macros. | ||
| 761 | 741 | ||
| 762 | Macros should only be used for cases where a static inline is clearly | 742 | A pull request should also include an overall message saying what will be |
| 763 | suboptimal [there are a few, isolated cases of this in fast paths], | 743 | included in the request, a "git shortlog" listing of the patches |
| 764 | or where it is impossible to use a static inline function [such as | 744 | themselves, and a diffstat showing the overall effect of the patch series. |
| 765 | string-izing]. | 745 | The easiest way to get all this information together is, of course, to let |
| 746 | git do it for you with the "git request-pull" command. | ||
| 766 | 747 | ||
| 767 | 'static inline' is preferred over 'static __inline__', 'extern inline', | 748 | Some maintainers (including Linus) want to see pull requests from signed |
| 768 | and 'extern __inline__'. | 749 | commits; that increases their confidence that the request actually came |
| 750 | from you. Linus, in particular, will not pull from public hosting sites | ||
| 751 | like GitHub in the absence of a signed tag. | ||
| 769 | 752 | ||
| 753 | The first step toward creating such tags is to make a GNUPG key and get it | ||
| 754 | signed by one or more core kernel developers. This step can be hard for | ||
| 755 | new developers, but there is no way around it. Attending conferences can | ||
| 756 | be a good way to find developers who can sign your key. | ||
| 770 | 757 | ||
| 758 | Once you have prepared a patch series in git that you wish to have somebody | ||
| 759 | pull, create a signed tag with "git tag -s". This will create a new tag | ||
| 760 | identifying the last commit in the series and containing a signature | ||
| 761 | created with your private key. You will also have the opportunity to add a | ||
| 762 | changelog-style message to the tag; this is an ideal place to describe the | ||
| 763 | effects of the pull request as a whole. | ||
| 771 | 764 | ||
| 772 | 4) Don't over-design. | 765 | If the tree the maintainer will be pulling from is not the repository you |
| 766 | are working from, don't forget to push the signed tag explicitly to the | ||
| 767 | public tree. | ||
| 773 | 768 | ||
| 774 | Don't try to anticipate nebulous future cases which may or may not | 769 | When generating your pull request, use the signed tag as the target. A |
| 775 | be useful: "Make it as simple as you can, and no simpler." | 770 | command like this will do the trick: |
| 776 | 771 | ||
| 772 | git request-pull master git://my.public.tree/linux.git my-signed-tag | ||
| 777 | 773 | ||
| 778 | 774 | ||
| 779 | ---------------------- | 775 | ---------------------- |
| 780 | SECTION 3 - REFERENCES | 776 | SECTION 2 - REFERENCES |
| 781 | ---------------------- | 777 | ---------------------- |
| 782 | 778 | ||
| 783 | Andrew Morton, "The perfect patch" (tpp). | 779 | Andrew Morton, "The perfect patch" (tpp). |
diff --git a/Documentation/acpi/enumeration.txt b/Documentation/acpi/enumeration.txt index b60d2ab69497..9b121a569ab4 100644 --- a/Documentation/acpi/enumeration.txt +++ b/Documentation/acpi/enumeration.txt | |||
| @@ -243,7 +243,7 @@ input driver: | |||
| 243 | .owner = THIS_MODULE, | 243 | .owner = THIS_MODULE, |
| 244 | .pm = &mpu3050_pm, | 244 | .pm = &mpu3050_pm, |
| 245 | .of_match_table = mpu3050_of_match, | 245 | .of_match_table = mpu3050_of_match, |
| 246 | .acpi_match_table ACPI_PTR(mpu3050_acpi_match), | 246 | .acpi_match_table = ACPI_PTR(mpu3050_acpi_match), |
| 247 | }, | 247 | }, |
| 248 | .probe = mpu3050_probe, | 248 | .probe = mpu3050_probe, |
| 249 | .remove = mpu3050_remove, | 249 | .remove = mpu3050_remove, |
diff --git a/Documentation/arm/00-INDEX b/Documentation/arm/00-INDEX index 3b08bc2b04cf..8edb9007844e 100644 --- a/Documentation/arm/00-INDEX +++ b/Documentation/arm/00-INDEX | |||
| @@ -2,11 +2,15 @@ | |||
| 2 | - this file | 2 | - this file |
| 3 | Booting | 3 | Booting |
| 4 | - requirements for booting | 4 | - requirements for booting |
| 5 | CCN.txt | ||
| 6 | - Cache Coherent Network ring-bus and perf PMU driver. | ||
| 5 | Interrupts | 7 | Interrupts |
| 6 | - ARM Interrupt subsystem documentation | 8 | - ARM Interrupt subsystem documentation |
| 7 | IXP4xx | 9 | IXP4xx |
| 8 | - Intel IXP4xx Network processor. | 10 | - Intel IXP4xx Network processor. |
| 9 | msm | 11 | Makefile |
| 12 | - Build sourcefiles as part of the Documentation-build for arm | ||
| 13 | msm/ | ||
| 10 | - MSM specific documentation | 14 | - MSM specific documentation |
| 11 | Netwinder | 15 | Netwinder |
| 12 | - Netwinder specific documentation | 16 | - Netwinder specific documentation |
| @@ -18,11 +22,9 @@ README | |||
| 18 | - General ARM documentation | 22 | - General ARM documentation |
| 19 | SA1100/ | 23 | SA1100/ |
| 20 | - SA1100 documentation | 24 | - SA1100 documentation |
| 21 | Samsung-S3C24XX | 25 | Samsung-S3C24XX/ |
| 22 | - S3C24XX ARM Linux Overview | 26 | - S3C24XX ARM Linux Overview |
| 23 | Sharp-LH | 27 | SPEAr/ |
| 24 | - Linux on Sharp LH79524 and LH7A40X System On a Chip (SOC) | ||
| 25 | SPEAr | ||
| 26 | - ST SPEAr platform Linux Overview | 28 | - ST SPEAr platform Linux Overview |
| 27 | VFP/ | 29 | VFP/ |
| 28 | - Release notes for Linux Kernel Vector Floating Point support code | 30 | - Release notes for Linux Kernel Vector Floating Point support code |
diff --git a/Documentation/arm/Atmel/README b/Documentation/arm/Atmel/README new file mode 100644 index 000000000000..c53a19b4aab2 --- /dev/null +++ b/Documentation/arm/Atmel/README | |||
| @@ -0,0 +1,124 @@ | |||
| 1 | ARM Atmel SoCs (aka AT91) | ||
| 2 | ========================= | ||
| 3 | |||
| 4 | |||
| 5 | Introduction | ||
| 6 | ------------ | ||
| 7 | This document gives useful information about the ARM Atmel SoCs that are | ||
| 8 | currently supported in Linux Mainline (you know, the one on kernel.org). | ||
| 9 | |||
| 10 | It is important to note that the Atmel | SMART ARM-based MPU product line is | ||
| 11 | historically named "AT91" or "at91" throughout the Linux kernel development | ||
| 12 | process even if this product prefix has completely disappeared from the | ||
| 13 | official Atmel product name. Anyway, files, directories, git trees, | ||
| 14 | git branches/tags and email subject always contain this "at91" sub-string. | ||
| 15 | |||
| 16 | |||
| 17 | AT91 SoCs | ||
| 18 | --------- | ||
| 19 | Documentation and detailled datasheet for each product are available on | ||
| 20 | the Atmel website: http://www.atmel.com. | ||
| 21 | |||
| 22 | Flavors: | ||
| 23 | * ARM 920 based SoC | ||
| 24 | - at91rm9200 | ||
| 25 | + Datasheet | ||
| 26 | http://www.atmel.com/Images/doc1768.pdf | ||
| 27 | |||
| 28 | * ARM 926 based SoCs | ||
| 29 | - at91sam9260 | ||
| 30 | + Datasheet | ||
| 31 | http://www.atmel.com/Images/doc6221.pdf | ||
| 32 | |||
| 33 | - at91sam9xe | ||
| 34 | + Datasheet | ||
| 35 | http://www.atmel.com/Images/Atmel-6254-32-bit-ARM926EJ-S-Embedded-Microprocessor-SAM9XE_Datasheet.pdf | ||
| 36 | |||
| 37 | - at91sam9261 | ||
| 38 | + Datasheet | ||
| 39 | http://www.atmel.com/Images/doc6062.pdf | ||
| 40 | |||
| 41 | - at91sam9263 | ||
| 42 | + Datasheet | ||
| 43 | http://www.atmel.com/Images/Atmel_6249_32-bit-ARM926EJ-S-Microcontroller_SAM9263_Datasheet.pdf | ||
| 44 | |||
| 45 | - at91sam9rl | ||
| 46 | + Datasheet | ||
| 47 | http://www.atmel.com/Images/doc6289.pdf | ||
| 48 | |||
| 49 | - at91sam9g20 | ||
| 50 | + Datasheet | ||
| 51 | http://www.atmel.com/Images/doc6384.pdf | ||
| 52 | |||
| 53 | - at91sam9g45 family | ||
| 54 | - at91sam9g45 | ||
| 55 | - at91sam9g46 | ||
| 56 | - at91sam9m10 | ||
| 57 | - at91sam9m11 (device superset) | ||
| 58 | + Datasheet | ||
| 59 | http://www.atmel.com/Images/Atmel-6437-32-bit-ARM926-Embedded-Microprocessor-SAM9M11_Datasheet.pdf | ||
| 60 | |||
| 61 | - at91sam9x5 family (aka "The 5 series") | ||
| 62 | - at91sam9g15 | ||
| 63 | - at91sam9g25 | ||
| 64 | - at91sam9g35 | ||
| 65 | - at91sam9x25 | ||
| 66 | - at91sam9x35 | ||
| 67 | + Datasheet (can be considered as covering the whole family) | ||
| 68 | http://www.atmel.com/Images/Atmel_11055_32-bit-ARM926EJ-S-Microcontroller_SAM9X35_Datasheet.pdf | ||
| 69 | |||
| 70 | - at91sam9n12 | ||
| 71 | + Datasheet | ||
| 72 | http://www.atmel.com/Images/Atmel_11063_32-bit-ARM926EJ-S-Microcontroller_SAM9N12CN11CN12_Datasheet.pdf | ||
| 73 | |||
| 74 | * ARM Cortex-A5 based SoCs | ||
| 75 | - sama5d3 family | ||
| 76 | - sama5d31 | ||
| 77 | - sama5d33 | ||
| 78 | - sama5d34 | ||
| 79 | - sama5d35 | ||
| 80 | - sama5d36 (device superset) | ||
| 81 | + Datasheet | ||
| 82 | http://www.atmel.com/Images/Atmel-11121-32-bit-Cortex-A5-Microcontroller-SAMA5D3_Datasheet.pdf | ||
| 83 | |||
| 84 | * ARM Cortex-A5 + NEON based SoCs | ||
| 85 | - sama5d4 family | ||
| 86 | - sama5d41 | ||
| 87 | - sama5d42 | ||
| 88 | - sama5d43 | ||
| 89 | - sama5d44 (device superset) | ||
| 90 | + Datasheet | ||
| 91 | http://www.atmel.com/Images/Atmel-11238-32-bit-Cortex-A5-Microcontroller-SAMA5D4_Datasheet.pdf | ||
| 92 | |||
| 93 | |||
| 94 | Linux kernel information | ||
| 95 | ------------------------ | ||
| 96 | Linux kernel mach directory: arch/arm/mach-at91 | ||
| 97 | MAINTAINERS entry is: "ARM/ATMEL AT91RM9200 AND AT91SAM ARM ARCHITECTURES" | ||
| 98 | |||
| 99 | |||
| 100 | Device Tree for AT91 SoCs and boards | ||
| 101 | ------------------------------------ | ||
| 102 | All AT91 SoCs are converted to Device Tree. Since Linux 3.19, these products | ||
| 103 | must use this method to boot the Linux kernel. | ||
| 104 | |||
| 105 | Work In Progress statement: | ||
| 106 | Device Tree files and Device Tree bindings that apply to AT91 SoCs and boards are | ||
| 107 | considered as "Unstable". To be completely clear, any at91 binding can change at | ||
| 108 | any time. So, be sure to use a Device Tree Binary and a Kernel Image generated from | ||
| 109 | the same source tree. | ||
| 110 | Please refer to the Documentation/devicetree/bindings/ABI.txt file for a | ||
| 111 | definition of a "Stable" binding/ABI. | ||
| 112 | This statement will be removed by AT91 MAINTAINERS when appropriate. | ||
| 113 | |||
| 114 | Naming conventions and best practice: | ||
| 115 | - SoCs Device Tree Source Include files are named after the official name of | ||
| 116 | the product (at91sam9g20.dtsi or sama5d33.dtsi for instance). | ||
| 117 | - Device Tree Source Include files (.dtsi) are used to collect common nodes that can be | ||
| 118 | shared across SoCs or boards (sama5d3.dtsi or at91sam9x5cm.dtsi for instance). | ||
| 119 | When collecting nodes for a particular peripheral or topic, the identifier have to | ||
| 120 | be placed at the end of the file name, separated with a "_" (at91sam9x5_can.dtsi | ||
| 121 | or sama5d3_gmac.dtsi for example). | ||
| 122 | - board Device Tree Source files (.dts) are prefixed by the string "at91-" so | ||
| 123 | that they can be identified easily. Note that some files are historical exceptions | ||
| 124 | to this rule (sama5d3[13456]ek.dts, usb_a9g20.dts or animeo_ip.dts for example). | ||
diff --git a/Documentation/arm/Samsung-S3C24XX/DMA.txt b/Documentation/arm/Samsung-S3C24XX/DMA.txt deleted file mode 100644 index 3ed82383efea..000000000000 --- a/Documentation/arm/Samsung-S3C24XX/DMA.txt +++ /dev/null | |||
| @@ -1,46 +0,0 @@ | |||
| 1 | S3C2410 DMA | ||
| 2 | =========== | ||
| 3 | |||
| 4 | Introduction | ||
| 5 | ------------ | ||
| 6 | |||
| 7 | The kernel provides an interface to manage DMA transfers | ||
| 8 | using the DMA channels in the CPU, so that the central | ||
| 9 | duty of managing channel mappings, and programming the | ||
| 10 | channel generators is in one place. | ||
| 11 | |||
| 12 | |||
| 13 | DMA Channel Ordering | ||
| 14 | -------------------- | ||
| 15 | |||
| 16 | Many of the range do not have connections for the DMA | ||
| 17 | channels to all sources, which means that some devices | ||
| 18 | have a restricted number of channels that can be used. | ||
| 19 | |||
| 20 | To allow flexibility for each CPU type and board, the | ||
| 21 | DMA code can be given a DMA ordering structure which | ||
| 22 | allows the order of channel search to be specified, as | ||
| 23 | well as allowing the prohibition of certain claims. | ||
| 24 | |||
| 25 | struct s3c24xx_dma_order has a list of channels, and | ||
| 26 | each channel within has a slot for a list of DMA | ||
| 27 | channel numbers. The slots are searched in order for | ||
| 28 | the presence of a DMA channel number with DMA_CH_VALID | ||
| 29 | or-ed in. | ||
| 30 | |||
| 31 | If the order has the flag DMA_CH_NEVER set, then after | ||
| 32 | checking the channel list, the system will return no | ||
| 33 | found channel, thus denying the request. | ||
| 34 | |||
| 35 | A board support file can call s3c24xx_dma_order_set() | ||
| 36 | to register a complete ordering set. The routine will | ||
| 37 | copy the data, so the original can be discarded with | ||
| 38 | __initdata. | ||
| 39 | |||
| 40 | |||
| 41 | Authour | ||
| 42 | ------- | ||
| 43 | |||
| 44 | Ben Dooks, | ||
| 45 | Copyright (c) 2007 Ben Dooks, Simtec Electronics | ||
| 46 | Licensed under the GPL v2 | ||
diff --git a/Documentation/arm/sti/stih418-overview.txt b/Documentation/arm/sti/stih418-overview.txt new file mode 100644 index 000000000000..1cd8fc80646d --- /dev/null +++ b/Documentation/arm/sti/stih418-overview.txt | |||
| @@ -0,0 +1,20 @@ | |||
| 1 | STiH418 Overview | ||
| 2 | ================ | ||
| 3 | |||
| 4 | Introduction | ||
| 5 | ------------ | ||
| 6 | |||
| 7 | The STiH418 is the new generation of SoC for UHDp60 set-top boxes | ||
| 8 | and server/connected client application for satellite, cable, terrestrial | ||
| 9 | and IP-STB markets. | ||
| 10 | |||
| 11 | Features | ||
| 12 | - ARM Cortex-A9 1.5 GHz quad core CPU (28nm) | ||
| 13 | - SATA2, USB 3.0, PCIe, Gbit Ethernet | ||
| 14 | - HEVC L5.1 Main 10 | ||
| 15 | - VP9 | ||
| 16 | |||
| 17 | Document Author | ||
| 18 | --------------- | ||
| 19 | |||
| 20 | Maxime Coquelin <maxime.coquelin@st.com>, (c) 2015 ST Microelectronics | ||
diff --git a/Documentation/arm/sunxi/README b/Documentation/arm/sunxi/README index e68d163df33d..1fe2d7fd4108 100644 --- a/Documentation/arm/sunxi/README +++ b/Documentation/arm/sunxi/README | |||
| @@ -50,7 +50,6 @@ SunXi family | |||
| 50 | http://dl.linux-sunxi.org/A31/A3x_release_document/A31/IC/A31%20user%20manual%20V1.1%2020130630.pdf | 50 | http://dl.linux-sunxi.org/A31/A3x_release_document/A31/IC/A31%20user%20manual%20V1.1%2020130630.pdf |
| 51 | 51 | ||
| 52 | - Allwinner A31s (sun6i) | 52 | - Allwinner A31s (sun6i) |
| 53 | + Not Supported | ||
| 54 | + Datasheet | 53 | + Datasheet |
| 55 | http://dl.linux-sunxi.org/A31/A3x_release_document/A31s/IC/A31s%20datasheet%20V1.3%2020131106.pdf | 54 | http://dl.linux-sunxi.org/A31/A3x_release_document/A31s/IC/A31s%20datasheet%20V1.3%2020131106.pdf |
| 56 | + User Manual | 55 | + User Manual |
diff --git a/Documentation/arm64/legacy_instructions.txt b/Documentation/arm64/legacy_instructions.txt index a3b3da2ec6ed..01bf3d9fac85 100644 --- a/Documentation/arm64/legacy_instructions.txt +++ b/Documentation/arm64/legacy_instructions.txt | |||
| @@ -32,6 +32,9 @@ The default mode depends on the status of the instruction in the | |||
| 32 | architecture. Deprecated instructions should default to emulation | 32 | architecture. Deprecated instructions should default to emulation |
| 33 | while obsolete instructions must be undefined by default. | 33 | while obsolete instructions must be undefined by default. |
| 34 | 34 | ||
| 35 | Note: Instruction emulation may not be possible in all cases. See | ||
| 36 | individual instruction notes for further information. | ||
| 37 | |||
| 35 | Supported legacy instructions | 38 | Supported legacy instructions |
| 36 | ----------------------------- | 39 | ----------------------------- |
| 37 | * SWP{B} | 40 | * SWP{B} |
| @@ -43,3 +46,12 @@ Default: Undef (0) | |||
| 43 | Node: /proc/sys/abi/cp15_barrier | 46 | Node: /proc/sys/abi/cp15_barrier |
| 44 | Status: Deprecated | 47 | Status: Deprecated |
| 45 | Default: Emulate (1) | 48 | Default: Emulate (1) |
| 49 | |||
| 50 | * SETEND | ||
| 51 | Node: /proc/sys/abi/setend | ||
| 52 | Status: Deprecated | ||
| 53 | Default: Emulate (1)* | ||
| 54 | Note: All the cpus on the system must have mixed endian support at EL0 | ||
| 55 | for this feature to be enabled. If a new CPU - which doesn't support mixed | ||
| 56 | endian - is hotplugged in after this feature has been enabled, there could | ||
| 57 | be unexpected results in the application. | ||
diff --git a/Documentation/blackfin/Makefile b/Documentation/blackfin/Makefile index c7e6c99bad81..03f78059d6f5 100644 --- a/Documentation/blackfin/Makefile +++ b/Documentation/blackfin/Makefile | |||
| @@ -1,3 +1,5 @@ | |||
| 1 | ifneq ($(CONFIG_BLACKFIN),) | 1 | ifneq ($(CONFIG_BLACKFIN),) |
| 2 | ifneq ($(CONFIG_BFIN_GPTIMERS,) | ||
| 2 | obj-m := gptimers-example.o | 3 | obj-m := gptimers-example.o |
| 3 | endif | 4 | endif |
| 5 | endif | ||
diff --git a/Documentation/cachetlb.txt b/Documentation/cachetlb.txt index d79b008e4a32..3f9f808b5119 100644 --- a/Documentation/cachetlb.txt +++ b/Documentation/cachetlb.txt | |||
| @@ -317,10 +317,10 @@ maps this page at its virtual address. | |||
| 317 | about doing this. | 317 | about doing this. |
| 318 | 318 | ||
| 319 | The idea is, first at flush_dcache_page() time, if | 319 | The idea is, first at flush_dcache_page() time, if |
| 320 | page->mapping->i_mmap is an empty tree and ->i_mmap_nonlinear | 320 | page->mapping->i_mmap is an empty tree, just mark the architecture |
| 321 | an empty list, just mark the architecture private page flag bit. | 321 | private page flag bit. Later, in update_mmu_cache(), a check is |
| 322 | Later, in update_mmu_cache(), a check is made of this flag bit, | 322 | made of this flag bit, and if set the flush is done and the flag |
| 323 | and if set the flush is done and the flag bit is cleared. | 323 | bit is cleared. |
| 324 | 324 | ||
| 325 | IMPORTANT NOTE: It is often important, if you defer the flush, | 325 | IMPORTANT NOTE: It is often important, if you defer the flush, |
| 326 | that the actual flush occurs on the same CPU | 326 | that the actual flush occurs on the same CPU |
diff --git a/Documentation/cgroups/00-INDEX b/Documentation/cgroups/00-INDEX index bc461b6425a7..96ce071a3633 100644 --- a/Documentation/cgroups/00-INDEX +++ b/Documentation/cgroups/00-INDEX | |||
| @@ -24,3 +24,5 @@ net_prio.txt | |||
| 24 | - Network priority cgroups details and usages. | 24 | - Network priority cgroups details and usages. |
| 25 | resource_counter.txt | 25 | resource_counter.txt |
| 26 | - Resource Counter API. | 26 | - Resource Counter API. |
| 27 | unified-hierarchy.txt | ||
| 28 | - Description the new/next cgroup interface. | ||
diff --git a/Documentation/cgroups/unified-hierarchy.txt b/Documentation/cgroups/unified-hierarchy.txt index 4f4563277864..71daa35ec2d9 100644 --- a/Documentation/cgroups/unified-hierarchy.txt +++ b/Documentation/cgroups/unified-hierarchy.txt | |||
| @@ -327,6 +327,85 @@ supported and the interface files "release_agent" and | |||
| 327 | - use_hierarchy is on by default and the cgroup file for the flag is | 327 | - use_hierarchy is on by default and the cgroup file for the flag is |
| 328 | not created. | 328 | not created. |
| 329 | 329 | ||
| 330 | - The original lower boundary, the soft limit, is defined as a limit | ||
| 331 | that is per default unset. As a result, the set of cgroups that | ||
| 332 | global reclaim prefers is opt-in, rather than opt-out. The costs | ||
| 333 | for optimizing these mostly negative lookups are so high that the | ||
| 334 | implementation, despite its enormous size, does not even provide the | ||
| 335 | basic desirable behavior. First off, the soft limit has no | ||
| 336 | hierarchical meaning. All configured groups are organized in a | ||
| 337 | global rbtree and treated like equal peers, regardless where they | ||
| 338 | are located in the hierarchy. This makes subtree delegation | ||
| 339 | impossible. Second, the soft limit reclaim pass is so aggressive | ||
| 340 | that it not just introduces high allocation latencies into the | ||
| 341 | system, but also impacts system performance due to overreclaim, to | ||
| 342 | the point where the feature becomes self-defeating. | ||
| 343 | |||
| 344 | The memory.low boundary on the other hand is a top-down allocated | ||
| 345 | reserve. A cgroup enjoys reclaim protection when it and all its | ||
| 346 | ancestors are below their low boundaries, which makes delegation of | ||
| 347 | subtrees possible. Secondly, new cgroups have no reserve per | ||
| 348 | default and in the common case most cgroups are eligible for the | ||
| 349 | preferred reclaim pass. This allows the new low boundary to be | ||
| 350 | efficiently implemented with just a minor addition to the generic | ||
| 351 | reclaim code, without the need for out-of-band data structures and | ||
| 352 | reclaim passes. Because the generic reclaim code considers all | ||
| 353 | cgroups except for the ones running low in the preferred first | ||
| 354 | reclaim pass, overreclaim of individual groups is eliminated as | ||
| 355 | well, resulting in much better overall workload performance. | ||
| 356 | |||
| 357 | - The original high boundary, the hard limit, is defined as a strict | ||
| 358 | limit that can not budge, even if the OOM killer has to be called. | ||
| 359 | But this generally goes against the goal of making the most out of | ||
| 360 | the available memory. The memory consumption of workloads varies | ||
| 361 | during runtime, and that requires users to overcommit. But doing | ||
| 362 | that with a strict upper limit requires either a fairly accurate | ||
| 363 | prediction of the working set size or adding slack to the limit. | ||
| 364 | Since working set size estimation is hard and error prone, and | ||
| 365 | getting it wrong results in OOM kills, most users tend to err on the | ||
| 366 | side of a looser limit and end up wasting precious resources. | ||
| 367 | |||
| 368 | The memory.high boundary on the other hand can be set much more | ||
| 369 | conservatively. When hit, it throttles allocations by forcing them | ||
| 370 | into direct reclaim to work off the excess, but it never invokes the | ||
| 371 | OOM killer. As a result, a high boundary that is chosen too | ||
| 372 | aggressively will not terminate the processes, but instead it will | ||
| 373 | lead to gradual performance degradation. The user can monitor this | ||
| 374 | and make corrections until the minimal memory footprint that still | ||
| 375 | gives acceptable performance is found. | ||
| 376 | |||
| 377 | In extreme cases, with many concurrent allocations and a complete | ||
| 378 | breakdown of reclaim progress within the group, the high boundary | ||
| 379 | can be exceeded. But even then it's mostly better to satisfy the | ||
| 380 | allocation from the slack available in other groups or the rest of | ||
| 381 | the system than killing the group. Otherwise, memory.max is there | ||
| 382 | to limit this type of spillover and ultimately contain buggy or even | ||
| 383 | malicious applications. | ||
| 384 | |||
| 385 | - The original control file names are unwieldy and inconsistent in | ||
| 386 | many different ways. For example, the upper boundary hit count is | ||
| 387 | exported in the memory.failcnt file, but an OOM event count has to | ||
| 388 | be manually counted by listening to memory.oom_control events, and | ||
| 389 | lower boundary / soft limit events have to be counted by first | ||
| 390 | setting a threshold for that value and then counting those events. | ||
| 391 | Also, usage and limit files encode their units in the filename. | ||
| 392 | That makes the filenames very long, even though this is not | ||
| 393 | information that a user needs to be reminded of every time they type | ||
| 394 | out those names. | ||
| 395 | |||
| 396 | To address these naming issues, as well as to signal clearly that | ||
| 397 | the new interface carries a new configuration model, the naming | ||
| 398 | conventions in it necessarily differ from the old interface. | ||
| 399 | |||
| 400 | - The original limit files indicate the state of an unset limit with a | ||
| 401 | Very High Number, and a configured limit can be unset by echoing -1 | ||
| 402 | into those files. But that very high number is implementation and | ||
| 403 | architecture dependent and not very descriptive. And while -1 can | ||
| 404 | be understood as an underflow into the highest possible value, -2 or | ||
| 405 | -10M etc. do not work, so it's not consistent. | ||
| 406 | |||
| 407 | memory.low, memory.high, and memory.max will use the string | ||
| 408 | "infinity" to indicate and set the highest possible value. | ||
| 330 | 409 | ||
| 331 | 5. Planned Changes | 410 | 5. Planned Changes |
| 332 | 411 | ||
diff --git a/Documentation/clk.txt b/Documentation/clk.txt index 4ff84623d5e1..0e4f90aa1c13 100644 --- a/Documentation/clk.txt +++ b/Documentation/clk.txt | |||
| @@ -73,6 +73,8 @@ the operations defined in clk.h: | |||
| 73 | unsigned long *parent_rate); | 73 | unsigned long *parent_rate); |
| 74 | long (*determine_rate)(struct clk_hw *hw, | 74 | long (*determine_rate)(struct clk_hw *hw, |
| 75 | unsigned long rate, | 75 | unsigned long rate, |
| 76 | unsigned long min_rate, | ||
| 77 | unsigned long max_rate, | ||
| 76 | unsigned long *best_parent_rate, | 78 | unsigned long *best_parent_rate, |
| 77 | struct clk_hw **best_parent_clk); | 79 | struct clk_hw **best_parent_clk); |
| 78 | int (*set_parent)(struct clk_hw *hw, u8 index); | 80 | int (*set_parent)(struct clk_hw *hw, u8 index); |
diff --git a/Documentation/cpu-freq/intel-pstate.txt b/Documentation/cpu-freq/intel-pstate.txt index 765d7fc0e692..655750743fb0 100644 --- a/Documentation/cpu-freq/intel-pstate.txt +++ b/Documentation/cpu-freq/intel-pstate.txt | |||
| @@ -37,6 +37,14 @@ controlling P state selection. These files have been added to | |||
| 37 | no_turbo: limits the driver to selecting P states below the turbo | 37 | no_turbo: limits the driver to selecting P states below the turbo |
| 38 | frequency range. | 38 | frequency range. |
| 39 | 39 | ||
| 40 | turbo_pct: displays the percentage of the total performance that | ||
| 41 | is supported by hardware that is in the turbo range. This number | ||
| 42 | is independent of whether turbo has been disabled or not. | ||
| 43 | |||
| 44 | num_pstates: displays the number of pstates that are supported | ||
| 45 | by hardware. This number is independent of whether turbo has | ||
| 46 | been disabled or not. | ||
| 47 | |||
| 40 | For contemporary Intel processors, the frequency is controlled by the | 48 | For contemporary Intel processors, the frequency is controlled by the |
| 41 | processor itself and the P-states exposed to software are related to | 49 | processor itself and the P-states exposed to software are related to |
| 42 | performance levels. The idea that frequency can be set to a single | 50 | performance levels. The idea that frequency can be set to a single |
diff --git a/Documentation/device-mapper/dm-crypt.txt b/Documentation/device-mapper/dm-crypt.txt index c81839b52c4d..ad697781f9ac 100644 --- a/Documentation/device-mapper/dm-crypt.txt +++ b/Documentation/device-mapper/dm-crypt.txt | |||
| @@ -51,7 +51,7 @@ Parameters: <cipher> <key> <iv_offset> <device path> \ | |||
| 51 | Otherwise #opt_params is the number of following arguments. | 51 | Otherwise #opt_params is the number of following arguments. |
| 52 | 52 | ||
| 53 | Example of optional parameters section: | 53 | Example of optional parameters section: |
| 54 | 1 allow_discards | 54 | 3 allow_discards same_cpu_crypt submit_from_crypt_cpus |
| 55 | 55 | ||
| 56 | allow_discards | 56 | allow_discards |
| 57 | Block discard requests (a.k.a. TRIM) are passed through the crypt device. | 57 | Block discard requests (a.k.a. TRIM) are passed through the crypt device. |
| @@ -63,6 +63,19 @@ allow_discards | |||
| 63 | used space etc.) if the discarded blocks can be located easily on the | 63 | used space etc.) if the discarded blocks can be located easily on the |
| 64 | device later. | 64 | device later. |
| 65 | 65 | ||
| 66 | same_cpu_crypt | ||
| 67 | Perform encryption using the same cpu that IO was submitted on. | ||
| 68 | The default is to use an unbound workqueue so that encryption work | ||
| 69 | is automatically balanced between available CPUs. | ||
| 70 | |||
| 71 | submit_from_crypt_cpus | ||
| 72 | Disable offloading writes to a separate thread after encryption. | ||
| 73 | There are some situations where offloading write bios from the | ||
| 74 | encryption threads to a single thread degrades performance | ||
| 75 | significantly. The default is to offload write bios to the same | ||
| 76 | thread because it benefits CFQ to have writes submitted using the | ||
| 77 | same context. | ||
| 78 | |||
| 66 | Example scripts | 79 | Example scripts |
| 67 | =============== | 80 | =============== |
| 68 | LUKS (Linux Unified Key Setup) is now the preferred way to set up disk | 81 | LUKS (Linux Unified Key Setup) is now the preferred way to set up disk |
diff --git a/Documentation/devicetree/bindings/arm/arm-boards b/Documentation/devicetree/bindings/arm/arm-boards index 556c8665fdbf..b78564b2b201 100644 --- a/Documentation/devicetree/bindings/arm/arm-boards +++ b/Documentation/devicetree/bindings/arm/arm-boards | |||
| @@ -23,7 +23,7 @@ Required nodes: | |||
| 23 | range of 0x200 bytes. | 23 | range of 0x200 bytes. |
| 24 | 24 | ||
| 25 | - syscon: the root node of the Integrator platforms must have a | 25 | - syscon: the root node of the Integrator platforms must have a |
| 26 | system controller node pointong to the control registers, | 26 | system controller node pointing to the control registers, |
| 27 | with the compatible string | 27 | with the compatible string |
| 28 | "arm,integrator-ap-syscon" | 28 | "arm,integrator-ap-syscon" |
| 29 | "arm,integrator-cp-syscon" | 29 | "arm,integrator-cp-syscon" |
diff --git a/Documentation/devicetree/bindings/arm/armada-38x.txt b/Documentation/devicetree/bindings/arm/armada-38x.txt index ad9f8ed4d9bd..202953f1887e 100644 --- a/Documentation/devicetree/bindings/arm/armada-38x.txt +++ b/Documentation/devicetree/bindings/arm/armada-38x.txt | |||
| @@ -15,6 +15,13 @@ Required root node property: | |||
| 15 | 15 | ||
| 16 | compatible: must contain "marvell,armada385" | 16 | compatible: must contain "marvell,armada385" |
| 17 | 17 | ||
| 18 | In addition, boards using the Marvell Armada 388 SoC shall have the | ||
| 19 | following property before the previous one: | ||
| 20 | |||
| 21 | Required root node property: | ||
| 22 | |||
| 23 | compatible: must contain "marvell,armada388" | ||
| 24 | |||
| 18 | Example: | 25 | Example: |
| 19 | 26 | ||
| 20 | compatible = "marvell,a385-rd", "marvell,armada385", "marvell,armada380"; | 27 | compatible = "marvell,a385-rd", "marvell,armada385", "marvell,armada380"; |
diff --git a/Documentation/devicetree/bindings/arm/atmel-at91.txt b/Documentation/devicetree/bindings/arm/atmel-at91.txt index 562cda9d86d9..ad319f84f560 100644 --- a/Documentation/devicetree/bindings/arm/atmel-at91.txt +++ b/Documentation/devicetree/bindings/arm/atmel-at91.txt | |||
| @@ -24,6 +24,7 @@ compatible: must be one of: | |||
| 24 | o "atmel,at91sam9g45" | 24 | o "atmel,at91sam9g45" |
| 25 | o "atmel,at91sam9n12" | 25 | o "atmel,at91sam9n12" |
| 26 | o "atmel,at91sam9rl" | 26 | o "atmel,at91sam9rl" |
| 27 | o "atmel,at91sam9xe" | ||
| 27 | * "atmel,sama5" for SoCs using a Cortex-A5, shall be extended with the specific | 28 | * "atmel,sama5" for SoCs using a Cortex-A5, shall be extended with the specific |
| 28 | SoC family: | 29 | SoC family: |
| 29 | o "atmel,sama5d3" shall be extended with the specific SoC compatible: | 30 | o "atmel,sama5d3" shall be extended with the specific SoC compatible: |
| @@ -136,3 +137,19 @@ Example: | |||
| 136 | compatible = "atmel,at91sam9260-rstc"; | 137 | compatible = "atmel,at91sam9260-rstc"; |
| 137 | reg = <0xfffffd00 0x10>; | 138 | reg = <0xfffffd00 0x10>; |
| 138 | }; | 139 | }; |
| 140 | |||
| 141 | Special Function Registers (SFR) | ||
| 142 | |||
| 143 | Special Function Registers (SFR) manage specific aspects of the integrated | ||
| 144 | memory, bridge implementations, processor and other functionality not controlled | ||
| 145 | elsewhere. | ||
| 146 | |||
| 147 | required properties: | ||
| 148 | - compatible: Should be "atmel,<chip>-sfr", "syscon". | ||
| 149 | <chip> can be "sama5d3" or "sama5d4". | ||
| 150 | - reg: Should contain registers location and length | ||
| 151 | |||
| 152 | sfr@f0038000 { | ||
| 153 | compatible = "atmel,sama5d3-sfr", "syscon"; | ||
| 154 | reg = <0xf0038000 0x60>; | ||
| 155 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/brcm-brcmstb.txt b/Documentation/devicetree/bindings/arm/brcm-brcmstb.txt index 3c436cc4f35d..430608ec09f0 100644 --- a/Documentation/devicetree/bindings/arm/brcm-brcmstb.txt +++ b/Documentation/devicetree/bindings/arm/brcm-brcmstb.txt | |||
| @@ -79,7 +79,9 @@ reboot | |||
| 79 | Required properties | 79 | Required properties |
| 80 | 80 | ||
| 81 | - compatible | 81 | - compatible |
| 82 | The string property "brcm,brcmstb-reboot". | 82 | The string property "brcm,brcmstb-reboot" for 40nm/28nm chips with |
| 83 | the new SYS_CTRL interface, or "brcm,bcm7038-reboot" for 65nm | ||
| 84 | chips with the old SUN_TOP_CTRL interface. | ||
| 83 | 85 | ||
| 84 | - syscon | 86 | - syscon |
| 85 | A phandle / integer array that points to the syscon node which describes | 87 | A phandle / integer array that points to the syscon node which describes |
diff --git a/Documentation/devicetree/bindings/arm/coresight.txt b/Documentation/devicetree/bindings/arm/coresight.txt index d790f49066f3..a3089359aaa6 100644 --- a/Documentation/devicetree/bindings/arm/coresight.txt +++ b/Documentation/devicetree/bindings/arm/coresight.txt | |||
| @@ -38,8 +38,6 @@ its hardware characteristcs. | |||
| 38 | AMBA markee): | 38 | AMBA markee): |
| 39 | - "arm,coresight-replicator" | 39 | - "arm,coresight-replicator" |
| 40 | 40 | ||
| 41 | * id: a unique number that will identify this replicator. | ||
| 42 | |||
| 43 | * port or ports: same as above. | 41 | * port or ports: same as above. |
| 44 | 42 | ||
| 45 | * Optional properties for ETM/PTMs: | 43 | * Optional properties for ETM/PTMs: |
| @@ -94,8 +92,6 @@ Example: | |||
| 94 | * AMBA bus. As such no need to add "arm,primecell". | 92 | * AMBA bus. As such no need to add "arm,primecell". |
| 95 | */ | 93 | */ |
| 96 | compatible = "arm,coresight-replicator"; | 94 | compatible = "arm,coresight-replicator"; |
| 97 | /* this will show up in debugfs as "0.replicator" */ | ||
| 98 | id = <0>; | ||
| 99 | 95 | ||
| 100 | ports { | 96 | ports { |
| 101 | #address-cells = <1>; | 97 | #address-cells = <1>; |
diff --git a/Documentation/devicetree/bindings/arm/cpus.txt b/Documentation/devicetree/bindings/arm/cpus.txt index b2aacbe16ed9..8b9e0a95de31 100644 --- a/Documentation/devicetree/bindings/arm/cpus.txt +++ b/Documentation/devicetree/bindings/arm/cpus.txt | |||
| @@ -175,6 +175,7 @@ nodes to be present and contain the properties described below. | |||
| 175 | "marvell,pj4a" | 175 | "marvell,pj4a" |
| 176 | "marvell,pj4b" | 176 | "marvell,pj4b" |
| 177 | "marvell,sheeva-v5" | 177 | "marvell,sheeva-v5" |
| 178 | "nvidia,tegra132-denver" | ||
| 178 | "qcom,krait" | 179 | "qcom,krait" |
| 179 | "qcom,scorpion" | 180 | "qcom,scorpion" |
| 180 | - enable-method | 181 | - enable-method |
diff --git a/Documentation/devicetree/bindings/arm/digicolor.txt b/Documentation/devicetree/bindings/arm/digicolor.txt new file mode 100644 index 000000000000..658553f40b23 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/digicolor.txt | |||
| @@ -0,0 +1,6 @@ | |||
| 1 | Conexant Digicolor Platforms Device Tree Bindings | ||
| 2 | |||
| 3 | Each device tree must specify which Conexant Digicolor SoC it uses. | ||
| 4 | Must be the following compatible string: | ||
| 5 | |||
| 6 | cnxt,cx92755 | ||
diff --git a/Documentation/devicetree/bindings/arm/exynos/power_domain.txt b/Documentation/devicetree/bindings/arm/exynos/power_domain.txt index abde1ea8a119..f4445e5a2bbb 100644 --- a/Documentation/devicetree/bindings/arm/exynos/power_domain.txt +++ b/Documentation/devicetree/bindings/arm/exynos/power_domain.txt | |||
| @@ -23,7 +23,7 @@ Optional Properties: | |||
| 23 | devices in this power domain. Maximum of 4 pairs (N = 0 to 3) | 23 | devices in this power domain. Maximum of 4 pairs (N = 0 to 3) |
| 24 | are supported currently. | 24 | are supported currently. |
| 25 | 25 | ||
| 26 | Node of a device using power domains must have a samsung,power-domain property | 26 | Node of a device using power domains must have a power-domains property |
| 27 | defined with a phandle to respective power domain. | 27 | defined with a phandle to respective power domain. |
| 28 | 28 | ||
| 29 | Example: | 29 | Example: |
diff --git a/Documentation/devicetree/bindings/arm/fsl.txt b/Documentation/devicetree/bindings/arm/fsl.txt index 4e8b7df7fc62..a5462b6b3c30 100644 --- a/Documentation/devicetree/bindings/arm/fsl.txt +++ b/Documentation/devicetree/bindings/arm/fsl.txt | |||
| @@ -75,6 +75,18 @@ i.MX6q generic board | |||
| 75 | Required root node properties: | 75 | Required root node properties: |
| 76 | - compatible = "fsl,imx6q"; | 76 | - compatible = "fsl,imx6q"; |
| 77 | 77 | ||
| 78 | Freescale Vybrid Platform Device Tree Bindings | ||
| 79 | ---------------------------------------------- | ||
| 80 | |||
| 81 | For the Vybrid SoC familiy all variants with DDR controller are supported, | ||
| 82 | which is the VF5xx and VF6xx series. Out of historical reasons, in most | ||
| 83 | places the kernel uses vf610 to refer to the whole familiy. | ||
| 84 | |||
| 85 | Required root node compatible property (one of them): | ||
| 86 | - compatible = "fsl,vf500"; | ||
| 87 | - compatible = "fsl,vf510"; | ||
| 88 | - compatible = "fsl,vf600"; | ||
| 89 | - compatible = "fsl,vf610"; | ||
| 78 | 90 | ||
| 79 | Freescale LS1021A Platform Device Tree Bindings | 91 | Freescale LS1021A Platform Device Tree Bindings |
| 80 | ------------------------------------------------ | 92 | ------------------------------------------------ |
| @@ -112,3 +124,11 @@ Example: | |||
| 112 | compatible = "fsl,ls1021a-dcfg"; | 124 | compatible = "fsl,ls1021a-dcfg"; |
| 113 | reg = <0x0 0x1ee0000 0x0 0x10000>; | 125 | reg = <0x0 0x1ee0000 0x0 0x10000>; |
| 114 | }; | 126 | }; |
| 127 | |||
| 128 | Freescale LS2085A SoC Device Tree Bindings | ||
| 129 | ------------------------------------------ | ||
| 130 | |||
| 131 | LS2085A ARMv8 based Simulator model | ||
| 132 | Required root node properties: | ||
| 133 | - compatible = "fsl,ls2085a-simu", "fsl,ls2085a"; | ||
| 134 | |||
diff --git a/Documentation/devicetree/bindings/arm/fw-cfg.txt b/Documentation/devicetree/bindings/arm/fw-cfg.txt new file mode 100644 index 000000000000..953fb640d9c4 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/fw-cfg.txt | |||
| @@ -0,0 +1,72 @@ | |||
| 1 | * QEMU Firmware Configuration bindings for ARM | ||
| 2 | |||
| 3 | QEMU's arm-softmmu and aarch64-softmmu emulation / virtualization targets | ||
| 4 | provide the following Firmware Configuration interface on the "virt" machine | ||
| 5 | type: | ||
| 6 | |||
| 7 | - A write-only, 16-bit wide selector (or control) register, | ||
| 8 | - a read-write, 64-bit wide data register. | ||
| 9 | |||
| 10 | QEMU exposes the control and data register to ARM guests as memory mapped | ||
| 11 | registers; their location is communicated to the guest's UEFI firmware in the | ||
| 12 | DTB that QEMU places at the bottom of the guest's DRAM. | ||
| 13 | |||
| 14 | The guest writes a selector value (a key) to the selector register, and then | ||
| 15 | can read the corresponding data (produced by QEMU) via the data register. If | ||
| 16 | the selected entry is writable, the guest can rewrite it through the data | ||
| 17 | register. | ||
| 18 | |||
| 19 | The selector register takes keys in big endian byte order. | ||
| 20 | |||
| 21 | The data register allows accesses with 8, 16, 32 and 64-bit width (only at | ||
| 22 | offset 0 of the register). Accesses larger than a byte are interpreted as | ||
| 23 | arrays, bundled together only for better performance. The bytes constituting | ||
| 24 | such a word, in increasing address order, correspond to the bytes that would | ||
| 25 | have been transferred by byte-wide accesses in chronological order. | ||
| 26 | |||
| 27 | The interface allows guest firmware to download various parameters and blobs | ||
| 28 | that affect how the firmware works and what tables it installs for the guest | ||
| 29 | OS. For example, boot order of devices, ACPI tables, SMBIOS tables, kernel and | ||
| 30 | initrd images for direct kernel booting, virtual machine UUID, SMP information, | ||
| 31 | virtual NUMA topology, and so on. | ||
| 32 | |||
| 33 | The authoritative registry of the valid selector values and their meanings is | ||
| 34 | the QEMU source code; the structure of the data blobs corresponding to the | ||
| 35 | individual key values is also defined in the QEMU source code. | ||
| 36 | |||
| 37 | The presence of the registers can be verified by selecting the "signature" blob | ||
| 38 | with key 0x0000, and reading four bytes from the data register. The returned | ||
| 39 | signature is "QEMU". | ||
| 40 | |||
| 41 | The outermost protocol (involving the write / read sequences of the control and | ||
| 42 | data registers) is expected to be versioned, and/or described by feature bits. | ||
| 43 | The interface revision / feature bitmap can be retrieved with key 0x0001. The | ||
| 44 | blob to be read from the data register has size 4, and it is to be interpreted | ||
| 45 | as a uint32_t value in little endian byte order. The current value | ||
| 46 | (corresponding to the above outer protocol) is zero. | ||
| 47 | |||
| 48 | The guest kernel is not expected to use these registers (although it is | ||
| 49 | certainly allowed to); the device tree bindings are documented here because | ||
| 50 | this is where device tree bindings reside in general. | ||
| 51 | |||
| 52 | Required properties: | ||
| 53 | |||
| 54 | - compatible: "qemu,fw-cfg-mmio". | ||
| 55 | |||
| 56 | - reg: the MMIO region used by the device. | ||
| 57 | * Bytes 0x0 to 0x7 cover the data register. | ||
| 58 | * Bytes 0x8 to 0x9 cover the selector register. | ||
| 59 | * Further registers may be appended to the region in case of future interface | ||
| 60 | revisions / feature bits. | ||
| 61 | |||
| 62 | Example: | ||
| 63 | |||
| 64 | / { | ||
| 65 | #size-cells = <0x2>; | ||
| 66 | #address-cells = <0x2>; | ||
| 67 | |||
| 68 | fw-cfg@9020000 { | ||
| 69 | compatible = "qemu,fw-cfg-mmio"; | ||
| 70 | reg = <0x0 0x9020000 0x0 0xa>; | ||
| 71 | }; | ||
| 72 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/gic.txt b/Documentation/devicetree/bindings/arm/gic.txt index 8112d0c3675a..c97484b73e72 100644 --- a/Documentation/devicetree/bindings/arm/gic.txt +++ b/Documentation/devicetree/bindings/arm/gic.txt | |||
| @@ -32,12 +32,16 @@ Main node required properties: | |||
| 32 | The 3rd cell is the flags, encoded as follows: | 32 | The 3rd cell is the flags, encoded as follows: |
| 33 | bits[3:0] trigger type and level flags. | 33 | bits[3:0] trigger type and level flags. |
| 34 | 1 = low-to-high edge triggered | 34 | 1 = low-to-high edge triggered |
| 35 | 2 = high-to-low edge triggered | 35 | 2 = high-to-low edge triggered (invalid for SPIs) |
| 36 | 4 = active high level-sensitive | 36 | 4 = active high level-sensitive |
| 37 | 8 = active low level-sensitive | 37 | 8 = active low level-sensitive (invalid for SPIs). |
| 38 | bits[15:8] PPI interrupt cpu mask. Each bit corresponds to each of | 38 | bits[15:8] PPI interrupt cpu mask. Each bit corresponds to each of |
| 39 | the 8 possible cpus attached to the GIC. A bit set to '1' indicated | 39 | the 8 possible cpus attached to the GIC. A bit set to '1' indicated |
| 40 | the interrupt is wired to that CPU. Only valid for PPI interrupts. | 40 | the interrupt is wired to that CPU. Only valid for PPI interrupts. |
| 41 | Also note that the configurability of PPI interrupts is IMPLEMENTATION | ||
| 42 | DEFINED and as such not guaranteed to be present (most SoC available | ||
| 43 | in 2014 seem to ignore the setting of this flag and use the hardware | ||
| 44 | default value). | ||
| 41 | 45 | ||
| 42 | - reg : Specifies base physical address(s) and size of the GIC registers. The | 46 | - reg : Specifies base physical address(s) and size of the GIC registers. The |
| 43 | first region is the GIC distributor register base and size. The 2nd region is | 47 | first region is the GIC distributor register base and size. The 2nd region is |
diff --git a/Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt b/Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt index f717c7b48603..35b1bd49cfa1 100644 --- a/Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt +++ b/Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt | |||
| @@ -9,6 +9,10 @@ HiP04 D01 Board | |||
| 9 | Required root node properties: | 9 | Required root node properties: |
| 10 | - compatible = "hisilicon,hip04-d01"; | 10 | - compatible = "hisilicon,hip04-d01"; |
| 11 | 11 | ||
| 12 | HiP01 ca9x2 Board | ||
| 13 | Required root node properties: | ||
| 14 | - compatible = "hisilicon,hip01-ca9x2"; | ||
| 15 | |||
| 12 | 16 | ||
| 13 | Hisilicon system controller | 17 | Hisilicon system controller |
| 14 | 18 | ||
| @@ -37,6 +41,27 @@ Example: | |||
| 37 | }; | 41 | }; |
| 38 | 42 | ||
| 39 | ----------------------------------------------------------------------- | 43 | ----------------------------------------------------------------------- |
| 44 | Hisilicon HiP01 system controller | ||
| 45 | |||
| 46 | Required properties: | ||
| 47 | - compatible : "hisilicon,hip01-sysctrl" | ||
| 48 | - reg : Register address and size | ||
| 49 | |||
| 50 | The HiP01 system controller is mostly compatible with hisilicon | ||
| 51 | system controller,but it has some specific control registers for | ||
| 52 | HIP01 SoC family, such as slave core boot, and also some same | ||
| 53 | registers located at different offset. | ||
| 54 | |||
| 55 | Example: | ||
| 56 | |||
| 57 | /* for hip01-ca9x2 */ | ||
| 58 | sysctrl: system-controller@10000000 { | ||
| 59 | compatible = "hisilicon,hip01-sysctrl", "hisilicon,sysctrl"; | ||
| 60 | reg = <0x10000000 0x1000>; | ||
| 61 | reboot-offset = <0x4>; | ||
| 62 | }; | ||
| 63 | |||
| 64 | ----------------------------------------------------------------------- | ||
| 40 | Hisilicon CPU controller | 65 | Hisilicon CPU controller |
| 41 | 66 | ||
| 42 | Required properties: | 67 | Required properties: |
diff --git a/Documentation/devicetree/bindings/arm/l2cc.txt b/Documentation/devicetree/bindings/arm/l2cc.txt index 292ef7ca3058..0dbabe9a6b0a 100644 --- a/Documentation/devicetree/bindings/arm/l2cc.txt +++ b/Documentation/devicetree/bindings/arm/l2cc.txt | |||
| @@ -57,6 +57,16 @@ Optional properties: | |||
| 57 | - cache-id-part: cache id part number to be used if it is not present | 57 | - cache-id-part: cache id part number to be used if it is not present |
| 58 | on hardware | 58 | on hardware |
| 59 | - wt-override: If present then L2 is forced to Write through mode | 59 | - wt-override: If present then L2 is forced to Write through mode |
| 60 | - arm,double-linefill : Override double linefill enable setting. Enable if | ||
| 61 | non-zero, disable if zero. | ||
| 62 | - arm,double-linefill-incr : Override double linefill on INCR read. Enable | ||
| 63 | if non-zero, disable if zero. | ||
| 64 | - arm,double-linefill-wrap : Override double linefill on WRAP read. Enable | ||
| 65 | if non-zero, disable if zero. | ||
| 66 | - arm,prefetch-drop : Override prefetch drop enable setting. Enable if non-zero, | ||
| 67 | disable if zero. | ||
| 68 | - arm,prefetch-offset : Override prefetch offset value. Valid values are | ||
| 69 | 0-7, 15, 23, and 31. | ||
| 60 | 70 | ||
| 61 | Example: | 71 | Example: |
| 62 | 72 | ||
diff --git a/Documentation/devicetree/bindings/arm/mediatek.txt b/Documentation/devicetree/bindings/arm/mediatek.txt index 3be40139cfbb..dd7550a29db6 100644 --- a/Documentation/devicetree/bindings/arm/mediatek.txt +++ b/Documentation/devicetree/bindings/arm/mediatek.txt | |||
| @@ -9,6 +9,7 @@ compatible: Must contain one of | |||
| 9 | "mediatek,mt6592" | 9 | "mediatek,mt6592" |
| 10 | "mediatek,mt8127" | 10 | "mediatek,mt8127" |
| 11 | "mediatek,mt8135" | 11 | "mediatek,mt8135" |
| 12 | "mediatek,mt8173" | ||
| 12 | 13 | ||
| 13 | 14 | ||
| 14 | Supported boards: | 15 | Supported boards: |
| @@ -25,3 +26,6 @@ Supported boards: | |||
| 25 | - MTK mt8135 tablet EVB: | 26 | - MTK mt8135 tablet EVB: |
| 26 | Required root node properties: | 27 | Required root node properties: |
| 27 | - compatible = "mediatek,mt8135-evbp1", "mediatek,mt8135"; | 28 | - compatible = "mediatek,mt8135-evbp1", "mediatek,mt8135"; |
| 29 | - MTK mt8173 tablet EVB: | ||
| 30 | Required root node properties: | ||
| 31 | - compatible = "mediatek,mt8173-evb", "mediatek,mt8173"; | ||
diff --git a/Documentation/devicetree/bindings/arm/mediatek/mediatek,sysirq.txt b/Documentation/devicetree/bindings/arm/mediatek/mediatek,sysirq.txt index d680b07ec6e8..4f5a5352ccd8 100644 --- a/Documentation/devicetree/bindings/arm/mediatek/mediatek,sysirq.txt +++ b/Documentation/devicetree/bindings/arm/mediatek/mediatek,sysirq.txt | |||
| @@ -5,8 +5,10 @@ interrupt. | |||
| 5 | 5 | ||
| 6 | Required properties: | 6 | Required properties: |
| 7 | - compatible: should be one of: | 7 | - compatible: should be one of: |
| 8 | "mediatek,mt8173-sysirq" | ||
| 8 | "mediatek,mt8135-sysirq" | 9 | "mediatek,mt8135-sysirq" |
| 9 | "mediatek,mt8127-sysirq" | 10 | "mediatek,mt8127-sysirq" |
| 11 | "mediatek,mt6592-sysirq" | ||
| 10 | "mediatek,mt6589-sysirq" | 12 | "mediatek,mt6589-sysirq" |
| 11 | "mediatek,mt6582-sysirq" | 13 | "mediatek,mt6582-sysirq" |
| 12 | "mediatek,mt6577-sysirq" | 14 | "mediatek,mt6577-sysirq" |
diff --git a/Documentation/devicetree/bindings/arm/msm/timer.txt b/Documentation/devicetree/bindings/arm/msm/timer.txt index c6ef8f13dc7e..74607b6c1117 100644 --- a/Documentation/devicetree/bindings/arm/msm/timer.txt +++ b/Documentation/devicetree/bindings/arm/msm/timer.txt | |||
| @@ -8,7 +8,7 @@ Properties: | |||
| 8 | "qcom,kpss-timer" - krait subsystem | 8 | "qcom,kpss-timer" - krait subsystem |
| 9 | "qcom,scss-timer" - scorpion subsystem | 9 | "qcom,scss-timer" - scorpion subsystem |
| 10 | 10 | ||
| 11 | - interrupts : Interrupts for the the debug timer, the first general purpose | 11 | - interrupts : Interrupts for the debug timer, the first general purpose |
| 12 | timer, and optionally a second general purpose timer in that | 12 | timer, and optionally a second general purpose timer in that |
| 13 | order. | 13 | order. |
| 14 | 14 | ||
diff --git a/Documentation/devicetree/bindings/arm/rockchip.txt b/Documentation/devicetree/bindings/arm/rockchip.txt index eaa3d1a0eb05..6809e4e51ed2 100644 --- a/Documentation/devicetree/bindings/arm/rockchip.txt +++ b/Documentation/devicetree/bindings/arm/rockchip.txt | |||
| @@ -9,6 +9,16 @@ Rockchip platforms device tree bindings | |||
| 9 | Required root node properties: | 9 | Required root node properties: |
| 10 | - compatible = "mundoreader,bq-curie2", "rockchip,rk3066a"; | 10 | - compatible = "mundoreader,bq-curie2", "rockchip,rk3066a"; |
| 11 | 11 | ||
| 12 | - ChipSPARK Rayeager PX2 board: | ||
| 13 | Required root node properties: | ||
| 14 | - compatible = "chipspark,rayeager-px2", "rockchip,rk3066a"; | ||
| 15 | |||
| 12 | - Radxa Rock board: | 16 | - Radxa Rock board: |
| 13 | Required root node properties: | 17 | Required root node properties: |
| 14 | - compatible = "radxa,rock", "rockchip,rk3188"; | 18 | - compatible = "radxa,rock", "rockchip,rk3188"; |
| 19 | |||
| 20 | - Firefly Firefly-RK3288 board: | ||
| 21 | Required root node properties: | ||
| 22 | - compatible = "firefly,firefly-rk3288", "rockchip,rk3288"; | ||
| 23 | or | ||
| 24 | - compatible = "firefly,firefly-rk3288-beta", "rockchip,rk3288"; | ||
diff --git a/Documentation/devicetree/bindings/arm/rockchip/pmu-sram.txt b/Documentation/devicetree/bindings/arm/rockchip/pmu-sram.txt new file mode 100644 index 000000000000..6b42fda306ff --- /dev/null +++ b/Documentation/devicetree/bindings/arm/rockchip/pmu-sram.txt | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | Rockchip SRAM for pmu: | ||
| 2 | ------------------------------ | ||
| 3 | |||
| 4 | The sram of pmu is used to store the function of resume from maskrom(the 1st | ||
| 5 | level loader). This is a common use of the "pmu-sram" because it keeps power | ||
| 6 | even in low power states in the system. | ||
| 7 | |||
| 8 | Required node properties: | ||
| 9 | - compatible : should be "rockchip,rk3288-pmu-sram" | ||
| 10 | - reg : physical base address and the size of the registers window | ||
| 11 | |||
| 12 | Example: | ||
| 13 | sram@ff720000 { | ||
| 14 | compatible = "rockchip,rk3288-pmu-sram", "mmio-sram"; | ||
| 15 | reg = <0xff720000 0x1000>; | ||
| 16 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/samsung/exynos-chipid.txt b/Documentation/devicetree/bindings/arm/samsung/exynos-chipid.txt new file mode 100644 index 000000000000..85c5dfd4a720 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/samsung/exynos-chipid.txt | |||
| @@ -0,0 +1,12 @@ | |||
| 1 | SAMSUNG Exynos SoCs Chipid driver. | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible : Should at least contain "samsung,exynos4210-chipid". | ||
| 5 | |||
| 6 | - reg: offset and length of the register set | ||
| 7 | |||
| 8 | Example: | ||
| 9 | chipid@10000000 { | ||
| 10 | compatible = "samsung,exynos4210-chipid"; | ||
| 11 | reg = <0x10000000 0x100>; | ||
| 12 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/samsung/pmu.txt b/Documentation/devicetree/bindings/arm/samsung/pmu.txt index 1e1979b229ff..67b211381f2b 100644 --- a/Documentation/devicetree/bindings/arm/samsung/pmu.txt +++ b/Documentation/devicetree/bindings/arm/samsung/pmu.txt | |||
| @@ -10,6 +10,7 @@ Properties: | |||
| 10 | - "samsung,exynos5260-pmu" - for Exynos5260 SoC. | 10 | - "samsung,exynos5260-pmu" - for Exynos5260 SoC. |
| 11 | - "samsung,exynos5410-pmu" - for Exynos5410 SoC, | 11 | - "samsung,exynos5410-pmu" - for Exynos5410 SoC, |
| 12 | - "samsung,exynos5420-pmu" - for Exynos5420 SoC. | 12 | - "samsung,exynos5420-pmu" - for Exynos5420 SoC. |
| 13 | - "samsung,exynos7-pmu" - for Exynos7 SoC. | ||
| 13 | second value must be always "syscon". | 14 | second value must be always "syscon". |
| 14 | 15 | ||
| 15 | - reg : offset and length of the register set. | 16 | - reg : offset and length of the register set. |
diff --git a/Documentation/devicetree/bindings/arm/sirf.txt b/Documentation/devicetree/bindings/arm/sirf.txt index c6ba6d3c747f..7b28ee6fee91 100644 --- a/Documentation/devicetree/bindings/arm/sirf.txt +++ b/Documentation/devicetree/bindings/arm/sirf.txt | |||
| @@ -3,7 +3,9 @@ CSR SiRFprimaII and SiRFmarco device tree bindings. | |||
| 3 | 3 | ||
| 4 | Required root node properties: | 4 | Required root node properties: |
| 5 | - compatible: | 5 | - compatible: |
| 6 | - "sirf,atlas6-cb" : atlas6 "cb" evaluation board | ||
| 7 | - "sirf,atlas6" : atlas6 device based board | ||
| 8 | - "sirf,atlas7-cb" : atlas7 "cb" evaluation board | ||
| 9 | - "sirf,atlas7" : atlas7 device based board | ||
| 6 | - "sirf,prima2-cb" : prima2 "cb" evaluation board | 10 | - "sirf,prima2-cb" : prima2 "cb" evaluation board |
| 7 | - "sirf,marco-cb" : marco "cb" evaluation board | ||
| 8 | - "sirf,prima2" : prima2 device based board | 11 | - "sirf,prima2" : prima2 device based board |
| 9 | - "sirf,marco" : marco device based board | ||
diff --git a/Documentation/devicetree/bindings/arm/sprd.txt b/Documentation/devicetree/bindings/arm/sprd.txt new file mode 100644 index 000000000000..31a629dc75b8 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/sprd.txt | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | Spreadtrum SoC Platforms Device Tree Bindings | ||
| 2 | ---------------------------------------------------- | ||
| 3 | |||
| 4 | Sharkl64 is a Spreadtrum's SoC Platform which is based | ||
| 5 | on ARM 64-bit processor. | ||
| 6 | |||
| 7 | SC9836 openphone board with SC9836 SoC based on the | ||
| 8 | Sharkl64 Platform shall have the following properties. | ||
| 9 | |||
| 10 | Required root node properties: | ||
| 11 | - compatible = "sprd,sc9836-openphone", "sprd,sc9836"; | ||
diff --git a/Documentation/devicetree/bindings/arm/sti.txt b/Documentation/devicetree/bindings/arm/sti.txt index 92f16c78bb69..d70ec358736c 100644 --- a/Documentation/devicetree/bindings/arm/sti.txt +++ b/Documentation/devicetree/bindings/arm/sti.txt | |||
| @@ -13,3 +13,7 @@ Boards with the ST STiH407 SoC shall have the following properties: | |||
| 13 | Required root node property: | 13 | Required root node property: |
| 14 | compatible = "st,stih407"; | 14 | compatible = "st,stih407"; |
| 15 | 15 | ||
| 16 | Boards with the ST STiH418 SoC shall have the following properties: | ||
| 17 | Required root node property: | ||
| 18 | compatible = "st,stih418"; | ||
| 19 | |||
diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-ahb.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-ahb.txt index 234406d41c12..067c9790062f 100644 --- a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-ahb.txt +++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-ahb.txt | |||
| @@ -1,7 +1,10 @@ | |||
| 1 | NVIDIA Tegra AHB | 1 | NVIDIA Tegra AHB |
| 2 | 2 | ||
| 3 | Required properties: | 3 | Required properties: |
| 4 | - compatible : "nvidia,tegra20-ahb" or "nvidia,tegra30-ahb" | 4 | - compatible : For Tegra20, must contain "nvidia,tegra20-ahb". For |
| 5 | Tegra30, must contain "nvidia,tegra30-ahb". Otherwise, must contain | ||
| 6 | '"nvidia,<chip>-ahb", "nvidia,tegra30-ahb"' where <chip> is tegra124, | ||
| 7 | tegra132, or tegra210. | ||
| 5 | - reg : Should contain 1 register ranges(address and length) | 8 | - reg : Should contain 1 register ranges(address and length) |
| 6 | 9 | ||
| 7 | Example: | 10 | Example: |
diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt index 68ac65f82a1c..02c27004d4a8 100644 --- a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt +++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt | |||
| @@ -6,7 +6,11 @@ modes. It provides power-gating controllers for SoC and CPU power-islands. | |||
| 6 | 6 | ||
| 7 | Required properties: | 7 | Required properties: |
| 8 | - name : Should be pmc | 8 | - name : Should be pmc |
| 9 | - compatible : Should contain "nvidia,tegra<chip>-pmc". | 9 | - compatible : For Tegra20, must contain "nvidia,tegra20-pmc". For Tegra30, |
| 10 | must contain "nvidia,tegra30-pmc". For Tegra114, must contain | ||
| 11 | "nvidia,tegra114-pmc". For Tegra124, must contain "nvidia,tegra124-pmc". | ||
| 12 | Otherwise, must contain "nvidia,<chip>-pmc", plus at least one of the | ||
| 13 | above, where <chip> is tegra132. | ||
| 10 | - reg : Offset and length of the register set for the device | 14 | - reg : Offset and length of the register set for the device |
| 11 | - clocks : Must contain an entry for each entry in clock-names. | 15 | - clocks : Must contain an entry for each entry in clock-names. |
| 12 | See ../clocks/clock-bindings.txt for details. | 16 | See ../clocks/clock-bindings.txt for details. |
| @@ -47,6 +51,23 @@ Required properties when nvidia,suspend-mode=<0>: | |||
| 47 | sleep mode, the warm boot code will restore some PLLs, clocks and then | 51 | sleep mode, the warm boot code will restore some PLLs, clocks and then |
| 48 | bring up CPU0 for resuming the system. | 52 | bring up CPU0 for resuming the system. |
| 49 | 53 | ||
| 54 | Hardware-triggered thermal reset: | ||
| 55 | On Tegra30, Tegra114 and Tegra124, if the 'i2c-thermtrip' subnode exists, | ||
| 56 | hardware-triggered thermal reset will be enabled. | ||
| 57 | |||
| 58 | Required properties for hardware-triggered thermal reset (inside 'i2c-thermtrip'): | ||
| 59 | - nvidia,i2c-controller-id : ID of I2C controller to send poweroff command to. Valid values are | ||
| 60 | described in section 9.2.148 "APBDEV_PMC_SCRATCH53_0" of the | ||
| 61 | Tegra K1 Technical Reference Manual. | ||
| 62 | - nvidia,bus-addr : Bus address of the PMU on the I2C bus | ||
| 63 | - nvidia,reg-addr : I2C register address to write poweroff command to | ||
| 64 | - nvidia,reg-data : Poweroff command to write to PMU | ||
| 65 | |||
| 66 | Optional properties for hardware-triggered thermal reset (inside 'i2c-thermtrip'): | ||
| 67 | - nvidia,pinmux-id : Pinmux used by the hardware when issuing poweroff command. | ||
| 68 | Defaults to 0. Valid values are described in section 12.5.2 | ||
| 69 | "Pinmux Support" of the Tegra4 Technical Reference Manual. | ||
| 70 | |||
| 50 | Example: | 71 | Example: |
| 51 | 72 | ||
| 52 | / SoC dts including file | 73 | / SoC dts including file |
| @@ -69,6 +90,15 @@ pmc@7000f400 { | |||
| 69 | / Tegra board dts file | 90 | / Tegra board dts file |
| 70 | { | 91 | { |
| 71 | ... | 92 | ... |
| 93 | pmc@7000f400 { | ||
| 94 | i2c-thermtrip { | ||
| 95 | nvidia,i2c-controller-id = <4>; | ||
| 96 | nvidia,bus-addr = <0x40>; | ||
| 97 | nvidia,reg-addr = <0x36>; | ||
| 98 | nvidia,reg-data = <0x2>; | ||
| 99 | }; | ||
| 100 | }; | ||
| 101 | ... | ||
| 72 | clocks { | 102 | clocks { |
| 73 | compatible = "simple-bus"; | 103 | compatible = "simple-bus"; |
| 74 | #address-cells = <1>; | 104 | #address-cells = <1>; |
diff --git a/Documentation/devicetree/bindings/arm/versatile-sysreg.txt b/Documentation/devicetree/bindings/arm/versatile-sysreg.txt new file mode 100644 index 000000000000..a4f15262d717 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/versatile-sysreg.txt | |||
| @@ -0,0 +1,10 @@ | |||
| 1 | ARM Versatile system registers | ||
| 2 | -------------------------------------- | ||
| 3 | |||
| 4 | This is a system control registers block, providing multiple low level | ||
| 5 | platform functions like board detection and identification, software | ||
| 6 | interrupt generation, MMC and NOR Flash control etc. | ||
| 7 | |||
| 8 | Required node properties: | ||
| 9 | - compatible value : = "arm,versatile-sysreg", "syscon" | ||
| 10 | - reg : physical base address and the size of the registers window | ||
diff --git a/Documentation/devicetree/bindings/ata/ahci-platform.txt b/Documentation/devicetree/bindings/ata/ahci-platform.txt index 4ab09f2202d4..c2340eeeb97f 100644 --- a/Documentation/devicetree/bindings/ata/ahci-platform.txt +++ b/Documentation/devicetree/bindings/ata/ahci-platform.txt | |||
| @@ -37,9 +37,10 @@ Required properties when using sub-nodes: | |||
| 37 | 37 | ||
| 38 | 38 | ||
| 39 | Sub-nodes required properties: | 39 | Sub-nodes required properties: |
| 40 | - reg : the port number | 40 | - reg : the port number |
| 41 | - phys : reference to the SATA PHY node | 41 | And at least one of the following properties: |
| 42 | 42 | - phys : reference to the SATA PHY node | |
| 43 | - target-supply : regulator for SATA target power | ||
| 43 | 44 | ||
| 44 | Examples: | 45 | Examples: |
| 45 | sata@ffe08000 { | 46 | sata@ffe08000 { |
| @@ -68,10 +69,12 @@ With sub-nodes: | |||
| 68 | sata0: sata-port@0 { | 69 | sata0: sata-port@0 { |
| 69 | reg = <0>; | 70 | reg = <0>; |
| 70 | phys = <&sata_phy 0>; | 71 | phys = <&sata_phy 0>; |
| 72 | target-supply = <®_sata0>; | ||
| 71 | }; | 73 | }; |
| 72 | 74 | ||
| 73 | sata1: sata-port@1 { | 75 | sata1: sata-port@1 { |
| 74 | reg = <1>; | 76 | reg = <1>; |
| 75 | phys = <&sata_phy 1>; | 77 | phys = <&sata_phy 1>; |
| 78 | target-supply = <®_sata1>;; | ||
| 76 | }; | 79 | }; |
| 77 | }; | 80 | }; |
diff --git a/Documentation/devicetree/bindings/ata/cavium-compact-flash.txt b/Documentation/devicetree/bindings/ata/cavium-compact-flash.txt index 93986a5a8018..3bacc8e0931e 100644 --- a/Documentation/devicetree/bindings/ata/cavium-compact-flash.txt +++ b/Documentation/devicetree/bindings/ata/cavium-compact-flash.txt | |||
| @@ -9,7 +9,7 @@ Properties: | |||
| 9 | 9 | ||
| 10 | Compatibility with many Cavium evaluation boards. | 10 | Compatibility with many Cavium evaluation boards. |
| 11 | 11 | ||
| 12 | - reg: The base address of the the CF chip select banks. Depending on | 12 | - reg: The base address of the CF chip select banks. Depending on |
| 13 | the device configuration, there may be one or two banks. | 13 | the device configuration, there may be one or two banks. |
| 14 | 14 | ||
| 15 | - cavium,bus-width: The width of the connection to the CF devices. Valid | 15 | - cavium,bus-width: The width of the connection to the CF devices. Valid |
diff --git a/Documentation/devicetree/bindings/ata/tegra-sata.txt b/Documentation/devicetree/bindings/ata/tegra-sata.txt index 946f2072570b..66c83c3e8915 100644 --- a/Documentation/devicetree/bindings/ata/tegra-sata.txt +++ b/Documentation/devicetree/bindings/ata/tegra-sata.txt | |||
| @@ -1,7 +1,9 @@ | |||
| 1 | Tegra124 SoC SATA AHCI controller | 1 | Tegra124 SoC SATA AHCI controller |
| 2 | 2 | ||
| 3 | Required properties : | 3 | Required properties : |
| 4 | - compatible : "nvidia,tegra124-ahci". | 4 | - compatible : For Tegra124, must contain "nvidia,tegra124-ahci". Otherwise, |
| 5 | must contain '"nvidia,<chip>-ahci", "nvidia,tegra124-ahci"', where <chip> | ||
| 6 | is tegra132. | ||
| 5 | - reg : Should contain 2 entries: | 7 | - reg : Should contain 2 entries: |
| 6 | - AHCI register set (SATA BAR5) | 8 | - AHCI register set (SATA BAR5) |
| 7 | - SATA register set | 9 | - SATA register set |
diff --git a/Documentation/devicetree/bindings/bus/mvebu-mbus.txt b/Documentation/devicetree/bindings/bus/mvebu-mbus.txt index 5e16c3ccb061..fa6cde41b460 100644 --- a/Documentation/devicetree/bindings/bus/mvebu-mbus.txt +++ b/Documentation/devicetree/bindings/bus/mvebu-mbus.txt | |||
| @@ -6,8 +6,8 @@ Required properties: | |||
| 6 | - compatible: Should be set to one of the following: | 6 | - compatible: Should be set to one of the following: |
| 7 | marvell,armada370-mbus | 7 | marvell,armada370-mbus |
| 8 | marvell,armadaxp-mbus | 8 | marvell,armadaxp-mbus |
| 9 | marvell,armada370-mbus | 9 | marvell,armada375-mbus |
| 10 | marvell,armadaxp-mbus | 10 | marvell,armada380-mbus |
| 11 | marvell,kirkwood-mbus | 11 | marvell,kirkwood-mbus |
| 12 | marvell,dove-mbus | 12 | marvell,dove-mbus |
| 13 | marvell,orion5x-88f5281-mbus | 13 | marvell,orion5x-88f5281-mbus |
diff --git a/Documentation/devicetree/bindings/c6x/dscr.txt b/Documentation/devicetree/bindings/c6x/dscr.txt index b0e97144cfb1..92672235de57 100644 --- a/Documentation/devicetree/bindings/c6x/dscr.txt +++ b/Documentation/devicetree/bindings/c6x/dscr.txt | |||
| @@ -12,7 +12,7 @@ configuration register for writes. These configuration register may be used to | |||
| 12 | enable (and disable in some cases) SoC pin drivers, select peripheral clock | 12 | enable (and disable in some cases) SoC pin drivers, select peripheral clock |
| 13 | sources (internal or pin), etc. In some cases, a configuration register is | 13 | sources (internal or pin), etc. In some cases, a configuration register is |
| 14 | write once or the individual bits are write once. In addition to device config, | 14 | write once or the individual bits are write once. In addition to device config, |
| 15 | the DSCR block may provide registers which which are used to reset peripherals, | 15 | the DSCR block may provide registers which are used to reset peripherals, |
| 16 | provide device ID information, provide ethernet MAC addresses, as well as other | 16 | provide device ID information, provide ethernet MAC addresses, as well as other |
| 17 | miscellaneous functions. | 17 | miscellaneous functions. |
| 18 | 18 | ||
diff --git a/Documentation/devicetree/bindings/clock/alphascale,acc.txt b/Documentation/devicetree/bindings/clock/alphascale,acc.txt new file mode 100644 index 000000000000..62e67e883e76 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/alphascale,acc.txt | |||
| @@ -0,0 +1,115 @@ | |||
| 1 | Alphascale Clock Controller | ||
| 2 | |||
| 3 | The ACC (Alphascale Clock Controller) is responsible of choising proper | ||
| 4 | clock source, setting deviders and clock gates. | ||
| 5 | |||
| 6 | Required properties for the ACC node: | ||
| 7 | - compatible: must be "alphascale,asm9260-clock-controller" | ||
| 8 | - reg: must contain the ACC register base and size | ||
| 9 | - #clock-cells : shall be set to 1. | ||
| 10 | |||
| 11 | Simple one-cell clock specifier format is used, where the only cell is used | ||
| 12 | as an index of the clock inside the provider. | ||
| 13 | It is encouraged to use dt-binding for clock index definitions. SoC specific | ||
| 14 | dt-binding should be included to the device tree descriptor. For example | ||
| 15 | Alphascale ASM9260: | ||
| 16 | #include <dt-bindings/clock/alphascale,asm9260.h> | ||
| 17 | |||
| 18 | This binding contains two types of clock providers: | ||
| 19 | _AHB_ - AHB gate; | ||
| 20 | _SYS_ - adjustable clock source. Not all peripheral have _SYS_ clock provider. | ||
| 21 | All clock specific details can be found in the SoC documentation. | ||
| 22 | CLKID_AHB_ROM 0 | ||
| 23 | CLKID_AHB_RAM 1 | ||
| 24 | CLKID_AHB_GPIO 2 | ||
| 25 | CLKID_AHB_MAC 3 | ||
| 26 | CLKID_AHB_EMI 4 | ||
| 27 | CLKID_AHB_USB0 5 | ||
| 28 | CLKID_AHB_USB1 6 | ||
| 29 | CLKID_AHB_DMA0 7 | ||
| 30 | CLKID_AHB_DMA1 8 | ||
| 31 | CLKID_AHB_UART0 9 | ||
| 32 | CLKID_AHB_UART1 10 | ||
| 33 | CLKID_AHB_UART2 11 | ||
| 34 | CLKID_AHB_UART3 12 | ||
| 35 | CLKID_AHB_UART4 13 | ||
| 36 | CLKID_AHB_UART5 14 | ||
| 37 | CLKID_AHB_UART6 15 | ||
| 38 | CLKID_AHB_UART7 16 | ||
| 39 | CLKID_AHB_UART8 17 | ||
| 40 | CLKID_AHB_UART9 18 | ||
| 41 | CLKID_AHB_I2S0 19 | ||
| 42 | CLKID_AHB_I2C0 20 | ||
| 43 | CLKID_AHB_I2C1 21 | ||
| 44 | CLKID_AHB_SSP0 22 | ||
| 45 | CLKID_AHB_IOCONFIG 23 | ||
| 46 | CLKID_AHB_WDT 24 | ||
| 47 | CLKID_AHB_CAN0 25 | ||
| 48 | CLKID_AHB_CAN1 26 | ||
| 49 | CLKID_AHB_MPWM 27 | ||
| 50 | CLKID_AHB_SPI0 28 | ||
| 51 | CLKID_AHB_SPI1 29 | ||
| 52 | CLKID_AHB_QEI 30 | ||
| 53 | CLKID_AHB_QUADSPI0 31 | ||
| 54 | CLKID_AHB_CAMIF 32 | ||
| 55 | CLKID_AHB_LCDIF 33 | ||
| 56 | CLKID_AHB_TIMER0 34 | ||
| 57 | CLKID_AHB_TIMER1 35 | ||
| 58 | CLKID_AHB_TIMER2 36 | ||
| 59 | CLKID_AHB_TIMER3 37 | ||
| 60 | CLKID_AHB_IRQ 38 | ||
| 61 | CLKID_AHB_RTC 39 | ||
| 62 | CLKID_AHB_NAND 40 | ||
| 63 | CLKID_AHB_ADC0 41 | ||
| 64 | CLKID_AHB_LED 42 | ||
| 65 | CLKID_AHB_DAC0 43 | ||
| 66 | CLKID_AHB_LCD 44 | ||
| 67 | CLKID_AHB_I2S1 45 | ||
| 68 | CLKID_AHB_MAC1 46 | ||
| 69 | |||
| 70 | CLKID_SYS_CPU 47 | ||
| 71 | CLKID_SYS_AHB 48 | ||
| 72 | CLKID_SYS_I2S0M 49 | ||
| 73 | CLKID_SYS_I2S0S 50 | ||
| 74 | CLKID_SYS_I2S1M 51 | ||
| 75 | CLKID_SYS_I2S1S 52 | ||
| 76 | CLKID_SYS_UART0 53 | ||
| 77 | CLKID_SYS_UART1 54 | ||
| 78 | CLKID_SYS_UART2 55 | ||
| 79 | CLKID_SYS_UART3 56 | ||
| 80 | CLKID_SYS_UART4 56 | ||
| 81 | CLKID_SYS_UART5 57 | ||
| 82 | CLKID_SYS_UART6 58 | ||
| 83 | CLKID_SYS_UART7 59 | ||
| 84 | CLKID_SYS_UART8 60 | ||
| 85 | CLKID_SYS_UART9 61 | ||
| 86 | CLKID_SYS_SPI0 62 | ||
| 87 | CLKID_SYS_SPI1 63 | ||
| 88 | CLKID_SYS_QUADSPI 64 | ||
| 89 | CLKID_SYS_SSP0 65 | ||
| 90 | CLKID_SYS_NAND 66 | ||
| 91 | CLKID_SYS_TRACE 67 | ||
| 92 | CLKID_SYS_CAMM 68 | ||
| 93 | CLKID_SYS_WDT 69 | ||
| 94 | CLKID_SYS_CLKOUT 70 | ||
| 95 | CLKID_SYS_MAC 71 | ||
| 96 | CLKID_SYS_LCD 72 | ||
| 97 | CLKID_SYS_ADCANA 73 | ||
| 98 | |||
| 99 | Example of clock consumer with _SYS_ and _AHB_ sinks. | ||
| 100 | uart4: serial@80010000 { | ||
| 101 | compatible = "alphascale,asm9260-uart"; | ||
| 102 | reg = <0x80010000 0x4000>; | ||
| 103 | clocks = <&acc CLKID_SYS_UART4>, <&acc CLKID_AHB_UART4>; | ||
| 104 | interrupts = <19>; | ||
| 105 | status = "disabled"; | ||
| 106 | }; | ||
| 107 | |||
| 108 | Clock consumer with only one, _AHB_ sink. | ||
| 109 | timer0: timer@80088000 { | ||
| 110 | compatible = "alphascale,asm9260-timer"; | ||
| 111 | reg = <0x80088000 0x4000>; | ||
| 112 | clocks = <&acc CLKID_AHB_TIMER0>; | ||
| 113 | interrupts = <29>; | ||
| 114 | }; | ||
| 115 | |||
diff --git a/Documentation/devicetree/bindings/clock/exynos7-clock.txt b/Documentation/devicetree/bindings/clock/exynos7-clock.txt index 6d3d5f80c1c3..6bf1e7493f61 100644 --- a/Documentation/devicetree/bindings/clock/exynos7-clock.txt +++ b/Documentation/devicetree/bindings/clock/exynos7-clock.txt | |||
| @@ -34,6 +34,8 @@ Required Properties for Clock Controller: | |||
| 34 | - "samsung,exynos7-clock-peris" | 34 | - "samsung,exynos7-clock-peris" |
| 35 | - "samsung,exynos7-clock-fsys0" | 35 | - "samsung,exynos7-clock-fsys0" |
| 36 | - "samsung,exynos7-clock-fsys1" | 36 | - "samsung,exynos7-clock-fsys1" |
| 37 | - "samsung,exynos7-clock-mscl" | ||
| 38 | - "samsung,exynos7-clock-aud" | ||
| 37 | 39 | ||
| 38 | - reg: physical base address of the controller and the length of | 40 | - reg: physical base address of the controller and the length of |
| 39 | memory mapped region. | 41 | memory mapped region. |
| @@ -53,6 +55,7 @@ Input clocks for top0 clock controller: | |||
| 53 | - dout_sclk_bus1_pll | 55 | - dout_sclk_bus1_pll |
| 54 | - dout_sclk_cc_pll | 56 | - dout_sclk_cc_pll |
| 55 | - dout_sclk_mfc_pll | 57 | - dout_sclk_mfc_pll |
| 58 | - dout_sclk_aud_pll | ||
| 56 | 59 | ||
| 57 | Input clocks for top1 clock controller: | 60 | Input clocks for top1 clock controller: |
| 58 | - fin_pll | 61 | - fin_pll |
| @@ -76,6 +79,14 @@ Input clocks for peric1 clock controller: | |||
| 76 | - sclk_uart1 | 79 | - sclk_uart1 |
| 77 | - sclk_uart2 | 80 | - sclk_uart2 |
| 78 | - sclk_uart3 | 81 | - sclk_uart3 |
| 82 | - sclk_spi0 | ||
| 83 | - sclk_spi1 | ||
| 84 | - sclk_spi2 | ||
| 85 | - sclk_spi3 | ||
| 86 | - sclk_spi4 | ||
| 87 | - sclk_i2s1 | ||
| 88 | - sclk_pcm1 | ||
| 89 | - sclk_spdif | ||
| 79 | 90 | ||
| 80 | Input clocks for peris clock controller: | 91 | Input clocks for peris clock controller: |
| 81 | - fin_pll | 92 | - fin_pll |
| @@ -91,3 +102,7 @@ Input clocks for fsys1 clock controller: | |||
| 91 | - dout_aclk_fsys1_200 | 102 | - dout_aclk_fsys1_200 |
| 92 | - dout_sclk_mmc0 | 103 | - dout_sclk_mmc0 |
| 93 | - dout_sclk_mmc1 | 104 | - dout_sclk_mmc1 |
| 105 | |||
| 106 | Input clocks for aud clock controller: | ||
| 107 | - fin_pll | ||
| 108 | - fout_aud_pll | ||
diff --git a/Documentation/devicetree/bindings/clock/nvidia,tegra124-car.txt b/Documentation/devicetree/bindings/clock/nvidia,tegra124-car.txt index ded5d6212c84..c6620bc96703 100644 --- a/Documentation/devicetree/bindings/clock/nvidia,tegra124-car.txt +++ b/Documentation/devicetree/bindings/clock/nvidia,tegra124-car.txt | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | NVIDIA Tegra124 Clock And Reset Controller | 1 | NVIDIA Tegra124 and Tegra132 Clock And Reset Controller |
| 2 | 2 | ||
| 3 | This binding uses the common clock binding: | 3 | This binding uses the common clock binding: |
| 4 | Documentation/devicetree/bindings/clock/clock-bindings.txt | 4 | Documentation/devicetree/bindings/clock/clock-bindings.txt |
| @@ -7,14 +7,16 @@ The CAR (Clock And Reset) Controller on Tegra is the HW module responsible | |||
| 7 | for muxing and gating Tegra's clocks, and setting their rates. | 7 | for muxing and gating Tegra's clocks, and setting their rates. |
| 8 | 8 | ||
| 9 | Required properties : | 9 | Required properties : |
| 10 | - compatible : Should be "nvidia,tegra124-car" | 10 | - compatible : Should be "nvidia,tegra124-car" or "nvidia,tegra132-car" |
| 11 | - reg : Should contain CAR registers location and length | 11 | - reg : Should contain CAR registers location and length |
| 12 | - clocks : Should contain phandle and clock specifiers for two clocks: | 12 | - clocks : Should contain phandle and clock specifiers for two clocks: |
| 13 | the 32 KHz "32k_in", and the board-specific oscillator "osc". | 13 | the 32 KHz "32k_in", and the board-specific oscillator "osc". |
| 14 | - #clock-cells : Should be 1. | 14 | - #clock-cells : Should be 1. |
| 15 | In clock consumers, this cell represents the clock ID exposed by the | 15 | In clock consumers, this cell represents the clock ID exposed by the |
| 16 | CAR. The assignments may be found in header file | 16 | CAR. The assignments may be found in the header files |
| 17 | <dt-bindings/clock/tegra124-car.h>. | 17 | <dt-bindings/clock/tegra124-car-common.h> (which covers IDs common |
| 18 | to Tegra124 and Tegra132) and <dt-bindings/clock/tegra124-car.h> | ||
| 19 | (for Tegra124-specific clocks). | ||
| 18 | - #reset-cells : Should be 1. | 20 | - #reset-cells : Should be 1. |
| 19 | In clock consumers, this cell represents the bit number in the CAR's | 21 | In clock consumers, this cell represents the bit number in the CAR's |
| 20 | array of CLK_RST_CONTROLLER_RST_DEVICES_* registers. | 22 | array of CLK_RST_CONTROLLER_RST_DEVICES_* registers. |
diff --git a/Documentation/devicetree/bindings/clock/qcom,lcc.txt b/Documentation/devicetree/bindings/clock/qcom,lcc.txt new file mode 100644 index 000000000000..dd755be63a01 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/qcom,lcc.txt | |||
| @@ -0,0 +1,21 @@ | |||
| 1 | Qualcomm LPASS Clock & Reset Controller Binding | ||
| 2 | ------------------------------------------------ | ||
| 3 | |||
| 4 | Required properties : | ||
| 5 | - compatible : shall contain only one of the following: | ||
| 6 | |||
| 7 | "qcom,lcc-msm8960" | ||
| 8 | "qcom,lcc-apq8064" | ||
| 9 | "qcom,lcc-ipq8064" | ||
| 10 | |||
| 11 | - reg : shall contain base register location and length | ||
| 12 | - #clock-cells : shall contain 1 | ||
| 13 | - #reset-cells : shall contain 1 | ||
| 14 | |||
| 15 | Example: | ||
| 16 | clock-controller@28000000 { | ||
| 17 | compatible = "qcom,lcc-ipq8064"; | ||
| 18 | reg = <0x28000000 0x1000>; | ||
| 19 | #clock-cells = <1>; | ||
| 20 | #reset-cells = <1>; | ||
| 21 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/qoriq-clock.txt b/Documentation/devicetree/bindings/clock/qoriq-clock.txt index 266ff9d23229..df4a259a6898 100644 --- a/Documentation/devicetree/bindings/clock/qoriq-clock.txt +++ b/Documentation/devicetree/bindings/clock/qoriq-clock.txt | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | * Clock Block on Freescale CoreNet Platforms | 1 | * Clock Block on Freescale QorIQ Platforms |
| 2 | 2 | ||
| 3 | Freescale CoreNet chips take primary clocking input from the external | 3 | Freescale qoriq chips take primary clocking input from the external |
| 4 | SYSCLK signal. The SYSCLK input (frequency) is multiplied using | 4 | SYSCLK signal. The SYSCLK input (frequency) is multiplied using |
| 5 | multiple phase locked loops (PLL) to create a variety of frequencies | 5 | multiple phase locked loops (PLL) to create a variety of frequencies |
| 6 | which can then be passed to a variety of internal logic, including | 6 | which can then be passed to a variety of internal logic, including |
| @@ -29,6 +29,7 @@ Required properties: | |||
| 29 | * "fsl,t4240-clockgen" | 29 | * "fsl,t4240-clockgen" |
| 30 | * "fsl,b4420-clockgen" | 30 | * "fsl,b4420-clockgen" |
| 31 | * "fsl,b4860-clockgen" | 31 | * "fsl,b4860-clockgen" |
| 32 | * "fsl,ls1021a-clockgen" | ||
| 32 | Chassis clock strings include: | 33 | Chassis clock strings include: |
| 33 | * "fsl,qoriq-clockgen-1.0": for chassis 1.0 clocks | 34 | * "fsl,qoriq-clockgen-1.0": for chassis 1.0 clocks |
| 34 | * "fsl,qoriq-clockgen-2.0": for chassis 2.0 clocks | 35 | * "fsl,qoriq-clockgen-2.0": for chassis 2.0 clocks |
diff --git a/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt b/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt index 2e18676bd4b5..0a80fa70ca26 100644 --- a/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt +++ b/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt | |||
| @@ -11,6 +11,7 @@ Required Properties: | |||
| 11 | 11 | ||
| 12 | - compatible: Must be one of the following | 12 | - compatible: Must be one of the following |
| 13 | - "renesas,r7s72100-mstp-clocks" for R7S72100 (RZ) MSTP gate clocks | 13 | - "renesas,r7s72100-mstp-clocks" for R7S72100 (RZ) MSTP gate clocks |
| 14 | - "renesas,r8a73a4-mstp-clocks" for R8A73A4 (R-Mobile APE6) MSTP gate clocks | ||
| 14 | - "renesas,r8a7740-mstp-clocks" for R8A7740 (R-Mobile A1) MSTP gate clocks | 15 | - "renesas,r8a7740-mstp-clocks" for R8A7740 (R-Mobile A1) MSTP gate clocks |
| 15 | - "renesas,r8a7779-mstp-clocks" for R8A7779 (R-Car H1) MSTP gate clocks | 16 | - "renesas,r8a7779-mstp-clocks" for R8A7779 (R-Car H1) MSTP gate clocks |
| 16 | - "renesas,r8a7790-mstp-clocks" for R8A7790 (R-Car H2) MSTP gate clocks | 17 | - "renesas,r8a7790-mstp-clocks" for R8A7790 (R-Car H2) MSTP gate clocks |
diff --git a/Documentation/devicetree/bindings/clock/renesas,r8a73a4-cpg-clocks.txt b/Documentation/devicetree/bindings/clock/renesas,r8a73a4-cpg-clocks.txt new file mode 100644 index 000000000000..ece92393e80d --- /dev/null +++ b/Documentation/devicetree/bindings/clock/renesas,r8a73a4-cpg-clocks.txt | |||
| @@ -0,0 +1,33 @@ | |||
| 1 | * Renesas R8A73A4 Clock Pulse Generator (CPG) | ||
| 2 | |||
| 3 | The CPG generates core clocks for the R8A73A4 SoC. It includes five PLLs | ||
| 4 | and several fixed ratio dividers. | ||
| 5 | |||
| 6 | Required Properties: | ||
| 7 | |||
| 8 | - compatible: Must be "renesas,r8a73a4-cpg-clocks" | ||
| 9 | |||
| 10 | - reg: Base address and length of the memory resource used by the CPG | ||
| 11 | |||
| 12 | - clocks: Reference to the parent clocks ("extal1" and "extal2") | ||
| 13 | |||
| 14 | - #clock-cells: Must be 1 | ||
| 15 | |||
| 16 | - clock-output-names: The names of the clocks. Supported clocks are "main", | ||
| 17 | "pll0", "pll1", "pll2", "pll2s", "pll2h", "z", "z2", "i", "m3", "b", | ||
| 18 | "m1", "m2", "zx", "zs", and "hp". | ||
| 19 | |||
| 20 | |||
| 21 | Example | ||
| 22 | ------- | ||
| 23 | |||
| 24 | cpg_clocks: cpg_clocks@e6150000 { | ||
| 25 | compatible = "renesas,r8a73a4-cpg-clocks"; | ||
| 26 | reg = <0 0xe6150000 0 0x10000>; | ||
| 27 | clocks = <&extal1_clk>, <&extal2_clk>; | ||
| 28 | #clock-cells = <1>; | ||
| 29 | clock-output-names = "main", "pll0", "pll1", "pll2", | ||
| 30 | "pll2s", "pll2h", "z", "z2", | ||
| 31 | "i", "m3", "b", "m1", "m2", | ||
| 32 | "zx", "zs", "hp"; | ||
| 33 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/renesas,rcar-gen2-cpg-clocks.txt b/Documentation/devicetree/bindings/clock/renesas,rcar-gen2-cpg-clocks.txt index e6ad35b894f9..b02944fba9de 100644 --- a/Documentation/devicetree/bindings/clock/renesas,rcar-gen2-cpg-clocks.txt +++ b/Documentation/devicetree/bindings/clock/renesas,rcar-gen2-cpg-clocks.txt | |||
| @@ -8,15 +8,18 @@ Required Properties: | |||
| 8 | - compatible: Must be one of | 8 | - compatible: Must be one of |
| 9 | - "renesas,r8a7790-cpg-clocks" for the r8a7790 CPG | 9 | - "renesas,r8a7790-cpg-clocks" for the r8a7790 CPG |
| 10 | - "renesas,r8a7791-cpg-clocks" for the r8a7791 CPG | 10 | - "renesas,r8a7791-cpg-clocks" for the r8a7791 CPG |
| 11 | - "renesas,r8a7793-cpg-clocks" for the r8a7793 CPG | ||
| 11 | - "renesas,r8a7794-cpg-clocks" for the r8a7794 CPG | 12 | - "renesas,r8a7794-cpg-clocks" for the r8a7794 CPG |
| 12 | - "renesas,rcar-gen2-cpg-clocks" for the generic R-Car Gen2 CPG | 13 | - "renesas,rcar-gen2-cpg-clocks" for the generic R-Car Gen2 CPG |
| 13 | 14 | ||
| 14 | - reg: Base address and length of the memory resource used by the CPG | 15 | - reg: Base address and length of the memory resource used by the CPG |
| 15 | 16 | ||
| 16 | - clocks: Reference to the parent clock | 17 | - clocks: References to the parent clocks: first to the EXTAL clock, second |
| 18 | to the USB_EXTAL clock | ||
| 17 | - #clock-cells: Must be 1 | 19 | - #clock-cells: Must be 1 |
| 18 | - clock-output-names: The names of the clocks. Supported clocks are "main", | 20 | - clock-output-names: The names of the clocks. Supported clocks are "main", |
| 19 | "pll0", "pll1", "pll3", "lb", "qspi", "sdh", "sd0", "sd1" and "z" | 21 | "pll0", "pll1", "pll3", "lb", "qspi", "sdh", "sd0", "sd1", "z", "rcan", and |
| 22 | "adsp" | ||
| 20 | 23 | ||
| 21 | 24 | ||
| 22 | Example | 25 | Example |
| @@ -26,8 +29,9 @@ Example | |||
| 26 | compatible = "renesas,r8a7790-cpg-clocks", | 29 | compatible = "renesas,r8a7790-cpg-clocks", |
| 27 | "renesas,rcar-gen2-cpg-clocks"; | 30 | "renesas,rcar-gen2-cpg-clocks"; |
| 28 | reg = <0 0xe6150000 0 0x1000>; | 31 | reg = <0 0xe6150000 0 0x1000>; |
| 29 | clocks = <&extal_clk>; | 32 | clocks = <&extal_clk &usb_extal_clk>; |
| 30 | #clock-cells = <1>; | 33 | #clock-cells = <1>; |
| 31 | clock-output-names = "main", "pll0, "pll1", "pll3", | 34 | clock-output-names = "main", "pll0, "pll1", "pll3", |
| 32 | "lb", "qspi", "sdh", "sd0", "sd1", "z"; | 35 | "lb", "qspi", "sdh", "sd0", "sd1", "z", |
| 36 | "rcan", "adsp"; | ||
| 33 | }; | 37 | }; |
diff --git a/Documentation/devicetree/bindings/clock/renesas,sh73a0-cpg-clocks.txt b/Documentation/devicetree/bindings/clock/renesas,sh73a0-cpg-clocks.txt new file mode 100644 index 000000000000..a8978ec94831 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/renesas,sh73a0-cpg-clocks.txt | |||
| @@ -0,0 +1,35 @@ | |||
| 1 | These bindings should be considered EXPERIMENTAL for now. | ||
| 2 | |||
| 3 | * Renesas SH73A0 Clock Pulse Generator (CPG) | ||
| 4 | |||
| 5 | The CPG generates core clocks for the SH73A0 SoC. It includes four PLLs | ||
| 6 | and several fixed ratio dividers. | ||
| 7 | |||
| 8 | Required Properties: | ||
| 9 | |||
| 10 | - compatible: Must be "renesas,sh73a0-cpg-clocks" | ||
| 11 | |||
| 12 | - reg: Base address and length of the memory resource used by the CPG | ||
| 13 | |||
| 14 | - clocks: Reference to the parent clocks ("extal1" and "extal2") | ||
| 15 | |||
| 16 | - #clock-cells: Must be 1 | ||
| 17 | |||
| 18 | - clock-output-names: The names of the clocks. Supported clocks are "main", | ||
| 19 | "pll0", "pll1", "pll2", "pll3", "dsi0phy", "dsi1phy", "zg", "m3", "b", | ||
| 20 | "m1", "m2", "z", "zx", and "hp". | ||
| 21 | |||
| 22 | |||
| 23 | Example | ||
| 24 | ------- | ||
| 25 | |||
| 26 | cpg_clocks: cpg_clocks@e6150000 { | ||
| 27 | compatible = "renesas,sh73a0-cpg-clocks"; | ||
| 28 | reg = <0 0xe6150000 0 0x10000>; | ||
| 29 | clocks = <&extal1_clk>, <&extal2_clk>; | ||
| 30 | #clock-cells = <1>; | ||
| 31 | clock-output-names = "main", "pll0", "pll1", "pll2", | ||
| 32 | "pll3", "dsi0phy", "dsi1phy", | ||
| 33 | "zg", "m3", "b", "m1", "m2", | ||
| 34 | "z", "zx", "hp"; | ||
| 35 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/sunxi.txt b/Documentation/devicetree/bindings/clock/sunxi.txt index 67b2b99f2b33..60b44285250d 100644 --- a/Documentation/devicetree/bindings/clock/sunxi.txt +++ b/Documentation/devicetree/bindings/clock/sunxi.txt | |||
| @@ -26,7 +26,7 @@ Required properties: | |||
| 26 | "allwinner,sun5i-a10s-ahb-gates-clk" - for the AHB gates on A10s | 26 | "allwinner,sun5i-a10s-ahb-gates-clk" - for the AHB gates on A10s |
| 27 | "allwinner,sun7i-a20-ahb-gates-clk" - for the AHB gates on A20 | 27 | "allwinner,sun7i-a20-ahb-gates-clk" - for the AHB gates on A20 |
| 28 | "allwinner,sun6i-a31-ar100-clk" - for the AR100 on A31 | 28 | "allwinner,sun6i-a31-ar100-clk" - for the AR100 on A31 |
| 29 | "allwinner,sun6i-a31-ahb1-mux-clk" - for the AHB1 multiplexer on A31 | 29 | "allwinner,sun6i-a31-ahb1-clk" - for the AHB1 clock on A31 |
| 30 | "allwinner,sun6i-a31-ahb1-gates-clk" - for the AHB1 gates on A31 | 30 | "allwinner,sun6i-a31-ahb1-gates-clk" - for the AHB1 gates on A31 |
| 31 | "allwinner,sun8i-a23-ahb1-gates-clk" - for the AHB1 gates on A23 | 31 | "allwinner,sun8i-a23-ahb1-gates-clk" - for the AHB1 gates on A23 |
| 32 | "allwinner,sun9i-a80-ahb0-gates-clk" - for the AHB0 gates on A80 | 32 | "allwinner,sun9i-a80-ahb0-gates-clk" - for the AHB0 gates on A80 |
| @@ -55,9 +55,11 @@ Required properties: | |||
| 55 | "allwinner,sun6i-a31-apb2-gates-clk" - for the APB2 gates on A31 | 55 | "allwinner,sun6i-a31-apb2-gates-clk" - for the APB2 gates on A31 |
| 56 | "allwinner,sun8i-a23-apb2-gates-clk" - for the APB2 gates on A23 | 56 | "allwinner,sun8i-a23-apb2-gates-clk" - for the APB2 gates on A23 |
| 57 | "allwinner,sun5i-a13-mbus-clk" - for the MBUS clock on A13 | 57 | "allwinner,sun5i-a13-mbus-clk" - for the MBUS clock on A13 |
| 58 | "allwinner,sun4i-a10-mmc-output-clk" - for the MMC output clock on A10 | 58 | "allwinner,sun4i-a10-mmc-clk" - for the MMC clock |
| 59 | "allwinner,sun4i-a10-mmc-sample-clk" - for the MMC sample clock on A10 | 59 | "allwinner,sun9i-a80-mmc-clk" - for mmc module clocks on A80 |
| 60 | "allwinner,sun9i-a80-mmc-config-clk" - for mmc gates + resets on A80 | ||
| 60 | "allwinner,sun4i-a10-mod0-clk" - for the module 0 family of clocks | 61 | "allwinner,sun4i-a10-mod0-clk" - for the module 0 family of clocks |
| 62 | "allwinner,sun9i-a80-mod0-clk" - for module 0 (storage) clocks on A80 | ||
| 61 | "allwinner,sun8i-a23-mbus-clk" - for the MBUS clock on A23 | 63 | "allwinner,sun8i-a23-mbus-clk" - for the MBUS clock on A23 |
| 62 | "allwinner,sun7i-a20-out-clk" - for the external output clocks | 64 | "allwinner,sun7i-a20-out-clk" - for the external output clocks |
| 63 | "allwinner,sun7i-a20-gmac-clk" - for the GMAC clock module on A20/A31 | 65 | "allwinner,sun7i-a20-gmac-clk" - for the GMAC clock module on A20/A31 |
| @@ -73,7 +75,9 @@ Required properties for all clocks: | |||
| 73 | - #clock-cells : from common clock binding; shall be set to 0 except for | 75 | - #clock-cells : from common clock binding; shall be set to 0 except for |
| 74 | the following compatibles where it shall be set to 1: | 76 | the following compatibles where it shall be set to 1: |
| 75 | "allwinner,*-gates-clk", "allwinner,sun4i-pll5-clk", | 77 | "allwinner,*-gates-clk", "allwinner,sun4i-pll5-clk", |
| 76 | "allwinner,sun4i-pll6-clk", "allwinner,sun6i-a31-pll6-clk" | 78 | "allwinner,sun4i-pll6-clk", "allwinner,sun6i-a31-pll6-clk", |
| 79 | "allwinner,*-usb-clk", "allwinner,*-mmc-clk", | ||
| 80 | "allwinner,*-mmc-config-clk" | ||
| 77 | - clock-output-names : shall be the corresponding names of the outputs. | 81 | - clock-output-names : shall be the corresponding names of the outputs. |
| 78 | If the clock module only has one output, the name shall be the | 82 | If the clock module only has one output, the name shall be the |
| 79 | module name. | 83 | module name. |
| @@ -81,6 +85,10 @@ Required properties for all clocks: | |||
| 81 | And "allwinner,*-usb-clk" clocks also require: | 85 | And "allwinner,*-usb-clk" clocks also require: |
| 82 | - reset-cells : shall be set to 1 | 86 | - reset-cells : shall be set to 1 |
| 83 | 87 | ||
| 88 | The "allwinner,sun9i-a80-mmc-config-clk" clock also requires: | ||
| 89 | - #reset-cells : shall be set to 1 | ||
| 90 | - resets : shall be the reset control phandle for the mmc block. | ||
| 91 | |||
| 84 | For "allwinner,sun7i-a20-gmac-clk", the parent clocks shall be fixed rate | 92 | For "allwinner,sun7i-a20-gmac-clk", the parent clocks shall be fixed rate |
| 85 | dummy clocks at 25 MHz and 125 MHz, respectively. See example. | 93 | dummy clocks at 25 MHz and 125 MHz, respectively. See example. |
| 86 | 94 | ||
| @@ -95,6 +103,14 @@ For "allwinner,sun6i-a31-pll6-clk", there are 2 outputs. The first output | |||
| 95 | is the normal PLL6 output, or "pll6". The second output is rate doubled | 103 | is the normal PLL6 output, or "pll6". The second output is rate doubled |
| 96 | PLL6, or "pll6x2". | 104 | PLL6, or "pll6x2". |
| 97 | 105 | ||
| 106 | The "allwinner,*-mmc-clk" clocks have three different outputs: the | ||
| 107 | main clock, with the ID 0, and the output and sample clocks, with the | ||
| 108 | IDs 1 and 2, respectively. | ||
| 109 | |||
| 110 | The "allwinner,sun9i-a80-mmc-config-clk" clock has one clock/reset output | ||
| 111 | per mmc controller. The number of outputs is determined by the size of | ||
| 112 | the address block, which is related to the overall mmc block. | ||
| 113 | |||
| 98 | For example: | 114 | For example: |
| 99 | 115 | ||
| 100 | osc24M: clk@01c20050 { | 116 | osc24M: clk@01c20050 { |
| @@ -138,11 +154,11 @@ cpu: cpu@01c20054 { | |||
| 138 | }; | 154 | }; |
| 139 | 155 | ||
| 140 | mmc0_clk: clk@01c20088 { | 156 | mmc0_clk: clk@01c20088 { |
| 141 | #clock-cells = <0>; | 157 | #clock-cells = <1>; |
| 142 | compatible = "allwinner,sun4i-mod0-clk"; | 158 | compatible = "allwinner,sun4i-a10-mmc-clk"; |
| 143 | reg = <0x01c20088 0x4>; | 159 | reg = <0x01c20088 0x4>; |
| 144 | clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | 160 | clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; |
| 145 | clock-output-names = "mmc0"; | 161 | clock-output-names = "mmc0", "mmc0_output", "mmc0_sample"; |
| 146 | }; | 162 | }; |
| 147 | 163 | ||
| 148 | mii_phy_tx_clk: clk@2 { | 164 | mii_phy_tx_clk: clk@2 { |
| @@ -170,3 +186,16 @@ gmac_clk: clk@01c20164 { | |||
| 170 | clocks = <&mii_phy_tx_clk>, <&gmac_int_tx_clk>; | 186 | clocks = <&mii_phy_tx_clk>, <&gmac_int_tx_clk>; |
| 171 | clock-output-names = "gmac"; | 187 | clock-output-names = "gmac"; |
| 172 | }; | 188 | }; |
| 189 | |||
| 190 | mmc_config_clk: clk@01c13000 { | ||
| 191 | compatible = "allwinner,sun9i-a80-mmc-config-clk"; | ||
| 192 | reg = <0x01c13000 0x10>; | ||
| 193 | clocks = <&ahb0_gates 8>; | ||
| 194 | clock-names = "ahb"; | ||
| 195 | resets = <&ahb0_resets 8>; | ||
| 196 | reset-names = "ahb"; | ||
| 197 | #clock-cells = <1>; | ||
| 198 | #reset-cells = <1>; | ||
| 199 | clock-output-names = "mmc0_config", "mmc1_config", | ||
| 200 | "mmc2_config", "mmc3_config"; | ||
| 201 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/ti,cdce706.txt b/Documentation/devicetree/bindings/clock/ti,cdce706.txt new file mode 100644 index 000000000000..616836e7e1e2 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti,cdce706.txt | |||
| @@ -0,0 +1,42 @@ | |||
| 1 | Bindings for Texas Instruments CDCE706 programmable 3-PLL clock | ||
| 2 | synthesizer/multiplier/divider. | ||
| 3 | |||
| 4 | Reference: http://www.ti.com/lit/ds/symlink/cdce706.pdf | ||
| 5 | |||
| 6 | I2C device node required properties: | ||
| 7 | - compatible: shall be "ti,cdce706". | ||
| 8 | - reg: i2c device address, shall be in range [0x68...0x6b]. | ||
| 9 | - #clock-cells: from common clock binding; shall be set to 1. | ||
| 10 | - clocks: from common clock binding; list of parent clock | ||
| 11 | handles, shall be reference clock(s) connected to CLK_IN0 | ||
| 12 | and CLK_IN1 pins. | ||
| 13 | - clock-names: shall be clk_in0 and/or clk_in1. Use clk_in0 | ||
| 14 | in case of crystal oscillator or differential signal input | ||
| 15 | configuration. Use clk_in0 and clk_in1 in case of independent | ||
| 16 | single-ended LVCMOS inputs configuration. | ||
| 17 | |||
| 18 | Example: | ||
| 19 | |||
| 20 | clocks { | ||
| 21 | clk54: clk54 { | ||
| 22 | #clock-cells = <0>; | ||
| 23 | compatible = "fixed-clock"; | ||
| 24 | clock-frequency = <54000000>; | ||
| 25 | }; | ||
| 26 | }; | ||
| 27 | ... | ||
| 28 | i2c0: i2c-master@0d090000 { | ||
| 29 | ... | ||
| 30 | cdce706: clock-synth@69 { | ||
| 31 | compatible = "ti,cdce706"; | ||
| 32 | #clock-cells = <1>; | ||
| 33 | reg = <0x69>; | ||
| 34 | clocks = <&clk54>; | ||
| 35 | clock-names = "clk_in0"; | ||
| 36 | }; | ||
| 37 | }; | ||
| 38 | ... | ||
| 39 | simple-audio-card,codec { | ||
| 40 | ... | ||
| 41 | clocks = <&cdce706 4>; | ||
| 42 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/ti/fapll.txt b/Documentation/devicetree/bindings/clock/ti/fapll.txt new file mode 100644 index 000000000000..c19b3f253b8c --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/fapll.txt | |||
| @@ -0,0 +1,33 @@ | |||
| 1 | Binding for Texas Instruments FAPLL clock. | ||
| 2 | |||
| 3 | Binding status: Unstable - ABI compatibility may be broken in the future | ||
| 4 | |||
| 5 | This binding uses the common clock binding[1]. It assumes a | ||
| 6 | register-mapped FAPLL with usually two selectable input clocks | ||
| 7 | (reference clock and bypass clock), and one or more child | ||
| 8 | syntesizers. | ||
| 9 | |||
| 10 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
| 11 | |||
| 12 | Required properties: | ||
| 13 | - compatible : shall be "ti,dm816-fapll-clock" | ||
| 14 | - #clock-cells : from common clock binding; shall be set to 0. | ||
| 15 | - clocks : link phandles of parent clocks (clk-ref and clk-bypass) | ||
| 16 | - reg : address and length of the register set for controlling the FAPLL. | ||
| 17 | |||
| 18 | Examples: | ||
| 19 | main_fapll: main_fapll { | ||
| 20 | #clock-cells = <1>; | ||
| 21 | compatible = "ti,dm816-fapll-clock"; | ||
| 22 | reg = <0x400 0x40>; | ||
| 23 | clocks = <&sys_clkin_ck &sys_clkin_ck>; | ||
| 24 | clock-indices = <1>, <2>, <3>, <4>, <5>, | ||
| 25 | <6>, <7>; | ||
| 26 | clock-output-names = "main_pll_clk1", | ||
| 27 | "main_pll_clk2", | ||
| 28 | "main_pll_clk3", | ||
| 29 | "main_pll_clk4", | ||
| 30 | "main_pll_clk5", | ||
| 31 | "main_pll_clk6", | ||
| 32 | "main_pll_clk7"; | ||
| 33 | }; | ||
diff --git a/Documentation/devicetree/bindings/devfreq/event/exynos-ppmu.txt b/Documentation/devicetree/bindings/devfreq/event/exynos-ppmu.txt new file mode 100644 index 000000000000..b54bf3a2ff57 --- /dev/null +++ b/Documentation/devicetree/bindings/devfreq/event/exynos-ppmu.txt | |||
| @@ -0,0 +1,110 @@ | |||
| 1 | |||
| 2 | * Samsung Exynos PPMU (Platform Performance Monitoring Unit) device | ||
| 3 | |||
| 4 | The Samsung Exynos SoC has PPMU (Platform Performance Monitoring Unit) for | ||
| 5 | each IP. PPMU provides the primitive values to get performance data. These | ||
| 6 | PPMU events provide information of the SoC's behaviors so that you may | ||
| 7 | use to analyze system performance, to make behaviors visible and to count | ||
| 8 | usages of each IP (DMC, CPU, RIGHTBUS, LEFTBUS, CAM interface, LCD, G3D, MFC). | ||
| 9 | The Exynos PPMU driver uses the devfreq-event class to provide event data | ||
| 10 | to various devfreq devices. The devfreq devices would use the event data when | ||
| 11 | derterming the current state of each IP. | ||
| 12 | |||
| 13 | Required properties: | ||
| 14 | - compatible: Should be "samsung,exynos-ppmu". | ||
| 15 | - reg: physical base address of each PPMU and length of memory mapped region. | ||
| 16 | |||
| 17 | Optional properties: | ||
| 18 | - clock-names : the name of clock used by the PPMU, "ppmu" | ||
| 19 | - clocks : phandles for clock specified in "clock-names" property | ||
| 20 | - #clock-cells: should be 1. | ||
| 21 | |||
| 22 | Example1 : PPMU nodes in exynos3250.dtsi are listed below. | ||
| 23 | |||
| 24 | ppmu_dmc0: ppmu_dmc0@106a0000 { | ||
| 25 | compatible = "samsung,exynos-ppmu"; | ||
| 26 | reg = <0x106a0000 0x2000>; | ||
| 27 | status = "disabled"; | ||
| 28 | }; | ||
| 29 | |||
| 30 | ppmu_dmc1: ppmu_dmc1@106b0000 { | ||
| 31 | compatible = "samsung,exynos-ppmu"; | ||
| 32 | reg = <0x106b0000 0x2000>; | ||
| 33 | status = "disabled"; | ||
| 34 | }; | ||
| 35 | |||
| 36 | ppmu_cpu: ppmu_cpu@106c0000 { | ||
| 37 | compatible = "samsung,exynos-ppmu"; | ||
| 38 | reg = <0x106c0000 0x2000>; | ||
| 39 | status = "disabled"; | ||
| 40 | }; | ||
| 41 | |||
| 42 | ppmu_rightbus: ppmu_rightbus@112a0000 { | ||
| 43 | compatible = "samsung,exynos-ppmu"; | ||
| 44 | reg = <0x112a0000 0x2000>; | ||
| 45 | clocks = <&cmu CLK_PPMURIGHT>; | ||
| 46 | clock-names = "ppmu"; | ||
| 47 | status = "disabled"; | ||
| 48 | }; | ||
| 49 | |||
| 50 | ppmu_leftbus: ppmu_leftbus0@116a0000 { | ||
| 51 | compatible = "samsung,exynos-ppmu"; | ||
| 52 | reg = <0x116a0000 0x2000>; | ||
| 53 | clocks = <&cmu CLK_PPMULEFT>; | ||
| 54 | clock-names = "ppmu"; | ||
| 55 | status = "disabled"; | ||
| 56 | }; | ||
| 57 | |||
| 58 | Example2 : Events of each PPMU node in exynos3250-rinato.dts are listed below. | ||
| 59 | |||
| 60 | &ppmu_dmc0 { | ||
| 61 | status = "okay"; | ||
| 62 | |||
| 63 | events { | ||
| 64 | ppmu_dmc0_3: ppmu-event3-dmc0 { | ||
| 65 | event-name = "ppmu-event3-dmc0"; | ||
| 66 | }; | ||
| 67 | |||
| 68 | ppmu_dmc0_2: ppmu-event2-dmc0 { | ||
| 69 | event-name = "ppmu-event2-dmc0"; | ||
| 70 | }; | ||
| 71 | |||
| 72 | ppmu_dmc0_1: ppmu-event1-dmc0 { | ||
| 73 | event-name = "ppmu-event1-dmc0"; | ||
| 74 | }; | ||
| 75 | |||
| 76 | ppmu_dmc0_0: ppmu-event0-dmc0 { | ||
| 77 | event-name = "ppmu-event0-dmc0"; | ||
| 78 | }; | ||
| 79 | }; | ||
| 80 | }; | ||
| 81 | |||
| 82 | &ppmu_dmc1 { | ||
| 83 | status = "okay"; | ||
| 84 | |||
| 85 | events { | ||
| 86 | ppmu_dmc1_3: ppmu-event3-dmc1 { | ||
| 87 | event-name = "ppmu-event3-dmc1"; | ||
| 88 | }; | ||
| 89 | }; | ||
| 90 | }; | ||
| 91 | |||
| 92 | &ppmu_leftbus { | ||
| 93 | status = "okay"; | ||
| 94 | |||
| 95 | events { | ||
| 96 | ppmu_leftbus_3: ppmu-event3-leftbus { | ||
| 97 | event-name = "ppmu-event3-leftbus"; | ||
| 98 | }; | ||
| 99 | }; | ||
| 100 | }; | ||
| 101 | |||
| 102 | &ppmu_rightbus { | ||
| 103 | status = "okay"; | ||
| 104 | |||
| 105 | events { | ||
| 106 | ppmu_rightbus_3: ppmu-event3-rightbus { | ||
| 107 | event-name = "ppmu-event3-rightbus"; | ||
| 108 | }; | ||
| 109 | }; | ||
| 110 | }; | ||
diff --git a/Documentation/devicetree/bindings/dma/img-mdc-dma.txt b/Documentation/devicetree/bindings/dma/img-mdc-dma.txt new file mode 100644 index 000000000000..28c1341db346 --- /dev/null +++ b/Documentation/devicetree/bindings/dma/img-mdc-dma.txt | |||
| @@ -0,0 +1,57 @@ | |||
| 1 | * IMG Multi-threaded DMA Controller (MDC) | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible: Must be "img,pistachio-mdc-dma". | ||
| 5 | - reg: Must contain the base address and length of the MDC registers. | ||
| 6 | - interrupts: Must contain all the per-channel DMA interrupts. | ||
| 7 | - clocks: Must contain an entry for each entry in clock-names. | ||
| 8 | See ../clock/clock-bindings.txt for details. | ||
| 9 | - clock-names: Must include the following entries: | ||
| 10 | - sys: MDC system interface clock. | ||
| 11 | - img,cr-periph: Must contain a phandle to the peripheral control syscon | ||
| 12 | node which contains the DMA request to channel mapping registers. | ||
| 13 | - img,max-burst-multiplier: Must be the maximum supported burst size multiplier. | ||
| 14 | The maximum burst size is this value multiplied by the hardware-reported bus | ||
| 15 | width. | ||
| 16 | - #dma-cells: Must be 3: | ||
| 17 | - The first cell is the peripheral's DMA request line. | ||
| 18 | - The second cell is a bitmap specifying to which channels the DMA request | ||
| 19 | line may be mapped (i.e. bit N set indicates channel N is usable). | ||
| 20 | - The third cell is the thread ID to be used by the channel. | ||
| 21 | |||
| 22 | Optional properties: | ||
| 23 | - dma-channels: Number of supported DMA channels, up to 32. If not specified | ||
| 24 | the number reported by the hardware is used. | ||
| 25 | |||
| 26 | Example: | ||
| 27 | |||
| 28 | mdc: dma-controller@18143000 { | ||
| 29 | compatible = "img,pistachio-mdc-dma"; | ||
| 30 | reg = <0x18143000 0x1000>; | ||
| 31 | interrupts = <GIC_SHARED 27 IRQ_TYPE_LEVEL_HIGH>, | ||
| 32 | <GIC_SHARED 28 IRQ_TYPE_LEVEL_HIGH>, | ||
| 33 | <GIC_SHARED 29 IRQ_TYPE_LEVEL_HIGH>, | ||
| 34 | <GIC_SHARED 30 IRQ_TYPE_LEVEL_HIGH>, | ||
| 35 | <GIC_SHARED 31 IRQ_TYPE_LEVEL_HIGH>, | ||
| 36 | <GIC_SHARED 32 IRQ_TYPE_LEVEL_HIGH>, | ||
| 37 | <GIC_SHARED 33 IRQ_TYPE_LEVEL_HIGH>, | ||
| 38 | <GIC_SHARED 34 IRQ_TYPE_LEVEL_HIGH>, | ||
| 39 | <GIC_SHARED 35 IRQ_TYPE_LEVEL_HIGH>, | ||
| 40 | <GIC_SHARED 36 IRQ_TYPE_LEVEL_HIGH>, | ||
| 41 | <GIC_SHARED 37 IRQ_TYPE_LEVEL_HIGH>, | ||
| 42 | <GIC_SHARED 38 IRQ_TYPE_LEVEL_HIGH>; | ||
| 43 | clocks = <&system_clk>; | ||
| 44 | clock-names = "sys"; | ||
| 45 | |||
| 46 | img,max-burst-multiplier = <16>; | ||
| 47 | img,cr-periph = <&cr_periph>; | ||
| 48 | |||
| 49 | #dma-cells = <3>; | ||
| 50 | }; | ||
| 51 | |||
| 52 | spi@18100f00 { | ||
| 53 | ... | ||
| 54 | dmas = <&mdc 9 0xffffffff 0>, <&mdc 10 0xffffffff 0>; | ||
| 55 | dma-names = "tx", "rx"; | ||
| 56 | ... | ||
| 57 | }; | ||
diff --git a/Documentation/devicetree/bindings/dma/renesas,rcar-dmac.txt b/Documentation/devicetree/bindings/dma/renesas,rcar-dmac.txt index df0f48bcf75a..09daeef1ff22 100644 --- a/Documentation/devicetree/bindings/dma/renesas,rcar-dmac.txt +++ b/Documentation/devicetree/bindings/dma/renesas,rcar-dmac.txt | |||
| @@ -1,13 +1,10 @@ | |||
| 1 | * Renesas R-Car DMA Controller Device Tree bindings | 1 | * Renesas R-Car DMA Controller Device Tree bindings |
| 2 | 2 | ||
| 3 | Renesas R-Car Generation 2 SoCs have have multiple multi-channel DMA | 3 | Renesas R-Car Generation 2 SoCs have multiple multi-channel DMA |
| 4 | controller instances named DMAC capable of serving multiple clients. Channels | 4 | controller instances named DMAC capable of serving multiple clients. Channels |
| 5 | can be dedicated to specific clients or shared between a large number of | 5 | can be dedicated to specific clients or shared between a large number of |
| 6 | clients. | 6 | clients. |
| 7 | 7 | ||
| 8 | DMA clients are connected to the DMAC ports referenced by an 8-bit identifier | ||
| 9 | called MID/RID. | ||
| 10 | |||
| 11 | Each DMA client is connected to one dedicated port of the DMAC, identified by | 8 | Each DMA client is connected to one dedicated port of the DMAC, identified by |
| 12 | an 8-bit port number called the MID/RID. A DMA controller can thus serve up to | 9 | an 8-bit port number called the MID/RID. A DMA controller can thus serve up to |
| 13 | 256 clients in total. When the number of hardware channels is lower than the | 10 | 256 clients in total. When the number of hardware channels is lower than the |
diff --git a/Documentation/devicetree/bindings/dma/snps-dma.txt b/Documentation/devicetree/bindings/dma/snps-dma.txt index d58675ea1abf..c261598164a7 100644 --- a/Documentation/devicetree/bindings/dma/snps-dma.txt +++ b/Documentation/devicetree/bindings/dma/snps-dma.txt | |||
| @@ -38,7 +38,7 @@ Example: | |||
| 38 | chan_allocation_order = <1>; | 38 | chan_allocation_order = <1>; |
| 39 | chan_priority = <1>; | 39 | chan_priority = <1>; |
| 40 | block_size = <0xfff>; | 40 | block_size = <0xfff>; |
| 41 | data_width = <3 3 0 0>; | 41 | data_width = <3 3>; |
| 42 | }; | 42 | }; |
| 43 | 43 | ||
| 44 | DMA clients connected to the Designware DMA controller must use the format | 44 | DMA clients connected to the Designware DMA controller must use the format |
diff --git a/Documentation/devicetree/bindings/drm/atmel/hlcdc-dc.txt b/Documentation/devicetree/bindings/drm/atmel/hlcdc-dc.txt new file mode 100644 index 000000000000..ebc1a914bda3 --- /dev/null +++ b/Documentation/devicetree/bindings/drm/atmel/hlcdc-dc.txt | |||
| @@ -0,0 +1,53 @@ | |||
| 1 | Device-Tree bindings for Atmel's HLCDC (High LCD Controller) DRM driver | ||
| 2 | |||
| 3 | The Atmel HLCDC Display Controller is subdevice of the HLCDC MFD device. | ||
| 4 | See ../mfd/atmel-hlcdc.txt for more details. | ||
| 5 | |||
| 6 | Required properties: | ||
| 7 | - compatible: value should be "atmel,hlcdc-display-controller" | ||
| 8 | - pinctrl-names: the pin control state names. Should contain "default". | ||
| 9 | - pinctrl-0: should contain the default pinctrl states. | ||
| 10 | - #address-cells: should be set to 1. | ||
| 11 | - #size-cells: should be set to 0. | ||
| 12 | |||
| 13 | Required children nodes: | ||
| 14 | Children nodes are encoding available output ports and their connections | ||
| 15 | to external devices using the OF graph reprensentation (see ../graph.txt). | ||
| 16 | At least one port node is required. | ||
| 17 | |||
| 18 | Example: | ||
| 19 | |||
| 20 | hlcdc: hlcdc@f0030000 { | ||
| 21 | compatible = "atmel,sama5d3-hlcdc"; | ||
| 22 | reg = <0xf0030000 0x2000>; | ||
| 23 | interrupts = <36 IRQ_TYPE_LEVEL_HIGH 0>; | ||
| 24 | clocks = <&lcdc_clk>, <&lcdck>, <&clk32k>; | ||
| 25 | clock-names = "periph_clk","sys_clk", "slow_clk"; | ||
| 26 | status = "disabled"; | ||
| 27 | |||
| 28 | hlcdc-display-controller { | ||
| 29 | compatible = "atmel,hlcdc-display-controller"; | ||
| 30 | pinctrl-names = "default"; | ||
| 31 | pinctrl-0 = <&pinctrl_lcd_base &pinctrl_lcd_rgb888>; | ||
| 32 | #address-cells = <1>; | ||
| 33 | #size-cells = <0>; | ||
| 34 | |||
| 35 | port@0 { | ||
| 36 | #address-cells = <1>; | ||
| 37 | #size-cells = <0>; | ||
| 38 | reg = <0>; | ||
| 39 | |||
| 40 | hlcdc_panel_output: endpoint@0 { | ||
| 41 | reg = <0>; | ||
| 42 | remote-endpoint = <&panel_input>; | ||
| 43 | }; | ||
| 44 | }; | ||
| 45 | }; | ||
| 46 | |||
| 47 | hlcdc_pwm: hlcdc-pwm { | ||
| 48 | compatible = "atmel,hlcdc-pwm"; | ||
| 49 | pinctrl-names = "default"; | ||
| 50 | pinctrl-0 = <&pinctrl_lcd_pwm>; | ||
| 51 | #pwm-cells = <3>; | ||
| 52 | }; | ||
| 53 | }; | ||
diff --git a/Documentation/devicetree/bindings/drm/bridge/dw_hdmi.txt b/Documentation/devicetree/bindings/drm/bridge/dw_hdmi.txt new file mode 100644 index 000000000000..a905c1413558 --- /dev/null +++ b/Documentation/devicetree/bindings/drm/bridge/dw_hdmi.txt | |||
| @@ -0,0 +1,50 @@ | |||
| 1 | DesignWare HDMI bridge bindings | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible: platform specific such as: | ||
| 5 | * "snps,dw-hdmi-tx" | ||
| 6 | * "fsl,imx6q-hdmi" | ||
| 7 | * "fsl,imx6dl-hdmi" | ||
| 8 | * "rockchip,rk3288-dw-hdmi" | ||
| 9 | - reg: Physical base address and length of the controller's registers. | ||
| 10 | - interrupts: The HDMI interrupt number | ||
| 11 | - clocks, clock-names : must have the phandles to the HDMI iahb and isfr clocks, | ||
| 12 | as described in Documentation/devicetree/bindings/clock/clock-bindings.txt, | ||
| 13 | the clocks are soc specific, the clock-names should be "iahb", "isfr" | ||
| 14 | -port@[X]: SoC specific port nodes with endpoint definitions as defined | ||
| 15 | in Documentation/devicetree/bindings/media/video-interfaces.txt, | ||
| 16 | please refer to the SoC specific binding document: | ||
| 17 | * Documentation/devicetree/bindings/drm/imx/hdmi.txt | ||
| 18 | * Documentation/devicetree/bindings/video/dw_hdmi-rockchip.txt | ||
| 19 | |||
| 20 | Optional properties | ||
| 21 | - reg-io-width: the width of the reg:1,4, default set to 1 if not present | ||
| 22 | - ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing | ||
| 23 | - clocks, clock-names: phandle to the HDMI CEC clock, name should be "cec" | ||
| 24 | |||
| 25 | Example: | ||
| 26 | hdmi: hdmi@0120000 { | ||
| 27 | compatible = "fsl,imx6q-hdmi"; | ||
| 28 | reg = <0x00120000 0x9000>; | ||
| 29 | interrupts = <0 115 0x04>; | ||
| 30 | gpr = <&gpr>; | ||
| 31 | clocks = <&clks 123>, <&clks 124>; | ||
| 32 | clock-names = "iahb", "isfr"; | ||
| 33 | ddc-i2c-bus = <&i2c2>; | ||
| 34 | |||
| 35 | port@0 { | ||
| 36 | reg = <0>; | ||
| 37 | |||
| 38 | hdmi_mux_0: endpoint { | ||
| 39 | remote-endpoint = <&ipu1_di0_hdmi>; | ||
| 40 | }; | ||
| 41 | }; | ||
| 42 | |||
| 43 | port@1 { | ||
| 44 | reg = <1>; | ||
| 45 | |||
| 46 | hdmi_mux_1: endpoint { | ||
| 47 | remote-endpoint = <&ipu1_di1_hdmi>; | ||
| 48 | }; | ||
| 49 | }; | ||
| 50 | }; | ||
diff --git a/Documentation/devicetree/bindings/drm/msm/hdmi.txt b/Documentation/devicetree/bindings/drm/msm/hdmi.txt index aca917fe2ba7..a29a55f3d937 100644 --- a/Documentation/devicetree/bindings/drm/msm/hdmi.txt +++ b/Documentation/devicetree/bindings/drm/msm/hdmi.txt | |||
| @@ -2,6 +2,8 @@ Qualcomm adreno/snapdragon hdmi output | |||
| 2 | 2 | ||
| 3 | Required properties: | 3 | Required properties: |
| 4 | - compatible: one of the following | 4 | - compatible: one of the following |
| 5 | * "qcom,hdmi-tx-8084" | ||
| 6 | * "qcom,hdmi-tx-8074" | ||
| 5 | * "qcom,hdmi-tx-8660" | 7 | * "qcom,hdmi-tx-8660" |
| 6 | * "qcom,hdmi-tx-8960" | 8 | * "qcom,hdmi-tx-8960" |
| 7 | - reg: Physical base address and length of the controller's registers | 9 | - reg: Physical base address and length of the controller's registers |
diff --git a/Documentation/devicetree/bindings/fpga/altera-socfpga-fpga-mgr.txt b/Documentation/devicetree/bindings/fpga/altera-socfpga-fpga-mgr.txt new file mode 100644 index 000000000000..9b027a615486 --- /dev/null +++ b/Documentation/devicetree/bindings/fpga/altera-socfpga-fpga-mgr.txt | |||
| @@ -0,0 +1,17 @@ | |||
| 1 | Altera SOCFPGA FPGA Manager | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible : should contain "altr,socfpga-fpga-mgr" | ||
| 5 | - reg : base address and size for memory mapped io. | ||
| 6 | - The first index is for FPGA manager register access. | ||
| 7 | - The second index is for writing FPGA configuration data. | ||
| 8 | - interrupts : interrupt for the FPGA Manager device. | ||
| 9 | |||
| 10 | Example: | ||
| 11 | |||
| 12 | hps_0_fpgamgr: fpgamgr@0xff706000 { | ||
| 13 | compatible = "altr,socfpga-fpga-mgr"; | ||
| 14 | reg = <0xFF706000 0x1000 | ||
| 15 | 0xFFB90000 0x1000>; | ||
| 16 | interrupts = <0 175 4>; | ||
| 17 | }; | ||
diff --git a/Documentation/devicetree/bindings/fuse/nvidia,tegra20-fuse.txt b/Documentation/devicetree/bindings/fuse/nvidia,tegra20-fuse.txt index d8c98c7614d0..23e1d3194174 100644 --- a/Documentation/devicetree/bindings/fuse/nvidia,tegra20-fuse.txt +++ b/Documentation/devicetree/bindings/fuse/nvidia,tegra20-fuse.txt | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | NVIDIA Tegra20/Tegra30/Tegr114/Tegra124 fuse block. | 1 | NVIDIA Tegra20/Tegra30/Tegr114/Tegra124 fuse block. |
| 2 | 2 | ||
| 3 | Required properties: | 3 | Required properties: |
| 4 | - compatible : should be: | 4 | - compatible : For Tegra20, must contain "nvidia,tegra20-efuse". For Tegra30, |
| 5 | "nvidia,tegra20-efuse" | 5 | must contain "nvidia,tegra30-efuse". For Tegra114, must contain |
| 6 | "nvidia,tegra30-efuse" | 6 | "nvidia,tegra114-efuse". For Tegra124, must contain "nvidia,tegra124-efuse". |
| 7 | "nvidia,tegra114-efuse" | 7 | Otherwise, must contain "nvidia,<chip>-efuse", plus one of the above, where |
| 8 | "nvidia,tegra124-efuse" | 8 | <chip> is tegra132. |
| 9 | Details: | 9 | Details: |
| 10 | nvidia,tegra20-efuse: Tegra20 requires using APB DMA to read the fuse data | 10 | nvidia,tegra20-efuse: Tegra20 requires using APB DMA to read the fuse data |
| 11 | due to a hardware bug. Tegra20 also lacks certain information which is | 11 | due to a hardware bug. Tegra20 also lacks certain information which is |
diff --git a/Documentation/devicetree/bindings/gpio/fujitsu,mb86s70-gpio.txt b/Documentation/devicetree/bindings/gpio/fujitsu,mb86s70-gpio.txt new file mode 100644 index 000000000000..bef353f370d8 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/fujitsu,mb86s70-gpio.txt | |||
| @@ -0,0 +1,20 @@ | |||
| 1 | Fujitsu MB86S7x GPIO Controller | ||
| 2 | ------------------------------- | ||
| 3 | |||
| 4 | Required properties: | ||
| 5 | - compatible: Should be "fujitsu,mb86s70-gpio" | ||
| 6 | - reg: Base address and length of register space | ||
| 7 | - clocks: Specify the clock | ||
| 8 | - gpio-controller: Marks the device node as a gpio controller. | ||
| 9 | - #gpio-cells: Should be <2>. The first cell is the pin number and the | ||
| 10 | second cell is used to specify optional parameters: | ||
| 11 | - bit 0 specifies polarity (0 for normal, 1 for inverted). | ||
| 12 | |||
| 13 | Examples: | ||
| 14 | gpio0: gpio@31000000 { | ||
| 15 | compatible = "fujitsu,mb86s70-gpio"; | ||
| 16 | reg = <0 0x31000000 0x10000>; | ||
| 17 | gpio-controller; | ||
| 18 | #gpio-cells = <2>; | ||
| 19 | clocks = <&clk 0 2 1>; | ||
| 20 | }; | ||
diff --git a/Documentation/devicetree/bindings/gpio/gpio-max732x.txt b/Documentation/devicetree/bindings/gpio/gpio-max732x.txt new file mode 100644 index 000000000000..5fdc843b4542 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio-max732x.txt | |||
| @@ -0,0 +1,59 @@ | |||
| 1 | * MAX732x-compatible I/O expanders | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible: Should be one of the following: | ||
| 5 | - "maxim,max7319": For the Maxim MAX7319 | ||
| 6 | - "maxim,max7320": For the Maxim MAX7320 | ||
| 7 | - "maxim,max7321": For the Maxim MAX7321 | ||
| 8 | - "maxim,max7322": For the Maxim MAX7322 | ||
| 9 | - "maxim,max7323": For the Maxim MAX7323 | ||
| 10 | - "maxim,max7324": For the Maxim MAX7324 | ||
| 11 | - "maxim,max7325": For the Maxim MAX7325 | ||
| 12 | - "maxim,max7326": For the Maxim MAX7326 | ||
| 13 | - "maxim,max7327": For the Maxim MAX7327 | ||
| 14 | - reg: I2C slave address for this device. | ||
| 15 | - gpio-controller: Marks the device node as a GPIO controller. | ||
| 16 | - #gpio-cells: Should be 2. | ||
| 17 | - first cell is the GPIO number | ||
| 18 | - second cell specifies GPIO flags, as defined in <dt-bindings/gpio/gpio.h>. | ||
| 19 | Only the GPIO_ACTIVE_HIGH and GPIO_ACTIVE_LOW flags are supported. | ||
| 20 | |||
| 21 | Optional properties: | ||
| 22 | |||
| 23 | The I/O expander can detect input state changes, and thus optionally act as | ||
| 24 | an interrupt controller. When the expander interrupt line is connected all the | ||
| 25 | following properties must be set. For more information please see the | ||
| 26 | interrupt controller device tree bindings documentation available at | ||
| 27 | Documentation/devicetree/bindings/interrupt-controller/interrupts.txt. | ||
| 28 | |||
| 29 | - interrupt-controller: Identifies the node as an interrupt controller. | ||
| 30 | - #interrupt-cells: Number of cells to encode an interrupt source, shall be 2. | ||
| 31 | - first cell is the pin number | ||
| 32 | - second cell is used to specify flags | ||
| 33 | - interrupt-parent: phandle of the parent interrupt controller. | ||
| 34 | - interrupts: Interrupt specifier for the controllers interrupt. | ||
| 35 | |||
| 36 | Please refer to gpio.txt in this directory for details of the common GPIO | ||
| 37 | bindings used by client devices. | ||
| 38 | |||
| 39 | Example 1. MAX7325 with interrupt support enabled (CONFIG_GPIO_MAX732X_IRQ=y): | ||
| 40 | |||
| 41 | expander: max7325@6d { | ||
| 42 | compatible = "maxim,max7325"; | ||
| 43 | reg = <0x6d>; | ||
| 44 | gpio-controller; | ||
| 45 | #gpio-cells = <2>; | ||
| 46 | interrupt-controller; | ||
| 47 | #interrupt-cells = <2>; | ||
| 48 | interrupt-parent = <&gpio4>; | ||
| 49 | interrupts = <29 IRQ_TYPE_EDGE_FALLING>; | ||
| 50 | }; | ||
| 51 | |||
| 52 | Example 2. MAX7325 with interrupt support disabled (CONFIG_GPIO_MAX732X_IRQ=n): | ||
| 53 | |||
| 54 | expander: max7325@6d { | ||
| 55 | compatible = "maxim,max7325"; | ||
| 56 | reg = <0x6d>; | ||
| 57 | gpio-controller; | ||
| 58 | #gpio-cells = <2>; | ||
| 59 | }; | ||
diff --git a/Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt b/Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt index d63194a2c848..ada4e2973323 100644 --- a/Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt +++ b/Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt | |||
| @@ -39,7 +39,7 @@ Optional Properties: | |||
| 39 | - lines-initial-states: Bitmask that specifies the initial state of each | 39 | - lines-initial-states: Bitmask that specifies the initial state of each |
| 40 | line. When a bit is set to zero, the corresponding line will be initialized to | 40 | line. When a bit is set to zero, the corresponding line will be initialized to |
| 41 | the input (pulled-up) state. When the bit is set to one, the line will be | 41 | the input (pulled-up) state. When the bit is set to one, the line will be |
| 42 | initialized the the low-level output state. If the property is not specified | 42 | initialized the low-level output state. If the property is not specified |
| 43 | all lines will be initialized to the input state. | 43 | all lines will be initialized to the input state. |
| 44 | 44 | ||
| 45 | The I/O expander can detect input state changes, and thus optionally act as | 45 | The I/O expander can detect input state changes, and thus optionally act as |
diff --git a/Documentation/devicetree/bindings/gpio/gpio-sx150x.txt b/Documentation/devicetree/bindings/gpio/gpio-sx150x.txt new file mode 100644 index 000000000000..ba2bb84eeac3 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio-sx150x.txt | |||
| @@ -0,0 +1,40 @@ | |||
| 1 | SEMTECH SX150x GPIO expander bindings | ||
| 2 | |||
| 3 | |||
| 4 | Required properties: | ||
| 5 | |||
| 6 | - compatible: should be "semtech,sx1506q", | ||
| 7 | "semtech,sx1508q", | ||
| 8 | "semtech,sx1509q". | ||
| 9 | |||
| 10 | - reg: The I2C slave address for this device. | ||
| 11 | |||
| 12 | - interrupt-parent: phandle of the parent interrupt controller. | ||
| 13 | |||
| 14 | - interrupts: Interrupt specifier for the controllers interrupt. | ||
| 15 | |||
| 16 | - #gpio-cells: Should be 2. The first cell is the GPIO number and the | ||
| 17 | second cell is used to specify optional parameters: | ||
| 18 | bit 0: polarity (0: normal, 1: inverted) | ||
| 19 | |||
| 20 | - gpio-controller: Marks the device as a GPIO controller. | ||
| 21 | |||
| 22 | - interrupt-controller: Marks the device as a interrupt controller. | ||
| 23 | |||
| 24 | The GPIO expander can optionally be used as an interrupt controller, in | ||
| 25 | which case it uses the default two cell specifier as described in | ||
| 26 | Documentation/devicetree/bindings/interrupt-controller/interrupts.txt. | ||
| 27 | |||
| 28 | Example: | ||
| 29 | |||
| 30 | i2c_gpio_expander@20{ | ||
| 31 | #gpio-cells = <2>; | ||
| 32 | #interrupt-cells = <2>; | ||
| 33 | compatible = "semtech,sx1506q"; | ||
| 34 | reg = <0x20>; | ||
| 35 | interrupt-parent = <&gpio_1>; | ||
| 36 | interrupts = <16 0>; | ||
| 37 | |||
| 38 | gpio-controller; | ||
| 39 | interrupt-controller; | ||
| 40 | }; | ||
diff --git a/Documentation/devicetree/bindings/gpio/gpio-xgene-sb.txt b/Documentation/devicetree/bindings/gpio/gpio-xgene-sb.txt new file mode 100644 index 000000000000..dae130060537 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio-xgene-sb.txt | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | APM X-Gene Standby GPIO controller bindings | ||
| 2 | |||
| 3 | This is a gpio controller in the standby domain. | ||
| 4 | |||
| 5 | There are 20 GPIO pins from 0..21. There is no GPIO_DS14 or GPIO_DS15, | ||
| 6 | only GPIO_DS8..GPIO_DS13 support interrupts. The IRQ mapping | ||
| 7 | is currently 1-to-1 on interrupts 0x28 thru 0x2d. | ||
| 8 | |||
| 9 | Required properties: | ||
| 10 | - compatible: "apm,xgene-gpio-sb" for the X-Gene Standby GPIO controller | ||
| 11 | - reg: Physical base address and size of the controller's registers | ||
| 12 | - #gpio-cells: Should be two. | ||
| 13 | - first cell is the pin number | ||
| 14 | - second cell is used to specify the gpio polarity: | ||
| 15 | 0 = active high | ||
| 16 | 1 = active low | ||
| 17 | - gpio-controller: Marks the device node as a GPIO controller. | ||
| 18 | - interrupts: Shall contain exactly 6 interrupts. | ||
| 19 | |||
| 20 | Example: | ||
| 21 | sbgpio: sbgpio@17001000 { | ||
| 22 | compatible = "apm,xgene-gpio-sb"; | ||
| 23 | reg = <0x0 0x17001000 0x0 0x400>; | ||
| 24 | #gpio-cells = <2>; | ||
| 25 | gpio-controller; | ||
| 26 | interrupts = <0x0 0x28 0x1>, | ||
| 27 | <0x0 0x29 0x1>, | ||
| 28 | <0x0 0x2a 0x1>, | ||
| 29 | <0x0 0x2b 0x1>, | ||
| 30 | <0x0 0x2c 0x1>, | ||
| 31 | <0x0 0x2d 0x1>; | ||
| 32 | }; | ||
diff --git a/Documentation/devicetree/bindings/gpio/gpio.txt b/Documentation/devicetree/bindings/gpio/gpio.txt index b9bd1d64cfa6..f7a158d85862 100644 --- a/Documentation/devicetree/bindings/gpio/gpio.txt +++ b/Documentation/devicetree/bindings/gpio/gpio.txt | |||
| @@ -69,7 +69,8 @@ GPIO pin number, and GPIO flags as accepted by the "qe_pio_e" gpio-controller. | |||
| 69 | ---------------------------------- | 69 | ---------------------------------- |
| 70 | 70 | ||
| 71 | A gpio-specifier should contain a flag indicating the GPIO polarity; active- | 71 | A gpio-specifier should contain a flag indicating the GPIO polarity; active- |
| 72 | high or active-low. If it does, the follow best practices should be followed: | 72 | high or active-low. If it does, the following best practices should be |
| 73 | followed: | ||
| 73 | 74 | ||
| 74 | The gpio-specifier's polarity flag should represent the physical level at the | 75 | The gpio-specifier's polarity flag should represent the physical level at the |
| 75 | GPIO controller that achieves (or represents, for inputs) a logically asserted | 76 | GPIO controller that achieves (or represents, for inputs) a logically asserted |
| @@ -147,7 +148,7 @@ contains information structures as follows: | |||
| 147 | numeric-gpio-range ::= | 148 | numeric-gpio-range ::= |
| 148 | <pinctrl-phandle> <gpio-base> <pinctrl-base> <count> | 149 | <pinctrl-phandle> <gpio-base> <pinctrl-base> <count> |
| 149 | named-gpio-range ::= <pinctrl-phandle> <gpio-base> '<0 0>' | 150 | named-gpio-range ::= <pinctrl-phandle> <gpio-base> '<0 0>' |
| 150 | gpio-phandle : phandle to pin controller node. | 151 | pinctrl-phandle : phandle to pin controller node |
| 151 | gpio-base : Base GPIO ID in the GPIO controller | 152 | gpio-base : Base GPIO ID in the GPIO controller |
| 152 | pinctrl-base : Base pinctrl pin ID in the pin controller | 153 | pinctrl-base : Base pinctrl pin ID in the pin controller |
| 153 | count : The number of GPIOs/pins in this range | 154 | count : The number of GPIOs/pins in this range |
diff --git a/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt b/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt index b2afdb27adeb..67a2e4e414a5 100644 --- a/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt +++ b/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt | |||
| @@ -3,8 +3,8 @@ | |||
| 3 | Required properties: | 3 | Required properties: |
| 4 | - compatible : Should be "intel,pxa25x-gpio", "intel,pxa26x-gpio", | 4 | - compatible : Should be "intel,pxa25x-gpio", "intel,pxa26x-gpio", |
| 5 | "intel,pxa27x-gpio", "intel,pxa3xx-gpio", | 5 | "intel,pxa27x-gpio", "intel,pxa3xx-gpio", |
| 6 | "marvell,pxa93x-gpio", "marvell,mmp-gpio" or | 6 | "marvell,pxa93x-gpio", "marvell,mmp-gpio", |
| 7 | "marvell,mmp2-gpio". | 7 | "marvell,mmp2-gpio" or marvell,pxa1928-gpio. |
| 8 | - reg : Address and length of the register set for the device | 8 | - reg : Address and length of the register set for the device |
| 9 | - interrupts : Should be the port interrupt shared by all gpio pins. | 9 | - interrupts : Should be the port interrupt shared by all gpio pins. |
| 10 | There're three gpio interrupts in arch-pxa, and they're gpio0, | 10 | There're three gpio interrupts in arch-pxa, and they're gpio0, |
diff --git a/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt b/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt index 4c32ef0b7db8..009f4bfa1590 100644 --- a/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt +++ b/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt | |||
| @@ -197,7 +197,9 @@ of the following host1x client modules: | |||
| 197 | - sor: serial output resource | 197 | - sor: serial output resource |
| 198 | 198 | ||
| 199 | Required properties: | 199 | Required properties: |
| 200 | - compatible: "nvidia,tegra124-sor" | 200 | - compatible: For Tegra124, must contain "nvidia,tegra124-sor". Otherwise, |
| 201 | must contain '"nvidia,<chip>-sor", "nvidia,tegra124-sor"', where <chip> | ||
| 202 | is tegra132. | ||
| 201 | - reg: Physical base address and length of the controller's registers. | 203 | - reg: Physical base address and length of the controller's registers. |
| 202 | - interrupts: The interrupt outputs from the controller. | 204 | - interrupts: The interrupt outputs from the controller. |
| 203 | - clocks: Must contain an entry for each entry in clock-names. | 205 | - clocks: Must contain an entry for each entry in clock-names. |
| @@ -222,7 +224,9 @@ of the following host1x client modules: | |||
| 222 | - nvidia,dpaux: phandle to a DispayPort AUX interface | 224 | - nvidia,dpaux: phandle to a DispayPort AUX interface |
| 223 | 225 | ||
| 224 | - dpaux: DisplayPort AUX interface | 226 | - dpaux: DisplayPort AUX interface |
| 225 | - compatible: "nvidia,tegra124-dpaux" | 227 | - compatible: For Tegra124, must contain "nvidia,tegra124-dpaux". Otherwise, |
| 228 | must contain '"nvidia,<chip>-dpaux", "nvidia,tegra124-dpaux"', where | ||
| 229 | <chip> is tegra132. | ||
| 226 | - reg: Physical base address and length of the controller's registers. | 230 | - reg: Physical base address and length of the controller's registers. |
| 227 | - interrupts: The interrupt outputs from the controller. | 231 | - interrupts: The interrupt outputs from the controller. |
| 228 | - clocks: Must contain an entry for each entry in clock-names. | 232 | - clocks: Must contain an entry for each entry in clock-names. |
diff --git a/Documentation/devicetree/bindings/gpu/st,stih4xx.txt b/Documentation/devicetree/bindings/gpu/st,stih4xx.txt index c99eb34e640b..6b1d75f1a529 100644 --- a/Documentation/devicetree/bindings/gpu/st,stih4xx.txt +++ b/Documentation/devicetree/bindings/gpu/st,stih4xx.txt | |||
| @@ -83,6 +83,22 @@ sti-hda: | |||
| 83 | - clock-names: names of the clocks listed in clocks property in the same | 83 | - clock-names: names of the clocks listed in clocks property in the same |
| 84 | order. | 84 | order. |
| 85 | 85 | ||
| 86 | sti-dvo: | ||
| 87 | Required properties: | ||
| 88 | must be a child of sti-tvout | ||
| 89 | - compatible: "st,stih<chip>-dvo" | ||
| 90 | - reg: Physical base address of the IP registers and length of memory mapped region. | ||
| 91 | - reg-names: names of the mapped memory regions listed in regs property in | ||
| 92 | the same order. | ||
| 93 | - clocks: from common clock binding: handle hardware IP needed clocks, the | ||
| 94 | number of clocks may depend of the SoC type. | ||
| 95 | See ../clocks/clock-bindings.txt for details. | ||
| 96 | - clock-names: names of the clocks listed in clocks property in the same | ||
| 97 | order. | ||
| 98 | - pinctrl-0: pin control handle | ||
| 99 | - pinctrl-name: names of the pin control to use | ||
| 100 | - sti,panel: phandle of the panel connected to the DVO output | ||
| 101 | |||
| 86 | sti-hqvdp: | 102 | sti-hqvdp: |
| 87 | must be a child of sti-display-subsystem | 103 | must be a child of sti-display-subsystem |
| 88 | Required properties: | 104 | Required properties: |
| @@ -198,6 +214,19 @@ Example: | |||
| 198 | clock-names = "pix", "hddac"; | 214 | clock-names = "pix", "hddac"; |
| 199 | clocks = <&clockgen_c_vcc CLK_S_PIX_HD>, <&clockgen_c_vcc CLK_S_HDDAC>; | 215 | clocks = <&clockgen_c_vcc CLK_S_PIX_HD>, <&clockgen_c_vcc CLK_S_HDDAC>; |
| 200 | }; | 216 | }; |
| 217 | |||
| 218 | sti-dvo@8d00400 { | ||
| 219 | compatible = "st,stih407-dvo"; | ||
| 220 | reg = <0x8d00400 0x200>; | ||
| 221 | reg-names = "dvo-reg"; | ||
| 222 | clock-names = "dvo_pix", "dvo", | ||
| 223 | "main_parent", "aux_parent"; | ||
| 224 | clocks = <&clk_s_d2_flexgen CLK_PIX_DVO>, <&clk_s_d2_flexgen CLK_DVO>, | ||
| 225 | <&clk_s_d2_quadfs 0>, <&clk_s_d2_quadfs 1>; | ||
| 226 | pinctrl-names = "default"; | ||
| 227 | pinctrl-0 = <&pinctrl_dvo>; | ||
| 228 | sti,panel = <&panel_dvo>; | ||
| 229 | }; | ||
| 201 | }; | 230 | }; |
| 202 | 231 | ||
| 203 | sti-hqvdp@9c000000 { | 232 | sti-hqvdp@9c000000 { |
diff --git a/Documentation/devicetree/bindings/graph.txt b/Documentation/devicetree/bindings/graph.txt index 1a69c078adf2..fcb1c6a4787b 100644 --- a/Documentation/devicetree/bindings/graph.txt +++ b/Documentation/devicetree/bindings/graph.txt | |||
| @@ -19,7 +19,7 @@ type of the connections, they just map their existence. Specific properties | |||
| 19 | may be described by specialized bindings depending on the type of connection. | 19 | may be described by specialized bindings depending on the type of connection. |
| 20 | 20 | ||
| 21 | To see how this binding applies to video pipelines, for example, see | 21 | To see how this binding applies to video pipelines, for example, see |
| 22 | Documentation/device-tree/bindings/media/video-interfaces.txt. | 22 | Documentation/devicetree/bindings/media/video-interfaces.txt. |
| 23 | Here the ports describe data interfaces, and the links between them are | 23 | Here the ports describe data interfaces, and the links between them are |
| 24 | the connecting data buses. A single port with multiple connections can | 24 | the connecting data buses. A single port with multiple connections can |
| 25 | correspond to multiple devices being connected to the same physical bus. | 25 | correspond to multiple devices being connected to the same physical bus. |
diff --git a/Documentation/devicetree/bindings/i2c/brcm,iproc-i2c.txt b/Documentation/devicetree/bindings/i2c/brcm,iproc-i2c.txt new file mode 100644 index 000000000000..81f982ccca31 --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/brcm,iproc-i2c.txt | |||
| @@ -0,0 +1,37 @@ | |||
| 1 | Broadcom iProc I2C controller | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | |||
| 5 | - compatible: | ||
| 6 | Must be "brcm,iproc-i2c" | ||
| 7 | |||
| 8 | - reg: | ||
| 9 | Define the base and range of the I/O address space that contain the iProc | ||
| 10 | I2C controller registers | ||
| 11 | |||
| 12 | - interrupts: | ||
| 13 | Should contain the I2C interrupt | ||
| 14 | |||
| 15 | - clock-frequency: | ||
| 16 | This is the I2C bus clock. Need to be either 100000 or 400000 | ||
| 17 | |||
| 18 | - #address-cells: | ||
| 19 | Always 1 (for I2C addresses) | ||
| 20 | |||
| 21 | - #size-cells: | ||
| 22 | Always 0 | ||
| 23 | |||
| 24 | Example: | ||
| 25 | i2c0: i2c@18008000 { | ||
| 26 | compatible = "brcm,iproc-i2c"; | ||
| 27 | reg = <0x18008000 0x100>; | ||
| 28 | #address-cells = <1>; | ||
| 29 | #size-cells = <0>; | ||
| 30 | interrupts = <GIC_SPI 85 IRQ_TYPE_NONE>; | ||
| 31 | clock-frequency = <100000>; | ||
| 32 | |||
| 33 | codec: wm8750@1a { | ||
| 34 | compatible = "wlf,wm8750"; | ||
| 35 | reg = <0x1a>; | ||
| 36 | }; | ||
| 37 | }; | ||
diff --git a/Documentation/devicetree/bindings/i2c/i2c-mux-pca954x.txt b/Documentation/devicetree/bindings/i2c/i2c-mux-pca954x.txt index 34a3fb6f8488..cf53d5fba20a 100644 --- a/Documentation/devicetree/bindings/i2c/i2c-mux-pca954x.txt +++ b/Documentation/devicetree/bindings/i2c/i2c-mux-pca954x.txt | |||
| @@ -16,6 +16,9 @@ Required Properties: | |||
| 16 | Optional Properties: | 16 | Optional Properties: |
| 17 | 17 | ||
| 18 | - reset-gpios: Reference to the GPIO connected to the reset input. | 18 | - reset-gpios: Reference to the GPIO connected to the reset input. |
| 19 | - i2c-mux-idle-disconnect: Boolean; if defined, forces mux to disconnect all | ||
| 20 | children in idle state. This is necessary for example, if there are several | ||
| 21 | multiplexers on the bus and the devices behind them use same I2C addresses. | ||
| 19 | 22 | ||
| 20 | 23 | ||
| 21 | Example: | 24 | Example: |
diff --git a/Documentation/devicetree/bindings/i2c/i2c-ocores.txt b/Documentation/devicetree/bindings/i2c/i2c-ocores.txt index 1637c298a1b3..17bef9a34e50 100644 --- a/Documentation/devicetree/bindings/i2c/i2c-ocores.txt +++ b/Documentation/devicetree/bindings/i2c/i2c-ocores.txt | |||
| @@ -4,24 +4,60 @@ Required properties: | |||
| 4 | - compatible : "opencores,i2c-ocores" or "aeroflexgaisler,i2cmst" | 4 | - compatible : "opencores,i2c-ocores" or "aeroflexgaisler,i2cmst" |
| 5 | - reg : bus address start and address range size of device | 5 | - reg : bus address start and address range size of device |
| 6 | - interrupts : interrupt number | 6 | - interrupts : interrupt number |
| 7 | - clock-frequency : frequency of bus clock in Hz | 7 | - clocks : handle to the controller clock; see the note below. |
| 8 | Mutually exclusive with opencores,ip-clock-frequency | ||
| 9 | - opencores,ip-clock-frequency: frequency of the controller clock in Hz; | ||
| 10 | see the note below. Mutually exclusive with clocks | ||
| 8 | - #address-cells : should be <1> | 11 | - #address-cells : should be <1> |
| 9 | - #size-cells : should be <0> | 12 | - #size-cells : should be <0> |
| 10 | 13 | ||
| 11 | Optional properties: | 14 | Optional properties: |
| 15 | - clock-frequency : frequency of bus clock in Hz; see the note below. | ||
| 16 | Defaults to 100 KHz when the property is not specified | ||
| 12 | - reg-shift : device register offsets are shifted by this value | 17 | - reg-shift : device register offsets are shifted by this value |
| 13 | - reg-io-width : io register width in bytes (1, 2 or 4) | 18 | - reg-io-width : io register width in bytes (1, 2 or 4) |
| 14 | - regstep : deprecated, use reg-shift above | 19 | - regstep : deprecated, use reg-shift above |
| 15 | 20 | ||
| 16 | Example: | 21 | Note |
| 22 | clock-frequency property is meant to control the bus frequency for i2c bus | ||
| 23 | drivers, but it was incorrectly used to specify i2c controller input clock | ||
| 24 | frequency. So the following rules are set to fix this situation: | ||
| 25 | - if clock-frequency is present and neither opencores,ip-clock-frequency nor | ||
| 26 | clocks are, then clock-frequency specifies i2c controller clock frequency. | ||
| 27 | This is to keep backwards compatibility with setups using old DTB. i2c bus | ||
| 28 | frequency is fixed at 100 KHz. | ||
| 29 | - if clocks is present it specifies i2c controller clock. clock-frequency | ||
| 30 | property specifies i2c bus frequency. | ||
| 31 | - if opencores,ip-clock-frequency is present it specifies i2c controller | ||
| 32 | clock frequency. clock-frequency property specifies i2c bus frequency. | ||
| 17 | 33 | ||
| 34 | Examples: | ||
| 35 | |||
| 36 | i2c0: ocores@a0000000 { | ||
| 37 | #address-cells = <1>; | ||
| 38 | #size-cells = <0>; | ||
| 39 | compatible = "opencores,i2c-ocores"; | ||
| 40 | reg = <0xa0000000 0x8>; | ||
| 41 | interrupts = <10>; | ||
| 42 | opencores,ip-clock-frequency = <20000000>; | ||
| 43 | |||
| 44 | reg-shift = <0>; /* 8 bit registers */ | ||
| 45 | reg-io-width = <1>; /* 8 bit read/write */ | ||
| 46 | |||
| 47 | dummy@60 { | ||
| 48 | compatible = "dummy"; | ||
| 49 | reg = <0x60>; | ||
| 50 | }; | ||
| 51 | }; | ||
| 52 | or | ||
| 18 | i2c0: ocores@a0000000 { | 53 | i2c0: ocores@a0000000 { |
| 19 | #address-cells = <1>; | 54 | #address-cells = <1>; |
| 20 | #size-cells = <0>; | 55 | #size-cells = <0>; |
| 21 | compatible = "opencores,i2c-ocores"; | 56 | compatible = "opencores,i2c-ocores"; |
| 22 | reg = <0xa0000000 0x8>; | 57 | reg = <0xa0000000 0x8>; |
| 23 | interrupts = <10>; | 58 | interrupts = <10>; |
| 24 | clock-frequency = <20000000>; | 59 | clocks = <&osc>; |
| 60 | clock-frequency = <400000>; /* i2c bus frequency 400 KHz */ | ||
| 25 | 61 | ||
| 26 | reg-shift = <0>; /* 8 bit registers */ | 62 | reg-shift = <0>; /* 8 bit registers */ |
| 27 | reg-io-width = <1>; /* 8 bit read/write */ | 63 | reg-io-width = <1>; /* 8 bit read/write */ |
diff --git a/Documentation/devicetree/bindings/i2c/i2c-rk3x.txt b/Documentation/devicetree/bindings/i2c/i2c-rk3x.txt index dde6c22ce91a..f0d71bc52e64 100644 --- a/Documentation/devicetree/bindings/i2c/i2c-rk3x.txt +++ b/Documentation/devicetree/bindings/i2c/i2c-rk3x.txt | |||
| @@ -21,6 +21,17 @@ Required on RK3066, RK3188 : | |||
| 21 | Optional properties : | 21 | Optional properties : |
| 22 | 22 | ||
| 23 | - clock-frequency : SCL frequency to use (in Hz). If omitted, 100kHz is used. | 23 | - clock-frequency : SCL frequency to use (in Hz). If omitted, 100kHz is used. |
| 24 | - i2c-scl-rising-time-ns : Number of nanoseconds the SCL signal takes to rise | ||
| 25 | (t(r) in I2C specification). If not specified this is assumed to be | ||
| 26 | the maximum the specification allows(1000 ns for Standard-mode, | ||
| 27 | 300 ns for Fast-mode) which might cause slightly slower communication. | ||
| 28 | - i2c-scl-falling-time-ns : Number of nanoseconds the SCL signal takes to fall | ||
| 29 | (t(f) in the I2C specification). If not specified this is assumed to | ||
| 30 | be the maximum the specification allows (300 ns) which might cause | ||
| 31 | slightly slower communication. | ||
| 32 | - i2c-sda-falling-time-ns : Number of nanoseconds the SDA signal takes to fall | ||
| 33 | (t(f) in the I2C specification). If not specified we'll use the SCL | ||
| 34 | value since they are the same in nearly all cases. | ||
| 24 | 35 | ||
| 25 | Example: | 36 | Example: |
| 26 | 37 | ||
| @@ -39,4 +50,7 @@ i2c0: i2c@2002d000 { | |||
| 39 | 50 | ||
| 40 | clock-names = "i2c"; | 51 | clock-names = "i2c"; |
| 41 | clocks = <&cru PCLK_I2C0>; | 52 | clocks = <&cru PCLK_I2C0>; |
| 53 | |||
| 54 | i2c-scl-rising-time-ns = <800>; | ||
| 55 | i2c-scl-falling-time-ns = <100>; | ||
| 42 | }; | 56 | }; |
diff --git a/Documentation/devicetree/bindings/i2c/i2c-st.txt b/Documentation/devicetree/bindings/i2c/i2c-st.txt index 437e0db3823c..4c26fda3844a 100644 --- a/Documentation/devicetree/bindings/i2c/i2c-st.txt +++ b/Documentation/devicetree/bindings/i2c/i2c-st.txt | |||
| @@ -31,7 +31,7 @@ i2c0: i2c@fed40000 { | |||
| 31 | compatible = "st,comms-ssc4-i2c"; | 31 | compatible = "st,comms-ssc4-i2c"; |
| 32 | reg = <0xfed40000 0x110>; | 32 | reg = <0xfed40000 0x110>; |
| 33 | interrupts = <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH>; | 33 | interrupts = <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH>; |
| 34 | clocks = <&CLK_S_ICN_REG_0>; | 34 | clocks = <&clk_s_a0_ls CLK_ICN_REG>; |
| 35 | clock-names = "ssc"; | 35 | clock-names = "ssc"; |
| 36 | clock-frequency = <400000>; | 36 | clock-frequency = <400000>; |
| 37 | pinctrl-names = "default"; | 37 | pinctrl-names = "default"; |
diff --git a/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt b/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt index 87507e9ce6db..656716b72cc4 100644 --- a/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt +++ b/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | NVIDIA Tegra20/Tegra30/Tegra114 I2C controller driver. | 1 | NVIDIA Tegra20/Tegra30/Tegra114 I2C controller driver. |
| 2 | 2 | ||
| 3 | Required properties: | 3 | Required properties: |
| 4 | - compatible : should be: | 4 | - compatible : For Tegra20, must be one of "nvidia,tegra20-i2c-dvc" or |
| 5 | "nvidia,tegra114-i2c" | 5 | "nvidia,tegra20-i2c". For Tegra30, must be "nvidia,tegra30-i2c". |
| 6 | "nvidia,tegra30-i2c" | 6 | For Tegra114, must be "nvidia,tegra114-i2c". Otherwise, must be |
| 7 | "nvidia,tegra20-i2c" | 7 | "nvidia,<chip>-i2c", plus at least one of the above, where <chip> is |
| 8 | "nvidia,tegra20-i2c-dvc" | 8 | tegra124, tegra132, or tegra210. |
| 9 | Details of compatible are as follows: | 9 | Details of compatible are as follows: |
| 10 | nvidia,tegra20-i2c-dvc: Tegra20 has specific I2C controller called as DVC I2C | 10 | nvidia,tegra20-i2c-dvc: Tegra20 has specific I2C controller called as DVC I2C |
| 11 | controller. This only support master mode of I2C communication. Register | 11 | controller. This only support master mode of I2C communication. Register |
diff --git a/Documentation/devicetree/bindings/i2c/trivial-devices.txt b/Documentation/devicetree/bindings/i2c/trivial-devices.txt index 9f4e3824e71e..aaa8325004d2 100644 --- a/Documentation/devicetree/bindings/i2c/trivial-devices.txt +++ b/Documentation/devicetree/bindings/i2c/trivial-devices.txt | |||
| @@ -9,6 +9,7 @@ document for it just like any other devices. | |||
| 9 | 9 | ||
| 10 | Compatible Vendor / Chip | 10 | Compatible Vendor / Chip |
| 11 | ========== ============= | 11 | ========== ============= |
| 12 | abracon,abb5zes3 AB-RTCMC-32.768kHz-B5ZE-S3: Real Time Clock/Calendar Module with I2C Interface | ||
| 12 | ad,ad7414 SMBus/I2C Digital Temperature Sensor in 6-Pin SOT with SMBus Alert and Over Temperature Pin | 13 | ad,ad7414 SMBus/I2C Digital Temperature Sensor in 6-Pin SOT with SMBus Alert and Over Temperature Pin |
| 13 | ad,adm9240 ADM9240: Complete System Hardware Monitor for uProcessor-Based Systems | 14 | ad,adm9240 ADM9240: Complete System Hardware Monitor for uProcessor-Based Systems |
| 14 | adi,adt7461 +/-1C TDM Extended Temp Range I.C | 15 | adi,adt7461 +/-1C TDM Extended Temp Range I.C |
| @@ -34,6 +35,7 @@ atmel,24c512 i2c serial eeprom (24cxx) | |||
| 34 | atmel,24c1024 i2c serial eeprom (24cxx) | 35 | atmel,24c1024 i2c serial eeprom (24cxx) |
| 35 | atmel,at97sc3204t i2c trusted platform module (TPM) | 36 | atmel,at97sc3204t i2c trusted platform module (TPM) |
| 36 | capella,cm32181 CM32181: Ambient Light Sensor | 37 | capella,cm32181 CM32181: Ambient Light Sensor |
| 38 | capella,cm3232 CM3232: Ambient Light Sensor | ||
| 37 | catalyst,24c32 i2c serial eeprom | 39 | catalyst,24c32 i2c serial eeprom |
| 38 | cirrus,cs42l51 Cirrus Logic CS42L51 audio codec | 40 | cirrus,cs42l51 Cirrus Logic CS42L51 audio codec |
| 39 | dallas,ds1307 64 x 8, Serial, I2C Real-Time Clock | 41 | dallas,ds1307 64 x 8, Serial, I2C Real-Time Clock |
| @@ -47,6 +49,7 @@ dallas,ds3232 Extremely Accurate I²C RTC with Integrated Crystal and SRAM | |||
| 47 | dallas,ds4510 CPU Supervisor with Nonvolatile Memory and Programmable I/O | 49 | dallas,ds4510 CPU Supervisor with Nonvolatile Memory and Programmable I/O |
| 48 | dallas,ds75 Digital Thermometer and Thermostat | 50 | dallas,ds75 Digital Thermometer and Thermostat |
| 49 | dlg,da9053 DA9053: flexible system level PMIC with multicore support | 51 | dlg,da9053 DA9053: flexible system level PMIC with multicore support |
| 52 | dlg,da9063 DA9063: system PMIC for quad-core application processors | ||
| 50 | epson,rx8025 High-Stability. I2C-Bus INTERFACE REAL TIME CLOCK MODULE | 53 | epson,rx8025 High-Stability. I2C-Bus INTERFACE REAL TIME CLOCK MODULE |
| 51 | epson,rx8581 I2C-BUS INTERFACE REAL TIME CLOCK MODULE | 54 | epson,rx8581 I2C-BUS INTERFACE REAL TIME CLOCK MODULE |
| 52 | fsl,mag3110 MAG3110: Xtrinsic High Accuracy, 3D Magnetometer | 55 | fsl,mag3110 MAG3110: Xtrinsic High Accuracy, 3D Magnetometer |
| @@ -58,9 +61,8 @@ fsl,sgtl5000 SGTL5000: Ultra Low-Power Audio Codec | |||
| 58 | gmt,g751 G751: Digital Temperature Sensor and Thermal Watchdog with Two-Wire Interface | 61 | gmt,g751 G751: Digital Temperature Sensor and Thermal Watchdog with Two-Wire Interface |
| 59 | infineon,slb9635tt Infineon SLB9635 (Soft-) I2C TPM (old protocol, max 100khz) | 62 | infineon,slb9635tt Infineon SLB9635 (Soft-) I2C TPM (old protocol, max 100khz) |
| 60 | infineon,slb9645tt Infineon SLB9645 I2C TPM (new protocol, max 400khz) | 63 | infineon,slb9645tt Infineon SLB9645 I2C TPM (new protocol, max 400khz) |
| 61 | isl,isl12057 Intersil ISL12057 I2C RTC Chip | 64 | isil,isl12057 Intersil ISL12057 I2C RTC Chip |
| 62 | isil,isl29028 (deprecated, use isl) | 65 | isil,isl29028 Intersil ISL29028 Ambient Light and Proximity Sensor |
| 63 | isl,isl29028 Intersil ISL29028 Ambient Light and Proximity Sensor | ||
| 64 | maxim,ds1050 5 Bit Programmable, Pulse-Width Modulator | 66 | maxim,ds1050 5 Bit Programmable, Pulse-Width Modulator |
| 65 | maxim,max1237 Low-Power, 4-/12-Channel, 2-Wire Serial, 12-Bit ADCs | 67 | maxim,max1237 Low-Power, 4-/12-Channel, 2-Wire Serial, 12-Bit ADCs |
| 66 | maxim,max6625 9-Bit/12-Bit Temperature Sensors with I²C-Compatible Serial Interface | 68 | maxim,max6625 9-Bit/12-Bit Temperature Sensors with I²C-Compatible Serial Interface |
diff --git a/Documentation/devicetree/bindings/iio/adc/cc10001_adc.txt b/Documentation/devicetree/bindings/iio/adc/cc10001_adc.txt new file mode 100644 index 000000000000..904f76de9055 --- /dev/null +++ b/Documentation/devicetree/bindings/iio/adc/cc10001_adc.txt | |||
| @@ -0,0 +1,22 @@ | |||
| 1 | * Cosmic Circuits - Analog to Digital Converter (CC-10001-ADC) | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible: Should be "cosmic,10001-adc" | ||
| 5 | - reg: Should contain adc registers location and length. | ||
| 6 | - clock-names: Should contain "adc". | ||
| 7 | - clocks: Should contain a clock specifier for each entry in clock-names | ||
| 8 | - vref-supply: The regulator supply ADC reference voltage. | ||
| 9 | |||
| 10 | Optional properties: | ||
| 11 | - adc-reserved-channels: Bitmask of reserved channels, | ||
| 12 | i.e. channels that cannot be used by the OS. | ||
| 13 | |||
| 14 | Example: | ||
| 15 | adc: adc@18101600 { | ||
| 16 | compatible = "cosmic,10001-adc"; | ||
| 17 | reg = <0x18101600 0x24>; | ||
| 18 | adc-reserved-channels = <0x2>; | ||
| 19 | clocks = <&adc_clk>; | ||
| 20 | clock-names = "adc"; | ||
| 21 | vref-supply = <®_1v8>; | ||
| 22 | }; | ||
diff --git a/Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.txt b/Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.txt new file mode 100644 index 000000000000..0fb46137f936 --- /dev/null +++ b/Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.txt | |||
| @@ -0,0 +1,129 @@ | |||
| 1 | Qualcomm's SPMI PMIC voltage ADC | ||
| 2 | |||
| 3 | SPMI PMIC voltage ADC (VADC) provides interface to clients to read | ||
| 4 | voltage. The VADC is a 15-bit sigma-delta ADC. | ||
| 5 | |||
| 6 | VADC node: | ||
| 7 | |||
| 8 | - compatible: | ||
| 9 | Usage: required | ||
| 10 | Value type: <string> | ||
| 11 | Definition: Should contain "qcom,spmi-vadc". | ||
| 12 | |||
| 13 | - reg: | ||
| 14 | Usage: required | ||
| 15 | Value type: <prop-encoded-array> | ||
| 16 | Definition: VADC base address and length in the SPMI PMIC register map. | ||
| 17 | |||
| 18 | - #address-cells: | ||
| 19 | Usage: required | ||
| 20 | Value type: <u32> | ||
| 21 | Definition: Must be one. Child node 'reg' property should define ADC | ||
| 22 | channel number. | ||
| 23 | |||
| 24 | - #size-cells: | ||
| 25 | Usage: required | ||
| 26 | Value type: <u32> | ||
| 27 | Definition: Must be zero. | ||
| 28 | |||
| 29 | - #io-channel-cells: | ||
| 30 | Usage: required | ||
| 31 | Value type: <u32> | ||
| 32 | Definition: Must be one. For details about IIO bindings see: | ||
| 33 | Documentation/devicetree/bindings/iio/iio-bindings.txt | ||
| 34 | |||
| 35 | - interrupts: | ||
| 36 | Usage: optional | ||
| 37 | Value type: <prop-encoded-array> | ||
| 38 | Definition: End of conversion interrupt. | ||
| 39 | |||
| 40 | Channel node properties: | ||
| 41 | |||
| 42 | - reg: | ||
| 43 | Usage: required | ||
| 44 | Value type: <u32> | ||
| 45 | Definition: ADC channel number. | ||
| 46 | See include/dt-bindings/iio/qcom,spmi-vadc.h | ||
| 47 | |||
| 48 | - qcom,decimation: | ||
| 49 | Usage: optional | ||
| 50 | Value type: <u32> | ||
| 51 | Definition: This parameter is used to decrease ADC sampling rate. | ||
| 52 | Quicker measurements can be made by reducing decimation ratio. | ||
| 53 | Valid values are 512, 1024, 2048, 4096. | ||
| 54 | If property is not found, default value of 512 will be used. | ||
| 55 | |||
| 56 | - qcom,pre-scaling: | ||
| 57 | Usage: optional | ||
| 58 | Value type: <u32 array> | ||
| 59 | Definition: Used for scaling the channel input signal before the signal is | ||
| 60 | fed to VADC. The configuration for this node is to know the | ||
| 61 | pre-determined ratio and use it for post scaling. Select one from | ||
| 62 | the following options. | ||
| 63 | <1 1>, <1 3>, <1 4>, <1 6>, <1 20>, <1 8>, <10 81>, <1 10> | ||
| 64 | If property is not found default value depending on chip will be used. | ||
| 65 | |||
| 66 | - qcom,ratiometric: | ||
| 67 | Usage: optional | ||
| 68 | Value type: <empty> | ||
| 69 | Definition: Channel calibration type. If this property is specified | ||
| 70 | VADC will use the VDD reference (1.8V) and GND for channel | ||
| 71 | calibration. If property is not found, channel will be | ||
| 72 | calibrated with 0.625V and 1.25V reference channels, also | ||
| 73 | known as absolute calibration. | ||
| 74 | |||
| 75 | - qcom,hw-settle-time: | ||
| 76 | Usage: optional | ||
| 77 | Value type: <u32> | ||
| 78 | Definition: Time between AMUX getting configured and the ADC starting | ||
| 79 | conversion. Delay = 100us * (value) for value < 11, and | ||
| 80 | 2ms * (value - 10) otherwise. | ||
| 81 | Valid values are: 0, 100, 200, 300, 400, 500, 600, 700, 800, | ||
| 82 | 900 us and 1, 2, 4, 6, 8, 10 ms | ||
| 83 | If property is not found, channel will use 0us. | ||
| 84 | |||
| 85 | - qcom,avg-samples: | ||
| 86 | Usage: optional | ||
| 87 | Value type: <u32> | ||
| 88 | Definition: Number of samples to be used for measurement. | ||
| 89 | Averaging provides the option to obtain a single measurement | ||
| 90 | from the ADC that is an average of multiple samples. The value | ||
| 91 | selected is 2^(value). | ||
| 92 | Valid values are: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 | ||
| 93 | If property is not found, 1 sample will be used. | ||
| 94 | |||
| 95 | NOTE: | ||
| 96 | |||
| 97 | Following channels, also known as reference point channels, are used for | ||
| 98 | result calibration and their channel configuration nodes should be defined: | ||
| 99 | VADC_REF_625MV and/or VADC_SPARE1(based on PMIC version) VADC_REF_1250MV, | ||
| 100 | VADC_GND_REF and VADC_VDD_VADC. | ||
| 101 | |||
| 102 | Example: | ||
| 103 | |||
| 104 | /* VADC node */ | ||
| 105 | pmic_vadc: vadc@3100 { | ||
| 106 | compatible = "qcom,spmi-vadc"; | ||
| 107 | reg = <0x3100 0x100>; | ||
| 108 | interrupts = <0x0 0x31 0x0 IRQ_TYPE_EDGE_RISING>; | ||
| 109 | #address-cells = <1>; | ||
| 110 | #size-cells = <0>; | ||
| 111 | #io-channel-cells = <1>; | ||
| 112 | io-channel-ranges; | ||
| 113 | |||
| 114 | /* Channel node */ | ||
| 115 | usb_id_nopull { | ||
| 116 | reg = <VADC_LR_MUX10_USB_ID>; | ||
| 117 | qcom,decimation = <512>; | ||
| 118 | qcom,ratiometric; | ||
| 119 | qcom,hw-settle-time = <200>; | ||
| 120 | qcom,avg-samples = <1>; | ||
| 121 | qcom,pre-scaling = <1 3>; | ||
| 122 | }; | ||
| 123 | }; | ||
| 124 | |||
| 125 | /* IIO client node */ | ||
| 126 | usb { | ||
| 127 | io-channels = <&pmic_vadc VADC_LR_MUX10_USB_ID>; | ||
| 128 | io-channel-names = "vadc"; | ||
| 129 | }; | ||
diff --git a/Documentation/devicetree/bindings/iio/adc/xilinx-xadc.txt b/Documentation/devicetree/bindings/iio/adc/xilinx-xadc.txt index d9ee909d2b78..d71258e2d456 100644 --- a/Documentation/devicetree/bindings/iio/adc/xilinx-xadc.txt +++ b/Documentation/devicetree/bindings/iio/adc/xilinx-xadc.txt | |||
| @@ -59,7 +59,7 @@ Optional properties: | |||
| 59 | Each child node represents one channel and has the following | 59 | Each child node represents one channel and has the following |
| 60 | properties: | 60 | properties: |
| 61 | Required properties: | 61 | Required properties: |
| 62 | * reg: Pair of pins the the channel is connected to. | 62 | * reg: Pair of pins the channel is connected to. |
| 63 | 0: VP/VN | 63 | 0: VP/VN |
| 64 | 1: VAUXP[0]/VAUXN[0] | 64 | 1: VAUXP[0]/VAUXN[0] |
| 65 | 2: VAUXP[1]/VAUXN[1] | 65 | 2: VAUXP[1]/VAUXN[1] |
diff --git a/Documentation/devicetree/bindings/iio/sensorhub.txt b/Documentation/devicetree/bindings/iio/sensorhub.txt new file mode 100644 index 000000000000..8d57571d5c0b --- /dev/null +++ b/Documentation/devicetree/bindings/iio/sensorhub.txt | |||
| @@ -0,0 +1,25 @@ | |||
| 1 | Samsung Sensorhub driver | ||
| 2 | |||
| 3 | Sensorhub is a MCU which manages several sensors and also plays the role | ||
| 4 | of a virtual sensor device. | ||
| 5 | |||
| 6 | Required properties: | ||
| 7 | - compatible: "samsung,sensorhub-rinato" or "samsung,sensorhub-thermostat" | ||
| 8 | - spi-max-frequency: max SPI clock frequency | ||
| 9 | - interrupt-parent: interrupt parent | ||
| 10 | - interrupts: communication interrupt | ||
| 11 | - ap-mcu-gpios: [out] ap to sensorhub line - used during communication | ||
| 12 | - mcu-ap-gpios: [in] sensorhub to ap - used during communication | ||
| 13 | - mcu-reset-gpios: [out] sensorhub reset | ||
| 14 | |||
| 15 | Example: | ||
| 16 | |||
| 17 | shub_spi: shub { | ||
| 18 | compatible = "samsung,sensorhub-rinato"; | ||
| 19 | spi-max-frequency = <5000000>; | ||
| 20 | interrupt-parent = <&gpx0>; | ||
| 21 | interrupts = <2 0>; | ||
| 22 | ap-mcu-gpios = <&gpx0 0 0>; | ||
| 23 | mcu-ap-gpios = <&gpx0 4 0>; | ||
| 24 | mcu-reset-gpios = <&gpx0 5 0>; | ||
| 25 | }; | ||
diff --git a/Documentation/devicetree/bindings/input/e3x0-button.txt b/Documentation/devicetree/bindings/input/e3x0-button.txt new file mode 100644 index 000000000000..751665e8e47a --- /dev/null +++ b/Documentation/devicetree/bindings/input/e3x0-button.txt | |||
| @@ -0,0 +1,25 @@ | |||
| 1 | National Instruments Ettus Research USRP E3x0 button driver | ||
| 2 | |||
| 3 | This module is part of the NI Ettus Research USRP E3x0 SDR. | ||
| 4 | |||
| 5 | This module provides a simple power button event via two interrupts. | ||
| 6 | |||
| 7 | Required properties: | ||
| 8 | - compatible: should be one of the following | ||
| 9 | - "ettus,e3x0-button": For devices such as the NI Ettus Research USRP E3x0 | ||
| 10 | - interrupt-parent: | ||
| 11 | - a phandle to the interrupt controller that it is attached to. | ||
| 12 | - interrupts: should be one of the following | ||
| 13 | - <0 30 1>, <0 31 1>: For devices such as the NI Ettus Research USRP E3x0 | ||
| 14 | - interrupt-names: should be one of the following | ||
| 15 | - "press", "release": For devices such as the NI Ettus Research USRP E3x0 | ||
| 16 | |||
| 17 | Note: Interrupt numbers might vary depending on the FPGA configuration. | ||
| 18 | |||
| 19 | Example: | ||
| 20 | button { | ||
| 21 | compatible = "ettus,e3x0-button"; | ||
| 22 | interrupt-parent = <&intc>; | ||
| 23 | interrupts = <0 30 1>, <0 31 1>; | ||
| 24 | interrupt-names = "press", "release"; | ||
| 25 | } | ||
diff --git a/Documentation/devicetree/bindings/input/regulator-haptic.txt b/Documentation/devicetree/bindings/input/regulator-haptic.txt new file mode 100644 index 000000000000..3ed1c7eb2f97 --- /dev/null +++ b/Documentation/devicetree/bindings/input/regulator-haptic.txt | |||
| @@ -0,0 +1,21 @@ | |||
| 1 | * Regulator Haptic Device Tree Bindings | ||
| 2 | |||
| 3 | Required Properties: | ||
| 4 | - compatible : Should be "regulator-haptic" | ||
| 5 | - haptic-supply : Power supply to the haptic motor. | ||
| 6 | [*] refer Documentation/devicetree/bindings/regulator/regulator.txt | ||
| 7 | |||
| 8 | - max-microvolt : The maximum voltage value supplied to the haptic motor. | ||
| 9 | [The unit of the voltage is a micro] | ||
| 10 | |||
| 11 | - min-microvolt : The minimum voltage value supplied to the haptic motor. | ||
| 12 | [The unit of the voltage is a micro] | ||
| 13 | |||
| 14 | Example: | ||
| 15 | |||
| 16 | haptics { | ||
| 17 | compatible = "regulator-haptic"; | ||
| 18 | haptic-supply = <&motor_regulator>; | ||
| 19 | max-microvolt = <2700000>; | ||
| 20 | min-microvolt = <1100000>; | ||
| 21 | }; | ||
diff --git a/Documentation/devicetree/bindings/input/sun4i-lradc-keys.txt b/Documentation/devicetree/bindings/input/sun4i-lradc-keys.txt new file mode 100644 index 000000000000..b9c32f6fd687 --- /dev/null +++ b/Documentation/devicetree/bindings/input/sun4i-lradc-keys.txt | |||
| @@ -0,0 +1,62 @@ | |||
| 1 | Allwinner sun4i low res adc attached tablet keys | ||
| 2 | ------------------------------------------------ | ||
| 3 | |||
| 4 | Required properties: | ||
| 5 | - compatible: "allwinner,sun4i-a10-lradc-keys" | ||
| 6 | - reg: mmio address range of the chip | ||
| 7 | - interrupts: interrupt to which the chip is connected | ||
| 8 | - vref-supply: powersupply for the lradc reference voltage | ||
| 9 | |||
| 10 | Each key is represented as a sub-node of "allwinner,sun4i-a10-lradc-keys": | ||
| 11 | |||
| 12 | Required subnode-properties: | ||
| 13 | - label: Descriptive name of the key. | ||
| 14 | - linux,code: Keycode to emit. | ||
| 15 | - channel: Channel this key is attached to, mut be 0 or 1. | ||
| 16 | - voltage: Voltage in µV at lradc input when this key is pressed. | ||
| 17 | |||
| 18 | Example: | ||
| 19 | |||
| 20 | #include <dt-bindings/input/input.h> | ||
| 21 | |||
| 22 | lradc: lradc@01c22800 { | ||
| 23 | compatible = "allwinner,sun4i-a10-lradc-keys"; | ||
| 24 | reg = <0x01c22800 0x100>; | ||
| 25 | interrupts = <31>; | ||
| 26 | vref-supply = <®_vcc3v0>; | ||
| 27 | |||
| 28 | button@191 { | ||
| 29 | label = "Volume Up"; | ||
| 30 | linux,code = <KEY_VOLUMEUP>; | ||
| 31 | channel = <0>; | ||
| 32 | voltage = <191274>; | ||
| 33 | }; | ||
| 34 | |||
| 35 | button@392 { | ||
| 36 | label = "Volume Down"; | ||
| 37 | linux,code = <KEY_VOLUMEDOWN>; | ||
| 38 | channel = <0>; | ||
| 39 | voltage = <392644>; | ||
| 40 | }; | ||
| 41 | |||
| 42 | button@601 { | ||
| 43 | label = "Menu"; | ||
| 44 | linux,code = <KEY_MENU>; | ||
| 45 | channel = <0>; | ||
| 46 | voltage = <601151>; | ||
| 47 | }; | ||
| 48 | |||
| 49 | button@795 { | ||
| 50 | label = "Enter"; | ||
| 51 | linux,code = <KEY_ENTER>; | ||
| 52 | channel = <0>; | ||
| 53 | voltage = <795090>; | ||
| 54 | }; | ||
| 55 | |||
| 56 | button@987 { | ||
| 57 | label = "Home"; | ||
| 58 | linux,code = <KEY_HOMEPAGE>; | ||
| 59 | channel = <0>; | ||
| 60 | voltage = <987387>; | ||
| 61 | }; | ||
| 62 | }; | ||
diff --git a/Documentation/devicetree/bindings/input/touchscreen/sun4i.txt b/Documentation/devicetree/bindings/input/touchscreen/sun4i.txt index aef57791f40b..433332d3b2ba 100644 --- a/Documentation/devicetree/bindings/input/touchscreen/sun4i.txt +++ b/Documentation/devicetree/bindings/input/touchscreen/sun4i.txt | |||
| @@ -2,9 +2,10 @@ sun4i resistive touchscreen controller | |||
| 2 | -------------------------------------- | 2 | -------------------------------------- |
| 3 | 3 | ||
| 4 | Required properties: | 4 | Required properties: |
| 5 | - compatible: "allwinner,sun4i-a10-ts" | 5 | - compatible: "allwinner,sun4i-a10-ts" or "allwinner,sun6i-a31-ts" |
| 6 | - reg: mmio address range of the chip | 6 | - reg: mmio address range of the chip |
| 7 | - interrupts: interrupt to which the chip is connected | 7 | - interrupts: interrupt to which the chip is connected |
| 8 | - #thermal-sensor-cells: shall be 0 | ||
| 8 | 9 | ||
| 9 | Optional properties: | 10 | Optional properties: |
| 10 | - allwinner,ts-attached: boolean indicating that an actual touchscreen is | 11 | - allwinner,ts-attached: boolean indicating that an actual touchscreen is |
| @@ -17,4 +18,5 @@ Example: | |||
| 17 | reg = <0x01c25000 0x100>; | 18 | reg = <0x01c25000 0x100>; |
| 18 | interrupts = <29>; | 19 | interrupts = <29>; |
| 19 | allwinner,ts-attached; | 20 | allwinner,ts-attached; |
| 21 | #thermal-sensor-cells = <0>; | ||
| 20 | }; | 22 | }; |
diff --git a/Documentation/devicetree/bindings/input/touchscreen/ti-tsc-adc.txt b/Documentation/devicetree/bindings/input/touchscreen/ti-tsc-adc.txt index 878549ba814d..6c4fb34823d3 100644 --- a/Documentation/devicetree/bindings/input/touchscreen/ti-tsc-adc.txt +++ b/Documentation/devicetree/bindings/input/touchscreen/ti-tsc-adc.txt | |||
| @@ -28,6 +28,20 @@ Required properties: | |||
| 28 | ti,adc-channels: List of analog inputs available for ADC. | 28 | ti,adc-channels: List of analog inputs available for ADC. |
| 29 | AIN0 = 0, AIN1 = 1 and so on till AIN7 = 7. | 29 | AIN0 = 0, AIN1 = 1 and so on till AIN7 = 7. |
| 30 | 30 | ||
| 31 | Optional properties: | ||
| 32 | - child "tsc" | ||
| 33 | ti,charge-delay: Length of touch screen charge delay step in terms of | ||
| 34 | ADC clock cycles. Charge delay value should be large | ||
| 35 | in order to avoid false pen-up events. This value | ||
| 36 | effects the overall sampling speed, hence need to be | ||
| 37 | kept as low as possible, while avoiding false pen-up | ||
| 38 | event. Start from a lower value, say 0x400, and | ||
| 39 | increase value until false pen-up events are avoided. | ||
| 40 | The pen-up detection happens immediately after the | ||
| 41 | charge step, so this does in fact function as a | ||
| 42 | hardware knob for adjusting the amount of "settling | ||
| 43 | time". | ||
| 44 | |||
| 31 | Example: | 45 | Example: |
| 32 | tscadc: tscadc@44e0d000 { | 46 | tscadc: tscadc@44e0d000 { |
| 33 | compatible = "ti,am3359-tscadc"; | 47 | compatible = "ti,am3359-tscadc"; |
| @@ -36,6 +50,7 @@ Example: | |||
| 36 | ti,x-plate-resistance = <200>; | 50 | ti,x-plate-resistance = <200>; |
| 37 | ti,coordiante-readouts = <5>; | 51 | ti,coordiante-readouts = <5>; |
| 38 | ti,wire-config = <0x00 0x11 0x22 0x33>; | 52 | ti,wire-config = <0x00 0x11 0x22 0x33>; |
| 53 | ti,charge-delay = <0x400>; | ||
| 39 | }; | 54 | }; |
| 40 | 55 | ||
| 41 | adc { | 56 | adc { |
diff --git a/Documentation/devicetree/bindings/input/tps65218-pwrbutton.txt b/Documentation/devicetree/bindings/input/tps65218-pwrbutton.txt new file mode 100644 index 000000000000..e30e0b93f2b3 --- /dev/null +++ b/Documentation/devicetree/bindings/input/tps65218-pwrbutton.txt | |||
| @@ -0,0 +1,17 @@ | |||
| 1 | Texas Instruments TPS65218 power button | ||
| 2 | |||
| 3 | This driver provides a simple power button event via an Interrupt. | ||
| 4 | |||
| 5 | Required properties: | ||
| 6 | - compatible: should be "ti,tps65218-pwrbutton" | ||
| 7 | - interrupts: should be one of the following | ||
| 8 | - <3 IRQ_TYPE_EDGE_BOTH>: For controllers compatible with tps65218 | ||
| 9 | |||
| 10 | Example: | ||
| 11 | |||
| 12 | &tps { | ||
| 13 | power-button { | ||
| 14 | compatible = "ti,tps65218-pwrbutton"; | ||
| 15 | interrupts = <3 IRQ_TYPE_EDGE_BOTH>; | ||
| 16 | }; | ||
| 17 | }; | ||
diff --git a/Documentation/devicetree/bindings/interrupt-controller/digicolor-ic.txt b/Documentation/devicetree/bindings/interrupt-controller/digicolor-ic.txt new file mode 100644 index 000000000000..42d41ec84c7b --- /dev/null +++ b/Documentation/devicetree/bindings/interrupt-controller/digicolor-ic.txt | |||
| @@ -0,0 +1,21 @@ | |||
| 1 | Conexant Digicolor Interrupt Controller | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | |||
| 5 | - compatible : should be "cnxt,cx92755-ic" | ||
| 6 | - reg : Specifies base physical address and size of the interrupt controller | ||
| 7 | registers (IC) area | ||
| 8 | - interrupt-controller : Identifies the node as an interrupt controller | ||
| 9 | - #interrupt-cells : Specifies the number of cells needed to encode an | ||
| 10 | interrupt source. The value shall be 1. | ||
| 11 | - syscon: A phandle to the syscon node describing UC registers | ||
| 12 | |||
| 13 | Example: | ||
| 14 | |||
| 15 | intc: interrupt-controller@f0000040 { | ||
| 16 | compatible = "cnxt,cx92755-ic"; | ||
| 17 | interrupt-controller; | ||
| 18 | #interrupt-cells = <1>; | ||
| 19 | reg = <0xf0000040 0x40>; | ||
| 20 | syscon = <&uc_regs>; | ||
| 21 | }; | ||
diff --git a/Documentation/devicetree/bindings/interrupt-controller/renesas,intc-irqpin.txt b/Documentation/devicetree/bindings/interrupt-controller/renesas,intc-irqpin.txt index c73acd060093..4f7946ae8adc 100644 --- a/Documentation/devicetree/bindings/interrupt-controller/renesas,intc-irqpin.txt +++ b/Documentation/devicetree/bindings/interrupt-controller/renesas,intc-irqpin.txt | |||
| @@ -9,6 +9,11 @@ Required properties: | |||
| 9 | - "renesas,intc-irqpin-r8a7778" (R-Car M1A) | 9 | - "renesas,intc-irqpin-r8a7778" (R-Car M1A) |
| 10 | - "renesas,intc-irqpin-r8a7779" (R-Car H1) | 10 | - "renesas,intc-irqpin-r8a7779" (R-Car H1) |
| 11 | - "renesas,intc-irqpin-sh73a0" (SH-Mobile AG5) | 11 | - "renesas,intc-irqpin-sh73a0" (SH-Mobile AG5) |
| 12 | |||
| 13 | - reg: Base address and length of each register bank used by the external | ||
| 14 | IRQ pins driven by the interrupt controller hardware module. The base | ||
| 15 | addresses, length and number of required register banks varies with soctype. | ||
| 16 | |||
| 12 | - #interrupt-cells: has to be <2>: an interrupt index and flags, as defined in | 17 | - #interrupt-cells: has to be <2>: an interrupt index and flags, as defined in |
| 13 | interrupts.txt in this directory | 18 | interrupts.txt in this directory |
| 14 | 19 | ||
diff --git a/Documentation/devicetree/bindings/interrupt-controller/ti,omap-intc-irq.txt b/Documentation/devicetree/bindings/interrupt-controller/ti,omap-intc-irq.txt new file mode 100644 index 000000000000..38ce5d037722 --- /dev/null +++ b/Documentation/devicetree/bindings/interrupt-controller/ti,omap-intc-irq.txt | |||
| @@ -0,0 +1,28 @@ | |||
| 1 | Omap2/3 intc controller | ||
| 2 | |||
| 3 | On TI omap2 and 3 the intc interrupt controller can provide | ||
| 4 | 96 or 128 IRQ signals to the ARM host depending on the SoC. | ||
| 5 | |||
| 6 | Required Properties: | ||
| 7 | - compatible: should be one of | ||
| 8 | "ti,omap2-intc" | ||
| 9 | "ti,omap3-intc" | ||
| 10 | "ti,dm814-intc" | ||
| 11 | "ti,dm816-intc" | ||
| 12 | "ti,am33xx-intc" | ||
| 13 | |||
| 14 | - interrupt-controller : Identifies the node as an interrupt controller | ||
| 15 | - #interrupt-cells : Specifies the number of cells needed to encode interrupt | ||
| 16 | source, should be 1 for intc | ||
| 17 | - interrupts: interrupt reference to primary interrupt controller | ||
| 18 | |||
| 19 | Please refer to interrupts.txt in this directory for details of the common | ||
| 20 | Interrupt Controllers bindings used by client devices. | ||
| 21 | |||
| 22 | Example: | ||
| 23 | intc: interrupt-controller@48200000 { | ||
| 24 | compatible = "ti,omap3-intc"; | ||
| 25 | interrupt-controller; | ||
| 26 | #interrupt-cells = <1>; | ||
| 27 | reg = <0x48200000 0x1000>; | ||
| 28 | }; | ||
diff --git a/Documentation/devicetree/bindings/iommu/renesas,ipmmu-vmsa.txt b/Documentation/devicetree/bindings/iommu/renesas,ipmmu-vmsa.txt new file mode 100644 index 000000000000..cd29083e16ec --- /dev/null +++ b/Documentation/devicetree/bindings/iommu/renesas,ipmmu-vmsa.txt | |||
| @@ -0,0 +1,41 @@ | |||
| 1 | * Renesas VMSA-Compatible IOMMU | ||
| 2 | |||
| 3 | The IPMMU is an IOMMU implementation compatible with the ARM VMSA page tables. | ||
| 4 | It provides address translation for bus masters outside of the CPU, each | ||
| 5 | connected to the IPMMU through a port called micro-TLB. | ||
| 6 | |||
| 7 | |||
| 8 | Required Properties: | ||
| 9 | |||
| 10 | - compatible: Must contain "renesas,ipmmu-vmsa". | ||
| 11 | - reg: Base address and size of the IPMMU registers. | ||
| 12 | - interrupts: Specifiers for the MMU fault interrupts. For instances that | ||
| 13 | support secure mode two interrupts must be specified, for non-secure and | ||
| 14 | secure mode, in that order. For instances that don't support secure mode a | ||
| 15 | single interrupt must be specified. | ||
| 16 | |||
| 17 | - #iommu-cells: Must be 1. | ||
| 18 | |||
| 19 | Each bus master connected to an IPMMU must reference the IPMMU in its device | ||
| 20 | node with the following property: | ||
| 21 | |||
| 22 | - iommus: A reference to the IPMMU in two cells. The first cell is a phandle | ||
| 23 | to the IPMMU and the second cell the number of the micro-TLB that the | ||
| 24 | device is connected to. | ||
| 25 | |||
| 26 | |||
| 27 | Example: R8A7791 IPMMU-MX and VSP1-D0 bus master | ||
| 28 | |||
| 29 | ipmmu_mx: mmu@fe951000 { | ||
| 30 | compatible = "renasas,ipmmu-vmsa"; | ||
| 31 | reg = <0 0xfe951000 0 0x1000>; | ||
| 32 | interrupts = <0 222 IRQ_TYPE_LEVEL_HIGH>, | ||
| 33 | <0 221 IRQ_TYPE_LEVEL_HIGH>; | ||
| 34 | #iommu-cells = <1>; | ||
| 35 | }; | ||
| 36 | |||
| 37 | vsp1@fe928000 { | ||
| 38 | ... | ||
| 39 | iommus = <&ipmmu_mx 13>; | ||
| 40 | ... | ||
| 41 | }; | ||
diff --git a/Documentation/devicetree/bindings/iommu/samsung,sysmmu.txt b/Documentation/devicetree/bindings/iommu/samsung,sysmmu.txt index 6fa4c737af23..729543c47046 100644 --- a/Documentation/devicetree/bindings/iommu/samsung,sysmmu.txt +++ b/Documentation/devicetree/bindings/iommu/samsung,sysmmu.txt | |||
| @@ -45,7 +45,7 @@ Required properties: | |||
| 45 | Exynos4 SoCs, there needs no "master" clock. | 45 | Exynos4 SoCs, there needs no "master" clock. |
| 46 | Exynos5 SoCs, some System MMUs must have "master" clocks. | 46 | Exynos5 SoCs, some System MMUs must have "master" clocks. |
| 47 | - clocks: Required if the System MMU is needed to gate its clock. | 47 | - clocks: Required if the System MMU is needed to gate its clock. |
| 48 | - samsung,power-domain: Required if the System MMU is needed to gate its power. | 48 | - power-domains: Required if the System MMU is needed to gate its power. |
| 49 | Please refer to the following document: | 49 | Please refer to the following document: |
| 50 | Documentation/devicetree/bindings/arm/exynos/power_domain.txt | 50 | Documentation/devicetree/bindings/arm/exynos/power_domain.txt |
| 51 | 51 | ||
| @@ -54,7 +54,7 @@ Examples: | |||
| 54 | compatible = "samsung,exynos5-gsc"; | 54 | compatible = "samsung,exynos5-gsc"; |
| 55 | reg = <0x13e00000 0x1000>; | 55 | reg = <0x13e00000 0x1000>; |
| 56 | interrupts = <0 85 0>; | 56 | interrupts = <0 85 0>; |
| 57 | samsung,power-domain = <&pd_gsc>; | 57 | power-domains = <&pd_gsc>; |
| 58 | clocks = <&clock CLK_GSCL0>; | 58 | clocks = <&clock CLK_GSCL0>; |
| 59 | clock-names = "gscl"; | 59 | clock-names = "gscl"; |
| 60 | }; | 60 | }; |
| @@ -66,5 +66,5 @@ Examples: | |||
| 66 | interrupts = <2 0>; | 66 | interrupts = <2 0>; |
| 67 | clock-names = "sysmmu", "master"; | 67 | clock-names = "sysmmu", "master"; |
| 68 | clocks = <&clock CLK_SMMU_GSCL0>, <&clock CLK_GSCL0>; | 68 | clocks = <&clock CLK_SMMU_GSCL0>, <&clock CLK_GSCL0>; |
| 69 | samsung,power-domain = <&pd_gsc>; | 69 | power-domains = <&pd_gsc>; |
| 70 | }; | 70 | }; |
diff --git a/Documentation/devicetree/bindings/leds/common.txt b/Documentation/devicetree/bindings/leds/common.txt index 2d88816dd550..34811c57db69 100644 --- a/Documentation/devicetree/bindings/leds/common.txt +++ b/Documentation/devicetree/bindings/leds/common.txt | |||
| @@ -1,6 +1,19 @@ | |||
| 1 | Common leds properties. | 1 | Common leds properties. |
| 2 | 2 | ||
| 3 | LED and flash LED devices provide the same basic functionality as current | ||
| 4 | regulators, but extended with LED and flash LED specific features like | ||
| 5 | blinking patterns, flash timeout, flash faults and external flash strobe mode. | ||
| 6 | |||
| 7 | Many LED devices expose more than one current output that can be connected | ||
| 8 | to one or more discrete LED component. Since the arrangement of connections | ||
| 9 | can influence the way of the LED device initialization, the LED components | ||
| 10 | have to be tightly coupled with the LED device binding. They are represented | ||
| 11 | by child nodes of the parent LED device binding. | ||
| 12 | |||
| 3 | Optional properties for child nodes: | 13 | Optional properties for child nodes: |
| 14 | - led-sources : List of device current outputs the LED is connected to. The | ||
| 15 | outputs are identified by the numbers that must be defined | ||
| 16 | in the LED device binding documentation. | ||
| 4 | - label : The label for this LED. If omitted, the label is | 17 | - label : The label for this LED. If omitted, the label is |
| 5 | taken from the node name (excluding the unit address). | 18 | taken from the node name (excluding the unit address). |
| 6 | 19 | ||
| @@ -14,6 +27,15 @@ Optional properties for child nodes: | |||
| 14 | "ide-disk" - LED indicates disk activity | 27 | "ide-disk" - LED indicates disk activity |
| 15 | "timer" - LED flashes at a fixed, configurable rate | 28 | "timer" - LED flashes at a fixed, configurable rate |
| 16 | 29 | ||
| 30 | - max-microamp : maximum intensity in microamperes of the LED | ||
| 31 | (torch LED for flash devices) | ||
| 32 | - flash-max-microamp : maximum intensity in microamperes of the | ||
| 33 | flash LED; it is mandatory if the LED should | ||
| 34 | support the flash mode | ||
| 35 | - flash-timeout-us : timeout in microseconds after which the flash | ||
| 36 | LED is turned off | ||
| 37 | |||
| 38 | |||
| 17 | Examples: | 39 | Examples: |
| 18 | 40 | ||
| 19 | system-status { | 41 | system-status { |
| @@ -21,3 +43,11 @@ system-status { | |||
| 21 | linux,default-trigger = "heartbeat"; | 43 | linux,default-trigger = "heartbeat"; |
| 22 | ... | 44 | ... |
| 23 | }; | 45 | }; |
| 46 | |||
| 47 | camera-flash { | ||
| 48 | label = "Flash"; | ||
| 49 | led-sources = <0>, <1>; | ||
| 50 | max-microamp = <50000>; | ||
| 51 | flash-max-microamp = <320000>; | ||
| 52 | flash-timeout-us = <500000>; | ||
| 53 | }; | ||
diff --git a/Documentation/devicetree/bindings/mailbox/altera-mailbox.txt b/Documentation/devicetree/bindings/mailbox/altera-mailbox.txt new file mode 100644 index 000000000000..c2619797ce0c --- /dev/null +++ b/Documentation/devicetree/bindings/mailbox/altera-mailbox.txt | |||
| @@ -0,0 +1,49 @@ | |||
| 1 | Altera Mailbox Driver | ||
| 2 | ===================== | ||
| 3 | |||
| 4 | Required properties: | ||
| 5 | - compatible : "altr,mailbox-1.0". | ||
| 6 | - reg : physical base address of the mailbox and length of | ||
| 7 | memory mapped region. | ||
| 8 | - #mbox-cells: Common mailbox binding property to identify the number | ||
| 9 | of cells required for the mailbox specifier. Should be 1. | ||
| 10 | |||
| 11 | Optional properties: | ||
| 12 | - interrupt-parent : interrupt source phandle. | ||
| 13 | - interrupts : interrupt number. The interrupt specifier format | ||
| 14 | depends on the interrupt controller parent. | ||
| 15 | |||
| 16 | Example: | ||
| 17 | mbox_tx: mailbox@0x100 { | ||
| 18 | compatible = "altr,mailbox-1.0"; | ||
| 19 | reg = <0x100 0x8>; | ||
| 20 | interrupt-parent = < &gic_0 >; | ||
| 21 | interrupts = <5>; | ||
| 22 | #mbox-cells = <1>; | ||
| 23 | }; | ||
| 24 | |||
| 25 | mbox_rx: mailbox@0x200 { | ||
| 26 | compatible = "altr,mailbox-1.0"; | ||
| 27 | reg = <0x200 0x8>; | ||
| 28 | interrupt-parent = < &gic_0 >; | ||
| 29 | interrupts = <6>; | ||
| 30 | #mbox-cells = <1>; | ||
| 31 | }; | ||
| 32 | |||
| 33 | Mailbox client | ||
| 34 | =============== | ||
| 35 | "mboxes" and the optional "mbox-names" (please see | ||
| 36 | Documentation/devicetree/bindings/mailbox/mailbox.txt for details). Each value | ||
| 37 | of the mboxes property should contain a phandle to the mailbox controller | ||
| 38 | device node and second argument is the channel index. It must be 0 (hardware | ||
| 39 | support only one channel).The equivalent "mbox-names" property value can be | ||
| 40 | used to give a name to the communication channel to be used by the client user. | ||
| 41 | |||
| 42 | Example: | ||
| 43 | mclient0: mclient0@0x400 { | ||
| 44 | compatible = "client-1.0"; | ||
| 45 | reg = <0x400 0x10>; | ||
| 46 | mbox-names = "mbox-tx", "mbox-rx"; | ||
| 47 | mboxes = <&mbox_tx 0>, | ||
| 48 | <&mbox_rx 0>; | ||
| 49 | }; | ||
diff --git a/Documentation/devicetree/bindings/media/atmel-isi.txt b/Documentation/devicetree/bindings/media/atmel-isi.txt index 17e71b7b44c6..251f008f220c 100644 --- a/Documentation/devicetree/bindings/media/atmel-isi.txt +++ b/Documentation/devicetree/bindings/media/atmel-isi.txt | |||
| @@ -38,7 +38,7 @@ Example: | |||
| 38 | 38 | ||
| 39 | i2c1: i2c@f0018000 { | 39 | i2c1: i2c@f0018000 { |
| 40 | ov2640: camera@0x30 { | 40 | ov2640: camera@0x30 { |
| 41 | compatible = "omnivision,ov2640"; | 41 | compatible = "ovti,ov2640"; |
| 42 | reg = <0x30>; | 42 | reg = <0x30>; |
| 43 | 43 | ||
| 44 | port { | 44 | port { |
diff --git a/Documentation/devicetree/bindings/media/i2c/nokia,smia.txt b/Documentation/devicetree/bindings/media/i2c/nokia,smia.txt new file mode 100644 index 000000000000..855e1faf73e2 --- /dev/null +++ b/Documentation/devicetree/bindings/media/i2c/nokia,smia.txt | |||
| @@ -0,0 +1,63 @@ | |||
| 1 | SMIA/SMIA++ sensor | ||
| 2 | |||
| 3 | SMIA (Standard Mobile Imaging Architecture) is an image sensor standard | ||
| 4 | defined jointly by Nokia and ST. SMIA++, defined by Nokia, is an extension | ||
| 5 | of that. These definitions are valid for both types of sensors. | ||
| 6 | |||
| 7 | More detailed documentation can be found in | ||
| 8 | Documentation/devicetree/bindings/media/video-interfaces.txt . | ||
| 9 | |||
| 10 | |||
| 11 | Mandatory properties | ||
| 12 | -------------------- | ||
| 13 | |||
| 14 | - compatible: "nokia,smia" | ||
| 15 | - reg: I2C address (0x10, or an alternative address) | ||
| 16 | - vana-supply: Analogue voltage supply (VANA), typically 2,8 volts (sensor | ||
| 17 | dependent). | ||
| 18 | - clocks: External clock to the sensor | ||
| 19 | - clock-frequency: Frequency of the external clock to the sensor | ||
| 20 | - link-frequencies: List of allowed data link frequencies. An array of | ||
| 21 | 64-bit elements. | ||
| 22 | |||
| 23 | |||
| 24 | Optional properties | ||
| 25 | ------------------- | ||
| 26 | |||
| 27 | - nokia,nvm-size: The size of the NVM, in bytes. If the size is not given, | ||
| 28 | the NVM contents will not be read. | ||
| 29 | - reset-gpios: XSHUTDOWN GPIO | ||
| 30 | |||
| 31 | |||
| 32 | Endpoint node mandatory properties | ||
| 33 | ---------------------------------- | ||
| 34 | |||
| 35 | - clock-lanes: <0> | ||
| 36 | - data-lanes: <1..n> | ||
| 37 | - remote-endpoint: A phandle to the bus receiver's endpoint node. | ||
| 38 | |||
| 39 | |||
| 40 | Example | ||
| 41 | ------- | ||
| 42 | |||
| 43 | &i2c2 { | ||
| 44 | clock-frequency = <400000>; | ||
| 45 | |||
| 46 | smiapp_1: camera@10 { | ||
| 47 | compatible = "nokia,smia"; | ||
| 48 | reg = <0x10>; | ||
| 49 | reset-gpios = <&gpio3 20 0>; | ||
| 50 | vana-supply = <&vaux3>; | ||
| 51 | clocks = <&omap3_isp 0>; | ||
| 52 | clock-frequency = <9600000>; | ||
| 53 | nokia,nvm-size = <512>; /* 8 * 64 */ | ||
| 54 | link-frequencies = /bits/ 64 <199200000 210000000 499200000>; | ||
| 55 | port { | ||
| 56 | smiapp_1_1: endpoint { | ||
| 57 | clock-lanes = <0>; | ||
| 58 | data-lanes = <1 2>; | ||
| 59 | remote-endpoint = <&csi2a_ep>; | ||
| 60 | }; | ||
| 61 | }; | ||
| 62 | }; | ||
| 63 | }; | ||
diff --git a/Documentation/devicetree/bindings/media/s5p-mfc.txt b/Documentation/devicetree/bindings/media/s5p-mfc.txt index 3e3c5f349570..2d5787eac91a 100644 --- a/Documentation/devicetree/bindings/media/s5p-mfc.txt +++ b/Documentation/devicetree/bindings/media/s5p-mfc.txt | |||
| @@ -28,7 +28,7 @@ Required properties: | |||
| 28 | for DMA contiguous memory allocation and its size. | 28 | for DMA contiguous memory allocation and its size. |
| 29 | 29 | ||
| 30 | Optional properties: | 30 | Optional properties: |
| 31 | - samsung,power-domain : power-domain property defined with a phandle | 31 | - power-domains : power-domain property defined with a phandle |
| 32 | to respective power domain. | 32 | to respective power domain. |
| 33 | 33 | ||
| 34 | Example: | 34 | Example: |
| @@ -38,7 +38,7 @@ mfc: codec@13400000 { | |||
| 38 | compatible = "samsung,mfc-v5"; | 38 | compatible = "samsung,mfc-v5"; |
| 39 | reg = <0x13400000 0x10000>; | 39 | reg = <0x13400000 0x10000>; |
| 40 | interrupts = <0 94 0>; | 40 | interrupts = <0 94 0>; |
| 41 | samsung,power-domain = <&pd_mfc>; | 41 | power-domains = <&pd_mfc>; |
| 42 | clocks = <&clock 273>; | 42 | clocks = <&clock 273>; |
| 43 | clock-names = "mfc"; | 43 | clock-names = "mfc"; |
| 44 | }; | 44 | }; |
diff --git a/Documentation/devicetree/bindings/media/sunxi-ir.txt b/Documentation/devicetree/bindings/media/sunxi-ir.txt index 23dd5ad07b7c..1811a067c72c 100644 --- a/Documentation/devicetree/bindings/media/sunxi-ir.txt +++ b/Documentation/devicetree/bindings/media/sunxi-ir.txt | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | Device-Tree bindings for SUNXI IR controller found in sunXi SoC family | 1 | Device-Tree bindings for SUNXI IR controller found in sunXi SoC family |
| 2 | 2 | ||
| 3 | Required properties: | 3 | Required properties: |
| 4 | - compatible : should be "allwinner,sun4i-a10-ir"; | 4 | - compatible : "allwinner,sun4i-a10-ir" or "allwinner,sun5i-a13-ir" |
| 5 | - clocks : list of clock specifiers, corresponding to | 5 | - clocks : list of clock specifiers, corresponding to |
| 6 | entries in clock-names property; | 6 | entries in clock-names property; |
| 7 | - clock-names : should contain "apb" and "ir" entries; | 7 | - clock-names : should contain "apb" and "ir" entries; |
| @@ -10,6 +10,7 @@ Required properties: | |||
| 10 | 10 | ||
| 11 | Optional properties: | 11 | Optional properties: |
| 12 | - linux,rc-map-name : Remote control map name. | 12 | - linux,rc-map-name : Remote control map name. |
| 13 | - resets : phandle + reset specifier pair | ||
| 13 | 14 | ||
| 14 | Example: | 15 | Example: |
| 15 | 16 | ||
| @@ -17,6 +18,7 @@ ir0: ir@01c21800 { | |||
| 17 | compatible = "allwinner,sun4i-a10-ir"; | 18 | compatible = "allwinner,sun4i-a10-ir"; |
| 18 | clocks = <&apb0_gates 6>, <&ir0_clk>; | 19 | clocks = <&apb0_gates 6>, <&ir0_clk>; |
| 19 | clock-names = "apb", "ir"; | 20 | clock-names = "apb", "ir"; |
| 21 | resets = <&apb0_rst 1>; | ||
| 20 | interrupts = <0 5 1>; | 22 | interrupts = <0 5 1>; |
| 21 | reg = <0x01C21800 0x40>; | 23 | reg = <0x01C21800 0x40>; |
| 22 | linux,rc-map-name = "rc-rc6-mce"; | 24 | linux,rc-map-name = "rc-rc6-mce"; |
diff --git a/Documentation/devicetree/bindings/media/ti-am437x-vpfe.txt b/Documentation/devicetree/bindings/media/ti-am437x-vpfe.txt new file mode 100644 index 000000000000..3932e766553a --- /dev/null +++ b/Documentation/devicetree/bindings/media/ti-am437x-vpfe.txt | |||
| @@ -0,0 +1,61 @@ | |||
| 1 | Texas Instruments AM437x CAMERA (VPFE) | ||
| 2 | -------------------------------------- | ||
| 3 | |||
| 4 | The Video Processing Front End (VPFE) is a key component for image capture | ||
| 5 | applications. The capture module provides the system interface and the | ||
| 6 | processing capability to connect RAW image-sensor modules and video decoders | ||
| 7 | to the AM437x device. | ||
| 8 | |||
| 9 | Required properties: | ||
| 10 | - compatible: must be "ti,am437x-vpfe" | ||
| 11 | - reg: physical base address and length of the registers set for the device; | ||
| 12 | - interrupts: should contain IRQ line for the VPFE; | ||
| 13 | - ti,am437x-vpfe-interface: can be one of the following, | ||
| 14 | 0 - Raw Bayer Interface. | ||
| 15 | 1 - 8 Bit BT656 Interface. | ||
| 16 | 2 - 10 Bit BT656 Interface. | ||
| 17 | 3 - YCbCr 8 Bit Interface. | ||
| 18 | 4 - YCbCr 16 Bit Interface. | ||
| 19 | |||
| 20 | VPFE supports a single port node with parallel bus. It should contain one | ||
| 21 | 'port' child node with child 'endpoint' node. Please refer to the bindings | ||
| 22 | defined in Documentation/devicetree/bindings/media/video-interfaces.txt. | ||
| 23 | |||
| 24 | Example: | ||
| 25 | vpfe: vpfe@f0034000 { | ||
| 26 | compatible = "ti,am437x-vpfe"; | ||
| 27 | reg = <0x48328000 0x2000>; | ||
| 28 | interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>; | ||
| 29 | |||
| 30 | pinctrl-names = "default", "sleep"; | ||
| 31 | pinctrl-0 = <&vpfe_pins_default>; | ||
| 32 | pinctrl-1 = <&vpfe_pins_sleep>; | ||
| 33 | |||
| 34 | port { | ||
| 35 | #address-cells = <1>; | ||
| 36 | #size-cells = <0>; | ||
| 37 | |||
| 38 | vpfe0_ep: endpoint { | ||
| 39 | remote-endpoint = <&ov2659_1>; | ||
| 40 | ti,am437x-vpfe-interface = <0>; | ||
| 41 | bus-width = <8>; | ||
| 42 | hsync-active = <0>; | ||
| 43 | vsync-active = <0>; | ||
| 44 | }; | ||
| 45 | }; | ||
| 46 | }; | ||
| 47 | |||
| 48 | i2c1: i2c@4802a000 { | ||
| 49 | |||
| 50 | ov2659@30 { | ||
| 51 | compatible = "ti,ov2659"; | ||
| 52 | reg = <0x30>; | ||
| 53 | |||
| 54 | port { | ||
| 55 | ov2659_1: endpoint { | ||
| 56 | remote-endpoint = <&vpfe0_ep>; | ||
| 57 | bus-width = <8>; | ||
| 58 | mclk-frequency = <12000000>; | ||
| 59 | }; | ||
| 60 | }; | ||
| 61 | }; | ||
diff --git a/Documentation/devicetree/bindings/media/video-interfaces.txt b/Documentation/devicetree/bindings/media/video-interfaces.txt index ce719f89dd1c..571b4c60665f 100644 --- a/Documentation/devicetree/bindings/media/video-interfaces.txt +++ b/Documentation/devicetree/bindings/media/video-interfaces.txt | |||
| @@ -103,6 +103,9 @@ Optional endpoint properties | |||
| 103 | array contains only one entry. | 103 | array contains only one entry. |
| 104 | - clock-noncontinuous: a boolean property to allow MIPI CSI-2 non-continuous | 104 | - clock-noncontinuous: a boolean property to allow MIPI CSI-2 non-continuous |
| 105 | clock mode. | 105 | clock mode. |
| 106 | - link-frequencies: Allowed data bus frequencies. For MIPI CSI-2, for | ||
| 107 | instance, this is the actual frequency of the bus, not bits per clock per | ||
| 108 | lane value. An array of 64-bit unsigned integers. | ||
| 106 | 109 | ||
| 107 | 110 | ||
| 108 | Example | 111 | Example |
| @@ -159,7 +162,7 @@ pipelines can be active: ov772x -> ceu0 or imx074 -> csi2 -> ceu0. | |||
| 159 | i2c0: i2c@0xfff20000 { | 162 | i2c0: i2c@0xfff20000 { |
| 160 | ... | 163 | ... |
| 161 | ov772x_1: camera@0x21 { | 164 | ov772x_1: camera@0x21 { |
| 162 | compatible = "omnivision,ov772x"; | 165 | compatible = "ovti,ov772x"; |
| 163 | reg = <0x21>; | 166 | reg = <0x21>; |
| 164 | vddio-supply = <®ulator1>; | 167 | vddio-supply = <®ulator1>; |
| 165 | vddcore-supply = <®ulator2>; | 168 | vddcore-supply = <®ulator2>; |
diff --git a/Documentation/devicetree/bindings/memory-controllers/renesas-memory-controllers.txt b/Documentation/devicetree/bindings/memory-controllers/renesas-memory-controllers.txt new file mode 100644 index 000000000000..c64b7925cd09 --- /dev/null +++ b/Documentation/devicetree/bindings/memory-controllers/renesas-memory-controllers.txt | |||
| @@ -0,0 +1,44 @@ | |||
| 1 | DT bindings for Renesas R-Mobile and SH-Mobile memory controllers | ||
| 2 | ================================================================= | ||
| 3 | |||
| 4 | Renesas R-Mobile and SH-Mobile SoCs contain one or more memory controllers. | ||
| 5 | These memory controllers differ from one SoC variant to another, and are called | ||
| 6 | by different names ("DDR Bus Controller (DBSC)", "DDR3 Bus State Controller | ||
| 7 | (DBSC3)", "SDRAM Bus State Controller (SBSC)"). | ||
| 8 | |||
| 9 | Currently memory controller device nodes are used only to reference PM | ||
| 10 | domains, and prevent these PM domains from being powered down, which would | ||
| 11 | crash the system. | ||
| 12 | |||
| 13 | As there exist no actual drivers for these controllers yet, these bindings | ||
| 14 | should be considered EXPERIMENTAL for now. | ||
| 15 | |||
| 16 | Required properties: | ||
| 17 | - compatible: Must be one of the following SoC-specific values: | ||
| 18 | - "renesas,dbsc-r8a73a4" (R-Mobile APE6) | ||
| 19 | - "renesas,dbsc3-r8a7740" (R-Mobile A1) | ||
| 20 | - "renesas,sbsc-sh73a0" (SH-Mobile AG5) | ||
| 21 | - reg: Must contain the base address and length of the memory controller's | ||
| 22 | registers. | ||
| 23 | |||
| 24 | Optional properties: | ||
| 25 | - interrupts: Must contain a list of interrupt specifiers for memory | ||
| 26 | controller interrupts, if available. | ||
| 27 | - interrupts-names: Must contain a list of interrupt names corresponding to | ||
| 28 | the interrupts in the interrupts property, if available. | ||
| 29 | Valid interrupt names are: | ||
| 30 | - "sec" (secure interrupt) | ||
| 31 | - "temp" (normal (temperature) interrupt) | ||
| 32 | - power-domains: Must contain a reference to the PM domain that the memory | ||
| 33 | controller belongs to, if available. | ||
| 34 | |||
| 35 | Example: | ||
| 36 | |||
| 37 | sbsc1: memory-controller@fe400000 { | ||
| 38 | compatible = "renesas,sbsc-sh73a0"; | ||
| 39 | reg = <0xfe400000 0x400>; | ||
| 40 | interrupts = <0 35 IRQ_TYPE_LEVEL_HIGH>, | ||
| 41 | <0 36 IRQ_TYPE_LEVEL_HIGH>; | ||
| 42 | interrupt-names = "sec", "temp"; | ||
| 43 | power-domains = <&pd_a4bc0>; | ||
| 44 | }; | ||
diff --git a/Documentation/devicetree/bindings/mfd/atmel-matrix.txt b/Documentation/devicetree/bindings/mfd/atmel-matrix.txt new file mode 100644 index 000000000000..e3ef50ca02a5 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/atmel-matrix.txt | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | * Device tree bindings for Atmel Bus Matrix | ||
| 2 | |||
| 3 | The Bus Matrix registers are used to configure Atmel SoCs internal bus | ||
| 4 | behavior (master/slave priorities, undefined burst length type, ...) | ||
| 5 | |||
| 6 | Required properties: | ||
| 7 | - compatible: Should be one of the following | ||
| 8 | "atmel,at91sam9260-matrix", "syscon" | ||
| 9 | "atmel,at91sam9261-matrix", "syscon" | ||
| 10 | "atmel,at91sam9263-matrix", "syscon" | ||
| 11 | "atmel,at91sam9rl-matrix", "syscon" | ||
| 12 | "atmel,at91sam9g45-matrix", "syscon" | ||
| 13 | "atmel,at91sam9n12-matrix", "syscon" | ||
| 14 | "atmel,at91sam9x5-matrix", "syscon" | ||
| 15 | "atmel,sama5d3-matrix", "syscon" | ||
| 16 | - reg: Contains offset/length value of the Bus Matrix | ||
| 17 | memory region. | ||
| 18 | |||
| 19 | Example: | ||
| 20 | |||
| 21 | matrix: matrix@ffffec00 { | ||
| 22 | compatible = "atmel,sama5d3-matrix", "syscon"; | ||
| 23 | reg = <0xffffec00 0x200>; | ||
| 24 | }; | ||
diff --git a/Documentation/devicetree/bindings/mfd/atmel-smc.txt b/Documentation/devicetree/bindings/mfd/atmel-smc.txt new file mode 100644 index 000000000000..26eeed373934 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/atmel-smc.txt | |||
| @@ -0,0 +1,19 @@ | |||
| 1 | * Device tree bindings for Atmel SMC (Static Memory Controller) | ||
| 2 | |||
| 3 | The SMC registers are used to configure Atmel EBI (External Bus Interface) | ||
| 4 | to interface with standard memory devices (NAND, NOR, SRAM or specialized | ||
| 5 | devices like FPGAs). | ||
| 6 | |||
| 7 | Required properties: | ||
| 8 | - compatible: Should be one of the following | ||
| 9 | "atmel,at91sam9260-smc", "syscon" | ||
| 10 | "atmel,sama5d3-smc", "syscon" | ||
| 11 | - reg: Contains offset/length value of the SMC memory | ||
| 12 | region. | ||
| 13 | |||
| 14 | Example: | ||
| 15 | |||
| 16 | smc: smc@ffffc000 { | ||
| 17 | compatible = "atmel,sama5d3-smc", "syscon"; | ||
| 18 | reg = <0xffffc000 0x1000>; | ||
| 19 | }; | ||
diff --git a/Documentation/devicetree/bindings/mfd/da9063.txt b/Documentation/devicetree/bindings/mfd/da9063.txt new file mode 100644 index 000000000000..42c6fa6f1c9a --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/da9063.txt | |||
| @@ -0,0 +1,93 @@ | |||
| 1 | * Dialog DA9063 Power Management Integrated Circuit (PMIC) | ||
| 2 | |||
| 3 | DA9093 consists of a large and varied group of sub-devices (I2C Only): | ||
| 4 | |||
| 5 | Device Supply Names Description | ||
| 6 | ------ ------------ ----------- | ||
| 7 | da9063-regulator : : LDOs & BUCKs | ||
| 8 | da9063-rtc : : Real-Time Clock | ||
| 9 | da9063-watchdog : : Watchdog | ||
| 10 | |||
| 11 | ====== | ||
| 12 | |||
| 13 | Required properties: | ||
| 14 | |||
| 15 | - compatible : Should be "dlg,da9063" | ||
| 16 | - reg : Specifies the I2C slave address (this defaults to 0x58 but it can be | ||
| 17 | modified to match the chip's OTP settings). | ||
| 18 | - interrupt-parent : Specifies the reference to the interrupt controller for | ||
| 19 | the DA9063. | ||
| 20 | - interrupts : IRQ line information. | ||
| 21 | - interrupt-controller | ||
| 22 | |||
| 23 | Sub-nodes: | ||
| 24 | |||
| 25 | - regulators : This node defines the settings for the LDOs and BUCKs. The | ||
| 26 | DA9063 regulators are bound using their names listed below: | ||
| 27 | |||
| 28 | bcore1 : BUCK CORE1 | ||
| 29 | bcore2 : BUCK CORE2 | ||
| 30 | bpro : BUCK PRO | ||
| 31 | bmem : BUCK MEM | ||
| 32 | bio : BUCK IO | ||
| 33 | bperi : BUCK PERI | ||
| 34 | ldo1 : LDO_1 | ||
| 35 | ldo2 : LDO_2 | ||
| 36 | ldo3 : LDO_3 | ||
| 37 | ldo4 : LDO_4 | ||
| 38 | ldo5 : LDO_5 | ||
| 39 | ldo6 : LDO_6 | ||
| 40 | ldo7 : LDO_7 | ||
| 41 | ldo8 : LDO_8 | ||
| 42 | ldo9 : LDO_9 | ||
| 43 | ldo10 : LDO_10 | ||
| 44 | ldo11 : LDO_11 | ||
| 45 | |||
| 46 | The component follows the standard regulator framework and the bindings | ||
| 47 | details of individual regulator device can be found in: | ||
| 48 | Documentation/devicetree/bindings/regulator/regulator.txt | ||
| 49 | |||
| 50 | - rtc : This node defines settings for the Real-Time Clock associated with | ||
| 51 | the DA9063. There are currently no entries in this binding, however | ||
| 52 | compatible = "dlg,da9063-rtc" should be added if a node is created. | ||
| 53 | |||
| 54 | - watchdog : This node defines settings for the Watchdog timer associated | ||
| 55 | with the DA9063. There are currently no entries in this binding, however | ||
| 56 | compatible = "dlg,da9063-watchdog" should be added if a node is created. | ||
| 57 | |||
| 58 | |||
| 59 | Example: | ||
| 60 | |||
| 61 | pmic0: da9063@58 { | ||
| 62 | compatible = "dlg,da9063" | ||
| 63 | reg = <0x58>; | ||
| 64 | interrupt-parent = <&gpio6>; | ||
| 65 | interrupts = <11 IRQ_TYPE_LEVEL_LOW>; | ||
| 66 | interrupt-controller; | ||
| 67 | |||
| 68 | rtc { | ||
| 69 | compatible = "dlg,da9063-rtc"; | ||
| 70 | }; | ||
| 71 | |||
| 72 | wdt { | ||
| 73 | compatible = "dlg,da9063-watchdog"; | ||
| 74 | }; | ||
| 75 | |||
| 76 | regulators { | ||
| 77 | DA9063_BCORE1: bcore1 { | ||
| 78 | regulator-name = "BCORE1"; | ||
| 79 | regulator-min-microvolt = <300000>; | ||
| 80 | regulator-max-microvolt = <1570000>; | ||
| 81 | regulator-min-microamp = <500000>; | ||
| 82 | regulator-max-microamp = <2000000>; | ||
| 83 | regulator-boot-on; | ||
| 84 | }; | ||
| 85 | DA9063_LDO11: ldo11 { | ||
| 86 | regulator-name = "LDO_11"; | ||
| 87 | regulator-min-microvolt = <900000>; | ||
| 88 | regulator-max-microvolt = <3600000>; | ||
| 89 | regulator-boot-on; | ||
| 90 | }; | ||
| 91 | }; | ||
| 92 | }; | ||
| 93 | |||
diff --git a/Documentation/devicetree/bindings/mfd/max77686.txt b/Documentation/devicetree/bindings/mfd/max77686.txt index 75fdfaf41831..e39f0bc1f55e 100644 --- a/Documentation/devicetree/bindings/mfd/max77686.txt +++ b/Documentation/devicetree/bindings/mfd/max77686.txt | |||
| @@ -39,6 +39,12 @@ to get matched with their hardware counterparts as follow: | |||
| 39 | -BUCKn : 1-4. | 39 | -BUCKn : 1-4. |
| 40 | Use standard regulator bindings for it ('regulator-off-in-suspend'). | 40 | Use standard regulator bindings for it ('regulator-off-in-suspend'). |
| 41 | 41 | ||
| 42 | LDO20, LDO21, LDO22, BUCK8 and BUCK9 can be configured to GPIO enable | ||
| 43 | control. To turn this feature on this property must be added to the regulator | ||
| 44 | sub-node: | ||
| 45 | - maxim,ena-gpios : one GPIO specifier enable control (the gpio | ||
| 46 | flags are actually ignored and always | ||
| 47 | ACTIVE_HIGH is used) | ||
| 42 | 48 | ||
| 43 | Example: | 49 | Example: |
| 44 | 50 | ||
| @@ -65,4 +71,12 @@ Example: | |||
| 65 | regulator-always-on; | 71 | regulator-always-on; |
| 66 | regulator-boot-on; | 72 | regulator-boot-on; |
| 67 | }; | 73 | }; |
| 74 | |||
| 75 | buck9_reg { | ||
| 76 | regulator-compatible = "BUCK9"; | ||
| 77 | regulator-name = "CAM_ISP_CORE_1.2V"; | ||
| 78 | regulator-min-microvolt = <1000000>; | ||
| 79 | regulator-max-microvolt = <1200000>; | ||
| 80 | maxim,ena-gpios = <&gpm0 3 GPIO_ACTIVE_HIGH>; | ||
| 81 | }; | ||
| 68 | } | 82 | } |
diff --git a/Documentation/devicetree/bindings/mfd/max77693.txt b/Documentation/devicetree/bindings/mfd/max77693.txt index 01e9f30fe678..38e64405e98d 100644 --- a/Documentation/devicetree/bindings/mfd/max77693.txt +++ b/Documentation/devicetree/bindings/mfd/max77693.txt | |||
| @@ -41,6 +41,41 @@ Optional properties: | |||
| 41 | To get more informations, please refer to documentaion. | 41 | To get more informations, please refer to documentaion. |
| 42 | [*] refer Documentation/devicetree/bindings/pwm/pwm.txt | 42 | [*] refer Documentation/devicetree/bindings/pwm/pwm.txt |
| 43 | 43 | ||
| 44 | - charger : Node configuring the charger driver. | ||
| 45 | If present, required properties: | ||
| 46 | - compatible : Must be "maxim,max77693-charger". | ||
| 47 | |||
| 48 | Optional properties (if not set, defaults will be used): | ||
| 49 | - maxim,constant-microvolt : Battery constant voltage in uV. The charger | ||
| 50 | will operate in fast charge constant current mode till battery voltage | ||
| 51 | reaches this level. Then the charger will switch to fast charge constant | ||
| 52 | voltage mode. Also vsys (system voltage) will be set to this value when | ||
| 53 | DC power is supplied but charger is not enabled. | ||
| 54 | Valid values: 3650000 - 4400000, step by 25000 (rounded down) | ||
| 55 | Default: 4200000 | ||
| 56 | |||
| 57 | - maxim,min-system-microvolt : Minimal system voltage in uV. | ||
| 58 | Valid values: 3000000 - 3700000, step by 100000 (rounded down) | ||
| 59 | Default: 3600000 | ||
| 60 | |||
| 61 | - maxim,thermal-regulation-celsius : Temperature in Celsius for entering | ||
| 62 | high temperature charging mode. If die temperature exceeds this value | ||
| 63 | the charging current will be reduced by 105 mA/Celsius. | ||
| 64 | Valid values: 70, 85, 100, 115 | ||
| 65 | Default: 100 | ||
| 66 | |||
| 67 | - maxim,battery-overcurrent-microamp : Overcurrent protection threshold | ||
| 68 | in uA (current from battery to system). | ||
| 69 | Valid values: 2000000 - 3500000, step by 250000 (rounded down) | ||
| 70 | Default: 3500000 | ||
| 71 | |||
| 72 | - maxim,charge-input-threshold-microvolt : Threshold voltage in uV for | ||
| 73 | triggering input voltage regulation loop. If input voltage decreases | ||
| 74 | below this value, the input current will be reduced to reach the | ||
| 75 | threshold voltage. | ||
| 76 | Valid values: 4300000, 4700000, 4800000, 4900000 | ||
| 77 | Default: 4300000 | ||
| 78 | |||
| 44 | Example: | 79 | Example: |
| 45 | max77693@66 { | 80 | max77693@66 { |
| 46 | compatible = "maxim,max77693"; | 81 | compatible = "maxim,max77693"; |
| @@ -73,4 +108,14 @@ Example: | |||
| 73 | pwms = <&pwm 0 40000 0>; | 108 | pwms = <&pwm 0 40000 0>; |
| 74 | pwm-names = "haptic"; | 109 | pwm-names = "haptic"; |
| 75 | }; | 110 | }; |
| 111 | |||
| 112 | charger { | ||
| 113 | compatible = "maxim,max77693-charger"; | ||
| 114 | |||
| 115 | maxim,constant-microvolt = <4200000>; | ||
| 116 | maxim,min-system-microvolt = <3600000>; | ||
| 117 | maxim,thermal-regulation-celsius = <75>; | ||
| 118 | maxim,battery-overcurrent-microamp = <3000000>; | ||
| 119 | maxim,charge-input-threshold-microvolt = <4300000>; | ||
| 120 | }; | ||
| 76 | }; | 121 | }; |
diff --git a/Documentation/devicetree/bindings/mfd/qcom-rpm.txt b/Documentation/devicetree/bindings/mfd/qcom-rpm.txt new file mode 100644 index 000000000000..85e31980017a --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/qcom-rpm.txt | |||
| @@ -0,0 +1,70 @@ | |||
| 1 | Qualcomm Resource Power Manager (RPM) | ||
| 2 | |||
| 3 | This driver is used to interface with the Resource Power Manager (RPM) found in | ||
| 4 | various Qualcomm platforms. The RPM allows each component in the system to vote | ||
| 5 | for state of the system resources, such as clocks, regulators and bus | ||
| 6 | frequencies. | ||
| 7 | |||
| 8 | - compatible: | ||
| 9 | Usage: required | ||
| 10 | Value type: <string> | ||
| 11 | Definition: must be one of: | ||
| 12 | "qcom,rpm-apq8064" | ||
| 13 | "qcom,rpm-msm8660" | ||
| 14 | "qcom,rpm-msm8960" | ||
| 15 | |||
| 16 | - reg: | ||
| 17 | Usage: required | ||
| 18 | Value type: <prop-encoded-array> | ||
| 19 | Definition: base address and size of the RPM's message ram | ||
| 20 | |||
| 21 | - interrupts: | ||
| 22 | Usage: required | ||
| 23 | Value type: <prop-encoded-array> | ||
| 24 | Definition: three entries specifying the RPM's: | ||
| 25 | 1. acknowledgement interrupt | ||
| 26 | 2. error interrupt | ||
| 27 | 3. wakeup interrupt | ||
| 28 | |||
| 29 | - interrupt-names: | ||
| 30 | Usage: required | ||
| 31 | Value type: <string-array> | ||
| 32 | Definition: must be the three strings "ack", "err" and "wakeup", in order | ||
| 33 | |||
| 34 | - #address-cells: | ||
| 35 | Usage: required | ||
| 36 | Value type: <u32> | ||
| 37 | Definition: must be 1 | ||
| 38 | |||
| 39 | - #size-cells: | ||
| 40 | Usage: required | ||
| 41 | Value type: <u32> | ||
| 42 | Definition: must be 0 | ||
| 43 | |||
| 44 | - qcom,ipc: | ||
| 45 | Usage: required | ||
| 46 | Value type: <prop-encoded-array> | ||
| 47 | |||
| 48 | Definition: three entries specifying the outgoing ipc bit used for | ||
| 49 | signaling the RPM: | ||
| 50 | - phandle to a syscon node representing the apcs registers | ||
| 51 | - u32 representing offset to the register within the syscon | ||
| 52 | - u32 representing the ipc bit within the register | ||
| 53 | |||
| 54 | |||
| 55 | = EXAMPLE | ||
| 56 | |||
| 57 | #include <dt-bindings/mfd/qcom-rpm.h> | ||
| 58 | |||
| 59 | rpm@108000 { | ||
| 60 | compatible = "qcom,rpm-msm8960"; | ||
| 61 | reg = <0x108000 0x1000>; | ||
| 62 | qcom,ipc = <&apcs 0x8 2>; | ||
| 63 | |||
| 64 | interrupts = <0 19 0>, <0 21 0>, <0 22 0>; | ||
| 65 | interrupt-names = "ack", "err", "wakeup"; | ||
| 66 | |||
| 67 | #address-cells = <1>; | ||
| 68 | #size-cells = <0>; | ||
| 69 | }; | ||
| 70 | |||
diff --git a/Documentation/devicetree/bindings/mips/cavium/cib.txt b/Documentation/devicetree/bindings/mips/cavium/cib.txt new file mode 100644 index 000000000000..f39a1aa2852b --- /dev/null +++ b/Documentation/devicetree/bindings/mips/cavium/cib.txt | |||
| @@ -0,0 +1,43 @@ | |||
| 1 | * Cavium Interrupt Bus widget | ||
| 2 | |||
| 3 | Properties: | ||
| 4 | - compatible: "cavium,octeon-7130-cib" | ||
| 5 | |||
| 6 | Compatibility with cn70XX SoCs. | ||
| 7 | |||
| 8 | - interrupt-controller: This is an interrupt controller. | ||
| 9 | |||
| 10 | - reg: Two elements consisting of the addresses of the RAW and EN | ||
| 11 | registers of the CIB block | ||
| 12 | |||
| 13 | - cavium,max-bits: The index (zero based) of the highest numbered bit | ||
| 14 | in the CIB block. | ||
| 15 | |||
| 16 | - interrupt-parent: Always the CIU on the SoC. | ||
| 17 | |||
| 18 | - interrupts: The CIU line to which the CIB block is connected. | ||
| 19 | |||
| 20 | - #interrupt-cells: Must be <2>. The first cell is the bit within the | ||
| 21 | CIB. The second cell specifies the triggering semantics of the | ||
| 22 | line. | ||
| 23 | |||
| 24 | Example: | ||
| 25 | |||
| 26 | interrupt-controller@107000000e000 { | ||
| 27 | compatible = "cavium,octeon-7130-cib"; | ||
| 28 | reg = <0x10700 0x0000e000 0x0 0x8>, /* RAW */ | ||
| 29 | <0x10700 0x0000e100 0x0 0x8>; /* EN */ | ||
| 30 | cavium,max-bits = <23>; | ||
| 31 | |||
| 32 | interrupt-controller; | ||
| 33 | interrupt-parent = <&ciu>; | ||
| 34 | interrupts = <1 24>; | ||
| 35 | /* Interrupts are specified by two parts: | ||
| 36 | * 1) Bit number in the CIB* registers | ||
| 37 | * 2) Triggering (1 - edge rising | ||
| 38 | * 2 - edge falling | ||
| 39 | * 4 - level active high | ||
| 40 | * 8 - level active low) | ||
| 41 | */ | ||
| 42 | #interrupt-cells = <2>; | ||
| 43 | }; | ||
diff --git a/Documentation/devicetree/bindings/misc/fsl,qoriq-mc.txt b/Documentation/devicetree/bindings/misc/fsl,qoriq-mc.txt new file mode 100644 index 000000000000..c7a26ca8da12 --- /dev/null +++ b/Documentation/devicetree/bindings/misc/fsl,qoriq-mc.txt | |||
| @@ -0,0 +1,40 @@ | |||
| 1 | * Freescale Management Complex | ||
| 2 | |||
| 3 | The Freescale Management Complex (fsl-mc) is a hardware resource | ||
| 4 | manager that manages specialized hardware objects used in | ||
| 5 | network-oriented packet processing applications. After the fsl-mc | ||
| 6 | block is enabled, pools of hardware resources are available, such as | ||
| 7 | queues, buffer pools, I/O interfaces. These resources are building | ||
| 8 | blocks that can be used to create functional hardware objects/devices | ||
| 9 | such as network interfaces, crypto accelerator instances, L2 switches, | ||
| 10 | etc. | ||
| 11 | |||
| 12 | Required properties: | ||
| 13 | |||
| 14 | - compatible | ||
| 15 | Value type: <string> | ||
| 16 | Definition: Must be "fsl,qoriq-mc". A Freescale Management Complex | ||
| 17 | compatible with this binding must have Block Revision | ||
| 18 | Registers BRR1 and BRR2 at offset 0x0BF8 and 0x0BFC in | ||
| 19 | the MC control register region. | ||
| 20 | |||
| 21 | - reg | ||
| 22 | Value type: <prop-encoded-array> | ||
| 23 | Definition: A standard property. Specifies one or two regions | ||
| 24 | defining the MC's registers: | ||
| 25 | |||
| 26 | -the first region is the command portal for the | ||
| 27 | this machine and must always be present | ||
| 28 | |||
| 29 | -the second region is the MC control registers. This | ||
| 30 | region may not be present in some scenarios, such | ||
| 31 | as in the device tree presented to a virtual machine. | ||
| 32 | |||
| 33 | Example: | ||
| 34 | |||
| 35 | fsl_mc: fsl-mc@80c000000 { | ||
| 36 | compatible = "fsl,qoriq-mc"; | ||
| 37 | reg = <0x00000008 0x0c000000 0 0x40>, /* MC portal base */ | ||
| 38 | <0x00000000 0x08340000 0 0x40000>; /* MC control reg */ | ||
| 39 | }; | ||
| 40 | |||
diff --git a/Documentation/devicetree/bindings/misc/nvidia,tegra20-apbmisc.txt b/Documentation/devicetree/bindings/misc/nvidia,tegra20-apbmisc.txt index b97b8bef1fe5..47b205cc9cc7 100644 --- a/Documentation/devicetree/bindings/misc/nvidia,tegra20-apbmisc.txt +++ b/Documentation/devicetree/bindings/misc/nvidia,tegra20-apbmisc.txt | |||
| @@ -1,11 +1,10 @@ | |||
| 1 | NVIDIA Tegra20/Tegra30/Tegr114/Tegra124 apbmisc block | 1 | NVIDIA Tegra20/Tegra30/Tegr114/Tegra124 apbmisc block |
| 2 | 2 | ||
| 3 | Required properties: | 3 | Required properties: |
| 4 | - compatible : should be: | 4 | - compatible : For Tegra20, must be "nvidia,tegra20-apbmisc". For Tegra30, |
| 5 | "nvidia,tegra20-apbmisc" | 5 | must be "nvidia,tegra30-apbmisc". Otherwise, must contain |
| 6 | "nvidia,tegra30-apbmisc" | 6 | "nvidia,<chip>-apbmisc", plus one of the above, where <chip> is tegra114, |
| 7 | "nvidia,tegra114-apbmisc" | 7 | tegra124, tegra132. |
| 8 | "nvidia,tegra124-apbmisc" | ||
| 9 | - reg: Should contain 2 entries: the first entry gives the physical address | 8 | - reg: Should contain 2 entries: the first entry gives the physical address |
| 10 | and length of the registers which contain revision and debug features. | 9 | and length of the registers which contain revision and debug features. |
| 11 | The second entry gives the physical address and length of the | 10 | The second entry gives the physical address and length of the |
diff --git a/Documentation/devicetree/bindings/mmc/mmc-pwrseq-emmc.txt b/Documentation/devicetree/bindings/mmc/mmc-pwrseq-emmc.txt new file mode 100644 index 000000000000..0cb827bf9435 --- /dev/null +++ b/Documentation/devicetree/bindings/mmc/mmc-pwrseq-emmc.txt | |||
| @@ -0,0 +1,25 @@ | |||
| 1 | * The simple eMMC hardware reset provider | ||
| 2 | |||
| 3 | The purpose of this driver is to perform standard eMMC hw reset | ||
| 4 | procedure, as descibed by Jedec 4.4 specification. This procedure is | ||
| 5 | performed just after MMC core enabled power to the given mmc host (to | ||
| 6 | fix possible issues if bootloader has left eMMC card in initialized or | ||
| 7 | unknown state), and before performing complete system reboot (also in | ||
| 8 | case of emergency reboot call). The latter is needed on boards, which | ||
| 9 | doesn't have hardware reset logic connected to emmc card and (limited or | ||
| 10 | broken) ROM bootloaders are unable to read second stage from the emmc | ||
| 11 | card if the card is left in unknown or already initialized state. | ||
| 12 | |||
| 13 | Required properties: | ||
| 14 | - compatible : contains "mmc-pwrseq-emmc". | ||
| 15 | - reset-gpios : contains a GPIO specifier. The reset GPIO is asserted | ||
| 16 | and then deasserted to perform eMMC card reset. To perform | ||
| 17 | reset procedure as described in Jedec 4.4 specification, the | ||
| 18 | gpio line should be defined as GPIO_ACTIVE_LOW. | ||
| 19 | |||
| 20 | Example: | ||
| 21 | |||
| 22 | sdhci0_pwrseq { | ||
| 23 | compatible = "mmc-pwrseq-emmc"; | ||
| 24 | reset-gpios = <&gpio1 12 GPIO_ACTIVE_LOW>; | ||
| 25 | } | ||
diff --git a/Documentation/devicetree/bindings/mmc/mmc-pwrseq-simple.txt b/Documentation/devicetree/bindings/mmc/mmc-pwrseq-simple.txt new file mode 100644 index 000000000000..a462c50f19a8 --- /dev/null +++ b/Documentation/devicetree/bindings/mmc/mmc-pwrseq-simple.txt | |||
| @@ -0,0 +1,25 @@ | |||
| 1 | * The simple MMC power sequence provider | ||
| 2 | |||
| 3 | The purpose of the simple MMC power sequence provider is to supports a set of | ||
| 4 | common properties between various SOC designs. It thus enables us to use the | ||
| 5 | same provider for several SOC designs. | ||
| 6 | |||
| 7 | Required properties: | ||
| 8 | - compatible : contains "mmc-pwrseq-simple". | ||
| 9 | |||
| 10 | Optional properties: | ||
| 11 | - reset-gpios : contains a list of GPIO specifiers. The reset GPIOs are asserted | ||
| 12 | at initialization and prior we start the power up procedure of the card. | ||
| 13 | They will be de-asserted right after the power has been provided to the | ||
| 14 | card. | ||
| 15 | - clocks : Must contain an entry for the entry in clock-names. | ||
| 16 | See ../clocks/clock-bindings.txt for details. | ||
| 17 | - clock-names : Must include the following entry: | ||
| 18 | "ext_clock" (External clock provided to the card). | ||
| 19 | |||
| 20 | Example: | ||
| 21 | |||
| 22 | sdhci0_pwrseq { | ||
| 23 | compatible = "mmc-pwrseq-simple"; | ||
| 24 | reset-gpios = <&gpio1 12 0>; | ||
| 25 | } | ||
diff --git a/Documentation/devicetree/bindings/mmc/mmc.txt b/Documentation/devicetree/bindings/mmc/mmc.txt index b52628b18a53..438899e8829b 100644 --- a/Documentation/devicetree/bindings/mmc/mmc.txt +++ b/Documentation/devicetree/bindings/mmc/mmc.txt | |||
| @@ -64,7 +64,43 @@ Optional SDIO properties: | |||
| 64 | - keep-power-in-suspend: Preserves card power during a suspend/resume cycle | 64 | - keep-power-in-suspend: Preserves card power during a suspend/resume cycle |
| 65 | - enable-sdio-wakeup: Enables wake up of host system on SDIO IRQ assertion | 65 | - enable-sdio-wakeup: Enables wake up of host system on SDIO IRQ assertion |
| 66 | 66 | ||
| 67 | Example: | 67 | |
| 68 | MMC power sequences: | ||
| 69 | -------------------- | ||
| 70 | |||
| 71 | System on chip designs may specify a specific MMC power sequence. To | ||
| 72 | successfully detect an (e)MMC/SD/SDIO card, that power sequence must be | ||
| 73 | maintained while initializing the card. | ||
| 74 | |||
| 75 | Optional property: | ||
| 76 | - mmc-pwrseq: phandle to the MMC power sequence node. See "mmc-pwrseq-*" | ||
| 77 | for documentation of MMC power sequence bindings. | ||
| 78 | |||
| 79 | |||
| 80 | Use of Function subnodes | ||
| 81 | ------------------------ | ||
| 82 | |||
| 83 | On embedded systems the cards connected to a host may need additional | ||
| 84 | properties. These can be specified in subnodes to the host controller node. | ||
| 85 | The subnodes are identified by the standard 'reg' property. | ||
| 86 | Which information exactly can be specified depends on the bindings for the | ||
| 87 | SDIO function driver for the subnode, as specified by the compatible string. | ||
| 88 | |||
| 89 | Required host node properties when using function subnodes: | ||
| 90 | - #address-cells: should be one. The cell is the slot id. | ||
| 91 | - #size-cells: should be zero. | ||
| 92 | |||
| 93 | Required function subnode properties: | ||
| 94 | - compatible: name of SDIO function following generic names recommended practice | ||
| 95 | - reg: Must contain the SDIO function number of the function this subnode | ||
| 96 | describes. A value of 0 denotes the memory SD function, values from | ||
| 97 | 1 to 7 denote the SDIO functions. | ||
| 98 | |||
| 99 | |||
| 100 | Examples | ||
| 101 | -------- | ||
| 102 | |||
| 103 | Basic example: | ||
| 68 | 104 | ||
| 69 | sdhci@ab000000 { | 105 | sdhci@ab000000 { |
| 70 | compatible = "sdhci"; | 106 | compatible = "sdhci"; |
| @@ -77,4 +113,28 @@ sdhci@ab000000 { | |||
| 77 | max-frequency = <50000000>; | 113 | max-frequency = <50000000>; |
| 78 | keep-power-in-suspend; | 114 | keep-power-in-suspend; |
| 79 | enable-sdio-wakeup; | 115 | enable-sdio-wakeup; |
| 116 | mmc-pwrseq = <&sdhci0_pwrseq> | ||
| 80 | } | 117 | } |
| 118 | |||
| 119 | Example with sdio function subnode: | ||
| 120 | |||
| 121 | mmc3: mmc@01c12000 { | ||
| 122 | #address-cells = <1>; | ||
| 123 | #size-cells = <0>; | ||
| 124 | |||
| 125 | pinctrl-names = "default"; | ||
| 126 | pinctrl-0 = <&mmc3_pins_a>; | ||
| 127 | vmmc-supply = <®_vmmc3>; | ||
| 128 | bus-width = <4>; | ||
| 129 | non-removable; | ||
| 130 | mmc-pwrseq = <&sdhci0_pwrseq> | ||
| 131 | status = "okay"; | ||
| 132 | |||
| 133 | brcmf: bcrmf@1 { | ||
| 134 | reg = <1>; | ||
| 135 | compatible = "brcm,bcm43xx-fmac"; | ||
| 136 | interrupt-parent = <&pio>; | ||
| 137 | interrupts = <10 8>; /* PH10 / EINT10 */ | ||
| 138 | interrupt-names = "host-wake"; | ||
| 139 | }; | ||
| 140 | }; | ||
diff --git a/Documentation/devicetree/bindings/mmc/nvidia,tegra20-sdhci.txt b/Documentation/devicetree/bindings/mmc/nvidia,tegra20-sdhci.txt index f357c16ea815..15b8368ee1f2 100644 --- a/Documentation/devicetree/bindings/mmc/nvidia,tegra20-sdhci.txt +++ b/Documentation/devicetree/bindings/mmc/nvidia,tegra20-sdhci.txt | |||
| @@ -7,7 +7,11 @@ This file documents differences between the core properties described | |||
| 7 | by mmc.txt and the properties used by the sdhci-tegra driver. | 7 | by mmc.txt and the properties used by the sdhci-tegra driver. |
| 8 | 8 | ||
| 9 | Required properties: | 9 | Required properties: |
| 10 | - compatible : Should be "nvidia,<chip>-sdhci" | 10 | - compatible : For Tegra20, must contain "nvidia,tegra20-sdhci". |
| 11 | For Tegra30, must contain "nvidia,tegra30-sdhci". For Tegra114, | ||
| 12 | must contain "nvidia,tegra114-sdhci". For Tegra124, must contain | ||
| 13 | "nvidia,tegra124-sdhci". Otherwise, must contain "nvidia,<chip>-sdhci", | ||
| 14 | plus one of the above, where <chip> is tegra132 or tegra210. | ||
| 11 | - clocks : Must contain one entry, for the module clock. | 15 | - clocks : Must contain one entry, for the module clock. |
| 12 | See ../clocks/clock-bindings.txt for details. | 16 | See ../clocks/clock-bindings.txt for details. |
| 13 | - resets : Must contain an entry for each entry in reset-names. | 17 | - resets : Must contain an entry for each entry in reset-names. |
diff --git a/Documentation/devicetree/bindings/mmc/sdhci-fujitsu.txt b/Documentation/devicetree/bindings/mmc/sdhci-fujitsu.txt new file mode 100644 index 000000000000..de2c53cff4f1 --- /dev/null +++ b/Documentation/devicetree/bindings/mmc/sdhci-fujitsu.txt | |||
| @@ -0,0 +1,30 @@ | |||
| 1 | * Fujitsu SDHCI controller | ||
| 2 | |||
| 3 | This file documents differences between the core properties in mmc.txt | ||
| 4 | and the properties used by the sdhci_f_sdh30 driver. | ||
| 5 | |||
| 6 | Required properties: | ||
| 7 | - compatible: "fujitsu,mb86s70-sdhci-3.0" | ||
| 8 | - clocks: Must contain an entry for each entry in clock-names. It is a | ||
| 9 | list of phandles and clock-specifier pairs. | ||
| 10 | See ../clocks/clock-bindings.txt for details. | ||
| 11 | - clock-names: Should contain the following two entries: | ||
| 12 | "iface" - clock used for sdhci interface | ||
| 13 | "core" - core clock for sdhci controller | ||
| 14 | |||
| 15 | Optional properties: | ||
| 16 | - vqmmc-supply: phandle to the regulator device tree node, mentioned | ||
| 17 | as the VCCQ/VDD_IO supply in the eMMC/SD specs. | ||
| 18 | |||
| 19 | Example: | ||
| 20 | |||
| 21 | sdhci1: mmc@36600000 { | ||
| 22 | compatible = "fujitsu,mb86s70-sdhci-3.0"; | ||
| 23 | reg = <0 0x36600000 0x1000>; | ||
| 24 | interrupts = <0 172 0x4>, | ||
| 25 | <0 173 0x4>; | ||
| 26 | bus-width = <4>; | ||
| 27 | vqmmc-supply = <&vccq_sdhci1>; | ||
| 28 | clocks = <&clock 2 2 0>, <&clock 2 3 0>; | ||
| 29 | clock-names = "iface", "core"; | ||
| 30 | }; | ||
diff --git a/Documentation/devicetree/bindings/mmc/sdhci-pxa.txt b/Documentation/devicetree/bindings/mmc/sdhci-pxa.txt index 4dd6deb90719..3d1b449d6097 100644 --- a/Documentation/devicetree/bindings/mmc/sdhci-pxa.txt +++ b/Documentation/devicetree/bindings/mmc/sdhci-pxa.txt | |||
| @@ -9,9 +9,13 @@ Required properties: | |||
| 9 | - reg: | 9 | - reg: |
| 10 | * for "mrvl,pxav2-mmc" and "mrvl,pxav3-mmc", one register area for | 10 | * for "mrvl,pxav2-mmc" and "mrvl,pxav3-mmc", one register area for |
| 11 | the SDHCI registers. | 11 | the SDHCI registers. |
| 12 | * for "marvell,armada-380-sdhci", two register areas. The first one | 12 | |
| 13 | for the SDHCI registers themselves, and the second one for the | 13 | * for "marvell,armada-380-sdhci", three register areas. The first |
| 14 | AXI/Mbus bridge registers of the SDHCI unit. | 14 | one for the SDHCI registers themselves, the second one for the |
| 15 | AXI/Mbus bridge registers of the SDHCI unit, the third one for the | ||
| 16 | SDIO3 Configuration register | ||
| 17 | - reg names: should be "sdhci", "mbus", "conf-sdio3". only mandatory | ||
| 18 | for "marvell,armada-380-sdhci" | ||
| 15 | - clocks: Array of clocks required for SDHCI; requires at least one for | 19 | - clocks: Array of clocks required for SDHCI; requires at least one for |
| 16 | I/O clock. | 20 | I/O clock. |
| 17 | - clock-names: Array of names corresponding to clocks property; shall be | 21 | - clock-names: Array of names corresponding to clocks property; shall be |
| @@ -35,7 +39,10 @@ sdhci@d4280800 { | |||
| 35 | 39 | ||
| 36 | sdhci@d8000 { | 40 | sdhci@d8000 { |
| 37 | compatible = "marvell,armada-380-sdhci"; | 41 | compatible = "marvell,armada-380-sdhci"; |
| 38 | reg = <0xd8000 0x1000>, <0xdc000 0x100>; | 42 | reg-names = "sdhci", "mbus", "conf-sdio3"; |
| 43 | reg = <0xd8000 0x1000>, | ||
| 44 | <0xdc000 0x100>; | ||
| 45 | <0x18454 0x4>; | ||
| 39 | interrupts = <0 25 0x4>; | 46 | interrupts = <0 25 0x4>; |
| 40 | clocks = <&gateclk 17>; | 47 | clocks = <&gateclk 17>; |
| 41 | clock-names = "io"; | 48 | clock-names = "io"; |
diff --git a/Documentation/devicetree/bindings/mmc/sunxi-mmc.txt b/Documentation/devicetree/bindings/mmc/sunxi-mmc.txt index 91b3a3467150..4bf41d833804 100644 --- a/Documentation/devicetree/bindings/mmc/sunxi-mmc.txt +++ b/Documentation/devicetree/bindings/mmc/sunxi-mmc.txt | |||
| @@ -10,8 +10,8 @@ Absolute maximum transfer rate is 200MB/s | |||
| 10 | Required properties: | 10 | Required properties: |
| 11 | - compatible : "allwinner,sun4i-a10-mmc" or "allwinner,sun5i-a13-mmc" | 11 | - compatible : "allwinner,sun4i-a10-mmc" or "allwinner,sun5i-a13-mmc" |
| 12 | - reg : mmc controller base registers | 12 | - reg : mmc controller base registers |
| 13 | - clocks : a list with 2 phandle + clock specifier pairs | 13 | - clocks : a list with 4 phandle + clock specifier pairs |
| 14 | - clock-names : must contain "ahb" and "mmc" | 14 | - clock-names : must contain "ahb", "mmc", "output" and "sample" |
| 15 | - interrupts : mmc controller interrupt | 15 | - interrupts : mmc controller interrupt |
| 16 | 16 | ||
| 17 | Optional properties: | 17 | Optional properties: |
| @@ -25,8 +25,8 @@ Examples: | |||
| 25 | mmc0: mmc@01c0f000 { | 25 | mmc0: mmc@01c0f000 { |
| 26 | compatible = "allwinner,sun5i-a13-mmc"; | 26 | compatible = "allwinner,sun5i-a13-mmc"; |
| 27 | reg = <0x01c0f000 0x1000>; | 27 | reg = <0x01c0f000 0x1000>; |
| 28 | clocks = <&ahb_gates 8>, <&mmc0_clk>; | 28 | clocks = <&ahb_gates 8>, <&mmc0_clk>, <&mmc0_output_clk>, <&mmc0_sample_clk>; |
| 29 | clock-names = "ahb", "mod"; | 29 | clock-names = "ahb", "mod", "output", "sample"; |
| 30 | interrupts = <0 32 4>; | 30 | interrupts = <0 32 4>; |
| 31 | status = "disabled"; | 31 | status = "disabled"; |
| 32 | }; | 32 | }; |
diff --git a/Documentation/devicetree/bindings/mtd/atmel-nand.txt b/Documentation/devicetree/bindings/mtd/atmel-nand.txt index 1fe6dde98499..7d4c8eb775a5 100644 --- a/Documentation/devicetree/bindings/mtd/atmel-nand.txt +++ b/Documentation/devicetree/bindings/mtd/atmel-nand.txt | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | Atmel NAND flash | 1 | Atmel NAND flash |
| 2 | 2 | ||
| 3 | Required properties: | 3 | Required properties: |
| 4 | - compatible : "atmel,at91rm9200-nand". | 4 | - compatible : should be "atmel,at91rm9200-nand" or "atmel,sama5d4-nand". |
| 5 | - reg : should specify localbus address and size used for the chip, | 5 | - reg : should specify localbus address and size used for the chip, |
| 6 | and hardware ECC controller if available. | 6 | and hardware ECC controller if available. |
| 7 | If the hardware ECC is PMECC, it should contain address and size for | 7 | If the hardware ECC is PMECC, it should contain address and size for |
diff --git a/Documentation/devicetree/bindings/mtd/fsl-quadspi.txt b/Documentation/devicetree/bindings/mtd/fsl-quadspi.txt index 823d13412195..4461dc71cb10 100644 --- a/Documentation/devicetree/bindings/mtd/fsl-quadspi.txt +++ b/Documentation/devicetree/bindings/mtd/fsl-quadspi.txt | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | * Freescale Quad Serial Peripheral Interface(QuadSPI) | 1 | * Freescale Quad Serial Peripheral Interface(QuadSPI) |
| 2 | 2 | ||
| 3 | Required properties: | 3 | Required properties: |
| 4 | - compatible : Should be "fsl,vf610-qspi" | 4 | - compatible : Should be "fsl,vf610-qspi" or "fsl,imx6sx-qspi" |
| 5 | - reg : the first contains the register location and length, | 5 | - reg : the first contains the register location and length, |
| 6 | the second contains the memory mapping address and length | 6 | the second contains the memory mapping address and length |
| 7 | - reg-names: Should contain the reg names "QuadSPI" and "QuadSPI-memory" | 7 | - reg-names: Should contain the reg names "QuadSPI" and "QuadSPI-memory" |
diff --git a/Documentation/devicetree/bindings/mtd/fsmc-nand.txt b/Documentation/devicetree/bindings/mtd/fsmc-nand.txt index ec42935f3908..5235cbc551b0 100644 --- a/Documentation/devicetree/bindings/mtd/fsmc-nand.txt +++ b/Documentation/devicetree/bindings/mtd/fsmc-nand.txt | |||
| @@ -9,7 +9,7 @@ Required properties: | |||
| 9 | Optional properties: | 9 | Optional properties: |
| 10 | - bank-width : Width (in bytes) of the device. If not present, the width | 10 | - bank-width : Width (in bytes) of the device. If not present, the width |
| 11 | defaults to 1 byte | 11 | defaults to 1 byte |
| 12 | - nand-skip-bbtscan: Indicates the the BBT scanning should be skipped | 12 | - nand-skip-bbtscan: Indicates the BBT scanning should be skipped |
| 13 | - timings: array of 6 bytes for NAND timings. The meanings of these bytes | 13 | - timings: array of 6 bytes for NAND timings. The meanings of these bytes |
| 14 | are: | 14 | are: |
| 15 | byte 0 TCLR : CLE to RE delay in number of AHB clock cycles, only 4 bits | 15 | byte 0 TCLR : CLE to RE delay in number of AHB clock cycles, only 4 bits |
diff --git a/Documentation/devicetree/bindings/mtd/gpmi-nand.txt b/Documentation/devicetree/bindings/mtd/gpmi-nand.txt index a011fdf61dbf..d02acaff3c35 100644 --- a/Documentation/devicetree/bindings/mtd/gpmi-nand.txt +++ b/Documentation/devicetree/bindings/mtd/gpmi-nand.txt | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | * Freescale General-Purpose Media Interface (GPMI) | 1 | * Freescale General-Purpose Media Interface (GPMI) |
| 2 | 2 | ||
| 3 | The GPMI nand controller provides an interface to control the | 3 | The GPMI nand controller provides an interface to control the |
| 4 | NAND flash chips. We support only one NAND chip now. | 4 | NAND flash chips. |
| 5 | 5 | ||
| 6 | Required properties: | 6 | Required properties: |
| 7 | - compatible : should be "fsl,<chip>-gpmi-nand" | 7 | - compatible : should be "fsl,<chip>-gpmi-nand" |
diff --git a/Documentation/devicetree/bindings/mtd/hisi504-nand.txt b/Documentation/devicetree/bindings/mtd/hisi504-nand.txt new file mode 100644 index 000000000000..2e35f0662912 --- /dev/null +++ b/Documentation/devicetree/bindings/mtd/hisi504-nand.txt | |||
| @@ -0,0 +1,47 @@ | |||
| 1 | Hisilicon Hip04 Soc NAND controller DT binding | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | |||
| 5 | - compatible: Should be "hisilicon,504-nfc". | ||
| 6 | - reg: The first contains base physical address and size of | ||
| 7 | NAND controller's registers. The second contains base | ||
| 8 | physical address and size of NAND controller's buffer. | ||
| 9 | - interrupts: Interrupt number for nfc. | ||
| 10 | - nand-bus-width: See nand.txt. | ||
| 11 | - nand-ecc-mode: Support none and hw ecc mode. | ||
| 12 | - #address-cells: Partition address, should be set 1. | ||
| 13 | - #size-cells: Partition size, should be set 1. | ||
| 14 | |||
| 15 | Optional properties: | ||
| 16 | |||
| 17 | - nand-ecc-strength: Number of bits to correct per ECC step. | ||
| 18 | - nand-ecc-step-size: Number of data bytes covered by a single ECC step. | ||
| 19 | |||
| 20 | The following ECC strength and step size are currently supported: | ||
| 21 | |||
| 22 | - nand-ecc-strength = <16>, nand-ecc-step-size = <1024> | ||
| 23 | |||
| 24 | Flash chip may optionally contain additional sub-nodes describing partitions of | ||
| 25 | the address space. See partition.txt for more detail. | ||
| 26 | |||
| 27 | Example: | ||
| 28 | |||
| 29 | nand: nand@4020000 { | ||
| 30 | compatible = "hisilicon,504-nfc"; | ||
| 31 | reg = <0x4020000 0x10000>, <0x5000000 0x1000>; | ||
| 32 | interrupts = <0 379 4>; | ||
| 33 | nand-bus-width = <8>; | ||
| 34 | nand-ecc-mode = "hw"; | ||
| 35 | nand-ecc-strength = <16>; | ||
| 36 | nand-ecc-step-size = <1024>; | ||
| 37 | #address-cells = <1>; | ||
| 38 | #size-cells = <1>; | ||
| 39 | |||
| 40 | partition@0 { | ||
| 41 | label = "nand_text"; | ||
| 42 | reg = <0x00000000 0x00400000>; | ||
| 43 | }; | ||
| 44 | |||
| 45 | ... | ||
| 46 | |||
| 47 | }; | ||
diff --git a/Documentation/devicetree/bindings/mtd/mtd-physmap.txt b/Documentation/devicetree/bindings/mtd/mtd-physmap.txt index 6b9f680cb579..4a0a48bf4ecb 100644 --- a/Documentation/devicetree/bindings/mtd/mtd-physmap.txt +++ b/Documentation/devicetree/bindings/mtd/mtd-physmap.txt | |||
| @@ -36,6 +36,11 @@ are defined: | |||
| 36 | - vendor-id : Contains the flash chip's vendor id (1 byte). | 36 | - vendor-id : Contains the flash chip's vendor id (1 byte). |
| 37 | - device-id : Contains the flash chip's device id (1 byte). | 37 | - device-id : Contains the flash chip's device id (1 byte). |
| 38 | 38 | ||
| 39 | For ROM compatible devices (and ROM fallback from cfi-flash), the following | ||
| 40 | additional (optional) property is defined: | ||
| 41 | |||
| 42 | - erase-size : The chip's physical erase block size in bytes. | ||
| 43 | |||
| 39 | The device tree may optionally contain sub-nodes describing partitions of the | 44 | The device tree may optionally contain sub-nodes describing partitions of the |
| 40 | address space. See partition.txt for more detail. | 45 | address space. See partition.txt for more detail. |
| 41 | 46 | ||
diff --git a/Documentation/devicetree/bindings/net/amd-xgbe-phy.txt b/Documentation/devicetree/bindings/net/amd-xgbe-phy.txt index 42409bfe04c4..33df3932168e 100644 --- a/Documentation/devicetree/bindings/net/amd-xgbe-phy.txt +++ b/Documentation/devicetree/bindings/net/amd-xgbe-phy.txt | |||
| @@ -7,17 +7,38 @@ Required properties: | |||
| 7 | - SerDes Rx/Tx registers | 7 | - SerDes Rx/Tx registers |
| 8 | - SerDes integration registers (1/2) | 8 | - SerDes integration registers (1/2) |
| 9 | - SerDes integration registers (2/2) | 9 | - SerDes integration registers (2/2) |
| 10 | - interrupt-parent: Should be the phandle for the interrupt controller | ||
| 11 | that services interrupts for this device | ||
| 12 | - interrupts: Should contain the amd-xgbe-phy interrupt. | ||
| 10 | 13 | ||
| 11 | Optional properties: | 14 | Optional properties: |
| 12 | - amd,speed-set: Speed capabilities of the device | 15 | - amd,speed-set: Speed capabilities of the device |
| 13 | 0 - 1GbE and 10GbE (default) | 16 | 0 - 1GbE and 10GbE (default) |
| 14 | 1 - 2.5GbE and 10GbE | 17 | 1 - 2.5GbE and 10GbE |
| 15 | 18 | ||
| 19 | The following optional properties are represented by an array with each | ||
| 20 | value corresponding to a particular speed. The first array value represents | ||
| 21 | the setting for the 1GbE speed, the second value for the 2.5GbE speed and | ||
| 22 | the third value for the 10GbE speed. All three values are required if the | ||
| 23 | property is used. | ||
| 24 | - amd,serdes-blwc: Baseline wandering correction enablement | ||
| 25 | 0 - Off | ||
| 26 | 1 - On | ||
| 27 | - amd,serdes-cdr-rate: CDR rate speed selection | ||
| 28 | - amd,serdes-pq-skew: PQ (data sampling) skew | ||
| 29 | - amd,serdes-tx-amp: TX amplitude boost | ||
| 30 | |||
| 16 | Example: | 31 | Example: |
| 17 | xgbe_phy@e1240800 { | 32 | xgbe_phy@e1240800 { |
| 18 | compatible = "amd,xgbe-phy-seattle-v1a", "ethernet-phy-ieee802.3-c45"; | 33 | compatible = "amd,xgbe-phy-seattle-v1a", "ethernet-phy-ieee802.3-c45"; |
| 19 | reg = <0 0xe1240800 0 0x00400>, | 34 | reg = <0 0xe1240800 0 0x00400>, |
| 20 | <0 0xe1250000 0 0x00060>, | 35 | <0 0xe1250000 0 0x00060>, |
| 21 | <0 0xe1250080 0 0x00004>; | 36 | <0 0xe1250080 0 0x00004>; |
| 37 | interrupt-parent = <&gic>; | ||
| 38 | interrupts = <0 323 4>; | ||
| 22 | amd,speed-set = <0>; | 39 | amd,speed-set = <0>; |
| 40 | amd,serdes-blwc = <1>, <1>, <0>; | ||
| 41 | amd,serdes-cdr-rate = <2>, <2>, <7>; | ||
| 42 | amd,serdes-pq-skew = <10>, <10>, <30>; | ||
| 43 | amd,serdes-tx-amp = <15>, <15>, <10>; | ||
| 23 | }; | 44 | }; |
diff --git a/Documentation/devicetree/bindings/net/broadcom-systemport.txt b/Documentation/devicetree/bindings/net/broadcom-systemport.txt index aa7ad622259d..877da34145b0 100644 --- a/Documentation/devicetree/bindings/net/broadcom-systemport.txt +++ b/Documentation/devicetree/bindings/net/broadcom-systemport.txt | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | Required properties: | 3 | Required properties: |
| 4 | - compatible: should be one of "brcm,systemport-v1.00" or "brcm,systemport" | 4 | - compatible: should be one of "brcm,systemport-v1.00" or "brcm,systemport" |
| 5 | - reg: address and length of the register set for the device. | 5 | - reg: address and length of the register set for the device. |
| 6 | - interrupts: interrupts for the device, first cell must be for the the rx | 6 | - interrupts: interrupts for the device, first cell must be for the rx |
| 7 | interrupts, and the second cell should be for the transmit queues. An | 7 | interrupts, and the second cell should be for the transmit queues. An |
| 8 | optional third interrupt cell for Wake-on-LAN can be specified | 8 | optional third interrupt cell for Wake-on-LAN can be specified |
| 9 | - local-mac-address: Ethernet MAC address (48 bits) of this adapter | 9 | - local-mac-address: Ethernet MAC address (48 bits) of this adapter |
diff --git a/Documentation/devicetree/bindings/net/davicom-dm9000.txt b/Documentation/devicetree/bindings/net/davicom-dm9000.txt index 28767ed7c1bd..5224bf05f6f8 100644 --- a/Documentation/devicetree/bindings/net/davicom-dm9000.txt +++ b/Documentation/devicetree/bindings/net/davicom-dm9000.txt | |||
| @@ -11,6 +11,8 @@ Required properties: | |||
| 11 | Optional properties: | 11 | Optional properties: |
| 12 | - davicom,no-eeprom : Configuration EEPROM is not available | 12 | - davicom,no-eeprom : Configuration EEPROM is not available |
| 13 | - davicom,ext-phy : Use external PHY | 13 | - davicom,ext-phy : Use external PHY |
| 14 | - reset-gpios : phandle of gpio that will be used to reset chip during probe | ||
| 15 | - vcc-supply : phandle of regulator that will be used to enable power to chip | ||
| 14 | 16 | ||
| 15 | Example: | 17 | Example: |
| 16 | 18 | ||
| @@ -21,4 +23,6 @@ Example: | |||
| 21 | interrupts = <7 4>; | 23 | interrupts = <7 4>; |
| 22 | local-mac-address = [00 00 de ad be ef]; | 24 | local-mac-address = [00 00 de ad be ef]; |
| 23 | davicom,no-eeprom; | 25 | davicom,no-eeprom; |
| 26 | reset-gpios = <&gpf 12 GPIO_ACTIVE_LOW>; | ||
| 27 | vcc-supply = <ð0_power>; | ||
| 24 | }; | 28 | }; |
diff --git a/Documentation/devicetree/bindings/net/davinci_emac.txt b/Documentation/devicetree/bindings/net/davinci_emac.txt index 032808843f90..24c5cdaba8d2 100644 --- a/Documentation/devicetree/bindings/net/davinci_emac.txt +++ b/Documentation/devicetree/bindings/net/davinci_emac.txt | |||
| @@ -4,7 +4,8 @@ This file provides information, what the device node | |||
| 4 | for the davinci_emac interface contains. | 4 | for the davinci_emac interface contains. |
| 5 | 5 | ||
| 6 | Required properties: | 6 | Required properties: |
| 7 | - compatible: "ti,davinci-dm6467-emac" or "ti,am3517-emac" | 7 | - compatible: "ti,davinci-dm6467-emac", "ti,am3517-emac" or |
| 8 | "ti,dm816-emac" | ||
| 8 | - reg: Offset and length of the register set for the device | 9 | - reg: Offset and length of the register set for the device |
| 9 | - ti,davinci-ctrl-reg-offset: offset to control register | 10 | - ti,davinci-ctrl-reg-offset: offset to control register |
| 10 | - ti,davinci-ctrl-mod-reg-offset: offset to control module register | 11 | - ti,davinci-ctrl-mod-reg-offset: offset to control module register |
diff --git a/Documentation/devicetree/bindings/net/fsl-fec.txt b/Documentation/devicetree/bindings/net/fsl-fec.txt index 0c8775c45798..a9eb611bee68 100644 --- a/Documentation/devicetree/bindings/net/fsl-fec.txt +++ b/Documentation/devicetree/bindings/net/fsl-fec.txt | |||
| @@ -22,6 +22,8 @@ Optional properties: | |||
| 22 | - fsl,num-rx-queues : The property is valid for enet-avb IP, which supports | 22 | - fsl,num-rx-queues : The property is valid for enet-avb IP, which supports |
| 23 | hw multi queues. Should specify the rx queue number, otherwise set rx queue | 23 | hw multi queues. Should specify the rx queue number, otherwise set rx queue |
| 24 | number to 1. | 24 | number to 1. |
| 25 | - fsl,magic-packet : If present, indicates that the hardware supports waking | ||
| 26 | up via magic packet. | ||
| 25 | 27 | ||
| 26 | Optional subnodes: | 28 | Optional subnodes: |
| 27 | - mdio : specifies the mdio bus in the FEC, used as a container for phy nodes | 29 | - mdio : specifies the mdio bus in the FEC, used as a container for phy nodes |
diff --git a/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt b/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt index be6ea8960f20..1e97532a0b79 100644 --- a/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt +++ b/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt | |||
| @@ -8,7 +8,16 @@ of how to define a PHY. | |||
| 8 | Required properties: | 8 | Required properties: |
| 9 | - reg : Offset and length of the register set for the device | 9 | - reg : Offset and length of the register set for the device |
| 10 | - compatible : Should define the compatible device type for the | 10 | - compatible : Should define the compatible device type for the |
| 11 | mdio. Currently, this is most likely to be "fsl,gianfar-mdio" | 11 | mdio. Currently supported strings/devices are: |
| 12 | - "fsl,gianfar-tbi" | ||
| 13 | - "fsl,gianfar-mdio" | ||
| 14 | - "fsl,etsec2-tbi" | ||
| 15 | - "fsl,etsec2-mdio" | ||
| 16 | - "fsl,ucc-mdio" | ||
| 17 | - "fsl,fman-mdio" | ||
| 18 | When device_type is "mdio", the following strings are also considered: | ||
| 19 | - "gianfar" | ||
| 20 | - "ucc_geth_phy" | ||
| 12 | 21 | ||
| 13 | Example: | 22 | Example: |
| 14 | 23 | ||
diff --git a/Documentation/devicetree/bindings/net/hisilicon-hip04-net.txt b/Documentation/devicetree/bindings/net/hisilicon-hip04-net.txt new file mode 100644 index 000000000000..988fc694b663 --- /dev/null +++ b/Documentation/devicetree/bindings/net/hisilicon-hip04-net.txt | |||
| @@ -0,0 +1,88 @@ | |||
| 1 | Hisilicon hip04 Ethernet Controller | ||
| 2 | |||
| 3 | * Ethernet controller node | ||
| 4 | |||
| 5 | Required properties: | ||
| 6 | - compatible: should be "hisilicon,hip04-mac". | ||
| 7 | - reg: address and length of the register set for the device. | ||
| 8 | - interrupts: interrupt for the device. | ||
| 9 | - port-handle: <phandle port channel> | ||
| 10 | phandle, specifies a reference to the syscon ppe node | ||
| 11 | port, port number connected to the controller | ||
| 12 | channel, recv channel start from channel * number (RX_DESC_NUM) | ||
| 13 | - phy-mode: see ethernet.txt [1]. | ||
| 14 | |||
| 15 | Optional properties: | ||
| 16 | - phy-handle: see ethernet.txt [1]. | ||
| 17 | |||
| 18 | [1] Documentation/devicetree/bindings/net/ethernet.txt | ||
| 19 | |||
| 20 | |||
| 21 | * Ethernet ppe node: | ||
| 22 | Control rx & tx fifos of all ethernet controllers. | ||
| 23 | Have 2048 recv channels shared by all ethernet controllers, only if no overlap. | ||
| 24 | Each controller's recv channel start from channel * number (RX_DESC_NUM). | ||
| 25 | |||
| 26 | Required properties: | ||
| 27 | - compatible: "hisilicon,hip04-ppe", "syscon". | ||
| 28 | - reg: address and length of the register set for the device. | ||
| 29 | |||
| 30 | |||
| 31 | * MDIO bus node: | ||
| 32 | |||
| 33 | Required properties: | ||
| 34 | |||
| 35 | - compatible: should be "hisilicon,hip04-mdio". | ||
| 36 | - Inherits from MDIO bus node binding [2] | ||
| 37 | [2] Documentation/devicetree/bindings/net/phy.txt | ||
| 38 | |||
| 39 | Example: | ||
| 40 | mdio { | ||
| 41 | compatible = "hisilicon,hip04-mdio"; | ||
| 42 | reg = <0x28f1000 0x1000>; | ||
| 43 | #address-cells = <1>; | ||
| 44 | #size-cells = <0>; | ||
| 45 | |||
| 46 | phy0: ethernet-phy@0 { | ||
| 47 | compatible = "ethernet-phy-ieee802.3-c22"; | ||
| 48 | reg = <0>; | ||
| 49 | marvell,reg-init = <18 0x14 0 0x8001>; | ||
| 50 | }; | ||
| 51 | |||
| 52 | phy1: ethernet-phy@1 { | ||
| 53 | compatible = "ethernet-phy-ieee802.3-c22"; | ||
| 54 | reg = <1>; | ||
| 55 | marvell,reg-init = <18 0x14 0 0x8001>; | ||
| 56 | }; | ||
| 57 | }; | ||
| 58 | |||
| 59 | ppe: ppe@28c0000 { | ||
| 60 | compatible = "hisilicon,hip04-ppe", "syscon"; | ||
| 61 | reg = <0x28c0000 0x10000>; | ||
| 62 | }; | ||
| 63 | |||
| 64 | fe: ethernet@28b0000 { | ||
| 65 | compatible = "hisilicon,hip04-mac"; | ||
| 66 | reg = <0x28b0000 0x10000>; | ||
| 67 | interrupts = <0 413 4>; | ||
| 68 | phy-mode = "mii"; | ||
| 69 | port-handle = <&ppe 31 0>; | ||
| 70 | }; | ||
| 71 | |||
| 72 | ge0: ethernet@2800000 { | ||
| 73 | compatible = "hisilicon,hip04-mac"; | ||
| 74 | reg = <0x2800000 0x10000>; | ||
| 75 | interrupts = <0 402 4>; | ||
| 76 | phy-mode = "sgmii"; | ||
| 77 | port-handle = <&ppe 0 1>; | ||
| 78 | phy-handle = <&phy0>; | ||
| 79 | }; | ||
| 80 | |||
| 81 | ge8: ethernet@2880000 { | ||
| 82 | compatible = "hisilicon,hip04-mac"; | ||
| 83 | reg = <0x2880000 0x10000>; | ||
| 84 | interrupts = <0 410 4>; | ||
| 85 | phy-mode = "sgmii"; | ||
| 86 | port-handle = <&ppe 8 2>; | ||
| 87 | phy-handle = <&phy1>; | ||
| 88 | }; | ||
diff --git a/Documentation/devicetree/bindings/net/keystone-netcp.txt b/Documentation/devicetree/bindings/net/keystone-netcp.txt new file mode 100644 index 000000000000..f9c07710478d --- /dev/null +++ b/Documentation/devicetree/bindings/net/keystone-netcp.txt | |||
| @@ -0,0 +1,197 @@ | |||
| 1 | This document describes the device tree bindings associated with the | ||
| 2 | keystone network coprocessor(NetCP) driver support. | ||
| 3 | |||
| 4 | The network coprocessor (NetCP) is a hardware accelerator that processes | ||
| 5 | Ethernet packets. NetCP has a gigabit Ethernet (GbE) subsytem with a ethernet | ||
| 6 | switch sub-module to send and receive packets. NetCP also includes a packet | ||
| 7 | accelerator (PA) module to perform packet classification operations such as | ||
| 8 | header matching, and packet modification operations such as checksum | ||
| 9 | generation. NetCP can also optionally include a Security Accelerator (SA) | ||
| 10 | capable of performing IPSec operations on ingress/egress packets. | ||
| 11 | |||
| 12 | Keystone II SoC's also have a 10 Gigabit Ethernet Subsystem (XGbE) which | ||
| 13 | includes a 3-port Ethernet switch sub-module capable of 10Gb/s and 1Gb/s rates | ||
| 14 | per Ethernet port. | ||
| 15 | |||
| 16 | Keystone NetCP driver has a plug-in module architecture where each of the NetCP | ||
| 17 | sub-modules exist as a loadable kernel module which plug in to the netcp core. | ||
| 18 | These sub-modules are represented as "netcp-devices" in the dts bindings. It is | ||
| 19 | mandatory to have the ethernet switch sub-module for the ethernet interface to | ||
| 20 | be operational. Any other sub-module like the PA is optional. | ||
| 21 | |||
| 22 | NetCP Ethernet SubSystem Layout: | ||
| 23 | |||
| 24 | ----------------------------- | ||
| 25 | NetCP subsystem(10G or 1G) | ||
| 26 | ----------------------------- | ||
| 27 | | | ||
| 28 | |-> NetCP Devices -> | | ||
| 29 | | |-> GBE/XGBE Switch | ||
| 30 | | | | ||
| 31 | | |-> Packet Accelerator | ||
| 32 | | | | ||
| 33 | | |-> Security Accelerator | ||
| 34 | | | ||
| 35 | | | ||
| 36 | | | ||
| 37 | |-> NetCP Interfaces -> | | ||
| 38 | |-> Ethernet Port 0 | ||
| 39 | | | ||
| 40 | |-> Ethernet Port 1 | ||
| 41 | | | ||
| 42 | |-> Ethernet Port 2 | ||
| 43 | | | ||
| 44 | |-> Ethernet Port 3 | ||
| 45 | |||
| 46 | |||
| 47 | NetCP subsystem properties: | ||
| 48 | Required properties: | ||
| 49 | - compatible: Should be "ti,netcp-1.0" | ||
| 50 | - clocks: phandle to the reference clocks for the subsystem. | ||
| 51 | - dma-id: Navigator packet dma instance id. | ||
| 52 | |||
| 53 | Optional properties: | ||
| 54 | - reg: register location and the size for the following register | ||
| 55 | regions in the specified order. | ||
| 56 | - Efuse MAC address register | ||
| 57 | - dma-coherent: Present if dma operations are coherent | ||
| 58 | - big-endian: Keystone devices can be operated in a mode where the DSP is in | ||
| 59 | the big endian mode. In such cases enable this option. This | ||
| 60 | option should also be enabled if the ARM is operated in | ||
| 61 | big endian mode with the DSP in little endian. | ||
| 62 | |||
| 63 | NetCP device properties: Device specification for NetCP sub-modules. | ||
| 64 | 1Gb/10Gb (gbe/xgbe) ethernet switch sub-module specifications. | ||
| 65 | Required properties: | ||
| 66 | - label: Must be "netcp-gbe" for 1Gb & "netcp-xgbe" for 10Gb. | ||
| 67 | - reg: register location and the size for the following register | ||
| 68 | regions in the specified order. | ||
| 69 | - subsystem registers | ||
| 70 | - serdes registers | ||
| 71 | - tx-channel: the navigator packet dma channel name for tx. | ||
| 72 | - tx-queue: the navigator queue number associated with the tx dma channel. | ||
| 73 | - interfaces: specification for each of the switch port to be registered as a | ||
| 74 | network interface in the stack. | ||
| 75 | -- slave-port: Switch port number, 0 based numbering. | ||
| 76 | -- link-interface: type of link interface, supported options are | ||
| 77 | - mac<->mac auto negotiate mode: 0 | ||
| 78 | - mac<->phy mode: 1 | ||
| 79 | - mac<->mac forced mode: 2 | ||
| 80 | - mac<->fiber mode: 3 | ||
| 81 | - mac<->phy mode with no mdio: 4 | ||
| 82 | - 10Gb mac<->phy mode : 10 | ||
| 83 | - 10Gb mac<->mac forced mode : 11 | ||
| 84 | ----phy-handle: phandle to PHY device | ||
| 85 | |||
| 86 | Optional properties: | ||
| 87 | - enable-ale: NetCP driver keeps the address learning feature in the ethernet | ||
| 88 | switch module disabled. This attribute is to enable the address | ||
| 89 | learning. | ||
| 90 | - secondary-slave-ports: specification for each of the switch port not be | ||
| 91 | registered as a network interface. NetCP driver | ||
| 92 | will only initialize these ports and attach PHY | ||
| 93 | driver to them if needed. | ||
| 94 | |||
| 95 | NetCP interface properties: Interface specification for NetCP sub-modules. | ||
| 96 | Required properties: | ||
| 97 | - rx-channel: the navigator packet dma channel name for rx. | ||
| 98 | - rx-queue: the navigator queue number associated with rx dma channel. | ||
| 99 | - rx-pool: specifies the number of descriptors to be used & the region-id | ||
| 100 | for creating the rx descriptor pool. | ||
| 101 | - tx-pool: specifies the number of descriptors to be used & the region-id | ||
| 102 | for creating the tx descriptor pool. | ||
| 103 | - rx-queue-depth: number of descriptors in each of the free descriptor | ||
| 104 | queue (FDQ) for the pktdma Rx flow. There can be at | ||
| 105 | present a maximum of 4 queues per Rx flow. | ||
| 106 | - rx-buffer-size: the buffer size for each of the Rx flow FDQ. | ||
| 107 | - tx-completion-queue: the navigator queue number where the descriptors are | ||
| 108 | recycled after Tx DMA completion. | ||
| 109 | |||
| 110 | Optional properties: | ||
| 111 | - efuse-mac: If this is 1, then the MAC address for the interface is | ||
| 112 | obtained from the device efuse mac address register | ||
| 113 | - local-mac-address: the driver is designed to use the of_get_mac_address api | ||
| 114 | only if efuse-mac is 0. When efuse-mac is 0, the MAC | ||
| 115 | address is obtained from local-mac-address. If this | ||
| 116 | attribute is not present, then the driver will use a | ||
| 117 | random MAC address. | ||
| 118 | - "netcp-device label": phandle to the device specification for each of NetCP | ||
| 119 | sub-module attached to this interface. | ||
| 120 | |||
| 121 | Example binding: | ||
| 122 | |||
| 123 | netcp: netcp@2090000 { | ||
| 124 | reg = <0x2620110 0x8>; | ||
| 125 | reg-names = "efuse"; | ||
| 126 | compatible = "ti,netcp-1.0"; | ||
| 127 | #address-cells = <1>; | ||
| 128 | #size-cells = <1>; | ||
| 129 | ranges; | ||
| 130 | |||
| 131 | clocks = <&papllclk>, <&clkcpgmac>, <&chipclk12>; | ||
| 132 | dma-coherent; | ||
| 133 | /* big-endian; */ | ||
| 134 | dma-id = <0>; | ||
| 135 | |||
| 136 | netcp-devices { | ||
| 137 | #address-cells = <1>; | ||
| 138 | #size-cells = <1>; | ||
| 139 | ranges; | ||
| 140 | gbe@0x2090000 { | ||
| 141 | label = "netcp-gbe"; | ||
| 142 | reg = <0x2090000 0xf00>; | ||
| 143 | /* enable-ale; */ | ||
| 144 | tx-queue = <648>; | ||
| 145 | tx-channel = <8>; | ||
| 146 | |||
| 147 | interfaces { | ||
| 148 | gbe0: interface-0 { | ||
| 149 | slave-port = <0>; | ||
| 150 | link-interface = <4>; | ||
| 151 | }; | ||
| 152 | gbe1: interface-1 { | ||
| 153 | slave-port = <1>; | ||
| 154 | link-interface = <4>; | ||
| 155 | }; | ||
| 156 | }; | ||
| 157 | |||
| 158 | secondary-slave-ports { | ||
| 159 | port-2 { | ||
| 160 | slave-port = <2>; | ||
| 161 | link-interface = <2>; | ||
| 162 | }; | ||
| 163 | port-3 { | ||
| 164 | slave-port = <3>; | ||
| 165 | link-interface = <2>; | ||
| 166 | }; | ||
| 167 | }; | ||
| 168 | }; | ||
| 169 | }; | ||
| 170 | |||
| 171 | netcp-interfaces { | ||
| 172 | interface-0 { | ||
| 173 | rx-channel = <22>; | ||
| 174 | rx-pool = <1024 12>; | ||
| 175 | tx-pool = <1024 12>; | ||
| 176 | rx-queue-depth = <128 128 0 0>; | ||
| 177 | rx-buffer-size = <1518 4096 0 0>; | ||
| 178 | rx-queue = <8704>; | ||
| 179 | tx-completion-queue = <8706>; | ||
| 180 | efuse-mac = <1>; | ||
| 181 | netcp-gbe = <&gbe0>; | ||
| 182 | |||
| 183 | }; | ||
| 184 | interface-1 { | ||
| 185 | rx-channel = <23>; | ||
| 186 | rx-pool = <1024 12>; | ||
| 187 | tx-pool = <1024 12>; | ||
| 188 | rx-queue-depth = <128 128 0 0>; | ||
| 189 | rx-buffer-size = <1518 4096 0 0>; | ||
| 190 | rx-queue = <8705>; | ||
| 191 | tx-completion-queue = <8707>; | ||
| 192 | efuse-mac = <0>; | ||
| 193 | local-mac-address = [02 18 31 7e 3e 6f]; | ||
| 194 | netcp-gbe = <&gbe1>; | ||
| 195 | }; | ||
| 196 | }; | ||
| 197 | }; | ||
diff --git a/Documentation/devicetree/bindings/net/nfc/st21nfca.txt b/Documentation/devicetree/bindings/net/nfc/st21nfca.txt index e4faa2e8dfeb..7bb2e213d6f9 100644 --- a/Documentation/devicetree/bindings/net/nfc/st21nfca.txt +++ b/Documentation/devicetree/bindings/net/nfc/st21nfca.txt | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | * STMicroelectronics SAS. ST21NFCA NFC Controller | 1 | * STMicroelectronics SAS. ST21NFCA NFC Controller |
| 2 | 2 | ||
| 3 | Required properties: | 3 | Required properties: |
| 4 | - compatible: Should be "st,st21nfca_i2c". | 4 | - compatible: Should be "st,st21nfca-i2c". |
| 5 | - clock-frequency: I²C work frequency. | 5 | - clock-frequency: I²C work frequency. |
| 6 | - reg: address on the bus | 6 | - reg: address on the bus |
| 7 | - interrupt-parent: phandle for the interrupt gpio controller | 7 | - interrupt-parent: phandle for the interrupt gpio controller |
| @@ -11,6 +11,10 @@ Required properties: | |||
| 11 | Optional SoC Specific Properties: | 11 | Optional SoC Specific Properties: |
| 12 | - pinctrl-names: Contains only one value - "default". | 12 | - pinctrl-names: Contains only one value - "default". |
| 13 | - pintctrl-0: Specifies the pin control groups used for this controller. | 13 | - pintctrl-0: Specifies the pin control groups used for this controller. |
| 14 | - ese-present: Specifies that an ese is physically connected to the nfc | ||
| 15 | controller. | ||
| 16 | - uicc-present: Specifies that the uicc swp signal can be physically | ||
| 17 | connected to the nfc controller. | ||
| 14 | 18 | ||
| 15 | Example (for ARM-based BeagleBoard xM with ST21NFCA on I2C2): | 19 | Example (for ARM-based BeagleBoard xM with ST21NFCA on I2C2): |
| 16 | 20 | ||
| @@ -20,7 +24,7 @@ Example (for ARM-based BeagleBoard xM with ST21NFCA on I2C2): | |||
| 20 | 24 | ||
| 21 | st21nfca: st21nfca@1 { | 25 | st21nfca: st21nfca@1 { |
| 22 | 26 | ||
| 23 | compatible = "st,st21nfca_i2c"; | 27 | compatible = "st,st21nfca-i2c"; |
| 24 | 28 | ||
| 25 | reg = <0x01>; | 29 | reg = <0x01>; |
| 26 | clock-frequency = <400000>; | 30 | clock-frequency = <400000>; |
| @@ -29,5 +33,8 @@ Example (for ARM-based BeagleBoard xM with ST21NFCA on I2C2): | |||
| 29 | interrupts = <2 IRQ_TYPE_LEVEL_LOW>; | 33 | interrupts = <2 IRQ_TYPE_LEVEL_LOW>; |
| 30 | 34 | ||
| 31 | enable-gpios = <&gpio5 29 GPIO_ACTIVE_HIGH>; | 35 | enable-gpios = <&gpio5 29 GPIO_ACTIVE_HIGH>; |
| 36 | |||
| 37 | ese-present; | ||
| 38 | uicc-present; | ||
| 32 | }; | 39 | }; |
| 33 | }; | 40 | }; |
diff --git a/Documentation/devicetree/bindings/net/nfc/st21nfcb.txt b/Documentation/devicetree/bindings/net/nfc/st21nfcb.txt index 9005608cbbd1..bb237072dbe9 100644 --- a/Documentation/devicetree/bindings/net/nfc/st21nfcb.txt +++ b/Documentation/devicetree/bindings/net/nfc/st21nfcb.txt | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | * STMicroelectronics SAS. ST21NFCB NFC Controller | 1 | * STMicroelectronics SAS. ST21NFCB NFC Controller |
| 2 | 2 | ||
| 3 | Required properties: | 3 | Required properties: |
| 4 | - compatible: Should be "st,st21nfcb_i2c". | 4 | - compatible: Should be "st,st21nfcb-i2c". |
| 5 | - clock-frequency: I²C work frequency. | 5 | - clock-frequency: I²C work frequency. |
| 6 | - reg: address on the bus | 6 | - reg: address on the bus |
| 7 | - interrupt-parent: phandle for the interrupt gpio controller | 7 | - interrupt-parent: phandle for the interrupt gpio controller |
| @@ -20,7 +20,7 @@ Example (for ARM-based BeagleBoard xM with ST21NFCB on I2C2): | |||
| 20 | 20 | ||
| 21 | st21nfcb: st21nfcb@8 { | 21 | st21nfcb: st21nfcb@8 { |
| 22 | 22 | ||
| 23 | compatible = "st,st21nfcb_i2c"; | 23 | compatible = "st,st21nfcb-i2c"; |
| 24 | 24 | ||
| 25 | reg = <0x08>; | 25 | reg = <0x08>; |
| 26 | clock-frequency = <400000>; | 26 | clock-frequency = <400000>; |
diff --git a/Documentation/devicetree/bindings/net/rockchip-dwmac.txt b/Documentation/devicetree/bindings/net/rockchip-dwmac.txt new file mode 100644 index 000000000000..21fd199e89b5 --- /dev/null +++ b/Documentation/devicetree/bindings/net/rockchip-dwmac.txt | |||
| @@ -0,0 +1,68 @@ | |||
| 1 | Rockchip SoC RK3288 10/100/1000 Ethernet driver(GMAC) | ||
| 2 | |||
| 3 | The device node has following properties. | ||
| 4 | |||
| 5 | Required properties: | ||
| 6 | - compatible: Can be "rockchip,rk3288-gmac". | ||
| 7 | - reg: addresses and length of the register sets for the device. | ||
| 8 | - interrupts: Should contain the GMAC interrupts. | ||
| 9 | - interrupt-names: Should contain the interrupt names "macirq". | ||
| 10 | - rockchip,grf: phandle to the syscon grf used to control speed and mode. | ||
| 11 | - clocks: <&cru SCLK_MAC>: clock selector for main clock, from PLL or PHY. | ||
| 12 | <&cru SCLK_MAC_PLL>: PLL clock for SCLK_MAC | ||
| 13 | <&cru SCLK_MAC_RX>: clock gate for RX | ||
| 14 | <&cru SCLK_MAC_TX>: clock gate for TX | ||
| 15 | <&cru SCLK_MACREF>: clock gate for RMII referce clock | ||
| 16 | <&cru SCLK_MACREF_OUT> clock gate for RMII reference clock output | ||
| 17 | <&cru ACLK_GMAC>: AXI clock gate for GMAC | ||
| 18 | <&cru PCLK_GMAC>: APB clock gate for GMAC | ||
| 19 | - clock-names: One name for each entry in the clocks property. | ||
| 20 | - phy-mode: See ethernet.txt file in the same directory. | ||
| 21 | - pinctrl-names: Names corresponding to the numbered pinctrl states. | ||
| 22 | - pinctrl-0: pin-control mode. can be <&rgmii_pins> or <&rmii_pins>. | ||
| 23 | - clock_in_out: For RGMII, it must be "input", means main clock(125MHz) | ||
| 24 | is not sourced from SoC's PLL, but input from PHY; For RMII, "input" means | ||
| 25 | PHY provides the reference clock(50MHz), "output" means GMAC provides the | ||
| 26 | reference clock. | ||
| 27 | - snps,reset-gpio gpio number for phy reset. | ||
| 28 | - snps,reset-active-low boolean flag to indicate if phy reset is active low. | ||
| 29 | - assigned-clocks: main clock, should be <&cru SCLK_MAC>; | ||
| 30 | - assigned-clock-parents = parent of main clock. | ||
| 31 | can be <&ext_gmac> or <&cru SCLK_MAC_PLL>. | ||
| 32 | |||
| 33 | Optional properties: | ||
| 34 | - tx_delay: Delay value for TXD timing. Range value is 0~0x7F, 0x30 as default. | ||
| 35 | - rx_delay: Delay value for RXD timing. Range value is 0~0x7F, 0x10 as default. | ||
| 36 | - phy-supply: phandle to a regulator if the PHY needs one | ||
| 37 | |||
| 38 | Example: | ||
| 39 | |||
| 40 | gmac: ethernet@ff290000 { | ||
| 41 | compatible = "rockchip,rk3288-gmac"; | ||
| 42 | reg = <0xff290000 0x10000>; | ||
| 43 | interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>; | ||
| 44 | interrupt-names = "macirq"; | ||
| 45 | rockchip,grf = <&grf>; | ||
| 46 | clocks = <&cru SCLK_MAC>, | ||
| 47 | <&cru SCLK_MAC_RX>, <&cru SCLK_MAC_TX>, | ||
| 48 | <&cru SCLK_MACREF>, <&cru SCLK_MACREF_OUT>, | ||
| 49 | <&cru ACLK_GMAC>, <&cru PCLK_GMAC>; | ||
| 50 | clock-names = "stmmaceth", | ||
| 51 | "mac_clk_rx", "mac_clk_tx", | ||
| 52 | "clk_mac_ref", "clk_mac_refout", | ||
| 53 | "aclk_mac", "pclk_mac"; | ||
| 54 | phy-mode = "rgmii"; | ||
| 55 | pinctrl-names = "default"; | ||
| 56 | pinctrl-0 = <&rgmii_pins /*&rmii_pins*/>; | ||
| 57 | |||
| 58 | clock_in_out = "input"; | ||
| 59 | snps,reset-gpio = <&gpio4 7 0>; | ||
| 60 | snps,reset-active-low; | ||
| 61 | |||
| 62 | assigned-clocks = <&cru SCLK_MAC>; | ||
| 63 | assigned-clock-parents = <&ext_gmac>; | ||
| 64 | tx_delay = <0x30>; | ||
| 65 | rx_delay = <0x10>; | ||
| 66 | |||
| 67 | status = "ok"; | ||
| 68 | }; | ||
diff --git a/Documentation/devicetree/bindings/net/sti-dwmac.txt b/Documentation/devicetree/bindings/net/sti-dwmac.txt index 6762a6b5da7e..d05c1e1fd9b6 100644 --- a/Documentation/devicetree/bindings/net/sti-dwmac.txt +++ b/Documentation/devicetree/bindings/net/sti-dwmac.txt | |||
| @@ -9,14 +9,10 @@ The device node has following properties. | |||
| 9 | Required properties: | 9 | Required properties: |
| 10 | - compatible : Can be "st,stih415-dwmac", "st,stih416-dwmac", | 10 | - compatible : Can be "st,stih415-dwmac", "st,stih416-dwmac", |
| 11 | "st,stih407-dwmac", "st,stid127-dwmac". | 11 | "st,stih407-dwmac", "st,stid127-dwmac". |
| 12 | - reg : Offset of the glue configuration register map in system | 12 | - st,syscon : Should be phandle/offset pair. The phandle to the syscon node which |
| 13 | configuration regmap pointed by st,syscon property and size. | 13 | encompases the glue register, and the offset of the control register. |
| 14 | - st,syscon : Should be phandle to system configuration node which | ||
| 15 | encompases this glue registers. | ||
| 16 | - st,gmac_en: this is to enable the gmac into a dedicated sysctl control | 14 | - st,gmac_en: this is to enable the gmac into a dedicated sysctl control |
| 17 | register available on STiH407 SoC. | 15 | register available on STiH407 SoC. |
| 18 | - sti-ethconf: this is the gmac glue logic register to enable the GMAC, | ||
| 19 | select among the different modes and program the clk retiming. | ||
| 20 | - pinctrl-0: pin-control for all the MII mode supported. | 16 | - pinctrl-0: pin-control for all the MII mode supported. |
| 21 | 17 | ||
| 22 | Optional properties: | 18 | Optional properties: |
| @@ -40,10 +36,10 @@ ethernet0: dwmac@9630000 { | |||
| 40 | device_type = "network"; | 36 | device_type = "network"; |
| 41 | status = "disabled"; | 37 | status = "disabled"; |
| 42 | compatible = "st,stih407-dwmac", "snps,dwmac", "snps,dwmac-3.710"; | 38 | compatible = "st,stih407-dwmac", "snps,dwmac", "snps,dwmac-3.710"; |
| 43 | reg = <0x9630000 0x8000>, <0x80 0x4>; | 39 | reg = <0x9630000 0x8000>; |
| 44 | reg-names = "stmmaceth", "sti-ethconf"; | 40 | reg-names = "stmmaceth"; |
| 45 | 41 | ||
| 46 | st,syscon = <&syscfg_sbc_reg>; | 42 | st,syscon = <&syscfg_sbc_reg 0x80>; |
| 47 | st,gmac_en; | 43 | st,gmac_en; |
| 48 | resets = <&softreset STIH407_ETH1_SOFTRESET>; | 44 | resets = <&softreset STIH407_ETH1_SOFTRESET>; |
| 49 | reset-names = "stmmaceth"; | 45 | reset-names = "stmmaceth"; |
diff --git a/Documentation/devicetree/bindings/net/stmmac.txt b/Documentation/devicetree/bindings/net/stmmac.txt index c41afd963edf..8ca65cec52ae 100644 --- a/Documentation/devicetree/bindings/net/stmmac.txt +++ b/Documentation/devicetree/bindings/net/stmmac.txt | |||
| @@ -43,6 +43,7 @@ Optional properties: | |||
| 43 | available this clock is used for programming the Timestamp Addend Register. | 43 | available this clock is used for programming the Timestamp Addend Register. |
| 44 | If not passed then the system clock will be used and this is fine on some | 44 | If not passed then the system clock will be used and this is fine on some |
| 45 | platforms. | 45 | platforms. |
| 46 | - snps,burst_len: The AXI burst lenth value of the AXI BUS MODE register. | ||
| 46 | 47 | ||
| 47 | Examples: | 48 | Examples: |
| 48 | 49 | ||
diff --git a/Documentation/devicetree/bindings/net/wireless/qcom,ath10k.txt b/Documentation/devicetree/bindings/net/wireless/qcom,ath10k.txt new file mode 100644 index 000000000000..edefc26c6204 --- /dev/null +++ b/Documentation/devicetree/bindings/net/wireless/qcom,ath10k.txt | |||
| @@ -0,0 +1,30 @@ | |||
| 1 | * Qualcomm Atheros ath10k wireless devices | ||
| 2 | |||
| 3 | For ath10k devices the calibration data can be provided through Device | ||
| 4 | Tree. The node is a child node of the PCI controller. | ||
| 5 | |||
| 6 | Required properties: | ||
| 7 | -compatible : Should be "qcom,ath10k" | ||
| 8 | |||
| 9 | Optional properties: | ||
| 10 | - qcom,ath10k-calibration-data : calibration data as an array, the | ||
| 11 | length can vary between hw versions | ||
| 12 | |||
| 13 | |||
| 14 | Example: | ||
| 15 | |||
| 16 | pci { | ||
| 17 | pcie@0 { | ||
| 18 | reg = <0 0 0 0 0>; | ||
| 19 | #interrupt-cells = <1>; | ||
| 20 | #size-cells = <2>; | ||
| 21 | #address-cells = <3>; | ||
| 22 | device_type = "pci"; | ||
| 23 | |||
| 24 | ath10k@0,0 { | ||
| 25 | reg = <0 0 0 0 0>; | ||
| 26 | device_type = "pci"; | ||
| 27 | qcom,ath10k-calibration-data = [ 01 02 03 ... ]; | ||
| 28 | }; | ||
| 29 | }; | ||
| 30 | }; | ||
diff --git a/Documentation/devicetree/bindings/panel/avic,tm070ddh03.txt b/Documentation/devicetree/bindings/panel/avic,tm070ddh03.txt new file mode 100644 index 000000000000..b6f2f3e8f44e --- /dev/null +++ b/Documentation/devicetree/bindings/panel/avic,tm070ddh03.txt | |||
| @@ -0,0 +1,7 @@ | |||
| 1 | Shanghai AVIC Optoelectronics 7" 1024x600 color TFT-LCD panel | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible: should be "avic,tm070ddh03" | ||
| 5 | |||
| 6 | This binding is compatible with the simple-panel binding, which is specified | ||
| 7 | in simple-panel.txt in this directory. | ||
diff --git a/Documentation/devicetree/bindings/panel/giantplus,gpg482739qs5.txt b/Documentation/devicetree/bindings/panel/giantplus,gpg482739qs5.txt new file mode 100644 index 000000000000..24b0b624434b --- /dev/null +++ b/Documentation/devicetree/bindings/panel/giantplus,gpg482739qs5.txt | |||
| @@ -0,0 +1,7 @@ | |||
| 1 | GiantPlus GPG48273QS5 4.3" (480x272) WQVGA TFT LCD panel | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible: should be "giantplus,gpg48273qs5" | ||
| 5 | |||
| 6 | This binding is compatible with the simple-panel binding, which is specified | ||
| 7 | in simple-panel.txt in this directory. | ||
diff --git a/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt b/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt index d763e047c6ae..75321ae23c08 100644 --- a/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt +++ b/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | NVIDIA Tegra PCIe controller | 1 | NVIDIA Tegra PCIe controller |
| 2 | 2 | ||
| 3 | Required properties: | 3 | Required properties: |
| 4 | - compatible: Must be one of: | 4 | - compatible: For Tegra20, must contain "nvidia,tegra20-pcie". For Tegra30, |
| 5 | - "nvidia,tegra20-pcie" | 5 | "nvidia,tegra30-pcie". For Tegra124, must contain "nvidia,tegra124-pcie". |
| 6 | - "nvidia,tegra30-pcie" | 6 | Otherwise, must contain "nvidia,<chip>-pcie", plus one of the above, where |
| 7 | - "nvidia,tegra124-pcie" | 7 | <chip> is tegra132 or tegra210. |
| 8 | - device_type: Must be "pci" | 8 | - device_type: Must be "pci" |
| 9 | - reg: A list of physical base address and length for each set of controller | 9 | - reg: A list of physical base address and length for each set of controller |
| 10 | registers. Must contain an entry for each entry in the reg-names property. | 10 | registers. Must contain an entry for each entry in the reg-names property. |
diff --git a/Documentation/devicetree/bindings/pci/versatile.txt b/Documentation/devicetree/bindings/pci/versatile.txt new file mode 100644 index 000000000000..ebd1e7d0403e --- /dev/null +++ b/Documentation/devicetree/bindings/pci/versatile.txt | |||
| @@ -0,0 +1,59 @@ | |||
| 1 | * ARM Versatile Platform Baseboard PCI interface | ||
| 2 | |||
| 3 | PCI host controller found on the ARM Versatile PB board's FPGA. | ||
| 4 | |||
| 5 | Required properties: | ||
| 6 | - compatible: should contain "arm,versatile-pci" to identify the Versatile PCI | ||
| 7 | controller. | ||
| 8 | - reg: base addresses and lengths of the pci controller. There must be 3 | ||
| 9 | entries: | ||
| 10 | - Versatile-specific registers | ||
| 11 | - Self Config space | ||
| 12 | - Config space | ||
| 13 | - #address-cells: set to <3> | ||
| 14 | - #size-cells: set to <2> | ||
| 15 | - device_type: set to "pci" | ||
| 16 | - bus-range: set to <0 0xff> | ||
| 17 | - ranges: ranges for the PCI memory and I/O regions | ||
| 18 | - #interrupt-cells: set to <1> | ||
| 19 | - interrupt-map-mask and interrupt-map: standard PCI properties to define | ||
| 20 | the mapping of the PCI interface to interrupt numbers. | ||
| 21 | |||
| 22 | Example: | ||
| 23 | |||
| 24 | pci-controller@10001000 { | ||
| 25 | compatible = "arm,versatile-pci"; | ||
| 26 | device_type = "pci"; | ||
| 27 | reg = <0x10001000 0x1000 | ||
| 28 | 0x41000000 0x10000 | ||
| 29 | 0x42000000 0x100000>; | ||
| 30 | bus-range = <0 0xff>; | ||
| 31 | #address-cells = <3>; | ||
| 32 | #size-cells = <2>; | ||
| 33 | #interrupt-cells = <1>; | ||
| 34 | |||
| 35 | ranges = <0x01000000 0 0x00000000 0x43000000 0 0x00010000 /* downstream I/O */ | ||
| 36 | 0x02000000 0 0x50000000 0x50000000 0 0x10000000 /* non-prefetchable memory */ | ||
| 37 | 0x42000000 0 0x60000000 0x60000000 0 0x10000000>; /* prefetchable memory */ | ||
| 38 | |||
| 39 | interrupt-map-mask = <0x1800 0 0 7>; | ||
| 40 | interrupt-map = <0x1800 0 0 1 &sic 28 | ||
| 41 | 0x1800 0 0 2 &sic 29 | ||
| 42 | 0x1800 0 0 3 &sic 30 | ||
| 43 | 0x1800 0 0 4 &sic 27 | ||
| 44 | |||
| 45 | 0x1000 0 0 1 &sic 27 | ||
| 46 | 0x1000 0 0 2 &sic 28 | ||
| 47 | 0x1000 0 0 3 &sic 29 | ||
| 48 | 0x1000 0 0 4 &sic 30 | ||
| 49 | |||
| 50 | 0x0800 0 0 1 &sic 30 | ||
| 51 | 0x0800 0 0 2 &sic 27 | ||
| 52 | 0x0800 0 0 3 &sic 28 | ||
| 53 | 0x0800 0 0 4 &sic 29 | ||
| 54 | |||
| 55 | 0x0000 0 0 1 &sic 29 | ||
| 56 | 0x0000 0 0 2 &sic 30 | ||
| 57 | 0x0000 0 0 3 &sic 27 | ||
| 58 | 0x0000 0 0 4 &sic 28>; | ||
| 59 | }; | ||
diff --git a/Documentation/devicetree/bindings/phy/phy-miphy28lp.txt b/Documentation/devicetree/bindings/phy/phy-miphy28lp.txt index 46a135dae6b3..89caa885d08c 100644 --- a/Documentation/devicetree/bindings/phy/phy-miphy28lp.txt +++ b/Documentation/devicetree/bindings/phy/phy-miphy28lp.txt | |||
| @@ -26,6 +26,7 @@ Required properties (port (child) node): | |||
| 26 | filled in "reg". It can also contain the offset of the system configuration | 26 | filled in "reg". It can also contain the offset of the system configuration |
| 27 | registers used as glue-logic to setup the device for SATA/PCIe or USB3 | 27 | registers used as glue-logic to setup the device for SATA/PCIe or USB3 |
| 28 | devices. | 28 | devices. |
| 29 | - st,syscfg : Offset of the parent configuration register. | ||
| 29 | - resets : phandle to the parent reset controller. | 30 | - resets : phandle to the parent reset controller. |
| 30 | - reset-names : Associated name must be "miphy-sw-rst". | 31 | - reset-names : Associated name must be "miphy-sw-rst". |
| 31 | 32 | ||
| @@ -54,18 +55,12 @@ example: | |||
| 54 | phy_port0: port@9b22000 { | 55 | phy_port0: port@9b22000 { |
| 55 | reg = <0x9b22000 0xff>, | 56 | reg = <0x9b22000 0xff>, |
| 56 | <0x9b09000 0xff>, | 57 | <0x9b09000 0xff>, |
| 57 | <0x9b04000 0xff>, | 58 | <0x9b04000 0xff>; |
| 58 | <0x114 0x4>, /* sysctrl MiPHY cntrl */ | ||
| 59 | <0x818 0x4>, /* sysctrl MiPHY status*/ | ||
| 60 | <0xe0 0x4>, /* sysctrl PCIe */ | ||
| 61 | <0xec 0x4>; /* sysctrl SATA */ | ||
| 62 | reg-names = "sata-up", | 59 | reg-names = "sata-up", |
| 63 | "pcie-up", | 60 | "pcie-up", |
| 64 | "pipew", | 61 | "pipew"; |
| 65 | "miphy-ctrl-glue", | 62 | |
| 66 | "miphy-status-glue", | 63 | st,syscfg = <0x114 0x818 0xe0 0xec>; |
| 67 | "pcie-glue", | ||
| 68 | "sata-glue"; | ||
| 69 | #phy-cells = <1>; | 64 | #phy-cells = <1>; |
| 70 | st,osc-rdy; | 65 | st,osc-rdy; |
| 71 | reset-names = "miphy-sw-rst"; | 66 | reset-names = "miphy-sw-rst"; |
| @@ -75,18 +70,13 @@ example: | |||
| 75 | phy_port1: port@9b2a000 { | 70 | phy_port1: port@9b2a000 { |
| 76 | reg = <0x9b2a000 0xff>, | 71 | reg = <0x9b2a000 0xff>, |
| 77 | <0x9b19000 0xff>, | 72 | <0x9b19000 0xff>, |
| 78 | <0x9b14000 0xff>, | 73 | <0x9b14000 0xff>; |
| 79 | <0x118 0x4>, | ||
| 80 | <0x81c 0x4>, | ||
| 81 | <0xe4 0x4>, | ||
| 82 | <0xf0 0x4>; | ||
| 83 | reg-names = "sata-up", | 74 | reg-names = "sata-up", |
| 84 | "pcie-up", | 75 | "pcie-up", |
| 85 | "pipew", | 76 | "pipew"; |
| 86 | "miphy-ctrl-glue", | 77 | |
| 87 | "miphy-status-glue", | 78 | st,syscfg = <0x118 0x81c 0xe4 0xf0>; |
| 88 | "pcie-glue", | 79 | |
| 89 | "sata-glue"; | ||
| 90 | #phy-cells = <1>; | 80 | #phy-cells = <1>; |
| 91 | st,osc-force-ext; | 81 | st,osc-force-ext; |
| 92 | reset-names = "miphy-sw-rst"; | 82 | reset-names = "miphy-sw-rst"; |
| @@ -95,13 +85,12 @@ example: | |||
| 95 | 85 | ||
| 96 | phy_port2: port@8f95000 { | 86 | phy_port2: port@8f95000 { |
| 97 | reg = <0x8f95000 0xff>, | 87 | reg = <0x8f95000 0xff>, |
| 98 | <0x8f90000 0xff>, | 88 | <0x8f90000 0xff>; |
| 99 | <0x11c 0x4>, | ||
| 100 | <0x820 0x4>; | ||
| 101 | reg-names = "pipew", | 89 | reg-names = "pipew", |
| 102 | "usb3-up", | 90 | "usb3-up"; |
| 103 | "miphy-ctrl-glue", | 91 | |
| 104 | "miphy-status-glue"; | 92 | st,syscfg = <0x11c 0x820>; |
| 93 | |||
| 105 | #phy-cells = <1>; | 94 | #phy-cells = <1>; |
| 106 | reset-names = "miphy-sw-rst"; | 95 | reset-names = "miphy-sw-rst"; |
| 107 | resets = <&softreset STIH407_MIPHY2_SOFTRESET>; | 96 | resets = <&softreset STIH407_MIPHY2_SOFTRESET>; |
| @@ -125,4 +114,4 @@ example: | |||
| 125 | 114 | ||
| 126 | Macro definitions for the supported miphy configuration can be found in: | 115 | Macro definitions for the supported miphy configuration can be found in: |
| 127 | 116 | ||
| 128 | include/dt-bindings/phy/phy-miphy28lp.h | 117 | include/dt-bindings/phy/phy.h |
diff --git a/Documentation/devicetree/bindings/phy/phy-miphy365x.txt b/Documentation/devicetree/bindings/phy/phy-miphy365x.txt index 42c880886cf7..9802d5d911aa 100644 --- a/Documentation/devicetree/bindings/phy/phy-miphy365x.txt +++ b/Documentation/devicetree/bindings/phy/phy-miphy365x.txt | |||
| @@ -6,8 +6,10 @@ for SATA and PCIe. | |||
| 6 | 6 | ||
| 7 | Required properties (controller (parent) node): | 7 | Required properties (controller (parent) node): |
| 8 | - compatible : Should be "st,miphy365x-phy" | 8 | - compatible : Should be "st,miphy365x-phy" |
| 9 | - st,syscfg : Should be a phandle of the system configuration register group | 9 | - st,syscfg : Phandle / integer array property. Phandle of sysconfig group |
| 10 | which contain the SATA, PCIe mode setting bits | 10 | containing the miphy registers and integer array should contain |
| 11 | an entry for each port sub-node, specifying the control | ||
| 12 | register offset inside the sysconfig group. | ||
| 11 | 13 | ||
| 12 | Required nodes : A sub-node is required for each channel the controller | 14 | Required nodes : A sub-node is required for each channel the controller |
| 13 | provides. Address range information including the usual | 15 | provides. Address range information including the usual |
| @@ -26,7 +28,6 @@ Required properties (port (child) node): | |||
| 26 | registers filled in "reg": | 28 | registers filled in "reg": |
| 27 | - sata: For SATA devices | 29 | - sata: For SATA devices |
| 28 | - pcie: For PCIe devices | 30 | - pcie: For PCIe devices |
| 29 | - syscfg: To specify the syscfg based config register | ||
| 30 | 31 | ||
| 31 | Optional properties (port (child) node): | 32 | Optional properties (port (child) node): |
| 32 | - st,sata-gen : Generation of locally attached SATA IP. Expected values | 33 | - st,sata-gen : Generation of locally attached SATA IP. Expected values |
| @@ -39,20 +40,20 @@ Example: | |||
| 39 | 40 | ||
| 40 | miphy365x_phy: miphy365x@fe382000 { | 41 | miphy365x_phy: miphy365x@fe382000 { |
| 41 | compatible = "st,miphy365x-phy"; | 42 | compatible = "st,miphy365x-phy"; |
| 42 | st,syscfg = <&syscfg_rear>; | 43 | st,syscfg = <&syscfg_rear 0x824 0x828>; |
| 43 | #address-cells = <1>; | 44 | #address-cells = <1>; |
| 44 | #size-cells = <1>; | 45 | #size-cells = <1>; |
| 45 | ranges; | 46 | ranges; |
| 46 | 47 | ||
| 47 | phy_port0: port@fe382000 { | 48 | phy_port0: port@fe382000 { |
| 48 | reg = <0xfe382000 0x100>, <0xfe394000 0x100>, <0x824 0x4>; | 49 | reg = <0xfe382000 0x100>, <0xfe394000 0x100>; |
| 49 | reg-names = "sata", "pcie", "syscfg"; | 50 | reg-names = "sata", "pcie"; |
| 50 | #phy-cells = <1>; | 51 | #phy-cells = <1>; |
| 51 | st,sata-gen = <3>; | 52 | st,sata-gen = <3>; |
| 52 | }; | 53 | }; |
| 53 | 54 | ||
| 54 | phy_port1: port@fe38a000 { | 55 | phy_port1: port@fe38a000 { |
| 55 | reg = <0xfe38a000 0x100>, <0xfe804000 0x100>, <0x828 0x4>;; | 56 | reg = <0xfe38a000 0x100>, <0xfe804000 0x100>;; |
| 56 | reg-names = "sata", "pcie", "syscfg"; | 57 | reg-names = "sata", "pcie", "syscfg"; |
| 57 | #phy-cells = <1>; | 58 | #phy-cells = <1>; |
| 58 | st,pcie-tx-pol-inv; | 59 | st,pcie-tx-pol-inv; |
diff --git a/Documentation/devicetree/bindings/phy/phy-stih407-usb.txt b/Documentation/devicetree/bindings/phy/phy-stih407-usb.txt index 1ef8228db73b..de6a706abcdb 100644 --- a/Documentation/devicetree/bindings/phy/phy-stih407-usb.txt +++ b/Documentation/devicetree/bindings/phy/phy-stih407-usb.txt | |||
| @@ -5,10 +5,7 @@ host controllers (when controlling usb2/1.1 devices) available on STiH407 SoC fa | |||
| 5 | 5 | ||
| 6 | Required properties: | 6 | Required properties: |
| 7 | - compatible : should be "st,stih407-usb2-phy" | 7 | - compatible : should be "st,stih407-usb2-phy" |
| 8 | - reg : contain the offset and length of the system configuration registers | 8 | - st,syscfg : phandle of sysconfig bank plus integer array containing phyparam and phyctrl register offsets |
| 9 | used as glue logic to control & parameter phy | ||
| 10 | - reg-names : the names of the system configuration registers in "reg", should be "param" and "reg" | ||
| 11 | - st,syscfg : sysconfig register to manage phy parameter at driver level | ||
| 12 | - resets : list of phandle and reset specifier pairs. There should be two entries, one | 9 | - resets : list of phandle and reset specifier pairs. There should be two entries, one |
| 13 | for the whole phy and one for the port | 10 | for the whole phy and one for the port |
| 14 | - reset-names : list of reset signal names. Should be "global" and "port" | 11 | - reset-names : list of reset signal names. Should be "global" and "port" |
| @@ -19,11 +16,8 @@ Example: | |||
| 19 | 16 | ||
| 20 | usb2_picophy0: usbpicophy@f8 { | 17 | usb2_picophy0: usbpicophy@f8 { |
| 21 | compatible = "st,stih407-usb2-phy"; | 18 | compatible = "st,stih407-usb2-phy"; |
| 22 | reg = <0xf8 0x04>, /* syscfg 5062 */ | ||
| 23 | <0xf4 0x04>; /* syscfg 5061 */ | ||
| 24 | reg-names = "param", "ctrl"; | ||
| 25 | #phy-cells = <0>; | 19 | #phy-cells = <0>; |
| 26 | st,syscfg = <&syscfg_core>; | 20 | st,syscfg = <&syscfg_core 0x100 0xf4>; |
| 27 | resets = <&softreset STIH407_PICOPHY_SOFTRESET>, | 21 | resets = <&softreset STIH407_PICOPHY_SOFTRESET>, |
| 28 | <&picophyreset STIH407_PICOPHY0_RESET>; | 22 | <&picophyreset STIH407_PICOPHY0_RESET>; |
| 29 | reset-names = "global", "port"; | 23 | reset-names = "global", "port"; |
diff --git a/Documentation/devicetree/bindings/phy/rockchip-usb-phy.txt b/Documentation/devicetree/bindings/phy/rockchip-usb-phy.txt new file mode 100644 index 000000000000..826454ac43bb --- /dev/null +++ b/Documentation/devicetree/bindings/phy/rockchip-usb-phy.txt | |||
| @@ -0,0 +1,37 @@ | |||
| 1 | ROCKCHIP USB2 PHY | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible: rockchip,rk3288-usb-phy | ||
| 5 | - rockchip,grf : phandle to the syscon managing the "general | ||
| 6 | register files" | ||
| 7 | - #address-cells: should be 1 | ||
| 8 | - #size-cells: should be 0 | ||
| 9 | |||
| 10 | Sub-nodes: | ||
| 11 | Each PHY should be represented as a sub-node. | ||
| 12 | |||
| 13 | Sub-nodes | ||
| 14 | required properties: | ||
| 15 | - #phy-cells: should be 0 | ||
| 16 | - reg: PHY configure reg address offset in GRF | ||
| 17 | "0x320" - for PHY attach to OTG controller | ||
| 18 | "0x334" - for PHY attach to HOST0 controller | ||
| 19 | "0x348" - for PHY attach to HOST1 controller | ||
| 20 | |||
| 21 | Optional Properties: | ||
| 22 | - clocks : phandle + clock specifier for the phy clocks | ||
| 23 | - clock-names: string, clock name, must be "phyclk" | ||
| 24 | |||
| 25 | Example: | ||
| 26 | |||
| 27 | usbphy: phy { | ||
| 28 | compatible = "rockchip,rk3288-usb-phy"; | ||
| 29 | rockchip,grf = <&grf>; | ||
| 30 | #address-cells = <1>; | ||
| 31 | #size-cells = <0>; | ||
| 32 | |||
| 33 | usbphy0: usb-phy0 { | ||
| 34 | #phy-cells = <0>; | ||
| 35 | reg = <0x320>; | ||
| 36 | }; | ||
| 37 | }; | ||
diff --git a/Documentation/devicetree/bindings/phy/samsung-phy.txt b/Documentation/devicetree/bindings/phy/samsung-phy.txt index d5bad920827f..91e38cfe1f8f 100644 --- a/Documentation/devicetree/bindings/phy/samsung-phy.txt +++ b/Documentation/devicetree/bindings/phy/samsung-phy.txt | |||
| @@ -3,8 +3,8 @@ Samsung S5P/EXYNOS SoC series MIPI CSIS/DSIM DPHY | |||
| 3 | 3 | ||
| 4 | Required properties: | 4 | Required properties: |
| 5 | - compatible : should be "samsung,s5pv210-mipi-video-phy"; | 5 | - compatible : should be "samsung,s5pv210-mipi-video-phy"; |
| 6 | - reg : offset and length of the MIPI DPHY register set; | ||
| 7 | - #phy-cells : from the generic phy bindings, must be 1; | 6 | - #phy-cells : from the generic phy bindings, must be 1; |
| 7 | - syscon - phandle to the PMU system controller; | ||
| 8 | 8 | ||
| 9 | For "samsung,s5pv210-mipi-video-phy" compatible PHYs the second cell in | 9 | For "samsung,s5pv210-mipi-video-phy" compatible PHYs the second cell in |
| 10 | the PHY specifier identifies the PHY and its meaning is as follows: | 10 | the PHY specifier identifies the PHY and its meaning is as follows: |
diff --git a/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt index 93ce12eb422a..fdd8046e650a 100644 --- a/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt | |||
| @@ -11,6 +11,7 @@ Required properties: | |||
| 11 | "allwinner,sun5i-a10s-pinctrl" | 11 | "allwinner,sun5i-a10s-pinctrl" |
| 12 | "allwinner,sun5i-a13-pinctrl" | 12 | "allwinner,sun5i-a13-pinctrl" |
| 13 | "allwinner,sun6i-a31-pinctrl" | 13 | "allwinner,sun6i-a31-pinctrl" |
| 14 | "allwinner,sun6i-a31s-pinctrl" | ||
| 14 | "allwinner,sun6i-a31-r-pinctrl" | 15 | "allwinner,sun6i-a31-r-pinctrl" |
| 15 | "allwinner,sun7i-a20-pinctrl" | 16 | "allwinner,sun7i-a20-pinctrl" |
| 16 | "allwinner,sun8i-a23-pinctrl" | 17 | "allwinner,sun8i-a23-pinctrl" |
diff --git a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-pinmux.txt b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-pinmux.txt index 189814e7cdc7..ecb5c0d25218 100644 --- a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-pinmux.txt +++ b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-pinmux.txt | |||
| @@ -6,7 +6,8 @@ nvidia,tegra30-pinmux.txt. In fact, this document assumes that binding as | |||
| 6 | a baseline, and only documents the differences between the two bindings. | 6 | a baseline, and only documents the differences between the two bindings. |
| 7 | 7 | ||
| 8 | Required properties: | 8 | Required properties: |
| 9 | - compatible: "nvidia,tegra124-pinmux" | 9 | - compatible: For Tegra124, must contain "nvidia,tegra124-pinmux". For |
| 10 | Tegra132, must contain '"nvidia,tegra132-pinmux", "nvidia-tegra124-pinmux"'. | ||
| 10 | - reg: Should contain a list of base address and size pairs for: | 11 | - reg: Should contain a list of base address and size pairs for: |
| 11 | -- first entry - the drive strength and pad control registers. | 12 | -- first entry - the drive strength and pad control registers. |
| 12 | -- second entry - the pinmux registers | 13 | -- second entry - the pinmux registers |
diff --git a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-xusb-padctl.txt b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-xusb-padctl.txt index 2f9c0bd66457..30676ded85bb 100644 --- a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-xusb-padctl.txt +++ b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-xusb-padctl.txt | |||
| @@ -13,7 +13,9 @@ how to describe and reference PHYs in device trees. | |||
| 13 | 13 | ||
| 14 | Required properties: | 14 | Required properties: |
| 15 | -------------------- | 15 | -------------------- |
| 16 | - compatible: should be "nvidia,tegra124-xusb-padctl" | 16 | - compatible: For Tegra124, must contain "nvidia,tegra124-xusb-padctl". |
| 17 | Otherwise, must contain '"nvidia,<chip>-xusb-padctl", | ||
| 18 | "nvidia-tegra124-xusb-padctl"', where <chip> is tegra132 or tegra210. | ||
| 17 | - reg: Physical base address and length of the controller's registers. | 19 | - reg: Physical base address and length of the controller's registers. |
| 18 | - resets: Must contain an entry for each entry in reset-names. | 20 | - resets: Must contain an entry for each entry in reset-names. |
| 19 | See ../reset/reset.txt for details. | 21 | See ../reset/reset.txt for details. |
diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,msm8916-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,msm8916-pinctrl.txt new file mode 100644 index 000000000000..498caff6029e --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/qcom,msm8916-pinctrl.txt | |||
| @@ -0,0 +1,186 @@ | |||
| 1 | Qualcomm MSM8916 TLMM block | ||
| 2 | |||
| 3 | This binding describes the Top Level Mode Multiplexer block found in the | ||
| 4 | MSM8916 platform. | ||
| 5 | |||
| 6 | - compatible: | ||
| 7 | Usage: required | ||
| 8 | Value type: <string> | ||
| 9 | Definition: must be "qcom,msm8916-pinctrl" | ||
| 10 | |||
| 11 | - reg: | ||
| 12 | Usage: required | ||
| 13 | Value type: <prop-encoded-array> | ||
| 14 | Definition: the base address and size of the TLMM register space. | ||
| 15 | |||
| 16 | - interrupts: | ||
| 17 | Usage: required | ||
| 18 | Value type: <prop-encoded-array> | ||
| 19 | Definition: should specify the TLMM summary IRQ. | ||
| 20 | |||
| 21 | - interrupt-controller: | ||
| 22 | Usage: required | ||
| 23 | Value type: <none> | ||
| 24 | Definition: identifies this node as an interrupt controller | ||
| 25 | |||
| 26 | - #interrupt-cells: | ||
| 27 | Usage: required | ||
| 28 | Value type: <u32> | ||
| 29 | Definition: must be 2. Specifying the pin number and flags, as defined | ||
| 30 | in <dt-bindings/interrupt-controller/irq.h> | ||
| 31 | |||
| 32 | - gpio-controller: | ||
| 33 | Usage: required | ||
| 34 | Value type: <none> | ||
| 35 | Definition: identifies this node as a gpio controller | ||
| 36 | |||
| 37 | - #gpio-cells: | ||
| 38 | Usage: required | ||
| 39 | Value type: <u32> | ||
| 40 | Definition: must be 2. Specifying the pin number and flags, as defined | ||
| 41 | in <dt-bindings/gpio/gpio.h> | ||
| 42 | |||
| 43 | Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for | ||
| 44 | a general description of GPIO and interrupt bindings. | ||
| 45 | |||
| 46 | Please refer to pinctrl-bindings.txt in this directory for details of the | ||
| 47 | common pinctrl bindings used by client devices, including the meaning of the | ||
| 48 | phrase "pin configuration node". | ||
| 49 | |||
| 50 | The pin configuration nodes act as a container for an arbitrary number of | ||
| 51 | subnodes. Each of these subnodes represents some desired configuration for a | ||
| 52 | pin, a group, or a list of pins or groups. This configuration can include the | ||
| 53 | mux function to select on those pin(s)/group(s), and various pin configuration | ||
| 54 | parameters, such as pull-up, drive strength, etc. | ||
| 55 | |||
| 56 | |||
| 57 | PIN CONFIGURATION NODES: | ||
| 58 | |||
| 59 | The name of each subnode is not important; all subnodes should be enumerated | ||
| 60 | and processed purely based on their content. | ||
| 61 | |||
| 62 | Each subnode only affects those parameters that are explicitly listed. In | ||
| 63 | other words, a subnode that lists a mux function but no pin configuration | ||
| 64 | parameters implies no information about any pin configuration parameters. | ||
| 65 | Similarly, a pin subnode that describes a pullup parameter implies no | ||
| 66 | information about e.g. the mux function. | ||
| 67 | |||
| 68 | |||
| 69 | The following generic properties as defined in pinctrl-bindings.txt are valid | ||
| 70 | to specify in a pin configuration subnode: | ||
| 71 | |||
| 72 | - pins: | ||
| 73 | Usage: required | ||
| 74 | Value type: <string-array> | ||
| 75 | Definition: List of gpio pins affected by the properties specified in | ||
| 76 | this subnode. Valid pins are: | ||
| 77 | gpio0-gpio121, | ||
| 78 | sdc1_clk, | ||
| 79 | sdc1_cmd, | ||
| 80 | sdc1_data | ||
| 81 | sdc2_clk, | ||
| 82 | sdc2_cmd, | ||
| 83 | sdc2_data, | ||
| 84 | qdsd_cmd, | ||
| 85 | qdsd_data0, | ||
| 86 | qdsd_data1, | ||
| 87 | qdsd_data2, | ||
| 88 | qdsd_data3 | ||
| 89 | |||
| 90 | - function: | ||
| 91 | Usage: required | ||
| 92 | Value type: <string> | ||
| 93 | Definition: Specify the alternative function to be configured for the | ||
| 94 | specified pins. Functions are only valid for gpio pins. | ||
| 95 | Valid values are: | ||
| 96 | adsp_ext, alsp_int, atest_bbrx0, atest_bbrx1, atest_char, atest_char0, | ||
| 97 | atest_char1, atest_char2, atest_char3, atest_combodac, atest_gpsadc0, | ||
| 98 | atest_gpsadc1, atest_tsens, atest_wlan0, atest_wlan1, backlight_en, | ||
| 99 | bimc_dte0,bimc_dte1, blsp_i2c1, blsp_i2c2, blsp_i2c3, blsp_i2c4, | ||
| 100 | blsp_i2c5, blsp_i2c6, blsp_spi1, blsp_spi1_cs1, blsp_spi1_cs2, | ||
| 101 | blsp_spi1_cs3, blsp_spi2, blsp_spi2_cs1, blsp_spi2_cs2, blsp_spi2_cs3, | ||
| 102 | blsp_spi3, blsp_spi3_cs1, blsp_spi3_cs2, blsp_spi3_cs3, blsp_spi4, | ||
| 103 | blsp_spi5, blsp_spi6, blsp_uart1, blsp_uart2, blsp_uim1, blsp_uim2, | ||
| 104 | cam1_rst, cam1_standby, cam_mclk0, cam_mclk1, cci_async, cci_i2c, | ||
| 105 | cci_timer0, cci_timer1, cci_timer2, cdc_pdm0, codec_mad, dbg_out, | ||
| 106 | display_5v, dmic0_clk, dmic0_data, dsi_rst, ebi0_wrcdc, euro_us, | ||
| 107 | ext_lpass, flash_strobe, gcc_gp1_clk_a, gcc_gp1_clk_b, gcc_gp2_clk_a, | ||
| 108 | gcc_gp2_clk_b, gcc_gp3_clk_a, gcc_gp3_clk_b, gpio, gsm0_tx0, gsm0_tx1, | ||
| 109 | gsm1_tx0, gsm1_tx1, gyro_accl, kpsns0, kpsns1, kpsns2, ldo_en, | ||
| 110 | ldo_update, mag_int, mdp_vsync, modem_tsync, m_voc, nav_pps, nav_tsync, | ||
| 111 | pa_indicator, pbs0, pbs1, pbs2, pri_mi2s, pri_mi2s_ws, prng_rosc, | ||
| 112 | pwr_crypto_enabled_a, pwr_crypto_enabled_b, pwr_modem_enabled_a, | ||
| 113 | pwr_modem_enabled_b, pwr_nav_enabled_a, pwr_nav_enabled_b, | ||
| 114 | qdss_ctitrig_in_a0, qdss_ctitrig_in_a1, qdss_ctitrig_in_b0, | ||
| 115 | qdss_ctitrig_in_b1, qdss_ctitrig_out_a0, qdss_ctitrig_out_a1, | ||
| 116 | qdss_ctitrig_out_b0, qdss_ctitrig_out_b1, qdss_traceclk_a, | ||
| 117 | qdss_traceclk_b, qdss_tracectl_a, qdss_tracectl_b, qdss_tracedata_a, | ||
| 118 | qdss_tracedata_b, reset_n, sd_card, sd_write, sec_mi2s, smb_int, | ||
| 119 | ssbi_wtr0, ssbi_wtr1, uim1, uim2, uim3, uim_batt, wcss_bt, wcss_fm, | ||
| 120 | wcss_wlan, webcam1_rst | ||
| 121 | |||
| 122 | - bias-disable: | ||
| 123 | Usage: optional | ||
| 124 | Value type: <none> | ||
| 125 | Definition: The specified pins should be configued as no pull. | ||
| 126 | |||
| 127 | - bias-pull-down: | ||
| 128 | Usage: optional | ||
| 129 | Value type: <none> | ||
| 130 | Definition: The specified pins should be configued as pull down. | ||
| 131 | |||
| 132 | - bias-pull-up: | ||
| 133 | Usage: optional | ||
| 134 | Value type: <none> | ||
| 135 | Definition: The specified pins should be configued as pull up. | ||
| 136 | |||
| 137 | - output-high: | ||
| 138 | Usage: optional | ||
| 139 | Value type: <none> | ||
| 140 | Definition: The specified pins are configured in output mode, driven | ||
| 141 | high. | ||
| 142 | Not valid for sdc pins. | ||
| 143 | |||
| 144 | - output-low: | ||
| 145 | Usage: optional | ||
| 146 | Value type: <none> | ||
| 147 | Definition: The specified pins are configured in output mode, driven | ||
| 148 | low. | ||
| 149 | Not valid for sdc pins. | ||
| 150 | |||
| 151 | - drive-strength: | ||
| 152 | Usage: optional | ||
| 153 | Value type: <u32> | ||
| 154 | Definition: Selects the drive strength for the specified pins, in mA. | ||
| 155 | Valid values are: 2, 4, 6, 8, 10, 12, 14 and 16 | ||
| 156 | |||
| 157 | Example: | ||
| 158 | |||
| 159 | tlmm: pinctrl@1000000 { | ||
| 160 | compatible = "qcom,msm8916-pinctrl"; | ||
| 161 | reg = <0x1000000 0x300000>; | ||
| 162 | interrupts = <0 208 0>; | ||
| 163 | gpio-controller; | ||
| 164 | #gpio-cells = <2>; | ||
| 165 | interrupt-controller; | ||
| 166 | #interrupt-cells = <2>; | ||
| 167 | |||
| 168 | uart2: uart2-default { | ||
| 169 | mux { | ||
| 170 | pins = "gpio4", "gpio5"; | ||
| 171 | function = "blsp_uart2"; | ||
| 172 | }; | ||
| 173 | |||
| 174 | tx { | ||
| 175 | pins = "gpio4"; | ||
| 176 | drive-strength = <4>; | ||
| 177 | bias-disable; | ||
| 178 | }; | ||
| 179 | |||
| 180 | rx { | ||
| 181 | pins = "gpio5"; | ||
| 182 | drive-strength = <2>; | ||
| 183 | bias-pull-up; | ||
| 184 | }; | ||
| 185 | }; | ||
| 186 | }; | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt index daef6fad6a5f..bfe72ec055e3 100644 --- a/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | * Renesas Pin Function Controller (GPIO and Pin Mux/Config) | 1 | * Renesas Pin Function Controller (GPIO and Pin Mux/Config) |
| 2 | 2 | ||
| 3 | The Pin Function Controller (PFC) is a Pin Mux/Config controller. On SH7372, | 3 | The Pin Function Controller (PFC) is a Pin Mux/Config controller. On SH73A0, |
| 4 | SH73A0, R8A73A4 and R8A7740 it also acts as a GPIO controller. | 4 | R8A73A4 and R8A7740 it also acts as a GPIO controller. |
| 5 | 5 | ||
| 6 | 6 | ||
| 7 | Pin Control | 7 | Pin Control |
| @@ -10,13 +10,13 @@ Pin Control | |||
| 10 | Required Properties: | 10 | Required Properties: |
| 11 | 11 | ||
| 12 | - compatible: should be one of the following. | 12 | - compatible: should be one of the following. |
| 13 | - "renesas,pfc-emev2": for EMEV2 (EMMA Mobile EV2) compatible pin-controller. | ||
| 13 | - "renesas,pfc-r8a73a4": for R8A73A4 (R-Mobile APE6) compatible pin-controller. | 14 | - "renesas,pfc-r8a73a4": for R8A73A4 (R-Mobile APE6) compatible pin-controller. |
| 14 | - "renesas,pfc-r8a7740": for R8A7740 (R-Mobile A1) compatible pin-controller. | 15 | - "renesas,pfc-r8a7740": for R8A7740 (R-Mobile A1) compatible pin-controller. |
| 15 | - "renesas,pfc-r8a7778": for R8A7778 (R-Mobile M1) compatible pin-controller. | 16 | - "renesas,pfc-r8a7778": for R8A7778 (R-Mobile M1) compatible pin-controller. |
| 16 | - "renesas,pfc-r8a7779": for R8A7779 (R-Car H1) compatible pin-controller. | 17 | - "renesas,pfc-r8a7779": for R8A7779 (R-Car H1) compatible pin-controller. |
| 17 | - "renesas,pfc-r8a7790": for R8A7790 (R-Car H2) compatible pin-controller. | 18 | - "renesas,pfc-r8a7790": for R8A7790 (R-Car H2) compatible pin-controller. |
| 18 | - "renesas,pfc-r8a7791": for R8A7791 (R-Car M2) compatible pin-controller. | 19 | - "renesas,pfc-r8a7791": for R8A7791 (R-Car M2) compatible pin-controller. |
| 19 | - "renesas,pfc-sh7372": for SH7372 (SH-Mobile AP4) compatible pin-controller. | ||
| 20 | - "renesas,pfc-sh73a0": for SH73A0 (SH-Mobile AG5) compatible pin-controller. | 20 | - "renesas,pfc-sh73a0": for SH73A0 (SH-Mobile AG5) compatible pin-controller. |
| 21 | 21 | ||
| 22 | - reg: Base address and length of each memory resource used by the pin | 22 | - reg: Base address and length of each memory resource used by the pin |
| @@ -75,8 +75,7 @@ bias-disable, bias-pull-up and bias-pull-down. | |||
| 75 | GPIO | 75 | GPIO |
| 76 | ---- | 76 | ---- |
| 77 | 77 | ||
| 78 | On SH7372, SH73A0, R8A73A4 and R8A7740 the PFC node is also a GPIO controller | 78 | On SH73A0, R8A73A4 and R8A7740 the PFC node is also a GPIO controller node. |
| 79 | node. | ||
| 80 | 79 | ||
| 81 | Required Properties: | 80 | Required Properties: |
| 82 | 81 | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt index 8425838a6dff..9d2a995293e6 100644 --- a/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt | |||
| @@ -171,6 +171,18 @@ Aliases: | |||
| 171 | All the pin controller nodes should be represented in the aliases node using | 171 | All the pin controller nodes should be represented in the aliases node using |
| 172 | the following format 'pinctrl{n}' where n is a unique number for the alias. | 172 | the following format 'pinctrl{n}' where n is a unique number for the alias. |
| 173 | 173 | ||
| 174 | Aliases for controllers compatible with "samsung,exynos7-pinctrl": | ||
| 175 | - pinctrl0: pin controller of ALIVE block, | ||
| 176 | - pinctrl1: pin controller of BUS0 block, | ||
| 177 | - pinctrl2: pin controller of NFC block, | ||
| 178 | - pinctrl3: pin controller of TOUCH block, | ||
| 179 | - pinctrl4: pin controller of FF block, | ||
| 180 | - pinctrl5: pin controller of ESE block, | ||
| 181 | - pinctrl6: pin controller of FSYS0 block, | ||
| 182 | - pinctrl7: pin controller of FSYS1 block, | ||
| 183 | - pinctrl8: pin controller of BUS1 block, | ||
| 184 | - pinctrl9: pin controller of AUDIO block, | ||
| 185 | |||
| 174 | Example: A pin-controller node with pin banks: | 186 | Example: A pin-controller node with pin banks: |
| 175 | 187 | ||
| 176 | pinctrl_0: pinctrl@11400000 { | 188 | pinctrl_0: pinctrl@11400000 { |
diff --git a/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt b/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt index 6b33b9f18e88..f63fcb3ed352 100644 --- a/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt +++ b/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt | |||
| @@ -16,17 +16,22 @@ mux function to select on those pin(s)/group(s), and various pin configuration | |||
| 16 | parameters, such as input, output, pull up, pull down... | 16 | parameters, such as input, output, pull up, pull down... |
| 17 | 17 | ||
| 18 | The name of each subnode is not important; all subnodes should be enumerated | 18 | The name of each subnode is not important; all subnodes should be enumerated |
| 19 | and processed purely based on their content. | 19 | and processed purely based on their content. The subnodes use the generic |
| 20 | pin multiplexing node layout from the standard pin control bindings | ||
| 21 | (see pinctrl-bindings.txt): | ||
| 20 | 22 | ||
| 21 | Required subnode-properties: | 23 | Required pin multiplexing subnode properties: |
| 22 | - ste,pins : An array of strings. Each string contains the name of a pin or | 24 | - function: A string containing the name of the function to mux to the |
| 23 | group. | ||
| 24 | |||
| 25 | Optional subnode-properties: | ||
| 26 | - ste,function: A string containing the name of the function to mux to the | ||
| 27 | pin or group. | 25 | pin or group. |
| 26 | - groups : An array of strings. Each string contains the name of a pin | ||
| 27 | group that will be combined with the function to form a multiplexing | ||
| 28 | set-up. | ||
| 28 | 29 | ||
| 29 | - ste,config: Handle of pin configuration node (e.g. ste,config = <&slpm_in_wkup_pdis>) | 30 | Required pin configuration subnode properties: |
| 31 | - pins: A string array describing the pins affected by the configuration | ||
| 32 | in the node. | ||
| 33 | - ste,config: Handle of pin configuration node | ||
| 34 | (e.g. ste,config = <&slpm_in_wkup_pdis>) | ||
| 30 | 35 | ||
| 31 | - ste,input : <0/1/2> | 36 | - ste,input : <0/1/2> |
| 32 | 0: input with no pull | 37 | 0: input with no pull |
| @@ -97,32 +102,32 @@ Example board file extract: | |||
| 97 | uart0 { | 102 | uart0 { |
| 98 | uart0_default_mux: uart0_mux { | 103 | uart0_default_mux: uart0_mux { |
| 99 | u0_default_mux { | 104 | u0_default_mux { |
| 100 | ste,function = "u0"; | 105 | function = "u0"; |
| 101 | ste,pins = "u0_a_1"; | 106 | pins = "u0_a_1"; |
| 102 | }; | 107 | }; |
| 103 | }; | 108 | }; |
| 104 | uart0_default_mode: uart0_default { | 109 | uart0_default_mode: uart0_default { |
| 105 | uart0_default_cfg1 { | 110 | uart0_default_cfg1 { |
| 106 | ste,pins = "GPIO0", "GPIO2"; | 111 | pins = "GPIO0", "GPIO2"; |
| 107 | ste,input = <1>; | 112 | ste,input = <1>; |
| 108 | }; | 113 | }; |
| 109 | 114 | ||
| 110 | uart0_default_cfg2 { | 115 | uart0_default_cfg2 { |
| 111 | ste,pins = "GPIO1", "GPIO3"; | 116 | pins = "GPIO1", "GPIO3"; |
| 112 | ste,output = <1>; | 117 | ste,output = <1>; |
| 113 | }; | 118 | }; |
| 114 | }; | 119 | }; |
| 115 | uart0_sleep_mode: uart0_sleep { | 120 | uart0_sleep_mode: uart0_sleep { |
| 116 | uart0_sleep_cfg1 { | 121 | uart0_sleep_cfg1 { |
| 117 | ste,pins = "GPIO0", "GPIO2"; | 122 | pins = "GPIO0", "GPIO2"; |
| 118 | ste,config = <&slpm_in_wkup_pdis>; | 123 | ste,config = <&slpm_in_wkup_pdis>; |
| 119 | }; | 124 | }; |
| 120 | uart0_sleep_cfg2 { | 125 | uart0_sleep_cfg2 { |
| 121 | ste,pins = "GPIO1"; | 126 | pins = "GPIO1"; |
| 122 | ste,config = <&slpm_out_hi_wkup_pdis>; | 127 | ste,config = <&slpm_out_hi_wkup_pdis>; |
| 123 | }; | 128 | }; |
| 124 | uart0_sleep_cfg3 { | 129 | uart0_sleep_cfg3 { |
| 125 | ste,pins = "GPIO3"; | 130 | pins = "GPIO3"; |
| 126 | ste,config = <&slpm_out_wkup_pdis>; | 131 | ste,config = <&slpm_out_wkup_pdis>; |
| 127 | }; | 132 | }; |
| 128 | }; | 133 | }; |
diff --git a/Documentation/devicetree/bindings/pinctrl/xlnx,zynq-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/xlnx,zynq-pinctrl.txt new file mode 100644 index 000000000000..b7b55a964f65 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/xlnx,zynq-pinctrl.txt | |||
| @@ -0,0 +1,104 @@ | |||
| 1 | Binding for Xilinx Zynq Pinctrl | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible: "xlnx,zynq-pinctrl" | ||
| 5 | - syscon: phandle to SLCR | ||
| 6 | - reg: Offset and length of pinctrl space in SLCR | ||
| 7 | |||
| 8 | Please refer to pinctrl-bindings.txt in this directory for details of the | ||
| 9 | common pinctrl bindings used by client devices, including the meaning of the | ||
| 10 | phrase "pin configuration node". | ||
| 11 | |||
| 12 | Zynq's pin configuration nodes act as a container for an arbitrary number of | ||
| 13 | subnodes. Each of these subnodes represents some desired configuration for a | ||
| 14 | pin, a group, or a list of pins or groups. This configuration can include the | ||
| 15 | mux function to select on those pin(s)/group(s), and various pin configuration | ||
| 16 | parameters, such as pull-up, slew rate, etc. | ||
| 17 | |||
| 18 | Each configuration node can consist of multiple nodes describing the pinmux and | ||
| 19 | pinconf options. Those nodes can be pinmux nodes or pinconf nodes. | ||
| 20 | |||
| 21 | The name of each subnode is not important; all subnodes should be enumerated | ||
| 22 | and processed purely based on their content. | ||
| 23 | |||
| 24 | Required properties for pinmux nodes are: | ||
| 25 | - groups: A list of pinmux groups. | ||
| 26 | - function: The name of a pinmux function to activate for the specified set | ||
| 27 | of groups. | ||
| 28 | |||
| 29 | Required properties for configuration nodes: | ||
| 30 | One of: | ||
| 31 | - pins: a list of pin names | ||
| 32 | - groups: A list of pinmux groups. | ||
| 33 | |||
| 34 | The following generic properties as defined in pinctrl-bindings.txt are valid | ||
| 35 | to specify in a pinmux subnode: | ||
| 36 | groups, function | ||
| 37 | |||
| 38 | The following generic properties as defined in pinctrl-bindings.txt are valid | ||
| 39 | to specify in a pinconf subnode: | ||
| 40 | groups, pins, bias-disable, bias-high-impedance, bias-pull-up, slew-rate, | ||
| 41 | low-power-disable, low-power-enable | ||
| 42 | |||
| 43 | Valid arguments for 'slew-rate' are '0' and '1' to select between slow and fast | ||
| 44 | respectively. | ||
| 45 | |||
| 46 | Valid values for groups are: | ||
| 47 | ethernet0_0_grp, ethernet1_0_grp, mdio0_0_grp, mdio1_0_grp, | ||
| 48 | qspi0_0_grp, qspi1_0_grp, qspi_fbclk, qspi_cs1_grp, spi0_0_grp, | ||
| 49 | spi0_1_grp - spi0_2_grp, spi1_0_grp - spi1_3_grp, sdio0_0_grp - sdio0_2_grp, | ||
| 50 | sdio1_0_grp - sdio1_3_grp, sdio0_emio_wp, sdio0_emio_cd, sdio1_emio_wp, | ||
| 51 | sdio1_emio_cd, smc0_nor, smc0_nor_cs1_grp, smc0_nor_addr25_grp, smc0_nand, | ||
| 52 | can0_0_grp - can0_10_grp, can1_0_grp - can1_11_grp, uart0_0_grp - uart0_10_grp, | ||
| 53 | uart1_0_grp - uart1_11_grp, i2c0_0_grp - i2c0_10_grp, i2c1_0_grp - i2c1_10_grp, | ||
| 54 | ttc0_0_grp - ttc0_2_grp, ttc1_0_grp - ttc1_2_grp, swdt0_0_grp - swdt0_4_grp, | ||
| 55 | gpio0_0_grp - gpio0_53_grp, usb0_0_grp, usb1_0_grp | ||
| 56 | |||
| 57 | Valid values for pins are: | ||
| 58 | MIO0 - MIO53 | ||
| 59 | |||
| 60 | Valid values for function are: | ||
| 61 | ethernet0, ethernet1, mdio0, mdio1, qspi0, qspi1, qspi_fbclk, qspi_cs1, | ||
| 62 | spi0, spi1, sdio0, sdio0_pc, sdio0_cd, sdio0_wp, | ||
| 63 | sdio1, sdio1_pc, sdio1_cd, sdio1_wp, | ||
| 64 | smc0_nor, smc0_nor_cs1, smc0_nor_addr25, smc0_nand, can0, can1, uart0, uart1, | ||
| 65 | i2c0, i2c1, ttc0, ttc1, swdt0, gpio0, usb0, usb1 | ||
| 66 | |||
| 67 | The following driver-specific properties as defined here are valid to specify in | ||
| 68 | a pin configuration subnode: | ||
| 69 | - io-standard: Configure the pin to use the selected IO standard according to | ||
| 70 | this mapping: | ||
| 71 | 1: LVCMOS18 | ||
| 72 | 2: LVCMOS25 | ||
| 73 | 3: LVCMOS33 | ||
| 74 | 4: HSTL | ||
| 75 | |||
| 76 | Example: | ||
| 77 | pinctrl0: pinctrl@700 { | ||
| 78 | compatible = "xlnx,pinctrl-zynq"; | ||
| 79 | reg = <0x700 0x200>; | ||
| 80 | syscon = <&slcr>; | ||
| 81 | |||
| 82 | pinctrl_uart1_default: uart1-default { | ||
| 83 | mux { | ||
| 84 | groups = "uart1_10_grp"; | ||
| 85 | function = "uart1"; | ||
| 86 | }; | ||
| 87 | |||
| 88 | conf { | ||
| 89 | groups = "uart1_10_grp"; | ||
| 90 | slew-rate = <0>; | ||
| 91 | io-standard = <1>; | ||
| 92 | }; | ||
| 93 | |||
| 94 | conf-rx { | ||
| 95 | pins = "MIO49"; | ||
| 96 | bias-high-impedance; | ||
| 97 | }; | ||
| 98 | |||
| 99 | conf-tx { | ||
| 100 | pins = "MIO48"; | ||
| 101 | bias-disable; | ||
| 102 | }; | ||
| 103 | }; | ||
| 104 | }; | ||
diff --git a/Documentation/devicetree/bindings/power/ltc2941.txt b/Documentation/devicetree/bindings/power/ltc2941.txt new file mode 100644 index 000000000000..ea42ae12d924 --- /dev/null +++ b/Documentation/devicetree/bindings/power/ltc2941.txt | |||
| @@ -0,0 +1,27 @@ | |||
| 1 | binding for LTC2941 and LTC2943 battery gauges | ||
| 2 | |||
| 3 | Both the LTC2941 and LTC2943 measure battery capacity. | ||
| 4 | The LTC2943 is compatible with the LTC2941, it adds voltage and | ||
| 5 | temperature monitoring, and uses a slightly different conversion | ||
| 6 | formula for the charge counter. | ||
| 7 | |||
| 8 | Required properties: | ||
| 9 | - compatible: Should contain "ltc2941" or "ltc2943" which also indicates the | ||
| 10 | type of I2C chip attached. | ||
| 11 | - reg: The 7-bit I2C address. | ||
| 12 | - lltc,resistor-sense: The sense resistor value in milli-ohms. Can be a 32-bit | ||
| 13 | negative value when the battery has been connected to the wrong end of the | ||
| 14 | resistor. | ||
| 15 | - lltc,prescaler-exponent: The prescaler exponent as explained in the datasheet. | ||
| 16 | This determines the range and accuracy of the gauge. The value is programmed | ||
| 17 | into the chip only if it differs from the current setting. The setting is | ||
| 18 | lost when the battery is disconnected. | ||
| 19 | |||
| 20 | Example from the Topic Miami Florida board: | ||
| 21 | |||
| 22 | fuelgauge: ltc2943@64 { | ||
| 23 | compatible = "ltc2943"; | ||
| 24 | reg = <0x64>; | ||
| 25 | lltc,resistor-sense = <15>; | ||
| 26 | lltc,prescaler-exponent = <5>; /* 2^(2*5) = 1024 */ | ||
| 27 | }; | ||
diff --git a/Documentation/devicetree/bindings/power/renesas,sysc-rmobile.txt b/Documentation/devicetree/bindings/power/renesas,sysc-rmobile.txt new file mode 100644 index 000000000000..cc3b1f0a9b1a --- /dev/null +++ b/Documentation/devicetree/bindings/power/renesas,sysc-rmobile.txt | |||
| @@ -0,0 +1,99 @@ | |||
| 1 | DT bindings for the Renesas R-Mobile System Controller | ||
| 2 | |||
| 3 | == System Controller Node == | ||
| 4 | |||
| 5 | The R-Mobile System Controller provides the following functions: | ||
| 6 | - Boot mode management, | ||
| 7 | - Reset generation, | ||
| 8 | - Power management. | ||
| 9 | |||
| 10 | Required properties: | ||
| 11 | - compatible: Should be "renesas,sysc-<soctype>", "renesas,sysc-rmobile" as | ||
| 12 | fallback. | ||
| 13 | Examples with soctypes are: | ||
| 14 | - "renesas,sysc-r8a7740" (R-Mobile A1) | ||
| 15 | - "renesas,sysc-sh73a0" (SH-Mobile AG5) | ||
| 16 | - reg: Two address start and address range blocks for the device: | ||
| 17 | - The first block refers to the normally accessible registers, | ||
| 18 | - the second block refers to the registers protected by the HPB | ||
| 19 | semaphore. | ||
| 20 | |||
| 21 | Optional nodes: | ||
| 22 | - pm-domains: This node contains a hierarchy of PM domain nodes, which should | ||
| 23 | match the Power Area Hierarchy in the Power Domain Specifications section of | ||
| 24 | the device's datasheet. | ||
| 25 | |||
| 26 | |||
| 27 | == PM Domain Nodes == | ||
| 28 | |||
| 29 | Each of the PM domain nodes represents a PM domain, as documented by the | ||
| 30 | generic PM domain bindings in | ||
| 31 | Documentation/devicetree/bindings/power/power_domain.txt. | ||
| 32 | |||
| 33 | The nodes should be named by the real power area names, and thus their names | ||
| 34 | should be unique. | ||
| 35 | |||
| 36 | Required properties: | ||
| 37 | - #power-domain-cells: Must be 0. | ||
| 38 | |||
| 39 | Optional properties: | ||
| 40 | - reg: If the PM domain is not always-on, this property must contain the bit | ||
| 41 | index number for the corresponding power area in the various Power | ||
| 42 | Control and Status Registers. The parent's node must contain the | ||
| 43 | following two properties: | ||
| 44 | - #address-cells: Must be 1, | ||
| 45 | - #size-cells: Must be 0. | ||
| 46 | If the PM domain is always-on, this property must be omitted. | ||
| 47 | |||
| 48 | |||
| 49 | Example: | ||
| 50 | |||
| 51 | This shows a subset of the r8a7740 PM domain hierarchy, containing the | ||
| 52 | C5 "always-on" domain, 2 of its subdomains (A4S and A4SU), and the A3SP domain, | ||
| 53 | which is a subdomain of A4S. | ||
| 54 | |||
| 55 | sysc: system-controller@e6180000 { | ||
| 56 | compatible = "renesas,sysc-r8a7740", "renesas,sysc-rmobile"; | ||
| 57 | reg = <0xe6180000 0x8000>, <0xe6188000 0x8000>; | ||
| 58 | |||
| 59 | pm-domains { | ||
| 60 | pd_c5: c5 { | ||
| 61 | #address-cells = <1>; | ||
| 62 | #size-cells = <0>; | ||
| 63 | #power-domain-cells = <0>; | ||
| 64 | |||
| 65 | pd_a4s: a4s@10 { | ||
| 66 | reg = <10>; | ||
| 67 | #address-cells = <1>; | ||
| 68 | #size-cells = <0>; | ||
| 69 | #power-domain-cells = <0>; | ||
| 70 | |||
| 71 | pd_a3sp: a3sp@11 { | ||
| 72 | reg = <11>; | ||
| 73 | #power-domain-cells = <0>; | ||
| 74 | }; | ||
| 75 | }; | ||
| 76 | |||
| 77 | pd_a4su: a4su@20 { | ||
| 78 | reg = <20>; | ||
| 79 | #power-domain-cells = <0>; | ||
| 80 | }; | ||
| 81 | }; | ||
| 82 | }; | ||
| 83 | }; | ||
| 84 | |||
| 85 | |||
| 86 | == PM Domain Consumers == | ||
| 87 | |||
| 88 | Hardware blocks belonging to a PM domain should contain a "power-domains" | ||
| 89 | property that is a phandle pointing to the corresponding PM domain node. | ||
| 90 | |||
| 91 | Example: | ||
| 92 | |||
| 93 | tpu: pwm@e6600000 { | ||
| 94 | compatible = "renesas,tpu-r8a7740", "renesas,tpu"; | ||
| 95 | reg = <0xe6600000 0x100>; | ||
| 96 | clocks = <&mstp3_clks R8A7740_CLK_TPU0>; | ||
| 97 | power-domains = <&pd_a3sp>; | ||
| 98 | #pwm-cells = <3>; | ||
| 99 | }; | ||
diff --git a/Documentation/devicetree/bindings/power/reset/ltc2952-poweroff.txt b/Documentation/devicetree/bindings/power/reset/ltc2952-poweroff.txt index 0c94c637f63b..cd2d7f58a9d7 100644 --- a/Documentation/devicetree/bindings/power/reset/ltc2952-poweroff.txt +++ b/Documentation/devicetree/bindings/power/reset/ltc2952-poweroff.txt | |||
| @@ -1,20 +1,23 @@ | |||
| 1 | Binding for the LTC2952 PowerPath controller | 1 | Binding for the LTC2952 PowerPath controller |
| 2 | 2 | ||
| 3 | This chip is used to externally trigger a system shut down. Once the trigger has | 3 | This chip is used to externally trigger a system shut down. Once the trigger has |
| 4 | been sent, the chips' watchdog has to be reset to gracefully shut down. | 4 | been sent, the chip's watchdog has to be reset to gracefully shut down. |
| 5 | If the Linux systems decides to shut down it powers off the platform via the | 5 | A full powerdown can be triggered via the kill signal. |
| 6 | kill signal. | ||
| 7 | 6 | ||
| 8 | Required properties: | 7 | Required properties: |
| 9 | 8 | ||
| 10 | - compatible: Must contain: "lltc,ltc2952" | 9 | - compatible: Must contain: "lltc,ltc2952" |
| 11 | - trigger-gpios: phandle + gpio-specifier for the GPIO connected to the | ||
| 12 | chip's trigger line | ||
| 13 | - watchdog-gpios: phandle + gpio-specifier for the GPIO connected to the | 10 | - watchdog-gpios: phandle + gpio-specifier for the GPIO connected to the |
| 14 | chip's watchdog line | 11 | chip's watchdog line |
| 15 | - kill-gpios: phandle + gpio-specifier for the GPIO connected to the | 12 | - kill-gpios: phandle + gpio-specifier for the GPIO connected to the |
| 16 | chip's kill line | 13 | chip's kill line |
| 17 | 14 | ||
| 15 | Optional properties: | ||
| 16 | - trigger-gpios: phandle + gpio-specifier for the GPIO connected to the | ||
| 17 | chip's trigger line. If this property is not set, the | ||
| 18 | trigger function is ignored and the chip is kept alive | ||
| 19 | until an explicit kill signal is received | ||
| 20 | |||
| 18 | Example: | 21 | Example: |
| 19 | 22 | ||
| 20 | ltc2952 { | 23 | ltc2952 { |
diff --git a/Documentation/devicetree/bindings/power/rockchip-io-domain.txt b/Documentation/devicetree/bindings/power/rockchip-io-domain.txt index 6fbf6e7ecde6..8b70db103ca7 100644 --- a/Documentation/devicetree/bindings/power/rockchip-io-domain.txt +++ b/Documentation/devicetree/bindings/power/rockchip-io-domain.txt | |||
| @@ -37,7 +37,7 @@ Required properties: | |||
| 37 | 37 | ||
| 38 | 38 | ||
| 39 | You specify supplies using the standard regulator bindings by including | 39 | You specify supplies using the standard regulator bindings by including |
| 40 | a phandle the the relevant regulator. All specified supplies must be able | 40 | a phandle the relevant regulator. All specified supplies must be able |
| 41 | to report their voltage. The IO Voltage Domain for any non-specified | 41 | to report their voltage. The IO Voltage Domain for any non-specified |
| 42 | supplies will be not be touched. | 42 | supplies will be not be touched. |
| 43 | 43 | ||
diff --git a/Documentation/devicetree/bindings/powerpc/fsl/fman.txt b/Documentation/devicetree/bindings/powerpc/fsl/fman.txt index edeea160ca39..edda55f74004 100644 --- a/Documentation/devicetree/bindings/powerpc/fsl/fman.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/fman.txt | |||
| @@ -7,6 +7,7 @@ CONTENTS | |||
| 7 | - FMan MURAM Node | 7 | - FMan MURAM Node |
| 8 | - FMan dTSEC/XGEC/mEMAC Node | 8 | - FMan dTSEC/XGEC/mEMAC Node |
| 9 | - FMan IEEE 1588 Node | 9 | - FMan IEEE 1588 Node |
| 10 | - FMan MDIO Node | ||
| 10 | - Example | 11 | - Example |
| 11 | 12 | ||
| 12 | ============================================================================= | 13 | ============================================================================= |
| @@ -357,6 +358,69 @@ ptp-timer@fe000 { | |||
| 357 | }; | 358 | }; |
| 358 | 359 | ||
| 359 | ============================================================================= | 360 | ============================================================================= |
| 361 | FMan MDIO Node | ||
| 362 | |||
| 363 | DESCRIPTION | ||
| 364 | |||
| 365 | The MDIO is a bus to which the PHY devices are connected. | ||
| 366 | |||
| 367 | PROPERTIES | ||
| 368 | |||
| 369 | - compatible | ||
| 370 | Usage: required | ||
| 371 | Value type: <stringlist> | ||
| 372 | Definition: A standard property. | ||
| 373 | Must include "fsl,fman-mdio" for 1 Gb/s MDIO from FMan v2. | ||
| 374 | Must include "fsl,fman-xmdio" for 10 Gb/s MDIO from FMan v2. | ||
| 375 | Must include "fsl,fman-memac-mdio" for 1/10 Gb/s MDIO from | ||
| 376 | FMan v3. | ||
| 377 | |||
| 378 | - reg | ||
| 379 | Usage: required | ||
| 380 | Value type: <prop-encoded-array> | ||
| 381 | Definition: A standard property. | ||
| 382 | |||
| 383 | - bus-frequency | ||
| 384 | Usage: optional | ||
| 385 | Value type: <u32> | ||
| 386 | Definition: Specifies the external MDIO bus clock speed to | ||
| 387 | be used, if different from the standard 2.5 MHz. | ||
| 388 | This may be due to the standard speed being unsupported (e.g. | ||
| 389 | due to a hardware problem), or to advertise that all relevant | ||
| 390 | components in the system support a faster speed. | ||
| 391 | |||
| 392 | - interrupts | ||
| 393 | Usage: required for external MDIO | ||
| 394 | Value type: <prop-encoded-array> | ||
| 395 | Definition: Event interrupt of external MDIO controller. | ||
| 396 | |||
| 397 | - fsl,fman-internal-mdio | ||
| 398 | Usage: required for internal MDIO | ||
| 399 | Value type: boolean | ||
| 400 | Definition: Fman has internal MDIO for internal PCS(Physical | ||
| 401 | Coding Sublayer) PHYs and external MDIO for external PHYs. | ||
| 402 | The settings and programming routines for internal/external | ||
| 403 | MDIO are different. Must be included for internal MDIO. | ||
| 404 | |||
| 405 | EXAMPLE | ||
| 406 | |||
| 407 | Example for FMan v2 external MDIO: | ||
| 408 | |||
| 409 | mdio@f1000 { | ||
| 410 | compatible = "fsl,fman-xmdio"; | ||
| 411 | reg = <0xf1000 0x1000>; | ||
| 412 | interrupts = <101 2 0 0>; | ||
| 413 | }; | ||
| 414 | |||
| 415 | Example for FMan v3 internal MDIO: | ||
| 416 | |||
| 417 | mdio@f1000 { | ||
| 418 | compatible = "fsl,fman-memac-mdio"; | ||
| 419 | reg = <0xf1000 0x1000>; | ||
| 420 | fsl,fman-internal-mdio; | ||
| 421 | }; | ||
| 422 | |||
| 423 | ============================================================================= | ||
| 360 | Example | 424 | Example |
| 361 | 425 | ||
| 362 | fman@400000 { | 426 | fman@400000 { |
| @@ -531,4 +595,10 @@ fman@400000 { | |||
| 531 | compatible = "fsl,fman-ptp-timer"; | 595 | compatible = "fsl,fman-ptp-timer"; |
| 532 | reg = <0xfe000 0x1000>; | 596 | reg = <0xfe000 0x1000>; |
| 533 | }; | 597 | }; |
| 598 | |||
| 599 | mdio@f1000 { | ||
| 600 | compatible = "fsl,fman-xmdio"; | ||
| 601 | reg = <0xf1000 0x1000>; | ||
| 602 | interrupts = <101 2 0 0>; | ||
| 603 | }; | ||
| 534 | }; | 604 | }; |
diff --git a/Documentation/devicetree/bindings/powerpc/fsl/lbc.txt b/Documentation/devicetree/bindings/powerpc/fsl/lbc.txt index 3300fec501c5..1c80fcedebb5 100644 --- a/Documentation/devicetree/bindings/powerpc/fsl/lbc.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/lbc.txt | |||
| @@ -16,20 +16,28 @@ Example: | |||
| 16 | "fsl,pq2-localbus"; | 16 | "fsl,pq2-localbus"; |
| 17 | #address-cells = <2>; | 17 | #address-cells = <2>; |
| 18 | #size-cells = <1>; | 18 | #size-cells = <1>; |
| 19 | reg = <f0010100 40>; | 19 | reg = <0xf0010100 0x40>; |
| 20 | 20 | ||
| 21 | ranges = <0 0 fe000000 02000000 | 21 | ranges = <0x0 0x0 0xfe000000 0x02000000 |
| 22 | 1 0 f4500000 00008000>; | 22 | 0x1 0x0 0xf4500000 0x00008000 |
| 23 | 0x2 0x0 0xfd810000 0x00010000>; | ||
| 23 | 24 | ||
| 24 | flash@0,0 { | 25 | flash@0,0 { |
| 25 | compatible = "jedec-flash"; | 26 | compatible = "jedec-flash"; |
| 26 | reg = <0 0 2000000>; | 27 | reg = <0x0 0x0 0x2000000>; |
| 27 | bank-width = <4>; | 28 | bank-width = <4>; |
| 28 | device-width = <1>; | 29 | device-width = <1>; |
| 29 | }; | 30 | }; |
| 30 | 31 | ||
| 31 | board-control@1,0 { | 32 | board-control@1,0 { |
| 32 | reg = <1 0 20>; | 33 | reg = <0x1 0x0 0x20>; |
| 33 | compatible = "fsl,mpc8272ads-bcsr"; | 34 | compatible = "fsl,mpc8272ads-bcsr"; |
| 34 | }; | 35 | }; |
| 36 | |||
| 37 | simple-periph@2,0 { | ||
| 38 | compatible = "fsl,elbc-gpcm-uio"; | ||
| 39 | reg = <0x2 0x0 0x10000>; | ||
| 40 | elbc-gpcm-br = <0xfd810800>; | ||
| 41 | elbc-gpcm-or = <0xffff09f7>; | ||
| 42 | }; | ||
| 35 | }; | 43 | }; |
diff --git a/Documentation/devicetree/bindings/pwm/img-pwm.txt b/Documentation/devicetree/bindings/pwm/img-pwm.txt new file mode 100644 index 000000000000..fade5f26fcac --- /dev/null +++ b/Documentation/devicetree/bindings/pwm/img-pwm.txt | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | *Imagination Technologies PWM DAC driver | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible: Should be "img,pistachio-pwm" | ||
| 5 | - reg: Should contain physical base address and length of pwm registers. | ||
| 6 | - clocks: Must contain an entry for each entry in clock-names. | ||
| 7 | See ../clock/clock-bindings.txt for details. | ||
| 8 | - clock-names: Must include the following entries. | ||
| 9 | - pwm: PWM operating clock. | ||
| 10 | - sys: PWM system interface clock. | ||
| 11 | - #pwm-cells: Should be 2. See pwm.txt in this directory for the | ||
| 12 | description of the cells format. | ||
| 13 | - img,cr-periph: Must contain a phandle to the peripheral control | ||
| 14 | syscon node which contains PWM control registers. | ||
| 15 | |||
| 16 | Example: | ||
| 17 | pwm: pwm@18101300 { | ||
| 18 | compatible = "img,pistachio-pwm"; | ||
| 19 | reg = <0x18101300 0x100>; | ||
| 20 | clocks = <&pwm_clk>, <&system_clk>; | ||
| 21 | clock-names = "pwm", "sys"; | ||
| 22 | #pwm-cells = <2>; | ||
| 23 | img,cr-periph = <&cr_periph>; | ||
| 24 | }; | ||
diff --git a/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt b/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt index c7ea9d4a988b..c52f03b5032f 100644 --- a/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt +++ b/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt | |||
| @@ -1,9 +1,10 @@ | |||
| 1 | Tegra SoC PWFM controller | 1 | Tegra SoC PWFM controller |
| 2 | 2 | ||
| 3 | Required properties: | 3 | Required properties: |
| 4 | - compatible: should be one of: | 4 | - compatible: For Tegra20, must contain "nvidia,tegra20-pwm". For Tegra30, |
| 5 | - "nvidia,tegra20-pwm" | 5 | must contain "nvidia,tegra30-pwm". Otherwise, must contain |
| 6 | - "nvidia,tegra30-pwm" | 6 | "nvidia,<chip>-pwm", plus one of the above, where <chip> is tegra114, |
| 7 | tegra124, tegra132, or tegra210. | ||
| 7 | - reg: physical base address and length of the controller's registers | 8 | - reg: physical base address and length of the controller's registers |
| 8 | - #pwm-cells: should be 2. See pwm.txt in this directory for a description of | 9 | - #pwm-cells: should be 2. See pwm.txt in this directory for a description of |
| 9 | the cells format. | 10 | the cells format. |
diff --git a/Documentation/devicetree/bindings/pwm/pwm-sun4i.txt b/Documentation/devicetree/bindings/pwm/pwm-sun4i.txt new file mode 100644 index 000000000000..ae0273e19506 --- /dev/null +++ b/Documentation/devicetree/bindings/pwm/pwm-sun4i.txt | |||
| @@ -0,0 +1,20 @@ | |||
| 1 | Allwinner sun4i and sun7i SoC PWM controller | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible: should be one of: | ||
| 5 | - "allwinner,sun4i-a10-pwm" | ||
| 6 | - "allwinner,sun7i-a20-pwm" | ||
| 7 | - reg: physical base address and length of the controller's registers | ||
| 8 | - #pwm-cells: should be 3. See pwm.txt in this directory for a description of | ||
| 9 | the cells format. | ||
| 10 | - clocks: From common clock binding, handle to the parent clock. | ||
| 11 | |||
| 12 | Example: | ||
| 13 | |||
| 14 | pwm: pwm@01c20e00 { | ||
| 15 | compatible = "allwinner,sun7i-a20-pwm"; | ||
| 16 | reg = <0x01c20e00 0xc>; | ||
| 17 | clocks = <&osc24M>; | ||
| 18 | #pwm-cells = <3>; | ||
| 19 | status = "disabled"; | ||
| 20 | }; | ||
diff --git a/Documentation/devicetree/bindings/regulator/da9211.txt b/Documentation/devicetree/bindings/regulator/da9211.txt index 240019a82f9a..eb618907c7de 100644 --- a/Documentation/devicetree/bindings/regulator/da9211.txt +++ b/Documentation/devicetree/bindings/regulator/da9211.txt | |||
| @@ -11,6 +11,7 @@ Required properties: | |||
| 11 | BUCKA and BUCKB. | 11 | BUCKA and BUCKB. |
| 12 | 12 | ||
| 13 | Optional properties: | 13 | Optional properties: |
| 14 | - enable-gpios: platform gpio for control of BUCKA/BUCKB. | ||
| 14 | - Any optional property defined in regulator.txt | 15 | - Any optional property defined in regulator.txt |
| 15 | 16 | ||
| 16 | Example 1) DA9211 | 17 | Example 1) DA9211 |
| @@ -27,6 +28,7 @@ Example 1) DA9211 | |||
| 27 | regulator-max-microvolt = <1570000>; | 28 | regulator-max-microvolt = <1570000>; |
| 28 | regulator-min-microamp = <2000000>; | 29 | regulator-min-microamp = <2000000>; |
| 29 | regulator-max-microamp = <5000000>; | 30 | regulator-max-microamp = <5000000>; |
| 31 | enable-gpios = <&gpio 27 0>; | ||
| 30 | }; | 32 | }; |
| 31 | BUCKB { | 33 | BUCKB { |
| 32 | regulator-name = "VBUCKB"; | 34 | regulator-name = "VBUCKB"; |
| @@ -34,11 +36,12 @@ Example 1) DA9211 | |||
| 34 | regulator-max-microvolt = <1570000>; | 36 | regulator-max-microvolt = <1570000>; |
| 35 | regulator-min-microamp = <2000000>; | 37 | regulator-min-microamp = <2000000>; |
| 36 | regulator-max-microamp = <5000000>; | 38 | regulator-max-microamp = <5000000>; |
| 39 | enable-gpios = <&gpio 17 0>; | ||
| 37 | }; | 40 | }; |
| 38 | }; | 41 | }; |
| 39 | }; | 42 | }; |
| 40 | 43 | ||
| 41 | Example 2) DA92113 | 44 | Example 2) DA9213 |
| 42 | pmic: da9213@68 { | 45 | pmic: da9213@68 { |
| 43 | compatible = "dlg,da9213"; | 46 | compatible = "dlg,da9213"; |
| 44 | reg = <0x68>; | 47 | reg = <0x68>; |
| @@ -51,6 +54,7 @@ Example 2) DA92113 | |||
| 51 | regulator-max-microvolt = <1570000>; | 54 | regulator-max-microvolt = <1570000>; |
| 52 | regulator-min-microamp = <3000000>; | 55 | regulator-min-microamp = <3000000>; |
| 53 | regulator-max-microamp = <6000000>; | 56 | regulator-max-microamp = <6000000>; |
| 57 | enable-gpios = <&gpio 27 0>; | ||
| 54 | }; | 58 | }; |
| 55 | BUCKB { | 59 | BUCKB { |
| 56 | regulator-name = "VBUCKB"; | 60 | regulator-name = "VBUCKB"; |
| @@ -58,6 +62,7 @@ Example 2) DA92113 | |||
| 58 | regulator-max-microvolt = <1570000>; | 62 | regulator-max-microvolt = <1570000>; |
| 59 | regulator-min-microamp = <3000000>; | 63 | regulator-min-microamp = <3000000>; |
| 60 | regulator-max-microamp = <6000000>; | 64 | regulator-max-microamp = <6000000>; |
| 65 | enable-gpios = <&gpio 17 0>; | ||
| 61 | }; | 66 | }; |
| 62 | }; | 67 | }; |
| 63 | }; | 68 | }; |
diff --git a/Documentation/devicetree/bindings/regulator/isl9305.txt b/Documentation/devicetree/bindings/regulator/isl9305.txt index a626fc1bbf0d..d6e7c9ec9413 100644 --- a/Documentation/devicetree/bindings/regulator/isl9305.txt +++ b/Documentation/devicetree/bindings/regulator/isl9305.txt | |||
| @@ -2,7 +2,7 @@ Intersil ISL9305/ISL9305H voltage regulator | |||
| 2 | 2 | ||
| 3 | Required properties: | 3 | Required properties: |
| 4 | 4 | ||
| 5 | - compatible: "isl,isl9305" or "isl,isl9305h" | 5 | - compatible: "isil,isl9305" or "isil,isl9305h" |
| 6 | - reg: I2C slave address, usually 0x68. | 6 | - reg: I2C slave address, usually 0x68. |
| 7 | - regulators: A node that houses a sub-node for each regulator within the | 7 | - regulators: A node that houses a sub-node for each regulator within the |
| 8 | device. Each sub-node is identified using the node's name, with valid | 8 | device. Each sub-node is identified using the node's name, with valid |
| @@ -19,7 +19,7 @@ Optional properties: | |||
| 19 | Example | 19 | Example |
| 20 | 20 | ||
| 21 | pmic: isl9305@68 { | 21 | pmic: isl9305@68 { |
| 22 | compatible = "isl,isl9305"; | 22 | compatible = "isil,isl9305"; |
| 23 | reg = <0x68>; | 23 | reg = <0x68>; |
| 24 | 24 | ||
| 25 | VINDCD1-supply = <&system_power>; | 25 | VINDCD1-supply = <&system_power>; |
diff --git a/Documentation/devicetree/bindings/regulator/mt6397-regulator.txt b/Documentation/devicetree/bindings/regulator/mt6397-regulator.txt new file mode 100644 index 000000000000..a42b1d6e9863 --- /dev/null +++ b/Documentation/devicetree/bindings/regulator/mt6397-regulator.txt | |||
| @@ -0,0 +1,217 @@ | |||
| 1 | Mediatek MT6397 Regulator Driver | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible: "mediatek,mt6397-regulator" | ||
| 5 | - mt6397regulator: List of regulators provided by this controller. It is named | ||
| 6 | according to its regulator type, buck_<name> and ldo_<name>. | ||
| 7 | The definition for each of these nodes is defined using the standard binding | ||
| 8 | for regulators at Documentation/devicetree/bindings/regulator/regulator.txt. | ||
| 9 | |||
| 10 | The valid names for regulators are:: | ||
| 11 | BUCK: | ||
| 12 | buck_vpca15, buck_vpca7, buck_vsramca15, buck_vsramca7, buck_vcore, buck_vgpu, | ||
| 13 | buck_vdrm, buck_vio18 | ||
| 14 | LDO: | ||
| 15 | ldo_vtcxo, ldo_va28, ldo_vcama, ldo_vio28, ldo_vusb, ldo_vmc, ldo_vmch, | ||
| 16 | ldo_vemc3v3, ldo_vgp1, ldo_vgp2, ldo_vgp3, ldo_vgp4, ldo_vgp5, ldo_vgp6, | ||
| 17 | ldo_vibr | ||
| 18 | |||
| 19 | Example: | ||
| 20 | pmic { | ||
| 21 | compatible = "mediatek,mt6397"; | ||
| 22 | |||
| 23 | mt6397regulator: mt6397regulator { | ||
| 24 | compatible = "mediatek,mt6397-regulator"; | ||
| 25 | |||
| 26 | mt6397_vpca15_reg: buck_vpca15 { | ||
| 27 | regulator-compatible = "buck_vpca15"; | ||
| 28 | regulator-name = "vpca15"; | ||
| 29 | regulator-min-microvolt = < 850000>; | ||
| 30 | regulator-max-microvolt = <1350000>; | ||
| 31 | regulator-ramp-delay = <12500>; | ||
| 32 | regulator-enable-ramp-delay = <200>; | ||
| 33 | }; | ||
| 34 | |||
| 35 | mt6397_vpca7_reg: buck_vpca7 { | ||
| 36 | regulator-compatible = "buck_vpca7"; | ||
| 37 | regulator-name = "vpca7"; | ||
| 38 | regulator-min-microvolt = < 850000>; | ||
| 39 | regulator-max-microvolt = <1350000>; | ||
| 40 | regulator-ramp-delay = <12500>; | ||
| 41 | regulator-enable-ramp-delay = <115>; | ||
| 42 | }; | ||
| 43 | |||
| 44 | mt6397_vsramca15_reg: buck_vsramca15 { | ||
| 45 | regulator-compatible = "buck_vsramca15"; | ||
| 46 | regulator-name = "vsramca15"; | ||
| 47 | regulator-min-microvolt = < 850000>; | ||
| 48 | regulator-max-microvolt = <1350000>; | ||
| 49 | regulator-ramp-delay = <12500>; | ||
| 50 | regulator-enable-ramp-delay = <115>; | ||
| 51 | |||
| 52 | }; | ||
| 53 | |||
| 54 | mt6397_vsramca7_reg: buck_vsramca7 { | ||
| 55 | regulator-compatible = "buck_vsramca7"; | ||
| 56 | regulator-name = "vsramca7"; | ||
| 57 | regulator-min-microvolt = < 850000>; | ||
| 58 | regulator-max-microvolt = <1350000>; | ||
| 59 | regulator-ramp-delay = <12500>; | ||
| 60 | regulator-enable-ramp-delay = <115>; | ||
| 61 | |||
| 62 | }; | ||
| 63 | |||
| 64 | mt6397_vcore_reg: buck_vcore { | ||
| 65 | regulator-compatible = "buck_vcore"; | ||
| 66 | regulator-name = "vcore"; | ||
| 67 | regulator-min-microvolt = < 850000>; | ||
| 68 | regulator-max-microvolt = <1350000>; | ||
| 69 | regulator-ramp-delay = <12500>; | ||
| 70 | regulator-enable-ramp-delay = <115>; | ||
| 71 | }; | ||
| 72 | |||
| 73 | mt6397_vgpu_reg: buck_vgpu { | ||
| 74 | regulator-compatible = "buck_vgpu"; | ||
| 75 | regulator-name = "vgpu"; | ||
| 76 | regulator-min-microvolt = < 700000>; | ||
| 77 | regulator-max-microvolt = <1350000>; | ||
| 78 | regulator-ramp-delay = <12500>; | ||
| 79 | regulator-enable-ramp-delay = <115>; | ||
| 80 | }; | ||
| 81 | |||
| 82 | mt6397_vdrm_reg: buck_vdrm { | ||
| 83 | regulator-compatible = "buck_vdrm"; | ||
| 84 | regulator-name = "vdrm"; | ||
| 85 | regulator-min-microvolt = < 800000>; | ||
| 86 | regulator-max-microvolt = <1400000>; | ||
| 87 | regulator-ramp-delay = <12500>; | ||
| 88 | regulator-enable-ramp-delay = <500>; | ||
| 89 | }; | ||
| 90 | |||
| 91 | mt6397_vio18_reg: buck_vio18 { | ||
| 92 | regulator-compatible = "buck_vio18"; | ||
| 93 | regulator-name = "vio18"; | ||
| 94 | regulator-min-microvolt = <1500000>; | ||
| 95 | regulator-max-microvolt = <2120000>; | ||
| 96 | regulator-ramp-delay = <12500>; | ||
| 97 | regulator-enable-ramp-delay = <500>; | ||
| 98 | }; | ||
| 99 | |||
| 100 | mt6397_vtcxo_reg: ldo_vtcxo { | ||
| 101 | regulator-compatible = "ldo_vtcxo"; | ||
| 102 | regulator-name = "vtcxo"; | ||
| 103 | regulator-min-microvolt = <2800000>; | ||
| 104 | regulator-max-microvolt = <2800000>; | ||
| 105 | regulator-enable-ramp-delay = <90>; | ||
| 106 | }; | ||
| 107 | |||
| 108 | mt6397_va28_reg: ldo_va28 { | ||
| 109 | regulator-compatible = "ldo_va28"; | ||
| 110 | regulator-name = "va28"; | ||
| 111 | /* fixed output 2.8 V */ | ||
| 112 | regulator-enable-ramp-delay = <218>; | ||
| 113 | }; | ||
| 114 | |||
| 115 | mt6397_vcama_reg: ldo_vcama { | ||
| 116 | regulator-compatible = "ldo_vcama"; | ||
| 117 | regulator-name = "vcama"; | ||
| 118 | regulator-min-microvolt = <1500000>; | ||
| 119 | regulator-max-microvolt = <2800000>; | ||
| 120 | regulator-enable-ramp-delay = <218>; | ||
| 121 | }; | ||
| 122 | |||
| 123 | mt6397_vio28_reg: ldo_vio28 { | ||
| 124 | regulator-compatible = "ldo_vio28"; | ||
| 125 | regulator-name = "vio28"; | ||
| 126 | /* fixed output 2.8 V */ | ||
| 127 | regulator-enable-ramp-delay = <240>; | ||
| 128 | }; | ||
| 129 | |||
| 130 | mt6397_usb_reg: ldo_vusb { | ||
| 131 | regulator-compatible = "ldo_vusb"; | ||
| 132 | regulator-name = "vusb"; | ||
| 133 | /* fixed output 3.3 V */ | ||
| 134 | regulator-enable-ramp-delay = <218>; | ||
| 135 | }; | ||
| 136 | |||
| 137 | mt6397_vmc_reg: ldo_vmc { | ||
| 138 | regulator-compatible = "ldo_vmc"; | ||
| 139 | regulator-name = "vmc"; | ||
| 140 | regulator-min-microvolt = <1800000>; | ||
| 141 | regulator-max-microvolt = <3300000>; | ||
| 142 | regulator-enable-ramp-delay = <218>; | ||
| 143 | }; | ||
| 144 | |||
| 145 | mt6397_vmch_reg: ldo_vmch { | ||
| 146 | regulator-compatible = "ldo_vmch"; | ||
| 147 | regulator-name = "vmch"; | ||
| 148 | regulator-min-microvolt = <3000000>; | ||
| 149 | regulator-max-microvolt = <3300000>; | ||
| 150 | regulator-enable-ramp-delay = <218>; | ||
| 151 | }; | ||
| 152 | |||
| 153 | mt6397_vemc_3v3_reg: ldo_vemc3v3 { | ||
| 154 | regulator-compatible = "ldo_vemc3v3"; | ||
| 155 | regulator-name = "vemc_3v3"; | ||
| 156 | regulator-min-microvolt = <3000000>; | ||
| 157 | regulator-max-microvolt = <3300000>; | ||
| 158 | regulator-enable-ramp-delay = <218>; | ||
| 159 | }; | ||
| 160 | |||
| 161 | mt6397_vgp1_reg: ldo_vgp1 { | ||
| 162 | regulator-compatible = "ldo_vgp1"; | ||
| 163 | regulator-name = "vcamd"; | ||
| 164 | regulator-min-microvolt = <1220000>; | ||
| 165 | regulator-max-microvolt = <3300000>; | ||
| 166 | regulator-enable-ramp-delay = <240>; | ||
| 167 | }; | ||
| 168 | |||
| 169 | mt6397_vgp2_reg: ldo_vgp2 { | ||
| 170 | egulator-compatible = "ldo_vgp2"; | ||
| 171 | regulator-name = "vcamio"; | ||
| 172 | regulator-min-microvolt = <1000000>; | ||
| 173 | regulator-max-microvolt = <3300000>; | ||
| 174 | regulator-enable-ramp-delay = <218>; | ||
| 175 | }; | ||
| 176 | |||
| 177 | mt6397_vgp3_reg: ldo_vgp3 { | ||
| 178 | regulator-compatible = "ldo_vgp3"; | ||
| 179 | regulator-name = "vcamaf"; | ||
| 180 | regulator-min-microvolt = <1200000>; | ||
| 181 | regulator-max-microvolt = <3300000>; | ||
| 182 | regulator-enable-ramp-delay = <218>; | ||
| 183 | }; | ||
| 184 | |||
| 185 | mt6397_vgp4_reg: ldo_vgp4 { | ||
| 186 | regulator-compatible = "ldo_vgp4"; | ||
| 187 | regulator-name = "vgp4"; | ||
| 188 | regulator-min-microvolt = <1200000>; | ||
| 189 | regulator-max-microvolt = <3300000>; | ||
| 190 | regulator-enable-ramp-delay = <218>; | ||
| 191 | }; | ||
| 192 | |||
| 193 | mt6397_vgp5_reg: ldo_vgp5 { | ||
| 194 | regulator-compatible = "ldo_vgp5"; | ||
| 195 | regulator-name = "vgp5"; | ||
| 196 | regulator-min-microvolt = <1200000>; | ||
| 197 | regulator-max-microvolt = <3000000>; | ||
| 198 | regulator-enable-ramp-delay = <218>; | ||
| 199 | }; | ||
| 200 | |||
| 201 | mt6397_vgp6_reg: ldo_vgp6 { | ||
| 202 | regulator-compatible = "ldo_vgp6"; | ||
| 203 | regulator-name = "vgp6"; | ||
| 204 | regulator-min-microvolt = <1200000>; | ||
| 205 | regulator-max-microvolt = <3300000>; | ||
| 206 | regulator-enable-ramp-delay = <218>; | ||
| 207 | }; | ||
| 208 | |||
| 209 | mt6397_vibr_reg: ldo_vibr { | ||
| 210 | regulator-compatible = "ldo_vibr"; | ||
| 211 | regulator-name = "vibr"; | ||
| 212 | regulator-min-microvolt = <1200000>; | ||
| 213 | regulator-max-microvolt = <3300000>; | ||
| 214 | regulator-enable-ramp-delay = <218>; | ||
| 215 | }; | ||
| 216 | }; | ||
| 217 | }; | ||
diff --git a/Documentation/devicetree/bindings/regulator/pfuze100.txt b/Documentation/devicetree/bindings/regulator/pfuze100.txt index 34ef5d16d0f1..9b40db88f637 100644 --- a/Documentation/devicetree/bindings/regulator/pfuze100.txt +++ b/Documentation/devicetree/bindings/regulator/pfuze100.txt | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | PFUZE100 family of regulators | 1 | PFUZE100 family of regulators |
| 2 | 2 | ||
| 3 | Required properties: | 3 | Required properties: |
| 4 | - compatible: "fsl,pfuze100" or "fsl,pfuze200" | 4 | - compatible: "fsl,pfuze100", "fsl,pfuze200", "fsl,pfuze3000" |
| 5 | - reg: I2C slave address | 5 | - reg: I2C slave address |
| 6 | 6 | ||
| 7 | Required child node: | 7 | Required child node: |
| @@ -14,6 +14,8 @@ Required child node: | |||
| 14 | sw1ab,sw1c,sw2,sw3a,sw3b,sw4,swbst,vsnvs,vrefddr,vgen1~vgen6 | 14 | sw1ab,sw1c,sw2,sw3a,sw3b,sw4,swbst,vsnvs,vrefddr,vgen1~vgen6 |
| 15 | --PFUZE200 | 15 | --PFUZE200 |
| 16 | sw1ab,sw2,sw3a,sw3b,swbst,vsnvs,vrefddr,vgen1~vgen6 | 16 | sw1ab,sw2,sw3a,sw3b,swbst,vsnvs,vrefddr,vgen1~vgen6 |
| 17 | --PFUZE3000 | ||
| 18 | sw1a,sw1b,sw2,sw3,swbst,vsnvs,vrefddr,vldo1,vldo2,vccsd,v33,vldo3,vldo4 | ||
| 17 | 19 | ||
| 18 | Each regulator is defined using the standard binding for regulators. | 20 | Each regulator is defined using the standard binding for regulators. |
| 19 | 21 | ||
| @@ -205,3 +207,93 @@ Example 2: PFUZE200 | |||
| 205 | }; | 207 | }; |
| 206 | }; | 208 | }; |
| 207 | }; | 209 | }; |
| 210 | |||
| 211 | Example 3: PFUZE3000 | ||
| 212 | |||
| 213 | pmic: pfuze3000@08 { | ||
| 214 | compatible = "fsl,pfuze3000"; | ||
| 215 | reg = <0x08>; | ||
| 216 | |||
| 217 | regulators { | ||
| 218 | sw1a_reg: sw1a { | ||
| 219 | regulator-min-microvolt = <700000>; | ||
| 220 | regulator-max-microvolt = <1475000>; | ||
| 221 | regulator-boot-on; | ||
| 222 | regulator-always-on; | ||
| 223 | regulator-ramp-delay = <6250>; | ||
| 224 | }; | ||
| 225 | /* use sw1c_reg to align with pfuze100/pfuze200 */ | ||
| 226 | sw1c_reg: sw1b { | ||
| 227 | regulator-min-microvolt = <700000>; | ||
| 228 | regulator-max-microvolt = <1475000>; | ||
| 229 | regulator-boot-on; | ||
| 230 | regulator-always-on; | ||
| 231 | regulator-ramp-delay = <6250>; | ||
| 232 | }; | ||
| 233 | |||
| 234 | sw2_reg: sw2 { | ||
| 235 | regulator-min-microvolt = <2500000>; | ||
| 236 | regulator-max-microvolt = <3300000>; | ||
| 237 | regulator-boot-on; | ||
| 238 | regulator-always-on; | ||
| 239 | }; | ||
| 240 | |||
| 241 | sw3a_reg: sw3 { | ||
| 242 | regulator-min-microvolt = <900000>; | ||
| 243 | regulator-max-microvolt = <1650000>; | ||
| 244 | regulator-boot-on; | ||
| 245 | regulator-always-on; | ||
| 246 | }; | ||
| 247 | |||
| 248 | swbst_reg: swbst { | ||
| 249 | regulator-min-microvolt = <5000000>; | ||
| 250 | regulator-max-microvolt = <5150000>; | ||
| 251 | }; | ||
| 252 | |||
| 253 | snvs_reg: vsnvs { | ||
| 254 | regulator-min-microvolt = <1000000>; | ||
| 255 | regulator-max-microvolt = <3000000>; | ||
| 256 | regulator-boot-on; | ||
| 257 | regulator-always-on; | ||
| 258 | }; | ||
| 259 | |||
| 260 | vref_reg: vrefddr { | ||
| 261 | regulator-boot-on; | ||
| 262 | regulator-always-on; | ||
| 263 | }; | ||
| 264 | |||
| 265 | vgen1_reg: vldo1 { | ||
| 266 | regulator-min-microvolt = <1800000>; | ||
| 267 | regulator-max-microvolt = <3300000>; | ||
| 268 | regulator-always-on; | ||
| 269 | }; | ||
| 270 | |||
| 271 | vgen2_reg: vldo2 { | ||
| 272 | regulator-min-microvolt = <800000>; | ||
| 273 | regulator-max-microvolt = <1550000>; | ||
| 274 | }; | ||
| 275 | |||
| 276 | vgen3_reg: vccsd { | ||
| 277 | regulator-min-microvolt = <2850000>; | ||
| 278 | regulator-max-microvolt = <3300000>; | ||
| 279 | regulator-always-on; | ||
| 280 | }; | ||
| 281 | |||
| 282 | vgen4_reg: v33 { | ||
| 283 | regulator-min-microvolt = <2850000>; | ||
| 284 | regulator-max-microvolt = <3300000>; | ||
| 285 | }; | ||
| 286 | |||
| 287 | vgen5_reg: vldo3 { | ||
| 288 | regulator-min-microvolt = <1800000>; | ||
| 289 | regulator-max-microvolt = <3300000>; | ||
| 290 | regulator-always-on; | ||
| 291 | }; | ||
| 292 | |||
| 293 | vgen6_reg: vldo4 { | ||
| 294 | regulator-min-microvolt = <1800000>; | ||
| 295 | regulator-max-microvolt = <3300000>; | ||
| 296 | regulator-always-on; | ||
| 297 | }; | ||
| 298 | }; | ||
| 299 | }; | ||
diff --git a/Documentation/devicetree/bindings/rtc/armada-380-rtc.txt b/Documentation/devicetree/bindings/rtc/armada-380-rtc.txt new file mode 100644 index 000000000000..2eb9d4ee7dc0 --- /dev/null +++ b/Documentation/devicetree/bindings/rtc/armada-380-rtc.txt | |||
| @@ -0,0 +1,22 @@ | |||
| 1 | * Real Time Clock of the Armada 38x SoCs | ||
| 2 | |||
| 3 | RTC controller for the Armada 38x SoCs | ||
| 4 | |||
| 5 | Required properties: | ||
| 6 | - compatible : Should be "marvell,armada-380-rtc" | ||
| 7 | - reg: a list of base address and size pairs, one for each entry in | ||
| 8 | reg-names | ||
| 9 | - reg names: should contain: | ||
| 10 | * "rtc" for the RTC registers | ||
| 11 | * "rtc-soc" for the SoC related registers and among them the one | ||
| 12 | related to the interrupt. | ||
| 13 | - interrupts: IRQ line for the RTC. | ||
| 14 | |||
| 15 | Example: | ||
| 16 | |||
| 17 | rtc@a3800 { | ||
| 18 | compatible = "marvell,armada-380-rtc"; | ||
| 19 | reg = <0xa3800 0x20>, <0x184a0 0x0c>; | ||
| 20 | reg-names = "rtc", "rtc-soc"; | ||
| 21 | interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>; | ||
| 22 | }; | ||
diff --git a/Documentation/devicetree/bindings/rtc/isil,isl12057.txt b/Documentation/devicetree/bindings/rtc/isil,isl12057.txt new file mode 100644 index 000000000000..501c39ceae79 --- /dev/null +++ b/Documentation/devicetree/bindings/rtc/isil,isl12057.txt | |||
| @@ -0,0 +1,78 @@ | |||
| 1 | Intersil ISL12057 I2C RTC/Alarm chip | ||
| 2 | |||
| 3 | ISL12057 is a trivial I2C device (it has simple device tree bindings, | ||
| 4 | consisting of a compatible field, an address and possibly an interrupt | ||
| 5 | line). | ||
| 6 | |||
| 7 | Nonetheless, it also supports an option boolean property | ||
| 8 | ("isil,irq2-can-wakeup-machine") to handle the specific use-case found | ||
| 9 | on at least three in-tree users of the chip (NETGEAR ReadyNAS 102, 104 | ||
| 10 | and 2120 ARM-based NAS); On those devices, the IRQ#2 pin of the chip | ||
| 11 | (associated with the alarm supported by the driver) is not connected | ||
| 12 | to the SoC but to a PMIC. It allows the device to be powered up when | ||
| 13 | RTC alarm rings. In order to mark the device has a wakeup source and | ||
| 14 | get access to the 'wakealarm' sysfs entry, this specific property can | ||
| 15 | be set when the IRQ#2 pin of the chip is not connected to the SoC but | ||
| 16 | can wake up the device. | ||
| 17 | |||
| 18 | Required properties supported by the device: | ||
| 19 | |||
| 20 | - "compatible": must be "isil,isl12057" | ||
| 21 | - "reg": I2C bus address of the device | ||
| 22 | |||
| 23 | Optional properties: | ||
| 24 | |||
| 25 | - "isil,irq2-can-wakeup-machine": mark the chip as a wakeup source, | ||
| 26 | independently of the availability of an IRQ line connected to the | ||
| 27 | SoC. | ||
| 28 | |||
| 29 | - "interrupt-parent", "interrupts": for passing the interrupt line | ||
| 30 | of the SoC connected to IRQ#2 of the RTC chip. | ||
| 31 | |||
| 32 | |||
| 33 | Example isl12057 node without IRQ#2 pin connected (no alarm support): | ||
| 34 | |||
| 35 | isl12057: isl12057@68 { | ||
| 36 | compatible = "isil,isl12057"; | ||
| 37 | reg = <0x68>; | ||
| 38 | }; | ||
| 39 | |||
| 40 | |||
| 41 | Example isl12057 node with IRQ#2 pin connected to main SoC via MPP6 (note | ||
| 42 | that the pinctrl-related properties below are given for completeness and | ||
| 43 | may not be required or may be different depending on your system or | ||
| 44 | SoC, and the main function of the MPP used as IRQ line, i.e. | ||
| 45 | "interrupt-parent" and "interrupts" are usually sufficient): | ||
| 46 | |||
| 47 | pinctrl { | ||
| 48 | ... | ||
| 49 | |||
| 50 | rtc_alarm_pin: rtc_alarm_pin { | ||
| 51 | marvell,pins = "mpp6"; | ||
| 52 | marvell,function = "gpio"; | ||
| 53 | }; | ||
| 54 | |||
| 55 | ... | ||
| 56 | |||
| 57 | }; | ||
| 58 | |||
| 59 | ... | ||
| 60 | |||
| 61 | isl12057: isl12057@68 { | ||
| 62 | compatible = "isil,isl12057"; | ||
| 63 | reg = <0x68>; | ||
| 64 | pinctrl-0 = <&rtc_alarm_pin>; | ||
| 65 | pinctrl-names = "default"; | ||
| 66 | interrupt-parent = <&gpio0>; | ||
| 67 | interrupts = <6 IRQ_TYPE_EDGE_FALLING>; | ||
| 68 | }; | ||
| 69 | |||
| 70 | |||
| 71 | Example isl12057 node without IRQ#2 pin connected to the SoC but to a | ||
| 72 | PMIC, allowing the device to be started based on configured alarm: | ||
| 73 | |||
| 74 | isl12057: isl12057@68 { | ||
| 75 | compatible = "isil,isl12057"; | ||
| 76 | reg = <0x68>; | ||
| 77 | isil,irq2-can-wakeup-machine; | ||
| 78 | }; | ||
diff --git a/Documentation/devicetree/bindings/rtc/nvidia,tegra20-rtc.txt b/Documentation/devicetree/bindings/rtc/nvidia,tegra20-rtc.txt index 652d1ff2e8be..b7d98ed3e098 100644 --- a/Documentation/devicetree/bindings/rtc/nvidia,tegra20-rtc.txt +++ b/Documentation/devicetree/bindings/rtc/nvidia,tegra20-rtc.txt | |||
| @@ -6,7 +6,9 @@ state. | |||
| 6 | 6 | ||
| 7 | Required properties: | 7 | Required properties: |
| 8 | 8 | ||
| 9 | - compatible : should be "nvidia,tegra20-rtc". | 9 | - compatible : For Tegra20, must contain "nvidia,tegra20-rtc". Otherwise, |
| 10 | must contain '"nvidia,<chip>-rtc", "nvidia,tegra20-rtc"', where <chip> | ||
| 11 | can be tegra30, tegra114, tegra124, or tegra132. | ||
| 10 | - reg : Specifies base physical address and size of the registers. | 12 | - reg : Specifies base physical address and size of the registers. |
| 11 | - interrupts : A single interrupt specifier. | 13 | - interrupts : A single interrupt specifier. |
| 12 | - clocks : Must contain one entry, for the module clock. | 14 | - clocks : Must contain one entry, for the module clock. |
diff --git a/Documentation/devicetree/bindings/rtc/nxp,rtc-2123.txt b/Documentation/devicetree/bindings/rtc/nxp,rtc-2123.txt new file mode 100644 index 000000000000..5cbc0b145a61 --- /dev/null +++ b/Documentation/devicetree/bindings/rtc/nxp,rtc-2123.txt | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | NXP PCF2123 SPI Real Time Clock | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible: should be: "nxp,rtc-pcf2123" | ||
| 5 | - reg: should be the SPI slave chipselect address | ||
| 6 | |||
| 7 | Optional properties: | ||
| 8 | - spi-cs-high: PCF2123 needs chipselect high | ||
| 9 | |||
| 10 | Example: | ||
| 11 | |||
| 12 | rtc: nxp,rtc-pcf2123@3 { | ||
| 13 | compatible = "nxp,rtc-pcf2123" | ||
| 14 | reg = <3> | ||
| 15 | spi-cs-high; | ||
| 16 | }; | ||
diff --git a/Documentation/devicetree/bindings/security/tpm/st33zp24-i2c.txt b/Documentation/devicetree/bindings/security/tpm/st33zp24-i2c.txt new file mode 100644 index 000000000000..3ad115efed1e --- /dev/null +++ b/Documentation/devicetree/bindings/security/tpm/st33zp24-i2c.txt | |||
| @@ -0,0 +1,36 @@ | |||
| 1 | * STMicroelectronics SAS. ST33ZP24 TPM SoC | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible: Should be "st,st33zp24-i2c". | ||
| 5 | - clock-frequency: I²C work frequency. | ||
| 6 | - reg: address on the bus | ||
| 7 | |||
| 8 | Optional ST33ZP24 Properties: | ||
| 9 | - interrupt-parent: phandle for the interrupt gpio controller | ||
| 10 | - interrupts: GPIO interrupt to which the chip is connected | ||
| 11 | - lpcpd-gpios: Output GPIO pin used for ST33ZP24 power management D1/D2 state. | ||
| 12 | If set, power must be present when the platform is going into sleep/hibernate mode. | ||
| 13 | |||
| 14 | Optional SoC Specific Properties: | ||
| 15 | - pinctrl-names: Contains only one value - "default". | ||
| 16 | - pintctrl-0: Specifies the pin control groups used for this controller. | ||
| 17 | |||
| 18 | Example (for ARM-based BeagleBoard xM with ST33ZP24 on I2C2): | ||
| 19 | |||
| 20 | &i2c2 { | ||
| 21 | |||
| 22 | status = "okay"; | ||
| 23 | |||
| 24 | st33zp24: st33zp24@13 { | ||
| 25 | |||
| 26 | compatible = "st,st33zp24-i2c"; | ||
| 27 | |||
| 28 | reg = <0x13>; | ||
| 29 | clock-frequency = <400000>; | ||
| 30 | |||
| 31 | interrupt-parent = <&gpio5>; | ||
| 32 | interrupts = <7 IRQ_TYPE_LEVEL_HIGH>; | ||
| 33 | |||
| 34 | lpcpd-gpios = <&gpio5 15 GPIO_ACTIVE_HIGH>; | ||
| 35 | }; | ||
| 36 | }; | ||
diff --git a/Documentation/devicetree/bindings/serial/digicolor-usart.txt b/Documentation/devicetree/bindings/serial/digicolor-usart.txt new file mode 100644 index 000000000000..2d3ede66889d --- /dev/null +++ b/Documentation/devicetree/bindings/serial/digicolor-usart.txt | |||
| @@ -0,0 +1,27 @@ | |||
| 1 | Binding for Conexant Digicolor USART | ||
| 2 | |||
| 3 | Note: this binding is only applicable for using the USART peripheral as | ||
| 4 | UART. USART also support synchronous serial protocols like SPI and I2S. Use | ||
| 5 | the binding that matches the wiring of your system. | ||
| 6 | |||
| 7 | Required properties: | ||
| 8 | - compatible : should be "cnxt,cx92755-usart". | ||
| 9 | - reg: Should contain USART controller registers location and length. | ||
| 10 | - interrupts: Should contain a single USART controller interrupt. | ||
| 11 | - clocks: Must contain phandles to the USART clock | ||
| 12 | See ../clocks/clock-bindings.txt for details. | ||
| 13 | |||
| 14 | Note: Each UART port should have an alias correctly numbered | ||
| 15 | in "aliases" node. | ||
| 16 | |||
| 17 | Example: | ||
| 18 | aliases { | ||
| 19 | serial0 = &uart0; | ||
| 20 | }; | ||
| 21 | |||
| 22 | uart0: uart@f0000740 { | ||
| 23 | compatible = "cnxt,cx92755-usart"; | ||
| 24 | reg = <0xf0000740 0x20>; | ||
| 25 | clocks = <&main_clk>; | ||
| 26 | interrupts = <44>; | ||
| 27 | }; | ||
diff --git a/Documentation/devicetree/bindings/serial/mtk-uart.txt b/Documentation/devicetree/bindings/serial/mtk-uart.txt index 48358a33ea7d..44152261e5c5 100644 --- a/Documentation/devicetree/bindings/serial/mtk-uart.txt +++ b/Documentation/devicetree/bindings/serial/mtk-uart.txt | |||
| @@ -2,9 +2,13 @@ | |||
| 2 | 2 | ||
| 3 | Required properties: | 3 | Required properties: |
| 4 | - compatible should contain: | 4 | - compatible should contain: |
| 5 | * "mediatek,mt8135-uart" for MT8135 compatible UARTS | ||
| 6 | * "mediatek,mt8127-uart" for MT8127 compatible UARTS | ||
| 7 | * "mediatek,mt8173-uart" for MT8173 compatible UARTS | ||
| 5 | * "mediatek,mt6589-uart" for MT6589 compatible UARTS | 8 | * "mediatek,mt6589-uart" for MT6589 compatible UARTS |
| 6 | * "mediatek,mt6582-uart" for MT6582 compatible UARTS | 9 | * "mediatek,mt6582-uart" for MT6582 compatible UARTS |
| 7 | * "mediatek,mt6577-uart" for all compatible UARTS (MT6589, MT6582, MT6577) | 10 | * "mediatek,mt6577-uart" for all compatible UARTS (MT8173, MT6589, MT6582, |
| 11 | MT6577) | ||
| 8 | 12 | ||
| 9 | - reg: The base address of the UART register bank. | 13 | - reg: The base address of the UART register bank. |
| 10 | 14 | ||
diff --git a/Documentation/devicetree/bindings/serial/of-serial.txt b/Documentation/devicetree/bindings/serial/of-serial.txt index b52b98234b9b..91d5ab0e60fc 100644 --- a/Documentation/devicetree/bindings/serial/of-serial.txt +++ b/Documentation/devicetree/bindings/serial/of-serial.txt | |||
| @@ -8,7 +8,10 @@ Required properties: | |||
| 8 | - "ns16550" | 8 | - "ns16550" |
| 9 | - "ns16750" | 9 | - "ns16750" |
| 10 | - "ns16850" | 10 | - "ns16850" |
| 11 | - "nvidia,tegra20-uart" | 11 | - For Tegra20, must contain "nvidia,tegra20-uart" |
| 12 | - For other Tegra, must contain '"nvidia,<chip>-uart", | ||
| 13 | "nvidia,tegra20-uart"' where <chip> is tegra30, tegra114, tegra124, | ||
| 14 | tegra132, or tegra210. | ||
| 12 | - "nxp,lpc3220-uart" | 15 | - "nxp,lpc3220-uart" |
| 13 | - "ralink,rt2880-uart" | 16 | - "ralink,rt2880-uart" |
| 14 | - "ibm,qpace-nwp-serial" | 17 | - "ibm,qpace-nwp-serial" |
| @@ -16,6 +19,7 @@ Required properties: | |||
| 16 | - "altr,16550-FIFO64" | 19 | - "altr,16550-FIFO64" |
| 17 | - "altr,16550-FIFO128" | 20 | - "altr,16550-FIFO128" |
| 18 | - "fsl,16550-FIFO64" | 21 | - "fsl,16550-FIFO64" |
| 22 | - "fsl,ns16550" | ||
| 19 | - "serial" if the port type is unknown. | 23 | - "serial" if the port type is unknown. |
| 20 | - reg : offset and length of the register set for the device. | 24 | - reg : offset and length of the register set for the device. |
| 21 | - interrupts : should contain uart interrupt. | 25 | - interrupts : should contain uart interrupt. |
| @@ -40,6 +44,17 @@ Optional properties: | |||
| 40 | driver is allowed to detect support for the capability even without this | 44 | driver is allowed to detect support for the capability even without this |
| 41 | property. | 45 | property. |
| 42 | 46 | ||
| 47 | Note: | ||
| 48 | * fsl,ns16550: | ||
| 49 | ------------ | ||
| 50 | Freescale DUART is very similar to the PC16552D (and to a | ||
| 51 | pair of NS16550A), albeit with some nonstandard behavior such as | ||
| 52 | erratum A-004737 (relating to incorrect BRK handling). | ||
| 53 | |||
| 54 | Represents a single port that is compatible with the DUART found | ||
| 55 | on many Freescale chips (examples include mpc8349, mpc8548, | ||
| 56 | mpc8641d, p4080 and ls2085a). | ||
| 57 | |||
| 43 | Example: | 58 | Example: |
| 44 | 59 | ||
| 45 | uart@80230000 { | 60 | uart@80230000 { |
diff --git a/Documentation/devicetree/bindings/serial/sirf-uart.txt b/Documentation/devicetree/bindings/serial/sirf-uart.txt index 3acdd969edf1..f0c39261c5d4 100644 --- a/Documentation/devicetree/bindings/serial/sirf-uart.txt +++ b/Documentation/devicetree/bindings/serial/sirf-uart.txt | |||
| @@ -2,7 +2,7 @@ | |||
| 2 | 2 | ||
| 3 | Required properties: | 3 | Required properties: |
| 4 | - compatible : Should be "sirf,prima2-uart", "sirf, prima2-usp-uart", | 4 | - compatible : Should be "sirf,prima2-uart", "sirf, prima2-usp-uart", |
| 5 | "sirf,marco-uart" or "sirf,marco-bt-uart" which means | 5 | "sirf,atlas7-uart" or "sirf,atlas7-bt-uart" which means |
| 6 | uart located in BT module and used for BT. | 6 | uart located in BT module and used for BT. |
| 7 | - reg : Offset and length of the register set for the device | 7 | - reg : Offset and length of the register set for the device |
| 8 | - interrupts : Should contain uart interrupt | 8 | - interrupts : Should contain uart interrupt |
| @@ -37,7 +37,7 @@ usp@b0090000 { | |||
| 37 | for uart use in BT module, | 37 | for uart use in BT module, |
| 38 | uart6: uart@11000000 { | 38 | uart6: uart@11000000 { |
| 39 | cell-index = <6>; | 39 | cell-index = <6>; |
| 40 | compatible = "sirf,marco-bt-uart", "sirf,marco-uart"; | 40 | compatible = "sirf,atlas7-bt-uart", "sirf,atlas7-uart"; |
| 41 | reg = <0x11000000 0x1000>; | 41 | reg = <0x11000000 0x1000>; |
| 42 | interrupts = <0 100 0>; | 42 | interrupts = <0 100 0>; |
| 43 | clocks = <&clks 138>, <&clks 140>, <&clks 141>; | 43 | clocks = <&clks 138>, <&clks 140>, <&clks 141>; |
diff --git a/Documentation/devicetree/bindings/serial/sprd-uart.txt b/Documentation/devicetree/bindings/serial/sprd-uart.txt new file mode 100644 index 000000000000..2aff0f22c9fa --- /dev/null +++ b/Documentation/devicetree/bindings/serial/sprd-uart.txt | |||
| @@ -0,0 +1,7 @@ | |||
| 1 | * Spreadtrum serial UART | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible: must be "sprd,sc9836-uart" | ||
| 5 | - reg: offset and length of the register set for the device | ||
| 6 | - interrupts: exactly one interrupt specifier | ||
| 7 | - clocks: phandles to input clocks. | ||
diff --git a/Documentation/devicetree/bindings/serio/allwinner,sun4i-ps2.txt b/Documentation/devicetree/bindings/serio/allwinner,sun4i-ps2.txt new file mode 100644 index 000000000000..362a76925bcd --- /dev/null +++ b/Documentation/devicetree/bindings/serio/allwinner,sun4i-ps2.txt | |||
| @@ -0,0 +1,23 @@ | |||
| 1 | * Device tree bindings for Allwinner A10, A20 PS2 host controller | ||
| 2 | |||
| 3 | A20 PS2 is dual role controller (PS2 host and PS2 device). These bindings are | ||
| 4 | for PS2 A10/A20 host controller. IBM compliant IBM PS2 and AT-compatible keyboard | ||
| 5 | and mouse can be connected. | ||
| 6 | |||
| 7 | Required properties: | ||
| 8 | |||
| 9 | - reg : Offset and length of the register set for the device. | ||
| 10 | - compatible : Should be as of the following: | ||
| 11 | - "allwinner,sun4i-a10-ps2" | ||
| 12 | - interrupts : The interrupt line connected to the PS2. | ||
| 13 | - clocks : The gate clk connected to the PS2. | ||
| 14 | |||
| 15 | |||
| 16 | Example: | ||
| 17 | ps20: ps2@0x01c2a000 { | ||
| 18 | compatible = "allwinner,sun4i-a10-ps2"; | ||
| 19 | reg = <0x01c2a000 0x400>; | ||
| 20 | interrupts = <0 62 4>; | ||
| 21 | clocks = <&apb1_gates 6>; | ||
| 22 | status = "disabled"; | ||
| 23 | }; | ||
diff --git a/Documentation/devicetree/bindings/soc/fsl/bman.txt b/Documentation/devicetree/bindings/soc/fsl/bman.txt index 9f80bf8709ac..47ac834414d8 100644 --- a/Documentation/devicetree/bindings/soc/fsl/bman.txt +++ b/Documentation/devicetree/bindings/soc/fsl/bman.txt | |||
| @@ -36,6 +36,11 @@ are located at offsets 0xbf8 and 0xbfc | |||
| 36 | Value type: <prop-encoded-array> | 36 | Value type: <prop-encoded-array> |
| 37 | Definition: Standard property. The error interrupt | 37 | Definition: Standard property. The error interrupt |
| 38 | 38 | ||
| 39 | - fsl,bman-portals | ||
| 40 | Usage: Required | ||
| 41 | Value type: <phandle> | ||
| 42 | Definition: Phandle to this BMan instance's portals | ||
| 43 | |||
| 39 | - fsl,liodn | 44 | - fsl,liodn |
| 40 | Usage: See pamu.txt | 45 | Usage: See pamu.txt |
| 41 | Value type: <prop-encoded-array> | 46 | Value type: <prop-encoded-array> |
| @@ -96,7 +101,7 @@ The example below shows a BMan FBPR dynamic allocation memory node | |||
| 96 | 101 | ||
| 97 | bman_fbpr: bman-fbpr { | 102 | bman_fbpr: bman-fbpr { |
| 98 | compatible = "fsl,bman-fbpr"; | 103 | compatible = "fsl,bman-fbpr"; |
| 99 | alloc-ranges = <0 0 0xf 0xffffffff>; | 104 | alloc-ranges = <0 0 0x10 0>; |
| 100 | size = <0 0x1000000>; | 105 | size = <0 0x1000000>; |
| 101 | alignment = <0 0x1000000>; | 106 | alignment = <0 0x1000000>; |
| 102 | }; | 107 | }; |
| @@ -104,6 +109,10 @@ The example below shows a BMan FBPR dynamic allocation memory node | |||
| 104 | 109 | ||
| 105 | The example below shows a (P4080) BMan CCSR-space node | 110 | The example below shows a (P4080) BMan CCSR-space node |
| 106 | 111 | ||
| 112 | bportals: bman-portals@ff4000000 { | ||
| 113 | ... | ||
| 114 | }; | ||
| 115 | |||
| 107 | crypto@300000 { | 116 | crypto@300000 { |
| 108 | ... | 117 | ... |
| 109 | fsl,bman = <&bman, 2>; | 118 | fsl,bman = <&bman, 2>; |
| @@ -115,6 +124,7 @@ The example below shows a (P4080) BMan CCSR-space node | |||
| 115 | reg = <0x31a000 0x1000>; | 124 | reg = <0x31a000 0x1000>; |
| 116 | interrupts = <16 2 1 2>; | 125 | interrupts = <16 2 1 2>; |
| 117 | fsl,liodn = <0x17>; | 126 | fsl,liodn = <0x17>; |
| 127 | fsl,bman-portals = <&bportals>; | ||
| 118 | memory-region = <&bman_fbpr>; | 128 | memory-region = <&bman_fbpr>; |
| 119 | }; | 129 | }; |
| 120 | 130 | ||
diff --git a/Documentation/devicetree/bindings/soc/fsl/qman.txt b/Documentation/devicetree/bindings/soc/fsl/qman.txt index 063e3a0b9d04..556ebb8be75d 100644 --- a/Documentation/devicetree/bindings/soc/fsl/qman.txt +++ b/Documentation/devicetree/bindings/soc/fsl/qman.txt | |||
| @@ -38,6 +38,11 @@ are located at offsets 0xbf8 and 0xbfc | |||
| 38 | Value type: <prop-encoded-array> | 38 | Value type: <prop-encoded-array> |
| 39 | Definition: Standard property. The error interrupt | 39 | Definition: Standard property. The error interrupt |
| 40 | 40 | ||
| 41 | - fsl,qman-portals | ||
| 42 | Usage: Required | ||
| 43 | Value type: <phandle> | ||
| 44 | Definition: Phandle to this QMan instance's portals | ||
| 45 | |||
| 41 | - fsl,liodn | 46 | - fsl,liodn |
| 42 | Usage: See pamu.txt | 47 | Usage: See pamu.txt |
| 43 | Value type: <prop-encoded-array> | 48 | Value type: <prop-encoded-array> |
| @@ -113,13 +118,13 @@ The example below shows a QMan FQD and a PFDR dynamic allocation memory nodes | |||
| 113 | 118 | ||
| 114 | qman_fqd: qman-fqd { | 119 | qman_fqd: qman-fqd { |
| 115 | compatible = "fsl,qman-fqd"; | 120 | compatible = "fsl,qman-fqd"; |
| 116 | alloc-ranges = <0 0 0xf 0xffffffff>; | 121 | alloc-ranges = <0 0 0x10 0>; |
| 117 | size = <0 0x400000>; | 122 | size = <0 0x400000>; |
| 118 | alignment = <0 0x400000>; | 123 | alignment = <0 0x400000>; |
| 119 | }; | 124 | }; |
| 120 | qman_pfdr: qman-pfdr { | 125 | qman_pfdr: qman-pfdr { |
| 121 | compatible = "fsl,qman-pfdr"; | 126 | compatible = "fsl,qman-pfdr"; |
| 122 | alloc-ranges = <0 0 0xf 0xffffffff>; | 127 | alloc-ranges = <0 0 0x10 0>; |
| 123 | size = <0 0x2000000>; | 128 | size = <0 0x2000000>; |
| 124 | alignment = <0 0x2000000>; | 129 | alignment = <0 0x2000000>; |
| 125 | }; | 130 | }; |
| @@ -127,6 +132,10 @@ The example below shows a QMan FQD and a PFDR dynamic allocation memory nodes | |||
| 127 | 132 | ||
| 128 | The example below shows a (P4080) QMan CCSR-space node | 133 | The example below shows a (P4080) QMan CCSR-space node |
| 129 | 134 | ||
| 135 | qportals: qman-portals@ff4200000 { | ||
| 136 | ... | ||
| 137 | }; | ||
| 138 | |||
| 130 | clockgen: global-utilities@e1000 { | 139 | clockgen: global-utilities@e1000 { |
| 131 | ... | 140 | ... |
| 132 | sysclk: sysclk { | 141 | sysclk: sysclk { |
| @@ -154,6 +163,7 @@ The example below shows a (P4080) QMan CCSR-space node | |||
| 154 | reg = <0x318000 0x1000>; | 163 | reg = <0x318000 0x1000>; |
| 155 | interrupts = <16 2 1 3> | 164 | interrupts = <16 2 1 3> |
| 156 | fsl,liodn = <0x16>; | 165 | fsl,liodn = <0x16>; |
| 166 | fsl,qman-portals = <&qportals>; | ||
| 157 | memory-region = <&qman_fqd &qman_pfdr>; | 167 | memory-region = <&qman_fqd &qman_pfdr>; |
| 158 | clocks = <&platform_pll 1>; | 168 | clocks = <&platform_pll 1>; |
| 159 | }; | 169 | }; |
diff --git a/Documentation/devicetree/bindings/sound/atmel_ac97c.txt b/Documentation/devicetree/bindings/sound/atmel_ac97c.txt new file mode 100644 index 000000000000..b151bd902ce3 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/atmel_ac97c.txt | |||
| @@ -0,0 +1,20 @@ | |||
| 1 | * Atmel AC97 controller | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible: "atmel,at91sam9263-ac97c" | ||
| 5 | - reg: Address and length of the register set for the device | ||
| 6 | - interrupts: Should contain AC97 interrupt | ||
| 7 | - ac97-gpios: Please refer to soc-ac97link.txt, only ac97-reset is used | ||
| 8 | Optional properties: | ||
| 9 | - pinctrl-names, pinctrl-0: Please refer to pinctrl-bindings.txt | ||
| 10 | |||
| 11 | Example: | ||
| 12 | sound@fffa0000 { | ||
| 13 | compatible = "atmel,at91sam9263-ac97c"; | ||
| 14 | pinctrl-names = "default"; | ||
| 15 | pinctrl-0 = <&pinctrl_ac97>; | ||
| 16 | reg = <0xfffa0000 0x4000>; | ||
| 17 | interrupts = <18 IRQ_TYPE_LEVEL_HIGH 5>; | ||
| 18 | |||
| 19 | ac97-gpios = <&pioB 0 0 &pioB 2 0 &pioC 29 GPIO_ACTIVE_LOW>; | ||
| 20 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/cdns,xtfpga-i2s.txt b/Documentation/devicetree/bindings/sound/cdns,xtfpga-i2s.txt new file mode 100644 index 000000000000..befd125d18bb --- /dev/null +++ b/Documentation/devicetree/bindings/sound/cdns,xtfpga-i2s.txt | |||
| @@ -0,0 +1,18 @@ | |||
| 1 | Bindings for I2S controller built into xtfpga Xtensa bitstreams. | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible: shall be "cdns,xtfpga-i2s". | ||
| 5 | - reg: memory region (address and length) with device registers. | ||
| 6 | - interrupts: interrupt for the device. | ||
| 7 | - clocks: phandle to the clk used as master clock. I2S bus clock | ||
| 8 | is derived from it. | ||
| 9 | |||
| 10 | Examples: | ||
| 11 | |||
| 12 | i2s0: xtfpga-i2s@0d080000 { | ||
| 13 | #sound-dai-cells = <0>; | ||
| 14 | compatible = "cdns,xtfpga-i2s"; | ||
| 15 | reg = <0x0d080000 0x40>; | ||
| 16 | interrupts = <2 1>; | ||
| 17 | clocks = <&cdce706 4>; | ||
| 18 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/designware-i2s.txt b/Documentation/devicetree/bindings/sound/designware-i2s.txt new file mode 100644 index 000000000000..7bb54247f8e8 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/designware-i2s.txt | |||
| @@ -0,0 +1,31 @@ | |||
| 1 | DesignWare I2S controller | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible : Must be "snps,designware-i2s" | ||
| 5 | - reg : Must contain the I2S core's registers location and length | ||
| 6 | - clocks : Pairs of phandle and specifier referencing the controller's | ||
| 7 | clocks. The controller expects one clock: the clock used as the sampling | ||
| 8 | rate reference clock sample. | ||
| 9 | - clock-names : "i2sclk" for the sample rate reference clock. | ||
| 10 | - dmas: Pairs of phandle and specifier for the DMA channels that are used by | ||
| 11 | the core. The core expects one or two dma channels: one for transmit and | ||
| 12 | one for receive. | ||
| 13 | - dma-names : "tx" for the transmit channel, "rx" for the receive channel. | ||
| 14 | |||
| 15 | For more details on the 'dma', 'dma-names', 'clock' and 'clock-names' | ||
| 16 | properties please check: | ||
| 17 | * resource-names.txt | ||
| 18 | * clock/clock-bindings.txt | ||
| 19 | * dma/dma.txt | ||
| 20 | |||
| 21 | Example: | ||
| 22 | |||
| 23 | soc_i2s: i2s@7ff90000 { | ||
| 24 | compatible = "snps,designware-i2s"; | ||
| 25 | reg = <0x0 0x7ff90000 0x0 0x1000>; | ||
| 26 | clocks = <&scpi_i2sclk 0>; | ||
| 27 | clock-names = "i2sclk"; | ||
| 28 | #sound-dai-cells = <0>; | ||
| 29 | dmas = <&dma0 5>; | ||
| 30 | dma-names = "tx"; | ||
| 31 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/ingenic,jz4740-i2s.txt b/Documentation/devicetree/bindings/sound/ingenic,jz4740-i2s.txt new file mode 100644 index 000000000000..b41433386e2f --- /dev/null +++ b/Documentation/devicetree/bindings/sound/ingenic,jz4740-i2s.txt | |||
| @@ -0,0 +1,23 @@ | |||
| 1 | Ingenic JZ4740 I2S controller | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible : "ingenic,jz4740-i2s" | ||
| 5 | - reg : I2S registers location and length | ||
| 6 | - clocks : AIC and I2S PLL clock specifiers. | ||
| 7 | - clock-names: "aic" and "i2s" | ||
| 8 | - dmas: DMA controller phandle and DMA request line for I2S Tx and Rx channels | ||
| 9 | - dma-names: Must be "tx" and "rx" | ||
| 10 | |||
| 11 | Example: | ||
| 12 | |||
| 13 | i2s: i2s@10020000 { | ||
| 14 | compatible = "ingenic,jz4740-i2s"; | ||
| 15 | reg = <0x10020000 0x94>; | ||
| 16 | |||
| 17 | clocks = <&cgu JZ4740_CLK_AIC>, <&cgu JZ4740_CLK_I2SPLL>; | ||
| 18 | clock-names = "aic", "i2s"; | ||
| 19 | |||
| 20 | dmas = <&dma 2>, <&dma 3>; | ||
| 21 | dma-names = "tx", "rx"; | ||
| 22 | |||
| 23 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/max98357a.txt b/Documentation/devicetree/bindings/sound/max98357a.txt new file mode 100644 index 000000000000..a7a149a236e5 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/max98357a.txt | |||
| @@ -0,0 +1,14 @@ | |||
| 1 | Maxim MAX98357A audio DAC | ||
| 2 | |||
| 3 | This node models the Maxim MAX98357A DAC. | ||
| 4 | |||
| 5 | Required properties: | ||
| 6 | - compatible : "maxim,max98357a" | ||
| 7 | - sdmode-gpios : GPIO specifier for the GPIO -> DAC SDMODE pin | ||
| 8 | |||
| 9 | Example: | ||
| 10 | |||
| 11 | max98357a { | ||
| 12 | compatible = "maxim,max98357a"; | ||
| 13 | sdmode-gpios = <&qcom_pinmux 25 0>; | ||
| 14 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5677.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5677.txt new file mode 100644 index 000000000000..a4589cda214e --- /dev/null +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5677.txt | |||
| @@ -0,0 +1,67 @@ | |||
| 1 | NVIDIA Tegra audio complex, with RT5677 CODEC | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible : "nvidia,tegra-audio-rt5677" | ||
| 5 | - clocks : Must contain an entry for each entry in clock-names. | ||
| 6 | See ../clocks/clock-bindings.txt for details. | ||
| 7 | - clock-names : Must include the following entries: | ||
| 8 | - pll_a | ||
| 9 | - pll_a_out0 | ||
| 10 | - mclk (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) | ||
| 11 | - nvidia,model : The user-visible name of this sound complex. | ||
| 12 | - nvidia,audio-routing : A list of the connections between audio components. | ||
| 13 | Each entry is a pair of strings, the first being the connection's sink, | ||
| 14 | the second being the connection's source. Valid names for sources and | ||
| 15 | sinks are the RT5677's pins (as documented in its binding), and the jacks | ||
| 16 | on the board: | ||
| 17 | |||
| 18 | * Headphone | ||
| 19 | * Speaker | ||
| 20 | * Headset Mic | ||
| 21 | * Internal Mic 1 | ||
| 22 | * Internal Mic 2 | ||
| 23 | |||
| 24 | - nvidia,i2s-controller : The phandle of the Tegra I2S controller that's | ||
| 25 | connected to the CODEC. | ||
| 26 | - nvidia,audio-codec : The phandle of the RT5677 audio codec. This binding | ||
| 27 | assumes that AIF1 on the CODEC is connected to Tegra. | ||
| 28 | |||
| 29 | Optional properties: | ||
| 30 | - nvidia,hp-det-gpios : The GPIO that detects headphones are plugged in | ||
| 31 | - nvidia,hp-en-gpios : The GPIO that enables headphone amplifier | ||
| 32 | - nvidia,mic-present-gpios: The GPIO that mic jack is plugged in | ||
| 33 | - nvidia,dmic-clk-en-gpios : The GPIO that gates DMIC clock signal | ||
| 34 | |||
| 35 | Example: | ||
| 36 | |||
| 37 | sound { | ||
| 38 | compatible = "nvidia,tegra-audio-rt5677-ryu", | ||
| 39 | "nvidia,tegra-audio-rt5677"; | ||
| 40 | nvidia,model = "NVIDIA Tegra Ryu"; | ||
| 41 | |||
| 42 | nvidia,audio-routing = | ||
| 43 | "Headphone", "LOUT2", | ||
| 44 | "Headphone", "LOUT1", | ||
| 45 | "Headset Mic", "MICBIAS1", | ||
| 46 | "IN1P", "Headset Mic", | ||
| 47 | "IN1N", "Headset Mic", | ||
| 48 | "DMIC L1", "Internal Mic 1", | ||
| 49 | "DMIC R1", "Internal Mic 1", | ||
| 50 | "DMIC L2", "Internal Mic 2", | ||
| 51 | "DMIC R2", "Internal Mic 2", | ||
| 52 | "Speaker", "PDM1L", | ||
| 53 | "Speaker", "PDM1R"; | ||
| 54 | |||
| 55 | nvidia,i2s-controller = <&tegra_i2s1>; | ||
| 56 | nvidia,audio-codec = <&rt5677>; | ||
| 57 | |||
| 58 | nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(R, 7) GPIO_ACTIVE_HIGH>; | ||
| 59 | nvidia,mic-present-gpios = <&gpio TEGRA_GPIO(O, 5) GPIO_ACTIVE_LOW>; | ||
| 60 | nvidia,hp-en-gpios = <&rt5677 1 GPIO_ACTIVE_HIGH>; | ||
| 61 | nvidia,dmic-clk-en-gpios = <&rt5677 2 GPIO_ACTIVE_HIGH>; | ||
| 62 | |||
| 63 | clocks = <&tegra_car TEGRA124_CLK_PLL_A>, | ||
| 64 | <&tegra_car TEGRA124_CLK_PLL_A_OUT0>, | ||
| 65 | <&tegra_car TEGRA124_CLK_EXTERN1>; | ||
| 66 | clock-names = "pll_a", "pll_a_out0", "mclk"; | ||
| 67 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt index 946e2ac46091..0e9a1895d7fb 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt | |||
| @@ -1,7 +1,10 @@ | |||
| 1 | NVIDIA Tegra30 AHUB (Audio Hub) | 1 | NVIDIA Tegra30 AHUB (Audio Hub) |
| 2 | 2 | ||
| 3 | Required properties: | 3 | Required properties: |
| 4 | - compatible : "nvidia,tegra30-ahub", "nvidia,tegra114-ahub", etc. | 4 | - compatible : For Tegra30, must contain "nvidia,tegra30-ahub". For Tegra114, |
| 5 | must contain "nvidia,tegra114-ahub". For Tegra124, must contain | ||
| 6 | "nvidia,tegra124-ahub". Otherwise, must contain "nvidia,<chip>-ahub", | ||
| 7 | plus at least one of the above, where <chip> is tegra132. | ||
| 5 | - reg : Should contain the register physical address and length for each of | 8 | - reg : Should contain the register physical address and length for each of |
| 6 | the AHUB's register blocks. | 9 | the AHUB's register blocks. |
| 7 | - Tegra30 requires 2 entries, for the APBIF and AHUB/AUDIO register blocks. | 10 | - Tegra30 requires 2 entries, for the APBIF and AHUB/AUDIO register blocks. |
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra30-hda.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra30-hda.txt index b4730c2822bc..13e2ef496724 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra30-hda.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra30-hda.txt | |||
| @@ -1,7 +1,9 @@ | |||
| 1 | NVIDIA Tegra30 HDA controller | 1 | NVIDIA Tegra30 HDA controller |
| 2 | 2 | ||
| 3 | Required properties: | 3 | Required properties: |
| 4 | - compatible : "nvidia,tegra30-hda" | 4 | - compatible : For Tegra30, must contain "nvidia,tegra30-hda". Otherwise, |
| 5 | must contain '"nvidia,<chip>-hda", "nvidia,tegra30-hda"', where <chip> is | ||
| 6 | tegra114, tegra124, or tegra132. | ||
| 5 | - reg : Should contain the HDA registers location and length. | 7 | - reg : Should contain the HDA registers location and length. |
| 6 | - interrupts : The interrupt from the HDA controller. | 8 | - interrupts : The interrupt from the HDA controller. |
| 7 | - clocks : Must contain an entry for each required entry in clock-names. | 9 | - clocks : Must contain an entry for each required entry in clock-names. |
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt index 0c113ffe3814..38caa936f6f8 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt | |||
| @@ -1,7 +1,10 @@ | |||
| 1 | NVIDIA Tegra30 I2S controller | 1 | NVIDIA Tegra30 I2S controller |
| 2 | 2 | ||
| 3 | Required properties: | 3 | Required properties: |
| 4 | - compatible : "nvidia,tegra30-i2s" | 4 | - compatible : For Tegra30, must contain "nvidia,tegra30-i2s". For Tegra124, |
| 5 | must contain "nvidia,tegra124-i2s". Otherwise, must contain | ||
| 6 | "nvidia,<chip>-i2s" plus at least one of the above, where <chip> is | ||
| 7 | tegra114 or tegra132. | ||
| 5 | - reg : Should contain I2S registers location and length | 8 | - reg : Should contain I2S registers location and length |
| 6 | - clocks : Must contain one entry, for the module clock. | 9 | - clocks : Must contain one entry, for the module clock. |
| 7 | See ../clocks/clock-bindings.txt for details. | 10 | See ../clocks/clock-bindings.txt for details. |
diff --git a/Documentation/devicetree/bindings/sound/pcm512x.txt b/Documentation/devicetree/bindings/sound/pcm512x.txt index faff75e64573..3aae3b41bd8e 100644 --- a/Documentation/devicetree/bindings/sound/pcm512x.txt +++ b/Documentation/devicetree/bindings/sound/pcm512x.txt | |||
| @@ -5,7 +5,8 @@ on the board). | |||
| 5 | 5 | ||
| 6 | Required properties: | 6 | Required properties: |
| 7 | 7 | ||
| 8 | - compatible : One of "ti,pcm5121" or "ti,pcm5122" | 8 | - compatible : One of "ti,pcm5121", "ti,pcm5122", "ti,pcm5141" or |
| 9 | "ti,pcm5142" | ||
| 9 | 10 | ||
| 10 | - reg : the I2C address of the device for I2C, the chip select | 11 | - reg : the I2C address of the device for I2C, the chip select |
| 11 | number for SPI. | 12 | number for SPI. |
| @@ -16,9 +17,16 @@ Required properties: | |||
| 16 | Optional properties: | 17 | Optional properties: |
| 17 | 18 | ||
| 18 | - clocks : A clock specifier for the clock connected as SCLK. If this | 19 | - clocks : A clock specifier for the clock connected as SCLK. If this |
| 19 | is absent the device will be configured to clock from BCLK. | 20 | is absent the device will be configured to clock from BCLK. If pll-in |
| 21 | and pll-out are specified in addition to a clock, the device is | ||
| 22 | configured to accept clock input on a specified gpio pin. | ||
| 20 | 23 | ||
| 21 | Example: | 24 | - pll-in, pll-out : gpio pins used to connect the pll using <1> |
| 25 | through <6>. The device will be configured for clock input on the | ||
| 26 | given pll-in pin and PLL output on the given pll-out pin. An | ||
| 27 | external connection from the pll-out pin to the SCLK pin is assumed. | ||
| 28 | |||
| 29 | Examples: | ||
| 22 | 30 | ||
| 23 | pcm5122: pcm5122@4c { | 31 | pcm5122: pcm5122@4c { |
| 24 | compatible = "ti,pcm5122"; | 32 | compatible = "ti,pcm5122"; |
| @@ -28,3 +36,17 @@ Example: | |||
| 28 | DVDD-supply = <®_1v8>; | 36 | DVDD-supply = <®_1v8>; |
| 29 | CPVDD-supply = <®_3v3>; | 37 | CPVDD-supply = <®_3v3>; |
| 30 | }; | 38 | }; |
| 39 | |||
| 40 | |||
| 41 | pcm5142: pcm5142@4c { | ||
| 42 | compatible = "ti,pcm5142"; | ||
| 43 | reg = <0x4c>; | ||
| 44 | |||
| 45 | AVDD-supply = <®_3v3_analog>; | ||
| 46 | DVDD-supply = <®_1v8>; | ||
| 47 | CPVDD-supply = <®_3v3>; | ||
| 48 | |||
| 49 | clocks = <&sck>; | ||
| 50 | pll-in = <3>; | ||
| 51 | pll-out = <6>; | ||
| 52 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/samsung-i2s.txt b/Documentation/devicetree/bindings/sound/samsung-i2s.txt index d188296bb6ec..09e0e18591ae 100644 --- a/Documentation/devicetree/bindings/sound/samsung-i2s.txt +++ b/Documentation/devicetree/bindings/sound/samsung-i2s.txt | |||
| @@ -33,6 +33,25 @@ Required SoC Specific Properties: | |||
| 33 | "iis" is the i2s bus clock and i2s_opclk0, i2s_opclk1 are sources of the root | 33 | "iis" is the i2s bus clock and i2s_opclk0, i2s_opclk1 are sources of the root |
| 34 | clk. i2s0 has internal mux to select the source of root clk and i2s1 and i2s2 | 34 | clk. i2s0 has internal mux to select the source of root clk and i2s1 and i2s2 |
| 35 | doesn't have any such mux. | 35 | doesn't have any such mux. |
| 36 | - #clock-cells: should be 1, this property must be present if the I2S device | ||
| 37 | is a clock provider in terms of the common clock bindings, described in | ||
| 38 | ../clock/clock-bindings.txt. | ||
| 39 | - clock-output-names: from the common clock bindings, names of the CDCLK | ||
| 40 | I2S output clocks, suggested values are "i2s_cdclk0", "i2s_cdclk1", | ||
| 41 | "i2s_cdclk3" for the I2S0, I2S1, I2S2 devices recpectively. | ||
| 42 | |||
| 43 | There are following clocks available at the I2S device nodes: | ||
| 44 | CLK_I2S_CDCLK - the CDCLK (CODECLKO) gate clock, | ||
| 45 | CLK_I2S_RCLK_PSR - the RCLK prescaler divider clock (corresponding to the | ||
| 46 | IISPSR register), | ||
| 47 | CLK_I2S_RCLK_SRC - the RCLKSRC mux clock (corresponding to RCLKSRC bit in | ||
| 48 | IISMOD register). | ||
| 49 | |||
| 50 | Refer to the SoC datasheet for availability of the above clocks. | ||
| 51 | The CLK_I2S_RCLK_PSR and CLK_I2S_RCLK_SRC clocks are usually only available | ||
| 52 | in the IIS Multi Audio Interface (I2S0). | ||
| 53 | Note: Old DTs may not have the #clock-cells, clock-output-names properties | ||
| 54 | and then not use the I2S node as a clock supplier. | ||
| 36 | 55 | ||
| 37 | Optional SoC Specific Properties: | 56 | Optional SoC Specific Properties: |
| 38 | 57 | ||
| @@ -41,6 +60,7 @@ Optional SoC Specific Properties: | |||
| 41 | - pinctrl-0: Should specify pin control groups used for this controller. | 60 | - pinctrl-0: Should specify pin control groups used for this controller. |
| 42 | - pinctrl-names: Should contain only one value - "default". | 61 | - pinctrl-names: Should contain only one value - "default". |
| 43 | 62 | ||
| 63 | |||
| 44 | Example: | 64 | Example: |
| 45 | 65 | ||
| 46 | i2s0: i2s@03830000 { | 66 | i2s0: i2s@03830000 { |
| @@ -54,6 +74,8 @@ i2s0: i2s@03830000 { | |||
| 54 | <&clock_audss EXYNOS_I2S_BUS>, | 74 | <&clock_audss EXYNOS_I2S_BUS>, |
| 55 | <&clock_audss EXYNOS_SCLK_I2S>; | 75 | <&clock_audss EXYNOS_SCLK_I2S>; |
| 56 | clock-names = "iis", "i2s_opclk0", "i2s_opclk1"; | 76 | clock-names = "iis", "i2s_opclk0", "i2s_opclk1"; |
| 77 | #clock-cells; | ||
| 78 | clock-output-names = "i2s_cdclk0"; | ||
| 57 | samsung,idma-addr = <0x03000000>; | 79 | samsung,idma-addr = <0x03000000>; |
| 58 | pinctrl-names = "default"; | 80 | pinctrl-names = "default"; |
| 59 | pinctrl-0 = <&i2s0_bus>; | 81 | pinctrl-0 = <&i2s0_bus>; |
diff --git a/Documentation/devicetree/bindings/sound/simple-card.txt b/Documentation/devicetree/bindings/sound/simple-card.txt index c3cba600bf11..73bf314f7240 100644 --- a/Documentation/devicetree/bindings/sound/simple-card.txt +++ b/Documentation/devicetree/bindings/sound/simple-card.txt | |||
| @@ -75,6 +75,11 @@ Optional CPU/CODEC subnodes properties: | |||
| 75 | it can be specified via "clocks" if system has | 75 | it can be specified via "clocks" if system has |
| 76 | clock node (= common clock), or "system-clock-frequency" | 76 | clock node (= common clock), or "system-clock-frequency" |
| 77 | (if system doens't support common clock) | 77 | (if system doens't support common clock) |
| 78 | If a clock is specified, it is | ||
| 79 | enabled with clk_prepare_enable() | ||
| 80 | in dai startup() and disabled with | ||
| 81 | clk_disable_unprepare() in dai | ||
| 82 | shutdown(). | ||
| 78 | 83 | ||
| 79 | Example 1 - single DAI link: | 84 | Example 1 - single DAI link: |
| 80 | 85 | ||
diff --git a/Documentation/devicetree/bindings/sound/st,sta32x.txt b/Documentation/devicetree/bindings/sound/st,sta32x.txt new file mode 100644 index 000000000000..255de3ae5b2f --- /dev/null +++ b/Documentation/devicetree/bindings/sound/st,sta32x.txt | |||
| @@ -0,0 +1,92 @@ | |||
| 1 | STA32X audio CODEC | ||
| 2 | |||
| 3 | The driver for this device only supports I2C. | ||
| 4 | |||
| 5 | Required properties: | ||
| 6 | |||
| 7 | - compatible: "st,sta32x" | ||
| 8 | - reg: the I2C address of the device for I2C | ||
| 9 | - reset-gpios: a GPIO spec for the reset pin. If specified, it will be | ||
| 10 | deasserted before communication to the codec starts. | ||
| 11 | |||
| 12 | - power-down-gpios: a GPIO spec for the power down pin. If specified, | ||
| 13 | it will be deasserted before communication to the codec | ||
| 14 | starts. | ||
| 15 | |||
| 16 | - Vdda-supply: regulator spec, providing 3.3V | ||
| 17 | - Vdd3-supply: regulator spec, providing 3.3V | ||
| 18 | - Vcc-supply: regulator spec, providing 5V - 26V | ||
| 19 | |||
| 20 | Optional properties: | ||
| 21 | |||
| 22 | - st,output-conf: number, Selects the output configuration: | ||
| 23 | 0: 2-channel (full-bridge) power, 2-channel data-out | ||
| 24 | 1: 2 (half-bridge). 1 (full-bridge) on-board power | ||
| 25 | 2: 2 Channel (Full-Bridge) Power, 1 Channel FFX | ||
| 26 | 3: 1 Channel Mono-Parallel | ||
| 27 | If parameter is missing, mode 0 will be enabled. | ||
| 28 | This property has to be specified as '/bits/ 8' value. | ||
| 29 | |||
| 30 | - st,ch1-output-mapping: Channel 1 output mapping | ||
| 31 | - st,ch2-output-mapping: Channel 2 output mapping | ||
| 32 | - st,ch3-output-mapping: Channel 3 output mapping | ||
| 33 | 0: Channel 1 | ||
| 34 | 1: Channel 2 | ||
| 35 | 2: Channel 3 | ||
| 36 | If parameter is missing, channel 1 is chosen. | ||
| 37 | This properties have to be specified as '/bits/ 8' values. | ||
| 38 | |||
| 39 | - st,thermal-warning-recover: | ||
| 40 | If present, thermal warning recovery is enabled. | ||
| 41 | |||
| 42 | - st,thermal-warning-adjustment: | ||
| 43 | If present, thermal warning adjustment is enabled. | ||
| 44 | |||
| 45 | - st,fault-detect-recovery: | ||
| 46 | If present, then fault recovery will be enabled. | ||
| 47 | |||
| 48 | - st,drop-compensation-ns: number | ||
| 49 | Only required for "st,ffx-power-output-mode" == | ||
| 50 | "variable-drop-compensation". | ||
| 51 | Specifies the drop compensation in nanoseconds. | ||
| 52 | The value must be in the range of 0..300, and only | ||
| 53 | multiples of 20 are allowed. Default is 140ns. | ||
| 54 | |||
| 55 | - st,max-power-use-mpcc: | ||
| 56 | If present, then MPCC bits are used for MPC coefficients, | ||
| 57 | otherwise standard MPC coefficients are used. | ||
| 58 | |||
| 59 | - st,max-power-corr: | ||
| 60 | If present, power bridge correction for THD reduction near maximum | ||
| 61 | power output is enabled. | ||
| 62 | |||
| 63 | - st,am-reduction-mode: | ||
| 64 | If present, FFX mode runs in AM reduction mode, otherwise normal | ||
| 65 | FFX mode is used. | ||
| 66 | |||
| 67 | - st,odd-pwm-speed-mode: | ||
| 68 | If present, PWM speed mode run on odd speed mode (341.3 kHz) on all | ||
| 69 | channels. If not present, normal PWM spped mode (384 kHz) will be used. | ||
| 70 | |||
| 71 | - st,invalid-input-detect-mute: | ||
| 72 | If present, automatic invalid input detect mute is enabled. | ||
| 73 | |||
| 74 | Example: | ||
| 75 | |||
| 76 | codec: sta32x@38 { | ||
| 77 | compatible = "st,sta32x"; | ||
| 78 | reg = <0x1c>; | ||
| 79 | reset-gpios = <&gpio1 19 0>; | ||
| 80 | power-down-gpios = <&gpio1 16 0>; | ||
| 81 | st,output-conf = /bits/ 8 <0x3>; // set output to 2-channel | ||
| 82 | // (full-bridge) power, | ||
| 83 | // 2-channel data-out | ||
| 84 | st,ch1-output-mapping = /bits/ 8 <0>; // set channel 1 output ch 1 | ||
| 85 | st,ch2-output-mapping = /bits/ 8 <0>; // set channel 2 output ch 1 | ||
| 86 | st,ch3-output-mapping = /bits/ 8 <0>; // set channel 3 output ch 1 | ||
| 87 | st,max-power-correction; // enables power bridge | ||
| 88 | // correction for THD reduction | ||
| 89 | // near maximum power output | ||
| 90 | st,invalid-input-detect-mute; // mute if no valid digital | ||
| 91 | // audio signal is provided. | ||
| 92 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/tlv320aic3x.txt b/Documentation/devicetree/bindings/sound/tlv320aic3x.txt index 5e6040c2c2e9..47a213c411ce 100644 --- a/Documentation/devicetree/bindings/sound/tlv320aic3x.txt +++ b/Documentation/devicetree/bindings/sound/tlv320aic3x.txt | |||
| @@ -9,6 +9,7 @@ Required properties: | |||
| 9 | "ti,tlv320aic33" - TLV320AIC33 | 9 | "ti,tlv320aic33" - TLV320AIC33 |
| 10 | "ti,tlv320aic3007" - TLV320AIC3007 | 10 | "ti,tlv320aic3007" - TLV320AIC3007 |
| 11 | "ti,tlv320aic3106" - TLV320AIC3106 | 11 | "ti,tlv320aic3106" - TLV320AIC3106 |
| 12 | "ti,tlv320aic3104" - TLV320AIC3104 | ||
| 12 | 13 | ||
| 13 | 14 | ||
| 14 | - reg - <int> - I2C slave address | 15 | - reg - <int> - I2C slave address |
| @@ -18,6 +19,7 @@ Optional properties: | |||
| 18 | 19 | ||
| 19 | - gpio-reset - gpio pin number used for codec reset | 20 | - gpio-reset - gpio pin number used for codec reset |
| 20 | - ai3x-gpio-func - <array of 2 int> - AIC3X_GPIO1 & AIC3X_GPIO2 Functionality | 21 | - ai3x-gpio-func - <array of 2 int> - AIC3X_GPIO1 & AIC3X_GPIO2 Functionality |
| 22 | - Not supported on tlv320aic3104 | ||
| 21 | - ai3x-micbias-vg - MicBias Voltage required. | 23 | - ai3x-micbias-vg - MicBias Voltage required. |
| 22 | 1 - MICBIAS output is powered to 2.0V, | 24 | 1 - MICBIAS output is powered to 2.0V, |
| 23 | 2 - MICBIAS output is powered to 2.5V, | 25 | 2 - MICBIAS output is powered to 2.5V, |
| @@ -36,7 +38,13 @@ CODEC output pins: | |||
| 36 | * HPLCOM | 38 | * HPLCOM |
| 37 | * HPRCOM | 39 | * HPRCOM |
| 38 | 40 | ||
| 39 | CODEC input pins: | 41 | CODEC input pins for TLV320AIC3104: |
| 42 | * MIC2L | ||
| 43 | * MIC2R | ||
| 44 | * LINE1L | ||
| 45 | * LINE1R | ||
| 46 | |||
| 47 | CODEC input pins for other compatible codecs: | ||
| 40 | * MIC3L | 48 | * MIC3L |
| 41 | * MIC3R | 49 | * MIC3R |
| 42 | * LINE1L | 50 | * LINE1L |
diff --git a/Documentation/devicetree/bindings/sound/ts3a227e.txt b/Documentation/devicetree/bindings/sound/ts3a227e.txt index e8bf23eb1803..a836881d9608 100644 --- a/Documentation/devicetree/bindings/sound/ts3a227e.txt +++ b/Documentation/devicetree/bindings/sound/ts3a227e.txt | |||
| @@ -13,6 +13,11 @@ Required properties: | |||
| 13 | - interrupt-parent: The parent interrupt controller | 13 | - interrupt-parent: The parent interrupt controller |
| 14 | - interrupts: Interrupt number for /INT pin from the 227e | 14 | - interrupts: Interrupt number for /INT pin from the 227e |
| 15 | 15 | ||
| 16 | Optional properies: | ||
| 17 | - ti,micbias: Intended MICBIAS voltage (datasheet section 9.6.7). | ||
| 18 | Select 0/1/2/3/4/5/6/7 to specify MACBIAS voltage | ||
| 19 | 2.1V/2.2V/2.3V/2.4V/2.5V/2.6V/2.7V/2.8V | ||
| 20 | Default value is "1" (2.2V). | ||
| 16 | 21 | ||
| 17 | Examples: | 22 | Examples: |
| 18 | 23 | ||
diff --git a/Documentation/devicetree/bindings/sound/wm8904.txt b/Documentation/devicetree/bindings/sound/wm8904.txt index e99f4097c83c..66bf261423b9 100644 --- a/Documentation/devicetree/bindings/sound/wm8904.txt +++ b/Documentation/devicetree/bindings/sound/wm8904.txt | |||
| @@ -3,7 +3,7 @@ WM8904 audio CODEC | |||
| 3 | This device supports I2C only. | 3 | This device supports I2C only. |
| 4 | 4 | ||
| 5 | Required properties: | 5 | Required properties: |
| 6 | - compatible: "wlf,wm8904" | 6 | - compatible: "wlf,wm8904" or "wlf,wm8912" |
| 7 | - reg: the I2C address of the device. | 7 | - reg: the I2C address of the device. |
| 8 | - clock-names: "mclk" | 8 | - clock-names: "mclk" |
| 9 | - clocks: reference to | 9 | - clocks: reference to |
diff --git a/Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.txt b/Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.txt index 7ea701e07dc2..b785976fe98a 100644 --- a/Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.txt +++ b/Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.txt | |||
| @@ -1,7 +1,9 @@ | |||
| 1 | NVIDIA Tegra114 SPI controller. | 1 | NVIDIA Tegra114 SPI controller. |
| 2 | 2 | ||
| 3 | Required properties: | 3 | Required properties: |
| 4 | - compatible : should be "nvidia,tegra114-spi". | 4 | - compatible : For Tegra114, must contain "nvidia,tegra114-spi". |
| 5 | Otherwise, must contain '"nvidia,<chip>-spi", "nvidia,tegra114-spi"' where | ||
| 6 | <chip> is tegra124, tegra132, or tegra210. | ||
| 5 | - reg: Should contain SPI registers location and length. | 7 | - reg: Should contain SPI registers location and length. |
| 6 | - interrupts: Should contain SPI interrupts. | 8 | - interrupts: Should contain SPI interrupts. |
| 7 | - clock-names : Must include the following entries: | 9 | - clock-names : Must include the following entries: |
diff --git a/Documentation/devicetree/bindings/spi/sh-msiof.txt b/Documentation/devicetree/bindings/spi/sh-msiof.txt index d11c3721e7cd..4c388bb2f0a2 100644 --- a/Documentation/devicetree/bindings/spi/sh-msiof.txt +++ b/Documentation/devicetree/bindings/spi/sh-msiof.txt | |||
| @@ -30,6 +30,22 @@ Optional properties: | |||
| 30 | specifiers, one for transmission, and one for | 30 | specifiers, one for transmission, and one for |
| 31 | reception. | 31 | reception. |
| 32 | - dma-names : Must contain a list of two DMA names, "tx" and "rx". | 32 | - dma-names : Must contain a list of two DMA names, "tx" and "rx". |
| 33 | - renesas,dtdl : delay sync signal (setup) in transmit mode. | ||
| 34 | Must contain one of the following values: | ||
| 35 | 0 (no bit delay) | ||
| 36 | 50 (0.5-clock-cycle delay) | ||
| 37 | 100 (1-clock-cycle delay) | ||
| 38 | 150 (1.5-clock-cycle delay) | ||
| 39 | 200 (2-clock-cycle delay) | ||
| 40 | |||
| 41 | - renesas,syncdl : delay sync signal (hold) in transmit mode. | ||
| 42 | Must contain one of the following values: | ||
| 43 | 0 (no bit delay) | ||
| 44 | 50 (0.5-clock-cycle delay) | ||
| 45 | 100 (1-clock-cycle delay) | ||
| 46 | 150 (1.5-clock-cycle delay) | ||
| 47 | 200 (2-clock-cycle delay) | ||
| 48 | 300 (3-clock-cycle delay) | ||
| 33 | 49 | ||
| 34 | Optional properties, deprecated for soctype-specific bindings: | 50 | Optional properties, deprecated for soctype-specific bindings: |
| 35 | - renesas,tx-fifo-size : Overrides the default tx fifo size given in words | 51 | - renesas,tx-fifo-size : Overrides the default tx fifo size given in words |
diff --git a/Documentation/devicetree/bindings/spi/spi-sirf.txt b/Documentation/devicetree/bindings/spi/spi-sirf.txt new file mode 100644 index 000000000000..4c7adb8f777c --- /dev/null +++ b/Documentation/devicetree/bindings/spi/spi-sirf.txt | |||
| @@ -0,0 +1,41 @@ | |||
| 1 | * CSR SiRFprimaII Serial Peripheral Interface | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible : Should be "sirf,prima2-spi" | ||
| 5 | - reg : Offset and length of the register set for the device | ||
| 6 | - interrupts : Should contain SPI interrupt | ||
| 7 | - resets: phandle to the reset controller asserting this device in | ||
| 8 | reset | ||
| 9 | See ../reset/reset.txt for details. | ||
| 10 | - dmas : Must contain an entry for each entry in clock-names. | ||
| 11 | See ../dma/dma.txt for details. | ||
| 12 | - dma-names : Must include the following entries: | ||
| 13 | - rx | ||
| 14 | - tx | ||
| 15 | - clocks : Must contain an entry for each entry in clock-names. | ||
| 16 | See ../clocks/clock-bindings.txt for details. | ||
| 17 | |||
| 18 | - #address-cells: Number of cells required to define a chip select | ||
| 19 | address on the SPI bus. Should be set to 1. | ||
| 20 | - #size-cells: Should be zero. | ||
| 21 | |||
| 22 | Optional properties: | ||
| 23 | - spi-max-frequency: Specifies maximum SPI clock frequency, | ||
| 24 | Units - Hz. Definition as per | ||
| 25 | Documentation/devicetree/bindings/spi/spi-bus.txt | ||
| 26 | - cs-gpios: should specify GPIOs used for chipselects. | ||
| 27 | |||
| 28 | Example: | ||
| 29 | |||
| 30 | spi0: spi@b00d0000 { | ||
| 31 | compatible = "sirf,prima2-spi"; | ||
| 32 | reg = <0xb00d0000 0x10000>; | ||
| 33 | interrupts = <15>; | ||
| 34 | dmas = <&dmac1 9>, | ||
| 35 | <&dmac1 4>; | ||
| 36 | dma-names = "rx", "tx"; | ||
| 37 | #address-cells = <1>; | ||
| 38 | #size-cells = <0>; | ||
| 39 | clocks = <&clks 19>; | ||
| 40 | resets = <&rstc 26>; | ||
| 41 | }; | ||
diff --git a/Documentation/devicetree/bindings/spi/spi-st-ssc.txt b/Documentation/devicetree/bindings/spi/spi-st-ssc.txt new file mode 100644 index 000000000000..fe54959ec957 --- /dev/null +++ b/Documentation/devicetree/bindings/spi/spi-st-ssc.txt | |||
| @@ -0,0 +1,40 @@ | |||
| 1 | STMicroelectronics SSC (SPI) Controller | ||
| 2 | --------------------------------------- | ||
| 3 | |||
| 4 | Required properties: | ||
| 5 | - compatible : "st,comms-ssc4-spi" | ||
| 6 | - reg : Offset and length of the device's register set | ||
| 7 | - interrupts : The interrupt specifier | ||
| 8 | - clock-names : Must contain "ssc" | ||
| 9 | - clocks : Must contain an entry for each name in clock-names | ||
| 10 | See ../clk/* | ||
| 11 | - pinctrl-names : Uses "default", can use "sleep" if provided | ||
| 12 | See ../pinctrl/pinctrl-binding.txt | ||
| 13 | |||
| 14 | Optional properties: | ||
| 15 | - cs-gpios : List of GPIO chip selects | ||
| 16 | See ../spi/spi-bus.txt | ||
| 17 | |||
| 18 | Child nodes represent devices on the SPI bus | ||
| 19 | See ../spi/spi-bus.txt | ||
| 20 | |||
| 21 | Example: | ||
| 22 | spi@9840000 { | ||
| 23 | compatible = "st,comms-ssc4-spi"; | ||
| 24 | reg = <0x9840000 0x110>; | ||
| 25 | interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>; | ||
| 26 | clocks = <&clk_s_c0_flexgen CLK_EXT2F_A9>; | ||
| 27 | clock-names = "ssc"; | ||
| 28 | pinctrl-0 = <&pinctrl_spi0_default>; | ||
| 29 | pinctrl-names = "default"; | ||
| 30 | cs-gpios = <&pio17 5 0>; | ||
| 31 | #address-cells = <1>; | ||
| 32 | #size-cells = <0>; | ||
| 33 | |||
| 34 | st95hf@0{ | ||
| 35 | compatible = "st,st95hf"; | ||
| 36 | reg = <0>; | ||
| 37 | spi-max-frequency = <1000000>; | ||
| 38 | interrupts = <2 IRQ_TYPE_EDGE_FALLING>; | ||
| 39 | }; | ||
| 40 | }; | ||
diff --git a/Documentation/devicetree/bindings/staging/iio/adc/mxs-lradc.txt b/Documentation/devicetree/bindings/staging/iio/adc/mxs-lradc.txt index ee05dc390694..307537787574 100644 --- a/Documentation/devicetree/bindings/staging/iio/adc/mxs-lradc.txt +++ b/Documentation/devicetree/bindings/staging/iio/adc/mxs-lradc.txt | |||
| @@ -12,9 +12,9 @@ Optional properties: | |||
| 12 | property is not present, then the touchscreen is | 12 | property is not present, then the touchscreen is |
| 13 | disabled. 5 wires is valid for i.MX28 SoC only. | 13 | disabled. 5 wires is valid for i.MX28 SoC only. |
| 14 | - fsl,ave-ctrl: number of samples per direction to calculate an average value. | 14 | - fsl,ave-ctrl: number of samples per direction to calculate an average value. |
| 15 | Allowed value is 1 ... 31, default is 4 | 15 | Allowed value is 1 ... 32, default is 4 |
| 16 | - fsl,ave-delay: delay between consecutive samples. Allowed value is | 16 | - fsl,ave-delay: delay between consecutive samples. Allowed value is |
| 17 | 1 ... 2047. It is used if 'fsl,ave-ctrl' > 1, counts at | 17 | 2 ... 2048. It is used if 'fsl,ave-ctrl' > 1, counts at |
| 18 | 2 kHz and its default is 2 (= 1 ms) | 18 | 2 kHz and its default is 2 (= 1 ms) |
| 19 | - fsl,settling: delay between plate switch to next sample. Allowed value is | 19 | - fsl,settling: delay between plate switch to next sample. Allowed value is |
| 20 | 1 ... 2047. It counts at 2 kHz and its default is | 20 | 1 ... 2047. It counts at 2 kHz and its default is |
diff --git a/Documentation/devicetree/bindings/submitting-patches.txt b/Documentation/devicetree/bindings/submitting-patches.txt index b7ba01ad1426..56742bc70218 100644 --- a/Documentation/devicetree/bindings/submitting-patches.txt +++ b/Documentation/devicetree/bindings/submitting-patches.txt | |||
| @@ -15,6 +15,29 @@ I. For patch submitters | |||
| 15 | 3) The Documentation/ portion of the patch should come in the series before | 15 | 3) The Documentation/ portion of the patch should come in the series before |
| 16 | the code implementing the binding. | 16 | the code implementing the binding. |
| 17 | 17 | ||
| 18 | 4) Any compatible strings used in a chip or board DTS file must be | ||
| 19 | previously documented in the corresponding DT binding text file | ||
| 20 | in Documentation/devicetree/bindings. This rule applies even if | ||
| 21 | the Linux device driver does not yet match on the compatible | ||
| 22 | string. [ checkpatch will emit warnings if this step is not | ||
| 23 | followed as of commit bff5da4335256513497cc8c79f9a9d1665e09864 | ||
| 24 | ("checkpatch: add DT compatible string documentation checks"). ] | ||
| 25 | |||
| 26 | 5) The wildcard "<chip>" may be used in compatible strings, as in | ||
| 27 | the following example: | ||
| 28 | |||
| 29 | - compatible: Must contain '"nvidia,<chip>-pcie", | ||
| 30 | "nvidia,tegra20-pcie"' where <chip> is tegra30, tegra132, ... | ||
| 31 | |||
| 32 | As in the above example, the known values of "<chip>" should be | ||
| 33 | documented if it is used. | ||
| 34 | |||
| 35 | 6) If a documented compatible string is not yet matched by the | ||
| 36 | driver, the documentation should also include a compatible | ||
| 37 | string that is matched by the driver (as in the "nvidia,tegra20-pcie" | ||
| 38 | example above). | ||
| 39 | |||
| 40 | |||
| 18 | II. For kernel maintainers | 41 | II. For kernel maintainers |
| 19 | 42 | ||
| 20 | 1) If you aren't comfortable reviewing a given binding, reply to it and ask | 43 | 1) If you aren't comfortable reviewing a given binding, reply to it and ask |
diff --git a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt index ae738f562acc..695150a4136b 100644 --- a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt +++ b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt | |||
| @@ -12,6 +12,7 @@ | |||
| 12 | "samsung,exynos5420-tmu-ext-triminfo" for TMU channels 2, 3 and 4 | 12 | "samsung,exynos5420-tmu-ext-triminfo" for TMU channels 2, 3 and 4 |
| 13 | Exynos5420 (Must pass triminfo base and triminfo clock) | 13 | Exynos5420 (Must pass triminfo base and triminfo clock) |
| 14 | "samsung,exynos5440-tmu" | 14 | "samsung,exynos5440-tmu" |
| 15 | "samsung,exynos7-tmu" | ||
| 15 | - interrupt-parent : The phandle for the interrupt controller | 16 | - interrupt-parent : The phandle for the interrupt controller |
| 16 | - reg : Address range of the thermal registers. For soc's which has multiple | 17 | - reg : Address range of the thermal registers. For soc's which has multiple |
| 17 | instances of TMU and some registers are shared across all TMU's like | 18 | instances of TMU and some registers are shared across all TMU's like |
| @@ -32,13 +33,28 @@ | |||
| 32 | - clocks : The main clocks for TMU device | 33 | - clocks : The main clocks for TMU device |
| 33 | -- 1. operational clock for TMU channel | 34 | -- 1. operational clock for TMU channel |
| 34 | -- 2. optional clock to access the shared registers of TMU channel | 35 | -- 2. optional clock to access the shared registers of TMU channel |
| 36 | -- 3. optional special clock for functional operation | ||
| 35 | - clock-names : Thermal system clock name | 37 | - clock-names : Thermal system clock name |
| 36 | -- "tmu_apbif" operational clock for current TMU channel | 38 | -- "tmu_apbif" operational clock for current TMU channel |
| 37 | -- "tmu_triminfo_apbif" clock to access the shared triminfo register | 39 | -- "tmu_triminfo_apbif" clock to access the shared triminfo register |
| 38 | for current TMU channel | 40 | for current TMU channel |
| 41 | -- "tmu_sclk" clock for functional operation of the current TMU | ||
| 42 | channel | ||
| 39 | - vtmu-supply: This entry is optional and provides the regulator node supplying | 43 | - vtmu-supply: This entry is optional and provides the regulator node supplying |
| 40 | voltage to TMU. If needed this entry can be placed inside | 44 | voltage to TMU. If needed this entry can be placed inside |
| 41 | board/platform specific dts file. | 45 | board/platform specific dts file. |
| 46 | Following properties are mandatory (depending on SoC): | ||
| 47 | - samsung,tmu_gain: Gain value for internal TMU operation. | ||
| 48 | - samsung,tmu_reference_voltage: Value of TMU IP block's reference voltage | ||
| 49 | - samsung,tmu_noise_cancel_mode: Mode for noise cancellation | ||
| 50 | - samsung,tmu_efuse_value: Default level of temperature - it is needed when | ||
| 51 | in factory fusing produced wrong value | ||
| 52 | - samsung,tmu_min_efuse_value: Minimum temperature fused value | ||
| 53 | - samsung,tmu_max_efuse_value: Maximum temperature fused value | ||
| 54 | - samsung,tmu_first_point_trim: First point trimming value | ||
| 55 | - samsung,tmu_second_point_trim: Second point trimming value | ||
| 56 | - samsung,tmu_default_temp_offset: Default temperature offset | ||
| 57 | - samsung,tmu_cal_type: Callibration type | ||
| 42 | 58 | ||
| 43 | Example 1): | 59 | Example 1): |
| 44 | 60 | ||
| @@ -51,6 +67,7 @@ Example 1): | |||
| 51 | clock-names = "tmu_apbif"; | 67 | clock-names = "tmu_apbif"; |
| 52 | status = "disabled"; | 68 | status = "disabled"; |
| 53 | vtmu-supply = <&tmu_regulator_node>; | 69 | vtmu-supply = <&tmu_regulator_node>; |
| 70 | #include "exynos4412-tmu-sensor-conf.dtsi" | ||
| 54 | }; | 71 | }; |
| 55 | 72 | ||
| 56 | Example 2): | 73 | Example 2): |
| @@ -61,6 +78,7 @@ Example 2): | |||
| 61 | interrupts = <0 58 0>; | 78 | interrupts = <0 58 0>; |
| 62 | clocks = <&clock 21>; | 79 | clocks = <&clock 21>; |
| 63 | clock-names = "tmu_apbif"; | 80 | clock-names = "tmu_apbif"; |
| 81 | #include "exynos5440-tmu-sensor-conf.dtsi" | ||
| 64 | }; | 82 | }; |
| 65 | 83 | ||
| 66 | Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register") | 84 | Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register") |
| @@ -70,6 +88,7 @@ Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register") | |||
| 70 | interrupts = <0 184 0>; | 88 | interrupts = <0 184 0>; |
| 71 | clocks = <&clock 318>, <&clock 318>; | 89 | clocks = <&clock 318>, <&clock 318>; |
| 72 | clock-names = "tmu_apbif", "tmu_triminfo_apbif"; | 90 | clock-names = "tmu_apbif", "tmu_triminfo_apbif"; |
| 91 | #include "exynos4412-tmu-sensor-conf.dtsi" | ||
| 73 | }; | 92 | }; |
| 74 | 93 | ||
| 75 | tmu_cpu3: tmu@1006c000 { | 94 | tmu_cpu3: tmu@1006c000 { |
| @@ -78,6 +97,7 @@ Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register") | |||
| 78 | interrupts = <0 185 0>; | 97 | interrupts = <0 185 0>; |
| 79 | clocks = <&clock 318>, <&clock 319>; | 98 | clocks = <&clock 318>, <&clock 319>; |
| 80 | clock-names = "tmu_apbif", "tmu_triminfo_apbif"; | 99 | clock-names = "tmu_apbif", "tmu_triminfo_apbif"; |
| 100 | #include "exynos4412-tmu-sensor-conf.dtsi" | ||
| 81 | }; | 101 | }; |
| 82 | 102 | ||
| 83 | tmu_gpu: tmu@100a0000 { | 103 | tmu_gpu: tmu@100a0000 { |
| @@ -86,6 +106,7 @@ Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register") | |||
| 86 | interrupts = <0 215 0>; | 106 | interrupts = <0 215 0>; |
| 87 | clocks = <&clock 319>, <&clock 318>; | 107 | clocks = <&clock 319>, <&clock 318>; |
| 88 | clock-names = "tmu_apbif", "tmu_triminfo_apbif"; | 108 | clock-names = "tmu_apbif", "tmu_triminfo_apbif"; |
| 109 | #include "exynos4412-tmu-sensor-conf.dtsi" | ||
| 89 | }; | 110 | }; |
| 90 | 111 | ||
| 91 | Note: For multi-instance tmu each instance should have an alias correctly | 112 | Note: For multi-instance tmu each instance should have an alias correctly |
diff --git a/Documentation/devicetree/bindings/thermal/tegra-soctherm.txt b/Documentation/devicetree/bindings/thermal/tegra-soctherm.txt index ecf3ed76cd46..6b68cd150405 100644 --- a/Documentation/devicetree/bindings/thermal/tegra-soctherm.txt +++ b/Documentation/devicetree/bindings/thermal/tegra-soctherm.txt | |||
| @@ -7,7 +7,9 @@ notifications. It is also used to manage emergency shutdown in an | |||
| 7 | overheating situation. | 7 | overheating situation. |
| 8 | 8 | ||
| 9 | Required properties : | 9 | Required properties : |
| 10 | - compatible : "nvidia,tegra124-soctherm". | 10 | - compatible : For Tegra124, must contain "nvidia,tegra124-soctherm". |
| 11 | For Tegra132, must contain "nvidia,tegra132-soctherm". | ||
| 12 | For Tegra210, must contain "nvidia,tegra210-soctherm". | ||
| 11 | - reg : Should contain 1 entry: | 13 | - reg : Should contain 1 entry: |
| 12 | - SOCTHERM register set | 14 | - SOCTHERM register set |
| 13 | - interrupts : Defines the interrupt used by SOCTHERM | 15 | - interrupts : Defines the interrupt used by SOCTHERM |
diff --git a/Documentation/devicetree/bindings/thermal/thermal.txt b/Documentation/devicetree/bindings/thermal/thermal.txt index f5db6b72a36f..29fe0bfae38e 100644 --- a/Documentation/devicetree/bindings/thermal/thermal.txt +++ b/Documentation/devicetree/bindings/thermal/thermal.txt | |||
| @@ -251,24 +251,24 @@ ocp { | |||
| 251 | }; | 251 | }; |
| 252 | 252 | ||
| 253 | thermal-zones { | 253 | thermal-zones { |
| 254 | cpu-thermal: cpu-thermal { | 254 | cpu_thermal: cpu-thermal { |
| 255 | polling-delay-passive = <250>; /* milliseconds */ | 255 | polling-delay-passive = <250>; /* milliseconds */ |
| 256 | polling-delay = <1000>; /* milliseconds */ | 256 | polling-delay = <1000>; /* milliseconds */ |
| 257 | 257 | ||
| 258 | thermal-sensors = <&bandgap0>; | 258 | thermal-sensors = <&bandgap0>; |
| 259 | 259 | ||
| 260 | trips { | 260 | trips { |
| 261 | cpu-alert0: cpu-alert { | 261 | cpu_alert0: cpu-alert0 { |
| 262 | temperature = <90000>; /* millicelsius */ | 262 | temperature = <90000>; /* millicelsius */ |
| 263 | hysteresis = <2000>; /* millicelsius */ | 263 | hysteresis = <2000>; /* millicelsius */ |
| 264 | type = "active"; | 264 | type = "active"; |
| 265 | }; | 265 | }; |
| 266 | cpu-alert1: cpu-alert { | 266 | cpu_alert1: cpu-alert1 { |
| 267 | temperature = <100000>; /* millicelsius */ | 267 | temperature = <100000>; /* millicelsius */ |
| 268 | hysteresis = <2000>; /* millicelsius */ | 268 | hysteresis = <2000>; /* millicelsius */ |
| 269 | type = "passive"; | 269 | type = "passive"; |
| 270 | }; | 270 | }; |
| 271 | cpu-crit: cpu-crit { | 271 | cpu_crit: cpu-crit { |
| 272 | temperature = <125000>; /* millicelsius */ | 272 | temperature = <125000>; /* millicelsius */ |
| 273 | hysteresis = <2000>; /* millicelsius */ | 273 | hysteresis = <2000>; /* millicelsius */ |
| 274 | type = "critical"; | 274 | type = "critical"; |
| @@ -277,17 +277,17 @@ thermal-zones { | |||
| 277 | 277 | ||
| 278 | cooling-maps { | 278 | cooling-maps { |
| 279 | map0 { | 279 | map0 { |
| 280 | trip = <&cpu-alert0>; | 280 | trip = <&cpu_alert0>; |
| 281 | cooling-device = <&fan0 THERMAL_NO_LIMITS 4>; | 281 | cooling-device = <&fan0 THERMAL_NO_LIMIT 4>; |
| 282 | }; | 282 | }; |
| 283 | map1 { | 283 | map1 { |
| 284 | trip = <&cpu-alert1>; | 284 | trip = <&cpu_alert1>; |
| 285 | cooling-device = <&fan0 5 THERMAL_NO_LIMITS>; | 285 | cooling-device = <&fan0 5 THERMAL_NO_LIMIT>; |
| 286 | }; | 286 | }; |
| 287 | map2 { | 287 | map2 { |
| 288 | trip = <&cpu-alert1>; | 288 | trip = <&cpu_alert1>; |
| 289 | cooling-device = | 289 | cooling-device = |
| 290 | <&cpu0 THERMAL_NO_LIMITS THERMAL_NO_LIMITS>; | 290 | <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; |
| 291 | }; | 291 | }; |
| 292 | }; | 292 | }; |
| 293 | }; | 293 | }; |
| @@ -298,13 +298,13 @@ used to monitor the zone 'cpu-thermal' using its sole sensor. A fan | |||
| 298 | device (fan0) is controlled via I2C bus 1, at address 0x48, and has ten | 298 | device (fan0) is controlled via I2C bus 1, at address 0x48, and has ten |
| 299 | different cooling states 0-9. It is used to remove the heat out of | 299 | different cooling states 0-9. It is used to remove the heat out of |
| 300 | the thermal zone 'cpu-thermal' using its cooling states | 300 | the thermal zone 'cpu-thermal' using its cooling states |
| 301 | from its minimum to 4, when it reaches trip point 'cpu-alert0' | 301 | from its minimum to 4, when it reaches trip point 'cpu_alert0' |
| 302 | at 90C, as an example of active cooling. The same cooling device is used at | 302 | at 90C, as an example of active cooling. The same cooling device is used at |
| 303 | 'cpu-alert1', but from 5 to its maximum state. The cpu@0 device is also | 303 | 'cpu_alert1', but from 5 to its maximum state. The cpu@0 device is also |
| 304 | linked to the same thermal zone, 'cpu-thermal', as a passive cooling device, | 304 | linked to the same thermal zone, 'cpu-thermal', as a passive cooling device, |
| 305 | using all its cooling states at trip point 'cpu-alert1', | 305 | using all its cooling states at trip point 'cpu_alert1', |
| 306 | which is a trip point at 100C. On the thermal zone 'cpu-thermal', at the | 306 | which is a trip point at 100C. On the thermal zone 'cpu-thermal', at the |
| 307 | temperature of 125C, represented by the trip point 'cpu-crit', the silicon | 307 | temperature of 125C, represented by the trip point 'cpu_crit', the silicon |
| 308 | is not reliable anymore. | 308 | is not reliable anymore. |
| 309 | 309 | ||
| 310 | (b) - IC with several internal sensors | 310 | (b) - IC with several internal sensors |
| @@ -329,7 +329,7 @@ ocp { | |||
| 329 | }; | 329 | }; |
| 330 | 330 | ||
| 331 | thermal-zones { | 331 | thermal-zones { |
| 332 | cpu-thermal: cpu-thermal { | 332 | cpu_thermal: cpu-thermal { |
| 333 | polling-delay-passive = <250>; /* milliseconds */ | 333 | polling-delay-passive = <250>; /* milliseconds */ |
| 334 | polling-delay = <1000>; /* milliseconds */ | 334 | polling-delay = <1000>; /* milliseconds */ |
| 335 | 335 | ||
| @@ -338,12 +338,12 @@ thermal-zones { | |||
| 338 | 338 | ||
| 339 | trips { | 339 | trips { |
| 340 | /* each zone within the SoC may have its own trips */ | 340 | /* each zone within the SoC may have its own trips */ |
| 341 | cpu-alert: cpu-alert { | 341 | cpu_alert: cpu-alert { |
| 342 | temperature = <100000>; /* millicelsius */ | 342 | temperature = <100000>; /* millicelsius */ |
| 343 | hysteresis = <2000>; /* millicelsius */ | 343 | hysteresis = <2000>; /* millicelsius */ |
| 344 | type = "passive"; | 344 | type = "passive"; |
| 345 | }; | 345 | }; |
| 346 | cpu-crit: cpu-crit { | 346 | cpu_crit: cpu-crit { |
| 347 | temperature = <125000>; /* millicelsius */ | 347 | temperature = <125000>; /* millicelsius */ |
| 348 | hysteresis = <2000>; /* millicelsius */ | 348 | hysteresis = <2000>; /* millicelsius */ |
| 349 | type = "critical"; | 349 | type = "critical"; |
| @@ -356,7 +356,7 @@ thermal-zones { | |||
| 356 | }; | 356 | }; |
| 357 | }; | 357 | }; |
| 358 | 358 | ||
| 359 | gpu-thermal: gpu-thermal { | 359 | gpu_thermal: gpu-thermal { |
| 360 | polling-delay-passive = <120>; /* milliseconds */ | 360 | polling-delay-passive = <120>; /* milliseconds */ |
| 361 | polling-delay = <1000>; /* milliseconds */ | 361 | polling-delay = <1000>; /* milliseconds */ |
| 362 | 362 | ||
| @@ -365,12 +365,12 @@ thermal-zones { | |||
| 365 | 365 | ||
| 366 | trips { | 366 | trips { |
| 367 | /* each zone within the SoC may have its own trips */ | 367 | /* each zone within the SoC may have its own trips */ |
| 368 | gpu-alert: gpu-alert { | 368 | gpu_alert: gpu-alert { |
| 369 | temperature = <90000>; /* millicelsius */ | 369 | temperature = <90000>; /* millicelsius */ |
| 370 | hysteresis = <2000>; /* millicelsius */ | 370 | hysteresis = <2000>; /* millicelsius */ |
| 371 | type = "passive"; | 371 | type = "passive"; |
| 372 | }; | 372 | }; |
| 373 | gpu-crit: gpu-crit { | 373 | gpu_crit: gpu-crit { |
| 374 | temperature = <105000>; /* millicelsius */ | 374 | temperature = <105000>; /* millicelsius */ |
| 375 | hysteresis = <2000>; /* millicelsius */ | 375 | hysteresis = <2000>; /* millicelsius */ |
| 376 | type = "critical"; | 376 | type = "critical"; |
| @@ -383,7 +383,7 @@ thermal-zones { | |||
| 383 | }; | 383 | }; |
| 384 | }; | 384 | }; |
| 385 | 385 | ||
| 386 | dsp-thermal: dsp-thermal { | 386 | dsp_thermal: dsp-thermal { |
| 387 | polling-delay-passive = <50>; /* milliseconds */ | 387 | polling-delay-passive = <50>; /* milliseconds */ |
| 388 | polling-delay = <1000>; /* milliseconds */ | 388 | polling-delay = <1000>; /* milliseconds */ |
| 389 | 389 | ||
| @@ -392,12 +392,12 @@ thermal-zones { | |||
| 392 | 392 | ||
| 393 | trips { | 393 | trips { |
| 394 | /* each zone within the SoC may have its own trips */ | 394 | /* each zone within the SoC may have its own trips */ |
| 395 | dsp-alert: gpu-alert { | 395 | dsp_alert: dsp-alert { |
| 396 | temperature = <90000>; /* millicelsius */ | 396 | temperature = <90000>; /* millicelsius */ |
| 397 | hysteresis = <2000>; /* millicelsius */ | 397 | hysteresis = <2000>; /* millicelsius */ |
| 398 | type = "passive"; | 398 | type = "passive"; |
| 399 | }; | 399 | }; |
| 400 | dsp-crit: gpu-crit { | 400 | dsp_crit: gpu-crit { |
| 401 | temperature = <135000>; /* millicelsius */ | 401 | temperature = <135000>; /* millicelsius */ |
| 402 | hysteresis = <2000>; /* millicelsius */ | 402 | hysteresis = <2000>; /* millicelsius */ |
| 403 | type = "critical"; | 403 | type = "critical"; |
| @@ -457,7 +457,7 @@ ocp { | |||
| 457 | }; | 457 | }; |
| 458 | 458 | ||
| 459 | thermal-zones { | 459 | thermal-zones { |
| 460 | cpu-thermal: cpu-thermal { | 460 | cpu_thermal: cpu-thermal { |
| 461 | polling-delay-passive = <250>; /* milliseconds */ | 461 | polling-delay-passive = <250>; /* milliseconds */ |
| 462 | polling-delay = <1000>; /* milliseconds */ | 462 | polling-delay = <1000>; /* milliseconds */ |
| 463 | 463 | ||
| @@ -508,7 +508,7 @@ with many sensors and many cooling devices. | |||
| 508 | /* | 508 | /* |
| 509 | * An IC with several temperature sensor. | 509 | * An IC with several temperature sensor. |
| 510 | */ | 510 | */ |
| 511 | adc-dummy: sensor@0x50 { | 511 | adc_dummy: sensor@0x50 { |
| 512 | ... | 512 | ... |
| 513 | #thermal-sensor-cells = <1>; /* sensor internal ID */ | 513 | #thermal-sensor-cells = <1>; /* sensor internal ID */ |
| 514 | }; | 514 | }; |
| @@ -520,7 +520,7 @@ thermal-zones { | |||
| 520 | polling-delay = <2500>; /* milliseconds */ | 520 | polling-delay = <2500>; /* milliseconds */ |
| 521 | 521 | ||
| 522 | /* sensor ID */ | 522 | /* sensor ID */ |
| 523 | thermal-sensors = <&adc-dummy 4>; | 523 | thermal-sensors = <&adc_dummy 4>; |
| 524 | 524 | ||
| 525 | trips { | 525 | trips { |
| 526 | ... | 526 | ... |
| @@ -531,14 +531,14 @@ thermal-zones { | |||
| 531 | }; | 531 | }; |
| 532 | }; | 532 | }; |
| 533 | 533 | ||
| 534 | board-thermal: board-thermal { | 534 | board_thermal: board-thermal { |
| 535 | polling-delay-passive = <1000>; /* milliseconds */ | 535 | polling-delay-passive = <1000>; /* milliseconds */ |
| 536 | polling-delay = <2500>; /* milliseconds */ | 536 | polling-delay = <2500>; /* milliseconds */ |
| 537 | 537 | ||
| 538 | /* sensor ID */ | 538 | /* sensor ID */ |
| 539 | thermal-sensors = <&adc-dummy 0>, /* pcb top edge */ | 539 | thermal-sensors = <&adc_dummy 0>, /* pcb top edge */ |
| 540 | <&adc-dummy 1>, /* lcd */ | 540 | <&adc_dummy 1>, /* lcd */ |
| 541 | <&adc-dymmy 2>; /* back cover */ | 541 | <&adc_dummy 2>; /* back cover */ |
| 542 | /* | 542 | /* |
| 543 | * An array of coefficients describing the sensor | 543 | * An array of coefficients describing the sensor |
| 544 | * linear relation. E.g.: | 544 | * linear relation. E.g.: |
| @@ -548,22 +548,22 @@ thermal-zones { | |||
| 548 | 548 | ||
| 549 | trips { | 549 | trips { |
| 550 | /* Trips are based on resulting linear equation */ | 550 | /* Trips are based on resulting linear equation */ |
| 551 | cpu-trip: cpu-trip { | 551 | cpu_trip: cpu-trip { |
| 552 | temperature = <60000>; /* millicelsius */ | 552 | temperature = <60000>; /* millicelsius */ |
| 553 | hysteresis = <2000>; /* millicelsius */ | 553 | hysteresis = <2000>; /* millicelsius */ |
| 554 | type = "passive"; | 554 | type = "passive"; |
| 555 | }; | 555 | }; |
| 556 | gpu-trip: gpu-trip { | 556 | gpu_trip: gpu-trip { |
| 557 | temperature = <55000>; /* millicelsius */ | 557 | temperature = <55000>; /* millicelsius */ |
| 558 | hysteresis = <2000>; /* millicelsius */ | 558 | hysteresis = <2000>; /* millicelsius */ |
| 559 | type = "passive"; | 559 | type = "passive"; |
| 560 | } | 560 | } |
| 561 | lcd-trip: lcp-trip { | 561 | lcd_trip: lcp-trip { |
| 562 | temperature = <53000>; /* millicelsius */ | 562 | temperature = <53000>; /* millicelsius */ |
| 563 | hysteresis = <2000>; /* millicelsius */ | 563 | hysteresis = <2000>; /* millicelsius */ |
| 564 | type = "passive"; | 564 | type = "passive"; |
| 565 | }; | 565 | }; |
| 566 | crit-trip: crit-trip { | 566 | crit_trip: crit-trip { |
| 567 | temperature = <68000>; /* millicelsius */ | 567 | temperature = <68000>; /* millicelsius */ |
| 568 | hysteresis = <2000>; /* millicelsius */ | 568 | hysteresis = <2000>; /* millicelsius */ |
| 569 | type = "critical"; | 569 | type = "critical"; |
| @@ -572,17 +572,17 @@ thermal-zones { | |||
| 572 | 572 | ||
| 573 | cooling-maps { | 573 | cooling-maps { |
| 574 | map0 { | 574 | map0 { |
| 575 | trip = <&cpu-trip>; | 575 | trip = <&cpu_trip>; |
| 576 | cooling-device = <&cpu0 0 2>; | 576 | cooling-device = <&cpu0 0 2>; |
| 577 | contribution = <55>; | 577 | contribution = <55>; |
| 578 | }; | 578 | }; |
| 579 | map1 { | 579 | map1 { |
| 580 | trip = <&gpu-trip>; | 580 | trip = <&gpu_trip>; |
| 581 | cooling-device = <&gpu0 0 2>; | 581 | cooling-device = <&gpu0 0 2>; |
| 582 | contribution = <20>; | 582 | contribution = <20>; |
| 583 | }; | 583 | }; |
| 584 | map2 { | 584 | map2 { |
| 585 | trip = <&lcd-trip>; | 585 | trip = <&lcd_trip>; |
| 586 | cooling-device = <&lcd0 5 10>; | 586 | cooling-device = <&lcd0 5 10>; |
| 587 | contribution = <15>; | 587 | contribution = <15>; |
| 588 | }; | 588 | }; |
diff --git a/Documentation/devicetree/bindings/timer/digicolor-timer.txt b/Documentation/devicetree/bindings/timer/digicolor-timer.txt new file mode 100644 index 000000000000..d1b659bbc29f --- /dev/null +++ b/Documentation/devicetree/bindings/timer/digicolor-timer.txt | |||
| @@ -0,0 +1,18 @@ | |||
| 1 | Conexant Digicolor SoCs Timer Controller | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | |||
| 5 | - compatible : should be "cnxt,cx92755-timer" | ||
| 6 | - reg : Specifies base physical address and size of the "Agent Communication" | ||
| 7 | timer registers | ||
| 8 | - interrupts : Contains 8 interrupts, one for each timer | ||
| 9 | - clocks: phandle to the main clock | ||
| 10 | |||
| 11 | Example: | ||
| 12 | |||
| 13 | timer@f0000fc0 { | ||
| 14 | compatible = "cnxt,cx92755-timer"; | ||
| 15 | reg = <0xf0000fc0 0x40>; | ||
| 16 | interrupts = <19>, <31>, <34>, <35>, <52>, <53>, <54>, <55>; | ||
| 17 | clocks = <&main_clk>; | ||
| 18 | }; | ||
diff --git a/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt b/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt index b5082a1cf461..1761f53ee36f 100644 --- a/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt +++ b/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt | |||
| @@ -6,7 +6,9 @@ trigger a legacy watchdog reset. | |||
| 6 | 6 | ||
| 7 | Required properties: | 7 | Required properties: |
| 8 | 8 | ||
| 9 | - compatible : should be "nvidia,tegra30-timer", "nvidia,tegra20-timer". | 9 | - compatible : For Tegra30, must contain "nvidia,tegra30-timer". Otherwise, |
| 10 | must contain '"nvidia,<chip>-timer", "nvidia,tegra30-timer"' where | ||
| 11 | <chip> is tegra124 or tegra132. | ||
| 10 | - reg : Specifies base physical address and size of the registers. | 12 | - reg : Specifies base physical address and size of the registers. |
| 11 | - interrupts : A list of 6 interrupts; one per each of timer channels 1 | 13 | - interrupts : A list of 6 interrupts; one per each of timer channels 1 |
| 12 | through 5, and one for the shared interrupt for the remaining channels. | 14 | through 5, and one for the shared interrupt for the remaining channels. |
diff --git a/Documentation/devicetree/bindings/timer/rockchip,rk3288-timer.txt b/Documentation/devicetree/bindings/timer/rockchip,rk3288-timer.txt new file mode 100644 index 000000000000..87f0b0042bae --- /dev/null +++ b/Documentation/devicetree/bindings/timer/rockchip,rk3288-timer.txt | |||
| @@ -0,0 +1,18 @@ | |||
| 1 | Rockchip rk3288 timer | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible: shall be "rockchip,rk3288-timer" | ||
| 5 | - reg: base address of the timer register starting with TIMERS CONTROL register | ||
| 6 | - interrupts: should contain the interrupts for Timer0 | ||
| 7 | - clocks : must contain an entry for each entry in clock-names | ||
| 8 | - clock-names : must include the following entries: | ||
| 9 | "timer", "pclk" | ||
| 10 | |||
| 11 | Example: | ||
| 12 | timer: timer@ff810000 { | ||
| 13 | compatible = "rockchip,rk3288-timer"; | ||
| 14 | reg = <0xff810000 0x20>; | ||
| 15 | interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>; | ||
| 16 | clocks = <&xin24m>, <&cru PCLK_TIMER>; | ||
| 17 | clock-names = "timer", "pclk"; | ||
| 18 | }; | ||
diff --git a/Documentation/devicetree/bindings/unittest.txt b/Documentation/devicetree/bindings/unittest.txt index 0f92a22fddfa..8933211f32f9 100644 --- a/Documentation/devicetree/bindings/unittest.txt +++ b/Documentation/devicetree/bindings/unittest.txt | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | * OF selftest platform device | 1 | 1) OF selftest platform device |
| 2 | 2 | ||
| 3 | ** selftest | 3 | ** selftest |
| 4 | 4 | ||
| @@ -12,3 +12,60 @@ Example: | |||
| 12 | compatible = "selftest"; | 12 | compatible = "selftest"; |
| 13 | status = "okay"; | 13 | status = "okay"; |
| 14 | }; | 14 | }; |
| 15 | |||
| 16 | 2) OF selftest i2c adapter platform device | ||
| 17 | |||
| 18 | ** platform device unittest adapter | ||
| 19 | |||
| 20 | Required properties: | ||
| 21 | - compatible: must be selftest-i2c-bus | ||
| 22 | |||
| 23 | Children nodes contain selftest i2c devices. | ||
| 24 | |||
| 25 | Example: | ||
| 26 | selftest-i2c-bus { | ||
| 27 | compatible = "selftest-i2c-bus"; | ||
| 28 | status = "okay"; | ||
| 29 | }; | ||
| 30 | |||
| 31 | 3) OF selftest i2c device | ||
| 32 | |||
| 33 | ** I2C selftest device | ||
| 34 | |||
| 35 | Required properties: | ||
| 36 | - compatible: must be selftest-i2c-dev | ||
| 37 | |||
| 38 | All other properties are optional | ||
| 39 | |||
| 40 | Example: | ||
| 41 | selftest-i2c-dev { | ||
| 42 | compatible = "selftest-i2c-dev"; | ||
| 43 | status = "okay"; | ||
| 44 | }; | ||
| 45 | |||
| 46 | 4) OF selftest i2c mux device | ||
| 47 | |||
| 48 | ** I2C selftest mux | ||
| 49 | |||
| 50 | Required properties: | ||
| 51 | - compatible: must be selftest-i2c-mux | ||
| 52 | |||
| 53 | Children nodes contain selftest i2c bus nodes per channel. | ||
| 54 | |||
| 55 | Example: | ||
| 56 | selftest-i2c-mux { | ||
| 57 | compatible = "selftest-i2c-mux"; | ||
| 58 | status = "okay"; | ||
| 59 | #address-cells = <1>; | ||
| 60 | #size-cells = <0>; | ||
| 61 | channel-0 { | ||
| 62 | reg = <0>; | ||
| 63 | #address-cells = <1>; | ||
| 64 | #size-cells = <0>; | ||
| 65 | i2c-dev { | ||
| 66 | reg = <8>; | ||
| 67 | compatible = "selftest-i2c-dev"; | ||
| 68 | status = "okay"; | ||
| 69 | }; | ||
| 70 | }; | ||
| 71 | }; | ||
diff --git a/Documentation/devicetree/bindings/usb/atmel-usb.txt b/Documentation/devicetree/bindings/usb/atmel-usb.txt index bc2222ca3f2a..e180d56c75db 100644 --- a/Documentation/devicetree/bindings/usb/atmel-usb.txt +++ b/Documentation/devicetree/bindings/usb/atmel-usb.txt | |||
| @@ -33,9 +33,17 @@ usb1: ehci@00800000 { | |||
| 33 | AT91 USB device controller | 33 | AT91 USB device controller |
| 34 | 34 | ||
| 35 | Required properties: | 35 | Required properties: |
| 36 | - compatible: Should be "atmel,at91rm9200-udc" | 36 | - compatible: Should be one of the following |
| 37 | "atmel,at91rm9200-udc" | ||
| 38 | "atmel,at91sam9260-udc" | ||
| 39 | "atmel,at91sam9261-udc" | ||
| 40 | "atmel,at91sam9263-udc" | ||
| 37 | - reg: Address and length of the register set for the device | 41 | - reg: Address and length of the register set for the device |
| 38 | - interrupts: Should contain macb interrupt | 42 | - interrupts: Should contain macb interrupt |
| 43 | - clocks: Should reference the peripheral and the AHB clocks | ||
| 44 | - clock-names: Should contains two strings | ||
| 45 | "pclk" for the peripheral clock | ||
| 46 | "hclk" for the AHB clock | ||
| 39 | 47 | ||
| 40 | Optional properties: | 48 | Optional properties: |
| 41 | - atmel,vbus-gpio: If present, specifies a gpio that needs to be | 49 | - atmel,vbus-gpio: If present, specifies a gpio that needs to be |
| @@ -51,7 +59,10 @@ usb1: gadget@fffa4000 { | |||
| 51 | Atmel High-Speed USB device controller | 59 | Atmel High-Speed USB device controller |
| 52 | 60 | ||
| 53 | Required properties: | 61 | Required properties: |
| 54 | - compatible: Should be "atmel,at91sam9rl-udc" | 62 | - compatible: Should be one of the following |
| 63 | "at91sam9rl-udc" | ||
| 64 | "at91sam9g45-udc" | ||
| 65 | "sama5d3-udc" | ||
| 55 | - reg: Address and length of the register set for the device | 66 | - reg: Address and length of the register set for the device |
| 56 | - interrupts: Should contain usba interrupt | 67 | - interrupts: Should contain usba interrupt |
| 57 | - ep childnode: To specify the number of endpoints and their properties. | 68 | - ep childnode: To specify the number of endpoints and their properties. |
diff --git a/Documentation/devicetree/bindings/usb/dwc2.txt b/Documentation/devicetree/bindings/usb/dwc2.txt index 482f815363ef..fd132cbee70e 100644 --- a/Documentation/devicetree/bindings/usb/dwc2.txt +++ b/Documentation/devicetree/bindings/usb/dwc2.txt | |||
| @@ -20,6 +20,10 @@ Optional properties: | |||
| 20 | Refer to phy/phy-bindings.txt for generic phy consumer properties | 20 | Refer to phy/phy-bindings.txt for generic phy consumer properties |
| 21 | - dr_mode: shall be one of "host", "peripheral" and "otg" | 21 | - dr_mode: shall be one of "host", "peripheral" and "otg" |
| 22 | Refer to usb/generic.txt | 22 | Refer to usb/generic.txt |
| 23 | - g-use-dma: enable dma usage in gadget driver. | ||
| 24 | - g-rx-fifo-size: size of rx fifo size in gadget mode. | ||
| 25 | - g-np-tx-fifo-size: size of non-periodic tx fifo size in gadget mode. | ||
| 26 | - g-tx-fifo-size: size of periodic tx fifo per endpoint (except ep0) in gadget mode. | ||
| 23 | 27 | ||
| 24 | Example: | 28 | Example: |
| 25 | 29 | ||
diff --git a/Documentation/devicetree/bindings/usb/nvidia,tegra20-ehci.txt b/Documentation/devicetree/bindings/usb/nvidia,tegra20-ehci.txt index 3dc9140e3dfb..f60785f73d3d 100644 --- a/Documentation/devicetree/bindings/usb/nvidia,tegra20-ehci.txt +++ b/Documentation/devicetree/bindings/usb/nvidia,tegra20-ehci.txt | |||
| @@ -6,7 +6,10 @@ Practice : Universal Serial Bus" with the following modifications | |||
| 6 | and additions : | 6 | and additions : |
| 7 | 7 | ||
| 8 | Required properties : | 8 | Required properties : |
| 9 | - compatible : Should be "nvidia,tegra20-ehci". | 9 | - compatible : For Tegra20, must contain "nvidia,tegra20-ehci". |
| 10 | For Tegra30, must contain "nvidia,tegra30-ehci". Otherwise, must contain | ||
| 11 | "nvidia,<chip>-ehci" plus at least one of the above, where <chip> is | ||
| 12 | tegra114, tegra124, tegra132, or tegra210. | ||
| 10 | - nvidia,phy : phandle of the PHY that the controller is connected to. | 13 | - nvidia,phy : phandle of the PHY that the controller is connected to. |
| 11 | - clocks : Must contain one entry, for the module clock. | 14 | - clocks : Must contain one entry, for the module clock. |
| 12 | See ../clocks/clock-bindings.txt for details. | 15 | See ../clocks/clock-bindings.txt for details. |
diff --git a/Documentation/devicetree/bindings/usb/nvidia,tegra20-usb-phy.txt b/Documentation/devicetree/bindings/usb/nvidia,tegra20-usb-phy.txt index c9205fbf26e2..a9aa79fb90ed 100644 --- a/Documentation/devicetree/bindings/usb/nvidia,tegra20-usb-phy.txt +++ b/Documentation/devicetree/bindings/usb/nvidia,tegra20-usb-phy.txt | |||
| @@ -3,7 +3,10 @@ Tegra SOC USB PHY | |||
| 3 | The device node for Tegra SOC USB PHY: | 3 | The device node for Tegra SOC USB PHY: |
| 4 | 4 | ||
| 5 | Required properties : | 5 | Required properties : |
| 6 | - compatible : Should be "nvidia,tegra<chip>-usb-phy". | 6 | - compatible : For Tegra20, must contain "nvidia,tegra20-usb-phy". |
| 7 | For Tegra30, must contain "nvidia,tegra30-usb-phy". Otherwise, must contain | ||
| 8 | "nvidia,<chip>-usb-phy" plus at least one of the above, where <chip> is | ||
| 9 | tegra114, tegra124, tegra132, or tegra210. | ||
| 7 | - reg : Defines the following set of registers, in the order listed: | 10 | - reg : Defines the following set of registers, in the order listed: |
| 8 | - The PHY's own register set. | 11 | - The PHY's own register set. |
| 9 | Always present. | 12 | Always present. |
diff --git a/Documentation/devicetree/bindings/usb/renesas_usbhs.txt b/Documentation/devicetree/bindings/usb/renesas_usbhs.txt index b08c903f8668..61b045b6d50e 100644 --- a/Documentation/devicetree/bindings/usb/renesas_usbhs.txt +++ b/Documentation/devicetree/bindings/usb/renesas_usbhs.txt | |||
| @@ -14,6 +14,8 @@ Optional properties: | |||
| 14 | function should be enabled | 14 | function should be enabled |
| 15 | - phys: phandle + phy specifier pair | 15 | - phys: phandle + phy specifier pair |
| 16 | - phy-names: must be "usb" | 16 | - phy-names: must be "usb" |
| 17 | - dmas: Must contain a list of references to DMA specifiers. | ||
| 18 | - dma-names : Must contain a list of DMA names, "tx" or "rx". | ||
| 17 | 19 | ||
| 18 | Example: | 20 | Example: |
| 19 | usbhs: usb@e6590000 { | 21 | usbhs: usb@e6590000 { |
diff --git a/Documentation/devicetree/bindings/usb/usb-ehci.txt b/Documentation/devicetree/bindings/usb/usb-ehci.txt index 43c1a4e06767..0b04fdff9d5a 100644 --- a/Documentation/devicetree/bindings/usb/usb-ehci.txt +++ b/Documentation/devicetree/bindings/usb/usb-ehci.txt | |||
| @@ -12,6 +12,7 @@ Optional properties: | |||
| 12 | - big-endian-regs : boolean, set this for hcds with big-endian registers | 12 | - big-endian-regs : boolean, set this for hcds with big-endian registers |
| 13 | - big-endian-desc : boolean, set this for hcds with big-endian descriptors | 13 | - big-endian-desc : boolean, set this for hcds with big-endian descriptors |
| 14 | - big-endian : boolean, for hcds with big-endian-regs + big-endian-desc | 14 | - big-endian : boolean, for hcds with big-endian-regs + big-endian-desc |
| 15 | - needs-reset-on-resume : boolean, set this to force EHCI reset after resume | ||
| 15 | - clocks : a list of phandle + clock specifier pairs | 16 | - clocks : a list of phandle + clock specifier pairs |
| 16 | - phys : phandle + phy specifier pair | 17 | - phys : phandle + phy specifier pair |
| 17 | - phy-names : "usb" | 18 | - phy-names : "usb" |
diff --git a/Documentation/devicetree/bindings/usb/usb-nop-xceiv.txt b/Documentation/devicetree/bindings/usb/usb-nop-xceiv.txt index 1bd37faba05b..5be01c859b7a 100644 --- a/Documentation/devicetree/bindings/usb/usb-nop-xceiv.txt +++ b/Documentation/devicetree/bindings/usb/usb-nop-xceiv.txt | |||
| @@ -13,10 +13,15 @@ Optional properties: | |||
| 13 | - clock-frequency: the clock frequency (in Hz) that the PHY clock must | 13 | - clock-frequency: the clock frequency (in Hz) that the PHY clock must |
| 14 | be configured to. | 14 | be configured to. |
| 15 | 15 | ||
| 16 | - vcc-supply: phandle to the regulator that provides RESET to the PHY. | 16 | - vcc-supply: phandle to the regulator that provides power to the PHY. |
| 17 | 17 | ||
| 18 | - reset-gpios: Should specify the GPIO for reset. | 18 | - reset-gpios: Should specify the GPIO for reset. |
| 19 | 19 | ||
| 20 | - vbus-detect-gpio: should specify the GPIO detecting a VBus insertion | ||
| 21 | (see Documentation/devicetree/bindings/gpio/gpio.txt) | ||
| 22 | - vbus-regulator : should specifiy the regulator supplying current drawn from | ||
| 23 | the VBus line (see Documentation/devicetree/bindings/regulator/regulator.txt). | ||
| 24 | |||
| 20 | Example: | 25 | Example: |
| 21 | 26 | ||
| 22 | hsusb1_phy { | 27 | hsusb1_phy { |
| @@ -26,8 +31,11 @@ Example: | |||
| 26 | clock-names = "main_clk"; | 31 | clock-names = "main_clk"; |
| 27 | vcc-supply = <&hsusb1_vcc_regulator>; | 32 | vcc-supply = <&hsusb1_vcc_regulator>; |
| 28 | reset-gpios = <&gpio1 7 GPIO_ACTIVE_LOW>; | 33 | reset-gpios = <&gpio1 7 GPIO_ACTIVE_LOW>; |
| 34 | vbus-detect-gpio = <&gpio2 13 GPIO_ACTIVE_HIGH>; | ||
| 35 | vbus-regulator = <&vbus_regulator>; | ||
| 29 | }; | 36 | }; |
| 30 | 37 | ||
| 31 | hsusb1_phy is a NOP USB PHY device that gets its clock from an oscillator | 38 | hsusb1_phy is a NOP USB PHY device that gets its clock from an oscillator |
| 32 | and expects that clock to be configured to 19.2MHz by the NOP PHY driver. | 39 | and expects that clock to be configured to 19.2MHz by the NOP PHY driver. |
| 33 | hsusb1_vcc_regulator provides power to the PHY and GPIO 7 controls RESET. | 40 | hsusb1_vcc_regulator provides power to the PHY and GPIO 7 controls RESET. |
| 41 | GPIO 13 detects VBus insertion, and accordingly notifies the vbus-regulator. | ||
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt index b1df0ad1306c..389ca1347a77 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.txt +++ b/Documentation/devicetree/bindings/vendor-prefixes.txt | |||
| @@ -4,13 +4,15 @@ This isn't an exhaustive list, but you should add new prefixes to it before | |||
| 4 | using them to avoid name-space collisions. | 4 | using them to avoid name-space collisions. |
| 5 | 5 | ||
| 6 | abilis Abilis Systems | 6 | abilis Abilis Systems |
| 7 | abcn Abracon Corporation | ||
| 7 | active-semi Active-Semi International Inc | 8 | active-semi Active-Semi International Inc |
| 8 | ad Avionic Design GmbH | 9 | ad Avionic Design GmbH |
| 9 | adapteva Adapteva, Inc. | 10 | adapteva Adapteva, Inc. |
| 11 | adh AD Holdings Plc. | ||
| 10 | adi Analog Devices, Inc. | 12 | adi Analog Devices, Inc. |
| 11 | aeroflexgaisler Aeroflex Gaisler AB | 13 | aeroflexgaisler Aeroflex Gaisler AB |
| 12 | ak Asahi Kasei Corp. | ||
| 13 | allwinner Allwinner Technology Co., Ltd. | 14 | allwinner Allwinner Technology Co., Ltd. |
| 15 | alphascale AlphaScale Integrated Circuits Systems, Inc. | ||
| 14 | altr Altera Corp. | 16 | altr Altera Corp. |
| 15 | amcc Applied Micro Circuits Corporation (APM, formally AMCC) | 17 | amcc Applied Micro Circuits Corporation (APM, formally AMCC) |
| 16 | amd Advanced Micro Devices (AMD), Inc. | 18 | amd Advanced Micro Devices (AMD), Inc. |
| @@ -20,9 +22,11 @@ amstaos AMS-Taos Inc. | |||
| 20 | apm Applied Micro Circuits Corporation (APM) | 22 | apm Applied Micro Circuits Corporation (APM) |
| 21 | arm ARM Ltd. | 23 | arm ARM Ltd. |
| 22 | armadeus ARMadeus Systems SARL | 24 | armadeus ARMadeus Systems SARL |
| 25 | asahi-kasei Asahi Kasei Corp. | ||
| 23 | atmel Atmel Corporation | 26 | atmel Atmel Corporation |
| 24 | auo AU Optronics Corporation | 27 | auo AU Optronics Corporation |
| 25 | avago Avago Technologies | 28 | avago Avago Technologies |
| 29 | avic Shanghai AVIC Optoelectronics Co., Ltd. | ||
| 26 | bosch Bosch Sensortec GmbH | 30 | bosch Bosch Sensortec GmbH |
| 27 | brcm Broadcom Corporation | 31 | brcm Broadcom Corporation |
| 28 | buffalo Buffalo, Inc. | 32 | buffalo Buffalo, Inc. |
| @@ -31,11 +35,15 @@ capella Capella Microsystems, Inc | |||
| 31 | cavium Cavium, Inc. | 35 | cavium Cavium, Inc. |
| 32 | cdns Cadence Design Systems Inc. | 36 | cdns Cadence Design Systems Inc. |
| 33 | chipidea Chipidea, Inc | 37 | chipidea Chipidea, Inc |
| 38 | chipspark ChipSPARK | ||
| 34 | chrp Common Hardware Reference Platform | 39 | chrp Common Hardware Reference Platform |
| 35 | chunghwa Chunghwa Picture Tubes Ltd. | 40 | chunghwa Chunghwa Picture Tubes Ltd. |
| 36 | cirrus Cirrus Logic, Inc. | 41 | cirrus Cirrus Logic, Inc. |
| 42 | cloudengines Cloud Engines, Inc. | ||
| 37 | cnm Chips&Media, Inc. | 43 | cnm Chips&Media, Inc. |
| 44 | cnxt Conexant Systems, Inc. | ||
| 38 | cortina Cortina Systems, Inc. | 45 | cortina Cortina Systems, Inc. |
| 46 | cosmic Cosmic Circuits | ||
| 39 | crystalfontz Crystalfontz America, Inc. | 47 | crystalfontz Crystalfontz America, Inc. |
| 40 | dallas Maxim Integrated Products (formerly Dallas Semiconductor) | 48 | dallas Maxim Integrated Products (formerly Dallas Semiconductor) |
| 41 | davicom DAVICOM Semiconductor, Inc. | 49 | davicom DAVICOM Semiconductor, Inc. |
| @@ -54,14 +62,18 @@ epcos EPCOS AG | |||
| 54 | epfl Ecole Polytechnique Fédérale de Lausanne | 62 | epfl Ecole Polytechnique Fédérale de Lausanne |
| 55 | epson Seiko Epson Corp. | 63 | epson Seiko Epson Corp. |
| 56 | est ESTeem Wireless Modems | 64 | est ESTeem Wireless Modems |
| 65 | ettus NI Ettus Research | ||
| 57 | eukrea Eukréa Electromatique | 66 | eukrea Eukréa Electromatique |
| 58 | everest Everest Semiconductor Co. Ltd. | 67 | everest Everest Semiconductor Co. Ltd. |
| 68 | everspin Everspin Technologies, Inc. | ||
| 59 | excito Excito | 69 | excito Excito |
| 60 | fcs Fairchild Semiconductor | 70 | fcs Fairchild Semiconductor |
| 71 | firefly Firefly | ||
| 61 | fsl Freescale Semiconductor | 72 | fsl Freescale Semiconductor |
| 62 | GEFanuc GE Fanuc Intelligent Platforms Embedded Systems, Inc. | 73 | GEFanuc GE Fanuc Intelligent Platforms Embedded Systems, Inc. |
| 63 | gef GE Fanuc Intelligent Platforms Embedded Systems, Inc. | 74 | gef GE Fanuc Intelligent Platforms Embedded Systems, Inc. |
| 64 | geniatech Geniatech, Inc. | 75 | geniatech Geniatech, Inc. |
| 76 | giantplus Giantplus Technology Co., Ltd. | ||
| 65 | globalscale Globalscale Technologies, Inc. | 77 | globalscale Globalscale Technologies, Inc. |
| 66 | gmt Global Mixed-mode Technology, Inc. | 78 | gmt Global Mixed-mode Technology, Inc. |
| 67 | google Google, Inc. | 79 | google Google, Inc. |
| @@ -69,6 +81,7 @@ gumstix Gumstix, Inc. | |||
| 69 | gw Gateworks Corporation | 81 | gw Gateworks Corporation |
| 70 | hannstar HannStar Display Corporation | 82 | hannstar HannStar Display Corporation |
| 71 | haoyu Haoyu Microelectronic Co. Ltd. | 83 | haoyu Haoyu Microelectronic Co. Ltd. |
| 84 | himax Himax Technologies, Inc. | ||
| 72 | hisilicon Hisilicon Limited. | 85 | hisilicon Hisilicon Limited. |
| 73 | hit Hitachi Ltd. | 86 | hit Hitachi Ltd. |
| 74 | honeywell Honeywell | 87 | honeywell Honeywell |
| @@ -82,8 +95,7 @@ innolux Innolux Corporation | |||
| 82 | intel Intel Corporation | 95 | intel Intel Corporation |
| 83 | intercontrol Inter Control Group | 96 | intercontrol Inter Control Group |
| 84 | isee ISEE 2007 S.L. | 97 | isee ISEE 2007 S.L. |
| 85 | isil Intersil (deprecated, use isl) | 98 | isil Intersil |
| 86 | isl Intersil | ||
| 87 | karo Ka-Ro electronics GmbH | 99 | karo Ka-Ro electronics GmbH |
| 88 | keymile Keymile GmbH | 100 | keymile Keymile GmbH |
| 89 | lacie LaCie | 101 | lacie LaCie |
| @@ -118,7 +130,9 @@ nvidia NVIDIA | |||
| 118 | nxp NXP Semiconductors | 130 | nxp NXP Semiconductors |
| 119 | onnn ON Semiconductor Corp. | 131 | onnn ON Semiconductor Corp. |
| 120 | opencores OpenCores.org | 132 | opencores OpenCores.org |
| 133 | ovti OmniVision Technologies | ||
| 121 | panasonic Panasonic Corporation | 134 | panasonic Panasonic Corporation |
| 135 | parade Parade Technologies Inc. | ||
| 122 | pericom Pericom Technology Inc. | 136 | pericom Pericom Technology Inc. |
| 123 | phytec PHYTEC Messtechnik GmbH | 137 | phytec PHYTEC Messtechnik GmbH |
| 124 | picochip Picochip Ltd | 138 | picochip Picochip Ltd |
| @@ -127,6 +141,7 @@ pixcir PIXCIR MICROELECTRONICS Co., Ltd | |||
| 127 | powervr PowerVR (deprecated, use img) | 141 | powervr PowerVR (deprecated, use img) |
| 128 | qca Qualcomm Atheros, Inc. | 142 | qca Qualcomm Atheros, Inc. |
| 129 | qcom Qualcomm Technologies, Inc | 143 | qcom Qualcomm Technologies, Inc |
| 144 | qemu QEMU, a generic and open source machine emulator and virtualizer | ||
| 130 | qnap QNAP Systems, Inc. | 145 | qnap QNAP Systems, Inc. |
| 131 | radxa Radxa | 146 | radxa Radxa |
| 132 | raidsonic RaidSonic Technology GmbH | 147 | raidsonic RaidSonic Technology GmbH |
| @@ -141,8 +156,10 @@ sandisk Sandisk Corporation | |||
| 141 | sbs Smart Battery System | 156 | sbs Smart Battery System |
| 142 | schindler Schindler | 157 | schindler Schindler |
| 143 | seagate Seagate Technology PLC | 158 | seagate Seagate Technology PLC |
| 159 | semtech Semtech Corporation | ||
| 144 | sil Silicon Image | 160 | sil Silicon Image |
| 145 | silabs Silicon Laboratories | 161 | silabs Silicon Laboratories |
| 162 | siliconmitus Silicon Mitus, Inc. | ||
| 146 | simtek | 163 | simtek |
| 147 | sii Seiko Instruments, Inc. | 164 | sii Seiko Instruments, Inc. |
| 148 | silergy Silergy Corp. | 165 | silergy Silergy Corp. |
| @@ -153,6 +170,7 @@ snps Synopsys, Inc. | |||
| 153 | solidrun SolidRun | 170 | solidrun SolidRun |
| 154 | sony Sony Corporation | 171 | sony Sony Corporation |
| 155 | spansion Spansion Inc. | 172 | spansion Spansion Inc. |
| 173 | sprd Spreadtrum Communications Inc. | ||
| 156 | st STMicroelectronics | 174 | st STMicroelectronics |
| 157 | ste ST-Ericsson | 175 | ste ST-Ericsson |
| 158 | stericsson ST-Ericsson | 176 | stericsson ST-Ericsson |
| @@ -164,10 +182,12 @@ tlm Trusted Logic Mobility | |||
| 164 | toradex Toradex AG | 182 | toradex Toradex AG |
| 165 | toshiba Toshiba Corporation | 183 | toshiba Toshiba Corporation |
| 166 | toumaz Toumaz | 184 | toumaz Toumaz |
| 185 | truly Truly Semiconductors Limited | ||
| 167 | usi Universal Scientific Industrial Co., Ltd. | 186 | usi Universal Scientific Industrial Co., Ltd. |
| 168 | v3 V3 Semiconductor | 187 | v3 V3 Semiconductor |
| 169 | variscite Variscite Ltd. | 188 | variscite Variscite Ltd. |
| 170 | via VIA Technologies, Inc. | 189 | via VIA Technologies, Inc. |
| 190 | virtio Virtual I/O Device Specification, developed by the OASIS consortium | ||
| 171 | voipac Voipac Technologies s.r.o. | 191 | voipac Voipac Technologies s.r.o. |
| 172 | winbond Winbond Electronics corp. | 192 | winbond Winbond Electronics corp. |
| 173 | wlf Wolfson Microelectronics | 193 | wlf Wolfson Microelectronics |
diff --git a/Documentation/devicetree/bindings/video/bridge/ps8622.txt b/Documentation/devicetree/bindings/video/bridge/ps8622.txt new file mode 100644 index 000000000000..c989c3807f2b --- /dev/null +++ b/Documentation/devicetree/bindings/video/bridge/ps8622.txt | |||
| @@ -0,0 +1,31 @@ | |||
| 1 | ps8622-bridge bindings | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible: "parade,ps8622" or "parade,ps8625" | ||
| 5 | - reg: first i2c address of the bridge | ||
| 6 | - sleep-gpios: OF device-tree gpio specification for PD_ pin. | ||
| 7 | - reset-gpios: OF device-tree gpio specification for RST_ pin. | ||
| 8 | |||
| 9 | Optional properties: | ||
| 10 | - lane-count: number of DP lanes to use | ||
| 11 | - use-external-pwm: backlight will be controlled by an external PWM | ||
| 12 | - video interfaces: Device node can contain video interface port | ||
| 13 | nodes for panel according to [1]. | ||
| 14 | |||
| 15 | [1]: Documentation/devicetree/bindings/media/video-interfaces.txt | ||
| 16 | |||
| 17 | Example: | ||
| 18 | lvds-bridge@48 { | ||
| 19 | compatible = "parade,ps8622"; | ||
| 20 | reg = <0x48>; | ||
| 21 | sleep-gpios = <&gpc3 6 1 0 0>; | ||
| 22 | reset-gpios = <&gpc3 1 1 0 0>; | ||
| 23 | lane-count = <1>; | ||
| 24 | ports { | ||
| 25 | port@0 { | ||
| 26 | bridge_out: endpoint { | ||
| 27 | remote-endpoint = <&panel_in>; | ||
| 28 | }; | ||
| 29 | }; | ||
| 30 | }; | ||
| 31 | }; | ||
diff --git a/Documentation/devicetree/bindings/drm/bridge/ptn3460.txt b/Documentation/devicetree/bindings/video/bridge/ptn3460.txt index 52b93b2c6748..361971ba104d 100644 --- a/Documentation/devicetree/bindings/drm/bridge/ptn3460.txt +++ b/Documentation/devicetree/bindings/video/bridge/ptn3460.txt | |||
| @@ -3,8 +3,8 @@ ptn3460 bridge bindings | |||
| 3 | Required properties: | 3 | Required properties: |
| 4 | - compatible: "nxp,ptn3460" | 4 | - compatible: "nxp,ptn3460" |
| 5 | - reg: i2c address of the bridge | 5 | - reg: i2c address of the bridge |
| 6 | - powerdown-gpio: OF device-tree gpio specification | 6 | - powerdown-gpio: OF device-tree gpio specification for PD_N pin. |
| 7 | - reset-gpio: OF device-tree gpio specification | 7 | - reset-gpio: OF device-tree gpio specification for RST_N pin. |
| 8 | - edid-emulation: The EDID emulation entry to use | 8 | - edid-emulation: The EDID emulation entry to use |
| 9 | +-------+------------+------------------+ | 9 | +-------+------------+------------------+ |
| 10 | | Value | Resolution | Description | | 10 | | Value | Resolution | Description | |
| @@ -17,6 +17,11 @@ Required properties: | |||
| 17 | | 6 | 1600x900 | ChiMei M215HGE | | 17 | | 6 | 1600x900 | ChiMei M215HGE | |
| 18 | +-------+------------+------------------+ | 18 | +-------+------------+------------------+ |
| 19 | 19 | ||
| 20 | - video interfaces: Device node can contain video interface port | ||
| 21 | nodes for panel according to [1]. | ||
| 22 | |||
| 23 | [1]: Documentation/devicetree/bindings/media/video-interfaces.txt | ||
| 24 | |||
| 20 | Example: | 25 | Example: |
| 21 | lvds-bridge@20 { | 26 | lvds-bridge@20 { |
| 22 | compatible = "nxp,ptn3460"; | 27 | compatible = "nxp,ptn3460"; |
| @@ -24,4 +29,11 @@ Example: | |||
| 24 | powerdown-gpio = <&gpy2 5 1 0 0>; | 29 | powerdown-gpio = <&gpy2 5 1 0 0>; |
| 25 | reset-gpio = <&gpx1 5 1 0 0>; | 30 | reset-gpio = <&gpx1 5 1 0 0>; |
| 26 | edid-emulation = <5>; | 31 | edid-emulation = <5>; |
| 32 | ports { | ||
| 33 | port@0 { | ||
| 34 | bridge_out: endpoint { | ||
| 35 | remote-endpoint = <&panel_in>; | ||
| 36 | }; | ||
| 37 | }; | ||
| 38 | }; | ||
| 27 | }; | 39 | }; |
diff --git a/Documentation/devicetree/bindings/video/dw_hdmi-rockchip.txt b/Documentation/devicetree/bindings/video/dw_hdmi-rockchip.txt new file mode 100644 index 000000000000..668091f27674 --- /dev/null +++ b/Documentation/devicetree/bindings/video/dw_hdmi-rockchip.txt | |||
| @@ -0,0 +1,46 @@ | |||
| 1 | Rockchip specific extensions to the Synopsys Designware HDMI | ||
| 2 | ================================ | ||
| 3 | |||
| 4 | Required properties: | ||
| 5 | - compatible: "rockchip,rk3288-dw-hdmi"; | ||
| 6 | - reg: Physical base address and length of the controller's registers. | ||
| 7 | - clocks: phandle to hdmi iahb and isfr clocks. | ||
| 8 | - clock-names: should be "iahb" "isfr" | ||
| 9 | - rockchip,grf: this soc should set GRF regs to mux vopl/vopb. | ||
| 10 | - interrupts: HDMI interrupt number | ||
| 11 | - ports: contain a port node with endpoint definitions as defined in | ||
| 12 | Documentation/devicetree/bindings/media/video-interfaces.txt. For | ||
| 13 | vopb,set the reg = <0> and set the reg = <1> for vopl. | ||
| 14 | - reg-io-width: the width of the reg:1,4, the value should be 4 on | ||
| 15 | rk3288 platform | ||
| 16 | |||
| 17 | Optional properties | ||
| 18 | - ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing | ||
| 19 | - clocks, clock-names: phandle to the HDMI CEC clock, name should be "cec" | ||
| 20 | |||
| 21 | Example: | ||
| 22 | hdmi: hdmi@ff980000 { | ||
| 23 | compatible = "rockchip,rk3288-dw-hdmi"; | ||
| 24 | reg = <0xff980000 0x20000>; | ||
| 25 | reg-io-width = <4>; | ||
| 26 | ddc-i2c-bus = <&i2c5>; | ||
| 27 | rockchip,grf = <&grf>; | ||
| 28 | interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>; | ||
| 29 | clocks = <&cru PCLK_HDMI_CTRL>, <&cru SCLK_HDMI_HDCP>; | ||
| 30 | clock-names = "iahb", "isfr"; | ||
| 31 | status = "disabled"; | ||
| 32 | ports { | ||
| 33 | hdmi_in: port { | ||
| 34 | #address-cells = <1>; | ||
| 35 | #size-cells = <0>; | ||
| 36 | hdmi_in_vopb: endpoint@0 { | ||
| 37 | reg = <0>; | ||
| 38 | remote-endpoint = <&vopb_out_hdmi>; | ||
| 39 | }; | ||
| 40 | hdmi_in_vopl: endpoint@1 { | ||
| 41 | reg = <1>; | ||
| 42 | remote-endpoint = <&vopl_out_hdmi>; | ||
| 43 | }; | ||
| 44 | }; | ||
| 45 | }; | ||
| 46 | }; | ||
diff --git a/Documentation/devicetree/bindings/video/exynos7-decon.txt b/Documentation/devicetree/bindings/video/exynos7-decon.txt new file mode 100644 index 000000000000..f5f9c8d4a55a --- /dev/null +++ b/Documentation/devicetree/bindings/video/exynos7-decon.txt | |||
| @@ -0,0 +1,68 @@ | |||
| 1 | Device-Tree bindings for Samsung Exynos7 SoC display controller (DECON) | ||
| 2 | |||
| 3 | DECON (Display and Enhancement Controller) is the Display Controller for the | ||
| 4 | Exynos7 series of SoCs which transfers the image data from a video memory | ||
| 5 | buffer to an external LCD interface. | ||
| 6 | |||
| 7 | Required properties: | ||
| 8 | - compatible: value should be "samsung,exynos7-decon"; | ||
| 9 | |||
| 10 | - reg: physical base address and length of the DECON registers set. | ||
| 11 | |||
| 12 | - interrupt-parent: should be the phandle of the decon controller's | ||
| 13 | parent interrupt controller. | ||
| 14 | |||
| 15 | - interrupts: should contain a list of all DECON IP block interrupts in the | ||
| 16 | order: FIFO Level, VSYNC, LCD_SYSTEM. The interrupt specifier | ||
| 17 | format depends on the interrupt controller used. | ||
| 18 | |||
| 19 | - interrupt-names: should contain the interrupt names: "fifo", "vsync", | ||
| 20 | "lcd_sys", in the same order as they were listed in the interrupts | ||
| 21 | property. | ||
| 22 | |||
| 23 | - pinctrl-0: pin control group to be used for this controller. | ||
| 24 | |||
| 25 | - pinctrl-names: must contain a "default" entry. | ||
| 26 | |||
| 27 | - clocks: must include clock specifiers corresponding to entries in the | ||
| 28 | clock-names property. | ||
| 29 | |||
| 30 | - clock-names: list of clock names sorted in the same order as the clocks | ||
| 31 | property. Must contain "pclk_decon0", "aclk_decon0", | ||
| 32 | "decon0_eclk", "decon0_vclk". | ||
| 33 | - i80-if-timings: timing configuration for lcd i80 interface support. | ||
| 34 | |||
| 35 | Optional Properties: | ||
| 36 | - samsung,power-domain: a phandle to DECON power domain node. | ||
| 37 | - display-timings: timing settings for DECON, as described in document [1]. | ||
| 38 | Can be used in case timings cannot be provided otherwise | ||
| 39 | or to override timings provided by the panel. | ||
| 40 | |||
| 41 | [1]: Documentation/devicetree/bindings/video/display-timing.txt | ||
| 42 | |||
| 43 | Example: | ||
| 44 | |||
| 45 | SoC specific DT entry: | ||
| 46 | |||
| 47 | decon@13930000 { | ||
| 48 | compatible = "samsung,exynos7-decon"; | ||
| 49 | interrupt-parent = <&combiner>; | ||
| 50 | reg = <0x13930000 0x1000>; | ||
| 51 | interrupt-names = "lcd_sys", "vsync", "fifo"; | ||
| 52 | interrupts = <0 188 0>, <0 189 0>, <0 190 0>; | ||
| 53 | clocks = <&clock_disp PCLK_DECON_INT>, | ||
| 54 | <&clock_disp ACLK_DECON_INT>, | ||
| 55 | <&clock_disp SCLK_DECON_INT_ECLK>, | ||
| 56 | <&clock_disp SCLK_DECON_INT_EXTCLKPLL>; | ||
| 57 | clock-names = "pclk_decon0", "aclk_decon0", "decon0_eclk", | ||
| 58 | "decon0_vclk"; | ||
| 59 | status = "disabled"; | ||
| 60 | }; | ||
| 61 | |||
| 62 | Board specific DT entry: | ||
| 63 | |||
| 64 | decon@13930000 { | ||
| 65 | pinctrl-0 = <&lcd_clk &pwm1_out>; | ||
| 66 | pinctrl-names = "default"; | ||
| 67 | status = "okay"; | ||
| 68 | }; | ||
diff --git a/Documentation/devicetree/bindings/video/exynos_dp.txt b/Documentation/devicetree/bindings/video/exynos_dp.txt index 53dbccfa80ca..7a3a9cdb86ab 100644 --- a/Documentation/devicetree/bindings/video/exynos_dp.txt +++ b/Documentation/devicetree/bindings/video/exynos_dp.txt | |||
| @@ -66,6 +66,10 @@ Optional properties for dp-controller: | |||
| 66 | Hotplug detect GPIO. | 66 | Hotplug detect GPIO. |
| 67 | Indicates which GPIO should be used for hotplug | 67 | Indicates which GPIO should be used for hotplug |
| 68 | detection | 68 | detection |
| 69 | -video interfaces: Device node can contain video interface port | ||
| 70 | nodes according to [1]. | ||
| 71 | |||
| 72 | [1]: Documentation/devicetree/bindings/media/video-interfaces.txt | ||
| 69 | 73 | ||
| 70 | Example: | 74 | Example: |
| 71 | 75 | ||
| @@ -105,4 +109,12 @@ Board Specific portion: | |||
| 105 | vsync-len = <6>; | 109 | vsync-len = <6>; |
| 106 | }; | 110 | }; |
| 107 | }; | 111 | }; |
| 112 | |||
| 113 | ports { | ||
| 114 | port@0 { | ||
| 115 | dp_out: endpoint { | ||
| 116 | remote-endpoint = <&bridge_in>; | ||
| 117 | }; | ||
| 118 | }; | ||
| 119 | }; | ||
| 108 | }; | 120 | }; |
diff --git a/Documentation/devicetree/bindings/video/exynos_dsim.txt b/Documentation/devicetree/bindings/video/exynos_dsim.txt index ca2b4aacd9af..802aa7ef64e5 100644 --- a/Documentation/devicetree/bindings/video/exynos_dsim.txt +++ b/Documentation/devicetree/bindings/video/exynos_dsim.txt | |||
| @@ -21,7 +21,7 @@ Required properties: | |||
| 21 | according to DSI host bindings (see MIPI DSI bindings [1]) | 21 | according to DSI host bindings (see MIPI DSI bindings [1]) |
| 22 | 22 | ||
| 23 | Optional properties: | 23 | Optional properties: |
| 24 | - samsung,power-domain: a phandle to DSIM power domain node | 24 | - power-domains: a phandle to DSIM power domain node |
| 25 | 25 | ||
| 26 | Child nodes: | 26 | Child nodes: |
| 27 | Should contain DSI peripheral nodes (see MIPI DSI bindings [1]). | 27 | Should contain DSI peripheral nodes (see MIPI DSI bindings [1]). |
| @@ -53,7 +53,7 @@ Example: | |||
| 53 | phy-names = "dsim"; | 53 | phy-names = "dsim"; |
| 54 | vddcore-supply = <&vusb_reg>; | 54 | vddcore-supply = <&vusb_reg>; |
| 55 | vddio-supply = <&vmipi_reg>; | 55 | vddio-supply = <&vmipi_reg>; |
| 56 | samsung,power-domain = <&pd_lcd0>; | 56 | power-domains = <&pd_lcd0>; |
| 57 | #address-cells = <1>; | 57 | #address-cells = <1>; |
| 58 | #size-cells = <0>; | 58 | #size-cells = <0>; |
| 59 | samsung,pll-clock-frequency = <24000000>; | 59 | samsung,pll-clock-frequency = <24000000>; |
diff --git a/Documentation/devicetree/bindings/video/exynos_mixer.txt b/Documentation/devicetree/bindings/video/exynos_mixer.txt index 08b394b1edbf..3e38128f866b 100644 --- a/Documentation/devicetree/bindings/video/exynos_mixer.txt +++ b/Documentation/devicetree/bindings/video/exynos_mixer.txt | |||
| @@ -15,6 +15,7 @@ Required properties: | |||
| 15 | a) mixer: Gate of Mixer IP bus clock. | 15 | a) mixer: Gate of Mixer IP bus clock. |
| 16 | b) sclk_hdmi: HDMI Special clock, one of the two possible inputs of | 16 | b) sclk_hdmi: HDMI Special clock, one of the two possible inputs of |
| 17 | mixer mux. | 17 | mixer mux. |
| 18 | c) hdmi: Gate of HDMI IP bus clock, needed together with sclk_hdmi. | ||
| 18 | 19 | ||
| 19 | Example: | 20 | Example: |
| 20 | 21 | ||
diff --git a/Documentation/devicetree/bindings/video/renesas,du.txt b/Documentation/devicetree/bindings/video/renesas,du.txt index 5102830f2760..c902323928f7 100644 --- a/Documentation/devicetree/bindings/video/renesas,du.txt +++ b/Documentation/devicetree/bindings/video/renesas,du.txt | |||
| @@ -26,6 +26,10 @@ Required Properties: | |||
| 26 | per LVDS encoder. The functional clocks must be named "du.x" with "x" | 26 | per LVDS encoder. The functional clocks must be named "du.x" with "x" |
| 27 | being the channel numerical index. The LVDS clocks must be named | 27 | being the channel numerical index. The LVDS clocks must be named |
| 28 | "lvds.x" with "x" being the LVDS encoder numerical index. | 28 | "lvds.x" with "x" being the LVDS encoder numerical index. |
| 29 | - In addition to the functional and encoder clocks, all DU versions also | ||
| 30 | support externally supplied pixel clocks. Those clocks are optional. | ||
| 31 | When supplied they must be named "dclkin.x" with "x" being the input | ||
| 32 | clock numerical index. | ||
| 29 | 33 | ||
| 30 | Required nodes: | 34 | Required nodes: |
| 31 | 35 | ||
diff --git a/Documentation/devicetree/bindings/video/samsung-fimd.txt b/Documentation/devicetree/bindings/video/samsung-fimd.txt index cf1af6371021..a8bbbde03e79 100644 --- a/Documentation/devicetree/bindings/video/samsung-fimd.txt +++ b/Documentation/devicetree/bindings/video/samsung-fimd.txt | |||
| @@ -38,7 +38,7 @@ Required properties: | |||
| 38 | property. Must contain "sclk_fimd" and "fimd". | 38 | property. Must contain "sclk_fimd" and "fimd". |
| 39 | 39 | ||
| 40 | Optional Properties: | 40 | Optional Properties: |
| 41 | - samsung,power-domain: a phandle to FIMD power domain node. | 41 | - power-domains: a phandle to FIMD power domain node. |
| 42 | - samsung,invert-vden: video enable signal is inverted | 42 | - samsung,invert-vden: video enable signal is inverted |
| 43 | - samsung,invert-vclk: video clock signal is inverted | 43 | - samsung,invert-vclk: video clock signal is inverted |
| 44 | - display-timings: timing settings for FIMD, as described in document [1]. | 44 | - display-timings: timing settings for FIMD, as described in document [1]. |
| @@ -97,7 +97,7 @@ SoC specific DT entry: | |||
| 97 | interrupts = <11 0>, <11 1>, <11 2>; | 97 | interrupts = <11 0>, <11 1>, <11 2>; |
| 98 | clocks = <&clock 140>, <&clock 283>; | 98 | clocks = <&clock 140>, <&clock 283>; |
| 99 | clock-names = "sclk_fimd", "fimd"; | 99 | clock-names = "sclk_fimd", "fimd"; |
| 100 | samsung,power-domain = <&pd_lcd0>; | 100 | power-domains = <&pd_lcd0>; |
| 101 | status = "disabled"; | 101 | status = "disabled"; |
| 102 | }; | 102 | }; |
| 103 | 103 | ||
diff --git a/Documentation/devicetree/bindings/video/ti,dra7-dss.txt b/Documentation/devicetree/bindings/video/ti,dra7-dss.txt new file mode 100644 index 000000000000..f33a05137b0e --- /dev/null +++ b/Documentation/devicetree/bindings/video/ti,dra7-dss.txt | |||
| @@ -0,0 +1,69 @@ | |||
| 1 | Texas Instruments DRA7x Display Subsystem | ||
| 2 | ========================================= | ||
| 3 | |||
| 4 | See Documentation/devicetree/bindings/video/ti,omap-dss.txt for generic | ||
| 5 | description about OMAP Display Subsystem bindings. | ||
| 6 | |||
| 7 | DSS Core | ||
| 8 | -------- | ||
| 9 | |||
| 10 | Required properties: | ||
| 11 | - compatible: "ti,dra7-dss" | ||
| 12 | - reg: address and length of the register spaces for 'dss' | ||
| 13 | - ti,hwmods: "dss_core" | ||
| 14 | - clocks: handle to fclk | ||
| 15 | - clock-names: "fck" | ||
| 16 | - syscon: phandle to control module core syscon node | ||
| 17 | |||
| 18 | Optional properties: | ||
| 19 | |||
| 20 | Some DRA7xx SoCs have one dedicated video PLL, some have two. These properties | ||
| 21 | can be used to describe the video PLLs: | ||
| 22 | |||
| 23 | - reg: address and length of the register spaces for 'pll1_clkctrl', | ||
| 24 | 'pll1', 'pll2_clkctrl', 'pll2' | ||
| 25 | - clocks: handle to video1 pll clock and video2 pll clock | ||
| 26 | - clock-names: "video1_clk" and "video2_clk" | ||
| 27 | |||
| 28 | Required nodes: | ||
| 29 | - DISPC | ||
| 30 | |||
| 31 | Optional nodes: | ||
| 32 | - DSS Submodules: HDMI | ||
| 33 | - Video port for DPI output | ||
| 34 | |||
| 35 | DPI Endpoint required properties: | ||
| 36 | - data-lines: number of lines used | ||
| 37 | |||
| 38 | |||
| 39 | DISPC | ||
| 40 | ----- | ||
| 41 | |||
| 42 | Required properties: | ||
| 43 | - compatible: "ti,dra7-dispc" | ||
| 44 | - reg: address and length of the register space | ||
| 45 | - ti,hwmods: "dss_dispc" | ||
| 46 | - interrupts: the DISPC interrupt | ||
| 47 | - clocks: handle to fclk | ||
| 48 | - clock-names: "fck" | ||
| 49 | |||
| 50 | HDMI | ||
| 51 | ---- | ||
| 52 | |||
| 53 | Required properties: | ||
| 54 | - compatible: "ti,dra7-hdmi" | ||
| 55 | - reg: addresses and lengths of the register spaces for 'wp', 'pll', 'phy', | ||
| 56 | 'core' | ||
| 57 | - reg-names: "wp", "pll", "phy", "core" | ||
| 58 | - interrupts: the HDMI interrupt line | ||
| 59 | - ti,hwmods: "dss_hdmi" | ||
| 60 | - vdda-supply: vdda power supply | ||
| 61 | - clocks: handles to fclk and pll clock | ||
| 62 | - clock-names: "fck", "sys_clk" | ||
| 63 | |||
| 64 | Optional nodes: | ||
| 65 | - Video port for HDMI output | ||
| 66 | |||
| 67 | HDMI Endpoint optional properties: | ||
| 68 | - lanes: list of 8 pin numbers for the HDMI lanes: CLK+, CLK-, D0+, D0-, | ||
| 69 | D1+, D1-, D2+, D2-. (default: 0,1,2,3,4,5,6,7) | ||
diff --git a/Documentation/devicetree/bindings/video/ti,opa362.txt b/Documentation/devicetree/bindings/video/ti,opa362.txt new file mode 100644 index 000000000000..f96083c0bd17 --- /dev/null +++ b/Documentation/devicetree/bindings/video/ti,opa362.txt | |||
| @@ -0,0 +1,38 @@ | |||
| 1 | OPA362 analog video amplifier | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible: "ti,opa362" | ||
| 5 | - enable-gpios: enable/disable output gpio | ||
| 6 | |||
| 7 | Required node: | ||
| 8 | - Video port 0 for opa362 input | ||
| 9 | - Video port 1 for opa362 output | ||
| 10 | |||
| 11 | Example: | ||
| 12 | |||
| 13 | tv_amp: opa362 { | ||
| 14 | compatible = "ti,opa362"; | ||
| 15 | enable-gpios = <&gpio1 23 0>; /* GPIO to enable video out amplifier */ | ||
| 16 | |||
| 17 | ports { | ||
| 18 | #address-cells = <1>; | ||
| 19 | #size-cells = <0>; | ||
| 20 | |||
| 21 | port@0 { | ||
| 22 | reg = <0>; | ||
| 23 | opa_in: endpoint@0 { | ||
| 24 | remote-endpoint = <&venc_out>; | ||
| 25 | }; | ||
| 26 | }; | ||
| 27 | |||
| 28 | port@1 { | ||
| 29 | reg = <1>; | ||
| 30 | opa_out: endpoint@0 { | ||
| 31 | remote-endpoint = <&tv_connector_in>; | ||
| 32 | }; | ||
| 33 | }; | ||
| 34 | }; | ||
| 35 | }; | ||
| 36 | |||
| 37 | |||
| 38 | |||
diff --git a/Documentation/devicetree/bindings/watchdog/gpio-wdt.txt b/Documentation/devicetree/bindings/watchdog/gpio-wdt.txt index 37afec194949..198794963786 100644 --- a/Documentation/devicetree/bindings/watchdog/gpio-wdt.txt +++ b/Documentation/devicetree/bindings/watchdog/gpio-wdt.txt | |||
| @@ -13,6 +13,11 @@ Required Properties: | |||
| 13 | by the GPIO flags. | 13 | by the GPIO flags. |
| 14 | - hw_margin_ms: Maximum time to reset watchdog circuit (milliseconds). | 14 | - hw_margin_ms: Maximum time to reset watchdog circuit (milliseconds). |
| 15 | 15 | ||
| 16 | Optional Properties: | ||
| 17 | - always-running: If the watchdog timer cannot be disabled, add this flag to | ||
| 18 | have the driver keep toggling the signal without a client. It will only cease | ||
| 19 | to toggle the signal when the device is open and the timeout elapsed. | ||
| 20 | |||
| 16 | Example: | 21 | Example: |
| 17 | watchdog: watchdog { | 22 | watchdog: watchdog { |
| 18 | /* ADM706 */ | 23 | /* ADM706 */ |
diff --git a/Documentation/devicetree/bindings/watchdog/imgpdc-wdt.txt b/Documentation/devicetree/bindings/watchdog/imgpdc-wdt.txt new file mode 100644 index 000000000000..b2fa11fd43de --- /dev/null +++ b/Documentation/devicetree/bindings/watchdog/imgpdc-wdt.txt | |||
| @@ -0,0 +1,19 @@ | |||
| 1 | *ImgTec PowerDown Controller (PDC) Watchdog Timer (WDT) | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible : Should be "img,pdc-wdt" | ||
| 5 | - reg : Should contain WDT registers location and length | ||
| 6 | - clocks: Must contain an entry for each entry in clock-names. | ||
| 7 | - clock-names: Should contain "wdt" and "sys"; the watchdog counter | ||
| 8 | clock and register interface clock respectively. | ||
| 9 | - interrupts : Should contain WDT interrupt | ||
| 10 | |||
| 11 | Examples: | ||
| 12 | |||
| 13 | watchdog@18102100 { | ||
| 14 | compatible = "img,pdc-wdt"; | ||
| 15 | reg = <0x18102100 0x100>; | ||
| 16 | clocks = <&pdc_wdt_clk>, <&sys_clk>; | ||
| 17 | clock-names = "wdt", "sys"; | ||
| 18 | interrupts = <0 52 IRQ_TYPE_LEVEL_HIGH>; | ||
| 19 | }; | ||
diff --git a/Documentation/devicetree/bindings/watchdog/ingenic,jz4740-wdt.txt b/Documentation/devicetree/bindings/watchdog/ingenic,jz4740-wdt.txt new file mode 100644 index 000000000000..e27763ef0049 --- /dev/null +++ b/Documentation/devicetree/bindings/watchdog/ingenic,jz4740-wdt.txt | |||
| @@ -0,0 +1,12 @@ | |||
| 1 | Ingenic Watchdog Timer (WDT) Controller for JZ4740 | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | compatible: "ingenic,jz4740-watchdog" | ||
| 5 | reg: Register address and length for watchdog registers | ||
| 6 | |||
| 7 | Example: | ||
| 8 | |||
| 9 | watchdog: jz4740-watchdog@0x10002000 { | ||
| 10 | compatible = "ingenic,jz4740-watchdog"; | ||
| 11 | reg = <0x10002000 0x100>; | ||
| 12 | }; | ||
diff --git a/Documentation/devicetree/bindings/watchdog/mtk-wdt.txt b/Documentation/devicetree/bindings/watchdog/mtk-wdt.txt new file mode 100644 index 000000000000..af9eb5b8a253 --- /dev/null +++ b/Documentation/devicetree/bindings/watchdog/mtk-wdt.txt | |||
| @@ -0,0 +1,13 @@ | |||
| 1 | Mediatek SoCs Watchdog timer | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | |||
| 5 | - compatible : should be "mediatek,mt6589-wdt" | ||
| 6 | - reg : Specifies base physical address and size of the registers. | ||
| 7 | |||
| 8 | Example: | ||
| 9 | |||
| 10 | wdt: watchdog@010000000 { | ||
| 11 | compatible = "mediatek,mt6589-wdt"; | ||
| 12 | reg = <0x10000000 0x18>; | ||
| 13 | }; | ||
diff --git a/Documentation/devicetree/overlay-notes.txt b/Documentation/devicetree/overlay-notes.txt index 30ae758e3eef..d418a6ce9812 100644 --- a/Documentation/devicetree/overlay-notes.txt +++ b/Documentation/devicetree/overlay-notes.txt | |||
| @@ -10,7 +10,7 @@ How overlays work | |||
| 10 | ----------------- | 10 | ----------------- |
| 11 | 11 | ||
| 12 | A Device Tree's overlay purpose is to modify the kernel's live tree, and | 12 | A Device Tree's overlay purpose is to modify the kernel's live tree, and |
| 13 | have the modification affecting the state of the the kernel in a way that | 13 | have the modification affecting the state of the kernel in a way that |
| 14 | is reflecting the changes. | 14 | is reflecting the changes. |
| 15 | Since the kernel mainly deals with devices, any new device node that result | 15 | Since the kernel mainly deals with devices, any new device node that result |
| 16 | in an active device should have it created while if the device node is either | 16 | in an active device should have it created while if the device node is either |
| @@ -80,7 +80,7 @@ result in foo+bar.dts | |||
| 80 | }; | 80 | }; |
| 81 | ---- foo+bar.dts ------------------------------------------------------------- | 81 | ---- foo+bar.dts ------------------------------------------------------------- |
| 82 | 82 | ||
| 83 | As a result of the the overlay, a new device node (bar) has been created | 83 | As a result of the overlay, a new device node (bar) has been created |
| 84 | so a bar platform device will be registered and if a matching device driver | 84 | so a bar platform device will be registered and if a matching device driver |
| 85 | is loaded the device will be created as expected. | 85 | is loaded the device will be created as expected. |
| 86 | 86 | ||
diff --git a/Documentation/dmaengine/00-INDEX b/Documentation/dmaengine/00-INDEX new file mode 100644 index 000000000000..07de6573d22b --- /dev/null +++ b/Documentation/dmaengine/00-INDEX | |||
| @@ -0,0 +1,8 @@ | |||
| 1 | 00-INDEX | ||
| 2 | - this file. | ||
| 3 | client.txt | ||
| 4 | -the DMA Engine API Guide. | ||
| 5 | dmatest.txt | ||
| 6 | - how to compile, configure and use the dmatest system. | ||
| 7 | provider.txt | ||
| 8 | - the DMA controller API. \ No newline at end of file | ||
diff --git a/Documentation/dmaengine/provider.txt b/Documentation/dmaengine/provider.txt index 766658ccf235..05d2280190f1 100644 --- a/Documentation/dmaengine/provider.txt +++ b/Documentation/dmaengine/provider.txt | |||
| @@ -113,6 +113,31 @@ need to initialize a few fields in there: | |||
| 113 | * channels: should be initialized as a list using the | 113 | * channels: should be initialized as a list using the |
| 114 | INIT_LIST_HEAD macro for example | 114 | INIT_LIST_HEAD macro for example |
| 115 | 115 | ||
| 116 | * src_addr_widths: | ||
| 117 | - should contain a bitmask of the supported source transfer width | ||
| 118 | |||
| 119 | * dst_addr_widths: | ||
| 120 | - should contain a bitmask of the supported destination transfer | ||
| 121 | width | ||
| 122 | |||
| 123 | * directions: | ||
| 124 | - should contain a bitmask of the supported slave directions | ||
| 125 | (i.e. excluding mem2mem transfers) | ||
| 126 | |||
| 127 | * residue_granularity: | ||
| 128 | - Granularity of the transfer residue reported to dma_set_residue. | ||
| 129 | - This can be either: | ||
| 130 | + Descriptor | ||
| 131 | -> Your device doesn't support any kind of residue | ||
| 132 | reporting. The framework will only know that a particular | ||
| 133 | transaction descriptor is done. | ||
| 134 | + Segment | ||
| 135 | -> Your device is able to report which chunks have been | ||
| 136 | transferred | ||
| 137 | + Burst | ||
| 138 | -> Your device is able to report which burst have been | ||
| 139 | transferred | ||
| 140 | |||
| 116 | * dev: should hold the pointer to the struct device associated | 141 | * dev: should hold the pointer to the struct device associated |
| 117 | to your current driver instance. | 142 | to your current driver instance. |
| 118 | 143 | ||
| @@ -274,48 +299,36 @@ supported. | |||
| 274 | account the current period. | 299 | account the current period. |
| 275 | - This function can be called in an interrupt context. | 300 | - This function can be called in an interrupt context. |
| 276 | 301 | ||
| 277 | * device_control | 302 | * device_config |
| 278 | - Used by client drivers to control and configure the channel it | 303 | - Reconfigures the channel with the configuration given as |
| 279 | has a handle on. | 304 | argument |
| 280 | - Called with a command and an argument | 305 | - This command should NOT perform synchronously, or on any |
| 281 | + The command is one of the values listed by the enum | 306 | currently queued transfers, but only on subsequent ones |
| 282 | dma_ctrl_cmd. The valid commands are: | 307 | - In this case, the function will receive a dma_slave_config |
| 283 | + DMA_PAUSE | 308 | structure pointer as an argument, that will detail which |
| 284 | + Pauses a transfer on the channel | 309 | configuration to use. |
| 285 | + This command should operate synchronously on the channel, | 310 | - Even though that structure contains a direction field, this |
| 286 | pausing right away the work of the given channel | 311 | field is deprecated in favor of the direction argument given to |
| 287 | + DMA_RESUME | 312 | the prep_* functions |
| 288 | + Restarts a transfer on the channel | 313 | - This call is mandatory for slave operations only. This should NOT be |
| 289 | + This command should operate synchronously on the channel, | 314 | set or expected to be set for memcpy operations. |
| 290 | resuming right away the work of the given channel | 315 | If a driver support both, it should use this call for slave |
| 291 | + DMA_TERMINATE_ALL | 316 | operations only and not for memcpy ones. |
| 292 | + Aborts all the pending and ongoing transfers on the | 317 | |
| 293 | channel | 318 | * device_pause |
| 294 | + This command should operate synchronously on the channel, | 319 | - Pauses a transfer on the channel |
| 295 | terminating right away all the channels | 320 | - This command should operate synchronously on the channel, |
| 296 | + DMA_SLAVE_CONFIG | 321 | pausing right away the work of the given channel |
| 297 | + Reconfigures the channel with passed configuration | 322 | |
| 298 | + This command should NOT perform synchronously, or on any | 323 | * device_resume |
| 299 | currently queued transfers, but only on subsequent ones | 324 | - Resumes a transfer on the channel |
| 300 | + In this case, the function will receive a | 325 | - This command should operate synchronously on the channel, |
| 301 | dma_slave_config structure pointer as an argument, that | 326 | pausing right away the work of the given channel |
| 302 | will detail which configuration to use. | 327 | |
| 303 | + Even though that structure contains a direction field, | 328 | * device_terminate_all |
| 304 | this field is deprecated in favor of the direction | 329 | - Aborts all the pending and ongoing transfers on the channel |
| 305 | argument given to the prep_* functions | 330 | - This command should operate synchronously on the channel, |
| 306 | + FSLDMA_EXTERNAL_START | 331 | terminating right away all the channels |
| 307 | + TODO: Why does that even exist? | ||
| 308 | + The argument is an opaque unsigned long. This actually is a | ||
| 309 | pointer to a struct dma_slave_config that should be used only | ||
| 310 | in the DMA_SLAVE_CONFIG. | ||
| 311 | |||
| 312 | * device_slave_caps | ||
| 313 | - Called through the framework by client drivers in order to have | ||
| 314 | an idea of what are the properties of the channel allocated to | ||
| 315 | them. | ||
| 316 | - Such properties are the buswidth, available directions, etc. | ||
| 317 | - Required for every generic layer doing DMA transfers, such as | ||
| 318 | ASoC. | ||
| 319 | 332 | ||
| 320 | Misc notes (stuff that should be documented, but don't really know | 333 | Misc notes (stuff that should be documented, but don't really know |
| 321 | where to put them) | 334 | where to put them) |
diff --git a/Documentation/driver-model/bus.txt b/Documentation/driver-model/bus.txt index 6754b2df8aa1..b577a45b93ea 100644 --- a/Documentation/driver-model/bus.txt +++ b/Documentation/driver-model/bus.txt | |||
| @@ -45,7 +45,7 @@ them are inherently bus-specific. Drivers typically declare an array | |||
| 45 | of device IDs of devices they support that reside in a bus-specific | 45 | of device IDs of devices they support that reside in a bus-specific |
| 46 | driver structure. | 46 | driver structure. |
| 47 | 47 | ||
| 48 | The purpose of the match callback is provide the bus an opportunity to | 48 | The purpose of the match callback is to give the bus an opportunity to |
| 49 | determine if a particular driver supports a particular device by | 49 | determine if a particular driver supports a particular device by |
| 50 | comparing the device IDs the driver supports with the device ID of a | 50 | comparing the device IDs the driver supports with the device ID of a |
| 51 | particular device, without sacrificing bus-specific functionality or | 51 | particular device, without sacrificing bus-specific functionality or |
diff --git a/Documentation/driver-model/devres.txt b/Documentation/driver-model/devres.txt index b5ab416cd53a..6d1e8eeb5990 100644 --- a/Documentation/driver-model/devres.txt +++ b/Documentation/driver-model/devres.txt | |||
| @@ -258,6 +258,8 @@ IIO | |||
| 258 | devm_iio_device_free() | 258 | devm_iio_device_free() |
| 259 | devm_iio_device_register() | 259 | devm_iio_device_register() |
| 260 | devm_iio_device_unregister() | 260 | devm_iio_device_unregister() |
| 261 | devm_iio_kfifo_allocate() | ||
| 262 | devm_iio_kfifo_free() | ||
| 261 | devm_iio_trigger_alloc() | 263 | devm_iio_trigger_alloc() |
| 262 | devm_iio_trigger_free() | 264 | devm_iio_trigger_free() |
| 263 | 265 | ||
diff --git a/Documentation/filesystems/00-INDEX b/Documentation/filesystems/00-INDEX index ac28149aede4..9922939e7d99 100644 --- a/Documentation/filesystems/00-INDEX +++ b/Documentation/filesystems/00-INDEX | |||
| @@ -34,6 +34,9 @@ configfs/ | |||
| 34 | - directory containing configfs documentation and example code. | 34 | - directory containing configfs documentation and example code. |
| 35 | cramfs.txt | 35 | cramfs.txt |
| 36 | - info on the cram filesystem for small storage (ROMs etc). | 36 | - info on the cram filesystem for small storage (ROMs etc). |
| 37 | dax.txt | ||
| 38 | - info on avoiding the page cache for files stored on CPU-addressable | ||
| 39 | storage devices. | ||
| 37 | debugfs.txt | 40 | debugfs.txt |
| 38 | - info on the debugfs filesystem. | 41 | - info on the debugfs filesystem. |
| 39 | devpts.txt | 42 | devpts.txt |
| @@ -154,5 +157,3 @@ xfs-self-describing-metadata.txt | |||
| 154 | - info on XFS Self Describing Metadata. | 157 | - info on XFS Self Describing Metadata. |
| 155 | xfs.txt | 158 | xfs.txt |
| 156 | - info and mount options for the XFS filesystem. | 159 | - info and mount options for the XFS filesystem. |
| 157 | xip.txt | ||
| 158 | - info on execute-in-place for file mappings. | ||
diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking index b30753cbf431..f91926f2f482 100644 --- a/Documentation/filesystems/Locking +++ b/Documentation/filesystems/Locking | |||
| @@ -164,8 +164,6 @@ the block device inode. See there for more details. | |||
| 164 | 164 | ||
| 165 | --------------------------- file_system_type --------------------------- | 165 | --------------------------- file_system_type --------------------------- |
| 166 | prototypes: | 166 | prototypes: |
| 167 | int (*get_sb) (struct file_system_type *, int, | ||
| 168 | const char *, void *, struct vfsmount *); | ||
| 169 | struct dentry *(*mount) (struct file_system_type *, int, | 167 | struct dentry *(*mount) (struct file_system_type *, int, |
| 170 | const char *, void *); | 168 | const char *, void *); |
| 171 | void (*kill_sb) (struct super_block *); | 169 | void (*kill_sb) (struct super_block *); |
| @@ -199,8 +197,6 @@ prototypes: | |||
| 199 | int (*releasepage) (struct page *, int); | 197 | int (*releasepage) (struct page *, int); |
| 200 | void (*freepage)(struct page *); | 198 | void (*freepage)(struct page *); |
| 201 | int (*direct_IO)(int, struct kiocb *, struct iov_iter *iter, loff_t offset); | 199 | int (*direct_IO)(int, struct kiocb *, struct iov_iter *iter, loff_t offset); |
| 202 | int (*get_xip_mem)(struct address_space *, pgoff_t, int, void **, | ||
| 203 | unsigned long *); | ||
| 204 | int (*migratepage)(struct address_space *, struct page *, struct page *); | 200 | int (*migratepage)(struct address_space *, struct page *, struct page *); |
| 205 | int (*launder_page)(struct page *); | 201 | int (*launder_page)(struct page *); |
| 206 | int (*is_partially_uptodate)(struct page *, unsigned long, unsigned long); | 202 | int (*is_partially_uptodate)(struct page *, unsigned long, unsigned long); |
| @@ -225,7 +221,6 @@ invalidatepage: yes | |||
| 225 | releasepage: yes | 221 | releasepage: yes |
| 226 | freepage: yes | 222 | freepage: yes |
| 227 | direct_IO: | 223 | direct_IO: |
| 228 | get_xip_mem: maybe | ||
| 229 | migratepage: yes (both) | 224 | migratepage: yes (both) |
| 230 | launder_page: yes | 225 | launder_page: yes |
| 231 | is_partially_uptodate: yes | 226 | is_partially_uptodate: yes |
diff --git a/Documentation/filesystems/dax.txt b/Documentation/filesystems/dax.txt new file mode 100644 index 000000000000..baf41118660d --- /dev/null +++ b/Documentation/filesystems/dax.txt | |||
| @@ -0,0 +1,94 @@ | |||
| 1 | Direct Access for files | ||
| 2 | ----------------------- | ||
| 3 | |||
| 4 | Motivation | ||
| 5 | ---------- | ||
| 6 | |||
| 7 | The page cache is usually used to buffer reads and writes to files. | ||
| 8 | It is also used to provide the pages which are mapped into userspace | ||
| 9 | by a call to mmap. | ||
| 10 | |||
| 11 | For block devices that are memory-like, the page cache pages would be | ||
| 12 | unnecessary copies of the original storage. The DAX code removes the | ||
| 13 | extra copy by performing reads and writes directly to the storage device. | ||
| 14 | For file mappings, the storage device is mapped directly into userspace. | ||
| 15 | |||
| 16 | |||
| 17 | Usage | ||
| 18 | ----- | ||
| 19 | |||
| 20 | If you have a block device which supports DAX, you can make a filesystem | ||
| 21 | on it as usual. When mounting it, use the -o dax option manually | ||
| 22 | or add 'dax' to the options in /etc/fstab. | ||
| 23 | |||
| 24 | |||
| 25 | Implementation Tips for Block Driver Writers | ||
| 26 | -------------------------------------------- | ||
| 27 | |||
| 28 | To support DAX in your block driver, implement the 'direct_access' | ||
| 29 | block device operation. It is used to translate the sector number | ||
| 30 | (expressed in units of 512-byte sectors) to a page frame number (pfn) | ||
| 31 | that identifies the physical page for the memory. It also returns a | ||
| 32 | kernel virtual address that can be used to access the memory. | ||
| 33 | |||
| 34 | The direct_access method takes a 'size' parameter that indicates the | ||
| 35 | number of bytes being requested. The function should return the number | ||
| 36 | of bytes that can be contiguously accessed at that offset. It may also | ||
| 37 | return a negative errno if an error occurs. | ||
| 38 | |||
| 39 | In order to support this method, the storage must be byte-accessible by | ||
| 40 | the CPU at all times. If your device uses paging techniques to expose | ||
| 41 | a large amount of memory through a smaller window, then you cannot | ||
| 42 | implement direct_access. Equally, if your device can occasionally | ||
| 43 | stall the CPU for an extended period, you should also not attempt to | ||
| 44 | implement direct_access. | ||
| 45 | |||
| 46 | These block devices may be used for inspiration: | ||
| 47 | - axonram: Axon DDR2 device driver | ||
| 48 | - brd: RAM backed block device driver | ||
| 49 | - dcssblk: s390 dcss block device driver | ||
| 50 | |||
| 51 | |||
| 52 | Implementation Tips for Filesystem Writers | ||
| 53 | ------------------------------------------ | ||
| 54 | |||
| 55 | Filesystem support consists of | ||
| 56 | - adding support to mark inodes as being DAX by setting the S_DAX flag in | ||
| 57 | i_flags | ||
| 58 | - implementing the direct_IO address space operation, and calling | ||
| 59 | dax_do_io() instead of blockdev_direct_IO() if S_DAX is set | ||
| 60 | - implementing an mmap file operation for DAX files which sets the | ||
| 61 | VM_MIXEDMAP flag on the VMA, and setting the vm_ops to include handlers | ||
| 62 | for fault and page_mkwrite (which should probably call dax_fault() and | ||
| 63 | dax_mkwrite(), passing the appropriate get_block() callback) | ||
| 64 | - calling dax_truncate_page() instead of block_truncate_page() for DAX files | ||
| 65 | - calling dax_zero_page_range() instead of zero_user() for DAX files | ||
| 66 | - ensuring that there is sufficient locking between reads, writes, | ||
| 67 | truncates and page faults | ||
| 68 | |||
| 69 | The get_block() callback passed to the DAX functions may return | ||
| 70 | uninitialised extents. If it does, it must ensure that simultaneous | ||
| 71 | calls to get_block() (for example by a page-fault racing with a read() | ||
| 72 | or a write()) work correctly. | ||
| 73 | |||
| 74 | These filesystems may be used for inspiration: | ||
| 75 | - ext2: the second extended filesystem, see Documentation/filesystems/ext2.txt | ||
| 76 | - ext4: the fourth extended filesystem, see Documentation/filesystems/ext4.txt | ||
| 77 | |||
| 78 | |||
| 79 | Shortcomings | ||
| 80 | ------------ | ||
| 81 | |||
| 82 | Even if the kernel or its modules are stored on a filesystem that supports | ||
| 83 | DAX on a block device that supports DAX, they will still be copied into RAM. | ||
| 84 | |||
| 85 | The DAX code does not work correctly on architectures which have virtually | ||
| 86 | mapped caches such as ARM, MIPS and SPARC. | ||
| 87 | |||
| 88 | Calling get_user_pages() on a range of user memory that has been mmaped | ||
| 89 | from a DAX file will fail as there are no 'struct page' to describe | ||
| 90 | those pages. This problem is being worked on. That means that O_DIRECT | ||
| 91 | reads/writes to those memory ranges from a non-DAX file will fail (note | ||
| 92 | that O_DIRECT reads/writes _of a DAX file_ do work, it is the memory | ||
| 93 | that is being accessed that is key here). Other things that will not | ||
| 94 | work include RDMA, sendfile() and splice(). | ||
diff --git a/Documentation/filesystems/ext2.txt b/Documentation/filesystems/ext2.txt index 67639f905f10..b9714569e472 100644 --- a/Documentation/filesystems/ext2.txt +++ b/Documentation/filesystems/ext2.txt | |||
| @@ -20,6 +20,9 @@ minixdf Makes `df' act like Minix. | |||
| 20 | check=none, nocheck (*) Don't do extra checking of bitmaps on mount | 20 | check=none, nocheck (*) Don't do extra checking of bitmaps on mount |
| 21 | (check=normal and check=strict options removed) | 21 | (check=normal and check=strict options removed) |
| 22 | 22 | ||
| 23 | dax Use direct access (no page cache). See | ||
| 24 | Documentation/filesystems/dax.txt. | ||
| 25 | |||
| 23 | debug Extra debugging information is sent to the | 26 | debug Extra debugging information is sent to the |
| 24 | kernel syslog. Useful for developers. | 27 | kernel syslog. Useful for developers. |
| 25 | 28 | ||
| @@ -56,8 +59,6 @@ noacl Don't support POSIX ACLs. | |||
| 56 | 59 | ||
| 57 | nobh Do not attach buffer_heads to file pagecache. | 60 | nobh Do not attach buffer_heads to file pagecache. |
| 58 | 61 | ||
| 59 | xip Use execute in place (no caching) if possible | ||
| 60 | |||
| 61 | grpquota,noquota,quota,usrquota Quota options are silently ignored by ext2. | 62 | grpquota,noquota,quota,usrquota Quota options are silently ignored by ext2. |
| 62 | 63 | ||
| 63 | 64 | ||
diff --git a/Documentation/filesystems/ext4.txt b/Documentation/filesystems/ext4.txt index 919a3293aaa4..6c0108eb0137 100644 --- a/Documentation/filesystems/ext4.txt +++ b/Documentation/filesystems/ext4.txt | |||
| @@ -386,6 +386,10 @@ max_dir_size_kb=n This limits the size of directories so that any | |||
| 386 | i_version Enable 64-bit inode version support. This option is | 386 | i_version Enable 64-bit inode version support. This option is |
| 387 | off by default. | 387 | off by default. |
| 388 | 388 | ||
| 389 | dax Use direct access (no page cache). See | ||
| 390 | Documentation/filesystems/dax.txt. Note that | ||
| 391 | this option is incompatible with data=journal. | ||
| 392 | |||
| 389 | Data Mode | 393 | Data Mode |
| 390 | ========= | 394 | ========= |
| 391 | There are 3 different data modes: | 395 | There are 3 different data modes: |
diff --git a/Documentation/filesystems/f2fs.txt b/Documentation/filesystems/f2fs.txt index e0950c483c22..dac11d7fef27 100644 --- a/Documentation/filesystems/f2fs.txt +++ b/Documentation/filesystems/f2fs.txt | |||
| @@ -106,6 +106,8 @@ background_gc=%s Turn on/off cleaning operations, namely garbage | |||
| 106 | Default value for this option is on. So garbage | 106 | Default value for this option is on. So garbage |
| 107 | collection is on by default. | 107 | collection is on by default. |
| 108 | disable_roll_forward Disable the roll-forward recovery routine | 108 | disable_roll_forward Disable the roll-forward recovery routine |
| 109 | norecovery Disable the roll-forward recovery routine, mounted read- | ||
| 110 | only (i.e., -o ro,disable_roll_forward) | ||
| 109 | discard Issue discard/TRIM commands when a segment is cleaned. | 111 | discard Issue discard/TRIM commands when a segment is cleaned. |
| 110 | no_heap Disable heap-style segment allocation which finds free | 112 | no_heap Disable heap-style segment allocation which finds free |
| 111 | segments for data from the beginning of main area, while | 113 | segments for data from the beginning of main area, while |
| @@ -197,6 +199,10 @@ Files in /sys/fs/f2fs/<devname> | |||
| 197 | checkpoint is triggered, and issued during the | 199 | checkpoint is triggered, and issued during the |
| 198 | checkpoint. By default, it is disabled with 0. | 200 | checkpoint. By default, it is disabled with 0. |
| 199 | 201 | ||
| 202 | trim_sections This parameter controls the number of sections | ||
| 203 | to be trimmed out in batch mode when FITRIM | ||
| 204 | conducts. 32 sections is set by default. | ||
| 205 | |||
| 200 | ipu_policy This parameter controls the policy of in-place | 206 | ipu_policy This parameter controls the policy of in-place |
| 201 | updates in f2fs. There are five policies: | 207 | updates in f2fs. There are five policies: |
| 202 | 0x01: F2FS_IPU_FORCE, 0x02: F2FS_IPU_SSR, | 208 | 0x01: F2FS_IPU_FORCE, 0x02: F2FS_IPU_SSR, |
diff --git a/Documentation/filesystems/fiemap.txt b/Documentation/filesystems/fiemap.txt index 1b805a0efbb0..f6d9c99103a4 100644 --- a/Documentation/filesystems/fiemap.txt +++ b/Documentation/filesystems/fiemap.txt | |||
| @@ -196,7 +196,8 @@ struct fiemap_extent_info { | |||
| 196 | }; | 196 | }; |
| 197 | 197 | ||
| 198 | It is intended that the file system should not need to access any of this | 198 | It is intended that the file system should not need to access any of this |
| 199 | structure directly. | 199 | structure directly. Filesystem handlers should be tolerant to signals and return |
| 200 | EINTR once fatal signal received. | ||
| 200 | 201 | ||
| 201 | 202 | ||
| 202 | Flag checking should be done at the beginning of the ->fiemap callback via the | 203 | Flag checking should be done at the beginning of the ->fiemap callback via the |
diff --git a/Documentation/filesystems/inotify.txt b/Documentation/filesystems/inotify.txt index cfd02712b83e..51f61db787fb 100644 --- a/Documentation/filesystems/inotify.txt +++ b/Documentation/filesystems/inotify.txt | |||
| @@ -4,201 +4,10 @@ | |||
| 4 | 4 | ||
| 5 | 5 | ||
| 6 | Document started 15 Mar 2005 by Robert Love <rml@novell.com> | 6 | Document started 15 Mar 2005 by Robert Love <rml@novell.com> |
| 7 | Document updated 4 Jan 2015 by Zhang Zhen <zhenzhang.zhang@huawei.com> | ||
| 8 | --Deleted obsoleted interface, just refer to manpages for user interface. | ||
| 7 | 9 | ||
| 8 | 10 | (i) Rationale | |
| 9 | (i) User Interface | ||
| 10 | |||
| 11 | Inotify is controlled by a set of three system calls and normal file I/O on a | ||
| 12 | returned file descriptor. | ||
| 13 | |||
| 14 | First step in using inotify is to initialise an inotify instance: | ||
| 15 | |||
| 16 | int fd = inotify_init (); | ||
| 17 | |||
| 18 | Each instance is associated with a unique, ordered queue. | ||
| 19 | |||
| 20 | Change events are managed by "watches". A watch is an (object,mask) pair where | ||
| 21 | the object is a file or directory and the mask is a bit mask of one or more | ||
| 22 | inotify events that the application wishes to receive. See <linux/inotify.h> | ||
| 23 | for valid events. A watch is referenced by a watch descriptor, or wd. | ||
| 24 | |||
| 25 | Watches are added via a path to the file. | ||
| 26 | |||
| 27 | Watches on a directory will return events on any files inside of the directory. | ||
| 28 | |||
| 29 | Adding a watch is simple: | ||
| 30 | |||
| 31 | int wd = inotify_add_watch (fd, path, mask); | ||
| 32 | |||
| 33 | Where "fd" is the return value from inotify_init(), path is the path to the | ||
| 34 | object to watch, and mask is the watch mask (see <linux/inotify.h>). | ||
| 35 | |||
| 36 | You can update an existing watch in the same manner, by passing in a new mask. | ||
| 37 | |||
| 38 | An existing watch is removed via | ||
| 39 | |||
| 40 | int ret = inotify_rm_watch (fd, wd); | ||
| 41 | |||
| 42 | Events are provided in the form of an inotify_event structure that is read(2) | ||
| 43 | from a given inotify instance. The filename is of dynamic length and follows | ||
| 44 | the struct. It is of size len. The filename is padded with null bytes to | ||
| 45 | ensure proper alignment. This padding is reflected in len. | ||
| 46 | |||
| 47 | You can slurp multiple events by passing a large buffer, for example | ||
| 48 | |||
| 49 | size_t len = read (fd, buf, BUF_LEN); | ||
| 50 | |||
| 51 | Where "buf" is a pointer to an array of "inotify_event" structures at least | ||
| 52 | BUF_LEN bytes in size. The above example will return as many events as are | ||
| 53 | available and fit in BUF_LEN. | ||
| 54 | |||
| 55 | Each inotify instance fd is also select()- and poll()-able. | ||
| 56 | |||
| 57 | You can find the size of the current event queue via the standard FIONREAD | ||
| 58 | ioctl on the fd returned by inotify_init(). | ||
| 59 | |||
| 60 | All watches are destroyed and cleaned up on close. | ||
| 61 | |||
| 62 | |||
| 63 | (ii) | ||
| 64 | |||
| 65 | Prototypes: | ||
| 66 | |||
| 67 | int inotify_init (void); | ||
| 68 | int inotify_add_watch (int fd, const char *path, __u32 mask); | ||
| 69 | int inotify_rm_watch (int fd, __u32 mask); | ||
| 70 | |||
| 71 | |||
| 72 | (iii) Kernel Interface | ||
| 73 | |||
| 74 | Inotify's kernel API consists a set of functions for managing watches and an | ||
| 75 | event callback. | ||
| 76 | |||
| 77 | To use the kernel API, you must first initialize an inotify instance with a set | ||
| 78 | of inotify_operations. You are given an opaque inotify_handle, which you use | ||
| 79 | for any further calls to inotify. | ||
| 80 | |||
| 81 | struct inotify_handle *ih = inotify_init(my_event_handler); | ||
| 82 | |||
| 83 | You must provide a function for processing events and a function for destroying | ||
| 84 | the inotify watch. | ||
| 85 | |||
| 86 | void handle_event(struct inotify_watch *watch, u32 wd, u32 mask, | ||
| 87 | u32 cookie, const char *name, struct inode *inode) | ||
| 88 | |||
| 89 | watch - the pointer to the inotify_watch that triggered this call | ||
| 90 | wd - the watch descriptor | ||
| 91 | mask - describes the event that occurred | ||
| 92 | cookie - an identifier for synchronizing events | ||
| 93 | name - the dentry name for affected files in a directory-based event | ||
| 94 | inode - the affected inode in a directory-based event | ||
| 95 | |||
| 96 | void destroy_watch(struct inotify_watch *watch) | ||
| 97 | |||
| 98 | You may add watches by providing a pre-allocated and initialized inotify_watch | ||
| 99 | structure and specifying the inode to watch along with an inotify event mask. | ||
| 100 | You must pin the inode during the call. You will likely wish to embed the | ||
| 101 | inotify_watch structure in a structure of your own which contains other | ||
| 102 | information about the watch. Once you add an inotify watch, it is immediately | ||
| 103 | subject to removal depending on filesystem events. You must grab a reference if | ||
| 104 | you depend on the watch hanging around after the call. | ||
| 105 | |||
| 106 | inotify_init_watch(&my_watch->iwatch); | ||
| 107 | inotify_get_watch(&my_watch->iwatch); // optional | ||
| 108 | s32 wd = inotify_add_watch(ih, &my_watch->iwatch, inode, mask); | ||
| 109 | inotify_put_watch(&my_watch->iwatch); // optional | ||
| 110 | |||
| 111 | You may use the watch descriptor (wd) or the address of the inotify_watch for | ||
| 112 | other inotify operations. You must not directly read or manipulate data in the | ||
| 113 | inotify_watch. Additionally, you must not call inotify_add_watch() more than | ||
| 114 | once for a given inotify_watch structure, unless you have first called either | ||
| 115 | inotify_rm_watch() or inotify_rm_wd(). | ||
| 116 | |||
| 117 | To determine if you have already registered a watch for a given inode, you may | ||
| 118 | call inotify_find_watch(), which gives you both the wd and the watch pointer for | ||
| 119 | the inotify_watch, or an error if the watch does not exist. | ||
| 120 | |||
| 121 | wd = inotify_find_watch(ih, inode, &watchp); | ||
| 122 | |||
| 123 | You may use container_of() on the watch pointer to access your own data | ||
| 124 | associated with a given watch. When an existing watch is found, | ||
| 125 | inotify_find_watch() bumps the refcount before releasing its locks. You must | ||
| 126 | put that reference with: | ||
| 127 | |||
| 128 | put_inotify_watch(watchp); | ||
| 129 | |||
| 130 | Call inotify_find_update_watch() to update the event mask for an existing watch. | ||
| 131 | inotify_find_update_watch() returns the wd of the updated watch, or an error if | ||
| 132 | the watch does not exist. | ||
| 133 | |||
| 134 | wd = inotify_find_update_watch(ih, inode, mask); | ||
| 135 | |||
| 136 | An existing watch may be removed by calling either inotify_rm_watch() or | ||
| 137 | inotify_rm_wd(). | ||
| 138 | |||
| 139 | int ret = inotify_rm_watch(ih, &my_watch->iwatch); | ||
| 140 | int ret = inotify_rm_wd(ih, wd); | ||
| 141 | |||
| 142 | A watch may be removed while executing your event handler with the following: | ||
| 143 | |||
| 144 | inotify_remove_watch_locked(ih, iwatch); | ||
| 145 | |||
| 146 | Call inotify_destroy() to remove all watches from your inotify instance and | ||
| 147 | release it. If there are no outstanding references, inotify_destroy() will call | ||
| 148 | your destroy_watch op for each watch. | ||
| 149 | |||
| 150 | inotify_destroy(ih); | ||
| 151 | |||
| 152 | When inotify removes a watch, it sends an IN_IGNORED event to your callback. | ||
| 153 | You may use this event as an indication to free the watch memory. Note that | ||
| 154 | inotify may remove a watch due to filesystem events, as well as by your request. | ||
| 155 | If you use IN_ONESHOT, inotify will remove the watch after the first event, at | ||
| 156 | which point you may call the final inotify_put_watch. | ||
| 157 | |||
| 158 | (iv) Kernel Interface Prototypes | ||
| 159 | |||
| 160 | struct inotify_handle *inotify_init(struct inotify_operations *ops); | ||
| 161 | |||
| 162 | inotify_init_watch(struct inotify_watch *watch); | ||
| 163 | |||
| 164 | s32 inotify_add_watch(struct inotify_handle *ih, | ||
| 165 | struct inotify_watch *watch, | ||
| 166 | struct inode *inode, u32 mask); | ||
| 167 | |||
| 168 | s32 inotify_find_watch(struct inotify_handle *ih, struct inode *inode, | ||
| 169 | struct inotify_watch **watchp); | ||
| 170 | |||
| 171 | s32 inotify_find_update_watch(struct inotify_handle *ih, | ||
| 172 | struct inode *inode, u32 mask); | ||
| 173 | |||
| 174 | int inotify_rm_wd(struct inotify_handle *ih, u32 wd); | ||
| 175 | |||
| 176 | int inotify_rm_watch(struct inotify_handle *ih, | ||
| 177 | struct inotify_watch *watch); | ||
| 178 | |||
| 179 | void inotify_remove_watch_locked(struct inotify_handle *ih, | ||
| 180 | struct inotify_watch *watch); | ||
| 181 | |||
| 182 | void inotify_destroy(struct inotify_handle *ih); | ||
| 183 | |||
| 184 | void get_inotify_watch(struct inotify_watch *watch); | ||
| 185 | void put_inotify_watch(struct inotify_watch *watch); | ||
| 186 | |||
| 187 | |||
| 188 | (v) Internal Kernel Implementation | ||
| 189 | |||
| 190 | Each inotify instance is represented by an inotify_handle structure. | ||
| 191 | Inotify's userspace consumers also have an inotify_device which is | ||
| 192 | associated with the inotify_handle, and on which events are queued. | ||
| 193 | |||
| 194 | Each watch is associated with an inotify_watch structure. Watches are chained | ||
| 195 | off of each associated inotify_handle and each associated inode. | ||
| 196 | |||
| 197 | See fs/notify/inotify/inotify_fsnotify.c and fs/notify/inotify/inotify_user.c | ||
| 198 | for the locking and lifetime rules. | ||
| 199 | |||
| 200 | |||
| 201 | (vi) Rationale | ||
| 202 | 11 | ||
| 203 | Q: What is the design decision behind not tying the watch to the open fd of | 12 | Q: What is the design decision behind not tying the watch to the open fd of |
| 204 | the watched object? | 13 | the watched object? |
diff --git a/Documentation/filesystems/nfs/nfs41-server.txt b/Documentation/filesystems/nfs/nfs41-server.txt index c49cd7e796e7..682a59fabe3f 100644 --- a/Documentation/filesystems/nfs/nfs41-server.txt +++ b/Documentation/filesystems/nfs/nfs41-server.txt | |||
| @@ -24,11 +24,6 @@ focuses on the mandatory-to-implement NFSv4.1 Sessions, providing | |||
| 24 | "exactly once" semantics and better control and throttling of the | 24 | "exactly once" semantics and better control and throttling of the |
| 25 | resources allocated for each client. | 25 | resources allocated for each client. |
| 26 | 26 | ||
| 27 | Other NFSv4.1 features, Parallel NFS operations in particular, | ||
| 28 | are still under development out of tree. | ||
| 29 | See http://wiki.linux-nfs.org/wiki/index.php/PNFS_prototype_design | ||
| 30 | for more information. | ||
| 31 | |||
| 32 | The table below, taken from the NFSv4.1 document, lists | 27 | The table below, taken from the NFSv4.1 document, lists |
| 33 | the operations that are mandatory to implement (REQ), optional | 28 | the operations that are mandatory to implement (REQ), optional |
| 34 | (OPT), and NFSv4.0 operations that are required not to implement (MNI) | 29 | (OPT), and NFSv4.0 operations that are required not to implement (MNI) |
| @@ -43,9 +38,7 @@ The OPTIONAL features identified and their abbreviations are as follows: | |||
| 43 | The following abbreviations indicate the linux server implementation status. | 38 | The following abbreviations indicate the linux server implementation status. |
| 44 | I Implemented NFSv4.1 operations. | 39 | I Implemented NFSv4.1 operations. |
| 45 | NS Not Supported. | 40 | NS Not Supported. |
| 46 | NS* unimplemented optional feature. | 41 | NS* Unimplemented optional feature. |
| 47 | P pNFS features implemented out of tree. | ||
| 48 | PNS pNFS features that are not supported yet (out of tree). | ||
| 49 | 42 | ||
| 50 | Operations | 43 | Operations |
| 51 | 44 | ||
| @@ -70,13 +63,13 @@ I | DESTROY_SESSION | REQ | | Section 18.37 | | |||
| 70 | I | EXCHANGE_ID | REQ | | Section 18.35 | | 63 | I | EXCHANGE_ID | REQ | | Section 18.35 | |
| 71 | I | FREE_STATEID | REQ | | Section 18.38 | | 64 | I | FREE_STATEID | REQ | | Section 18.38 | |
| 72 | | GETATTR | REQ | | Section 18.7 | | 65 | | GETATTR | REQ | | Section 18.7 | |
| 73 | P | GETDEVICEINFO | OPT | pNFS (REQ) | Section 18.40 | | 66 | I | GETDEVICEINFO | OPT | pNFS (REQ) | Section 18.40 | |
| 74 | P | GETDEVICELIST | OPT | pNFS (OPT) | Section 18.41 | | 67 | NS*| GETDEVICELIST | OPT | pNFS (OPT) | Section 18.41 | |
| 75 | | GETFH | REQ | | Section 18.8 | | 68 | | GETFH | REQ | | Section 18.8 | |
| 76 | NS*| GET_DIR_DELEGATION | OPT | DDELG (REQ) | Section 18.39 | | 69 | NS*| GET_DIR_DELEGATION | OPT | DDELG (REQ) | Section 18.39 | |
| 77 | P | LAYOUTCOMMIT | OPT | pNFS (REQ) | Section 18.42 | | 70 | I | LAYOUTCOMMIT | OPT | pNFS (REQ) | Section 18.42 | |
| 78 | P | LAYOUTGET | OPT | pNFS (REQ) | Section 18.43 | | 71 | I | LAYOUTGET | OPT | pNFS (REQ) | Section 18.43 | |
| 79 | P | LAYOUTRETURN | OPT | pNFS (REQ) | Section 18.44 | | 72 | I | LAYOUTRETURN | OPT | pNFS (REQ) | Section 18.44 | |
| 80 | | LINK | OPT | | Section 18.9 | | 73 | | LINK | OPT | | Section 18.9 | |
| 81 | | LOCK | REQ | | Section 18.10 | | 74 | | LOCK | REQ | | Section 18.10 | |
| 82 | | LOCKT | REQ | | Section 18.11 | | 75 | | LOCKT | REQ | | Section 18.11 | |
| @@ -122,9 +115,9 @@ Callback Operations | |||
| 122 | | | MNI | or OPT) | | | 115 | | | MNI | or OPT) | | |
| 123 | +-------------------------+-----------+-------------+---------------+ | 116 | +-------------------------+-----------+-------------+---------------+ |
| 124 | | CB_GETATTR | OPT | FDELG (REQ) | Section 20.1 | | 117 | | CB_GETATTR | OPT | FDELG (REQ) | Section 20.1 | |
| 125 | P | CB_LAYOUTRECALL | OPT | pNFS (REQ) | Section 20.3 | | 118 | I | CB_LAYOUTRECALL | OPT | pNFS (REQ) | Section 20.3 | |
| 126 | NS*| CB_NOTIFY | OPT | DDELG (REQ) | Section 20.4 | | 119 | NS*| CB_NOTIFY | OPT | DDELG (REQ) | Section 20.4 | |
| 127 | P | CB_NOTIFY_DEVICEID | OPT | pNFS (OPT) | Section 20.12 | | 120 | NS*| CB_NOTIFY_DEVICEID | OPT | pNFS (OPT) | Section 20.12 | |
| 128 | NS*| CB_NOTIFY_LOCK | OPT | | Section 20.11 | | 121 | NS*| CB_NOTIFY_LOCK | OPT | | Section 20.11 | |
| 129 | NS*| CB_PUSH_DELEG | OPT | FDELG (OPT) | Section 20.5 | | 122 | NS*| CB_PUSH_DELEG | OPT | FDELG (OPT) | Section 20.5 | |
| 130 | | CB_RECALL | OPT | FDELG, | Section 20.2 | | 123 | | CB_RECALL | OPT | FDELG, | Section 20.2 | |
diff --git a/Documentation/filesystems/nfs/pnfs-block-server.txt b/Documentation/filesystems/nfs/pnfs-block-server.txt new file mode 100644 index 000000000000..2143673cf154 --- /dev/null +++ b/Documentation/filesystems/nfs/pnfs-block-server.txt | |||
| @@ -0,0 +1,37 @@ | |||
| 1 | pNFS block layout server user guide | ||
| 2 | |||
| 3 | The Linux NFS server now supports the pNFS block layout extension. In this | ||
| 4 | case the NFS server acts as Metadata Server (MDS) for pNFS, which in addition | ||
| 5 | to handling all the metadata access to the NFS export also hands out layouts | ||
| 6 | to the clients to directly access the underlying block devices that are | ||
| 7 | shared with the client. | ||
| 8 | |||
| 9 | To use pNFS block layouts with with the Linux NFS server the exported file | ||
| 10 | system needs to support the pNFS block layouts (currently just XFS), and the | ||
| 11 | file system must sit on shared storage (typically iSCSI) that is accessible | ||
| 12 | to the clients in addition to the MDS. As of now the file system needs to | ||
| 13 | sit directly on the exported volume, striping or concatenation of | ||
| 14 | volumes on the MDS and clients is not supported yet. | ||
| 15 | |||
| 16 | On the server, pNFS block volume support is automatically if the file system | ||
| 17 | support it. On the client make sure the kernel has the CONFIG_PNFS_BLOCK | ||
| 18 | option enabled, the blkmapd daemon from nfs-utils is running, and the | ||
| 19 | file system is mounted using the NFSv4.1 protocol version (mount -o vers=4.1). | ||
| 20 | |||
| 21 | If the nfsd server needs to fence a non-responding client it calls | ||
| 22 | /sbin/nfsd-recall-failed with the first argument set to the IP address of | ||
| 23 | the client, and the second argument set to the device node without the /dev | ||
| 24 | prefix for the file system to be fenced. Below is an example file that shows | ||
| 25 | how to translate the device into a serial number from SCSI EVPD 0x80: | ||
| 26 | |||
| 27 | cat > /sbin/nfsd-recall-failed << EOF | ||
| 28 | #!/bin/sh | ||
| 29 | |||
| 30 | CLIENT="$1" | ||
| 31 | DEV="/dev/$2" | ||
| 32 | EVPD=`sg_inq --page=0x80 ${DEV} | \ | ||
| 33 | grep "Unit serial number:" | \ | ||
| 34 | awk -F ': ' '{print $2}'` | ||
| 35 | |||
| 36 | echo "fencing client ${CLIENT} serial ${EVPD}" >> /var/log/pnfsd-fence.log | ||
| 37 | EOF | ||
diff --git a/Documentation/filesystems/nfs/pnfs.txt b/Documentation/filesystems/nfs/pnfs.txt index adc81a35fe2d..44a9f2493a88 100644 --- a/Documentation/filesystems/nfs/pnfs.txt +++ b/Documentation/filesystems/nfs/pnfs.txt | |||
| @@ -57,15 +57,16 @@ bit is set, preventing any new lsegs from being added. | |||
| 57 | layout drivers | 57 | layout drivers |
| 58 | -------------- | 58 | -------------- |
| 59 | 59 | ||
| 60 | PNFS utilizes what is called layout drivers. The STD defines 3 basic | 60 | PNFS utilizes what is called layout drivers. The STD defines 4 basic |
| 61 | layout types: "files" "objects" and "blocks". For each of these types | 61 | layout types: "files", "objects", "blocks", and "flexfiles". For each |
| 62 | there is a layout-driver with a common function-vectors table which | 62 | of these types there is a layout-driver with a common function-vectors |
| 63 | are called by the nfs-client pnfs-core to implement the different layout | 63 | table which are called by the nfs-client pnfs-core to implement the |
| 64 | types. | 64 | different layout types. |
| 65 | 65 | ||
| 66 | Files-layout-driver code is in: fs/nfs/nfs4filelayout.c && nfs4filelayoutdev.c | 66 | Files-layout-driver code is in: fs/nfs/filelayout/.. directory |
| 67 | Objects-layout-deriver code is in: fs/nfs/objlayout/.. directory | 67 | Objects-layout-deriver code is in: fs/nfs/objlayout/.. directory |
| 68 | Blocks-layout-deriver code is in: fs/nfs/blocklayout/.. directory | 68 | Blocks-layout-deriver code is in: fs/nfs/blocklayout/.. directory |
| 69 | Flexfiles-layout-driver code is in: fs/nfs/flexfilelayout/.. directory | ||
| 69 | 70 | ||
| 70 | objects-layout setup | 71 | objects-layout setup |
| 71 | -------------------- | 72 | -------------------- |
diff --git a/Documentation/filesystems/ocfs2.txt b/Documentation/filesystems/ocfs2.txt index 7618a287aa41..28f8c08201e2 100644 --- a/Documentation/filesystems/ocfs2.txt +++ b/Documentation/filesystems/ocfs2.txt | |||
| @@ -100,3 +100,7 @@ coherency=full (*) Disallow concurrent O_DIRECT writes, cluster inode | |||
| 100 | coherency=buffered Allow concurrent O_DIRECT writes without EX lock among | 100 | coherency=buffered Allow concurrent O_DIRECT writes without EX lock among |
| 101 | nodes, which gains high performance at risk of getting | 101 | nodes, which gains high performance at risk of getting |
| 102 | stale data on other nodes. | 102 | stale data on other nodes. |
| 103 | journal_async_commit Commit block can be written to disk without waiting | ||
| 104 | for descriptor blocks. If enabled older kernels cannot | ||
| 105 | mount the device. This will enable 'journal_checksum' | ||
| 106 | internally. | ||
diff --git a/Documentation/filesystems/overlayfs.txt b/Documentation/filesystems/overlayfs.txt index a27c950ece61..6db0e5d1da07 100644 --- a/Documentation/filesystems/overlayfs.txt +++ b/Documentation/filesystems/overlayfs.txt | |||
| @@ -159,6 +159,22 @@ overlay filesystem (though an operation on the name of the file such as | |||
| 159 | rename or unlink will of course be noticed and handled). | 159 | rename or unlink will of course be noticed and handled). |
| 160 | 160 | ||
| 161 | 161 | ||
| 162 | Multiple lower layers | ||
| 163 | --------------------- | ||
| 164 | |||
| 165 | Multiple lower layers can now be given using the the colon (":") as a | ||
| 166 | separator character between the directory names. For example: | ||
| 167 | |||
| 168 | mount -t overlay overlay -olowerdir=/lower1:/lower2:/lower3 /merged | ||
| 169 | |||
| 170 | As the example shows, "upperdir=" and "workdir=" may be omitted. In | ||
| 171 | that case the overlay will be read-only. | ||
| 172 | |||
| 173 | The specified lower directories will be stacked beginning from the | ||
| 174 | rightmost one and going left. In the above example lower1 will be the | ||
| 175 | top, lower2 the middle and lower3 the bottom layer. | ||
| 176 | |||
| 177 | |||
| 162 | Non-standard behavior | 178 | Non-standard behavior |
| 163 | --------------------- | 179 | --------------------- |
| 164 | 180 | ||
| @@ -196,3 +212,15 @@ Changes to the underlying filesystems while part of a mounted overlay | |||
| 196 | filesystem are not allowed. If the underlying filesystem is changed, | 212 | filesystem are not allowed. If the underlying filesystem is changed, |
| 197 | the behavior of the overlay is undefined, though it will not result in | 213 | the behavior of the overlay is undefined, though it will not result in |
| 198 | a crash or deadlock. | 214 | a crash or deadlock. |
| 215 | |||
| 216 | Testsuite | ||
| 217 | --------- | ||
| 218 | |||
| 219 | There's testsuite developed by David Howells at: | ||
| 220 | |||
| 221 | git://git.infradead.org/users/dhowells/unionmount-testsuite.git | ||
| 222 | |||
| 223 | Run as root: | ||
| 224 | |||
| 225 | # cd unionmount-testsuite | ||
| 226 | # ./run --ov | ||
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt index aae9dd13c91f..a07ba61662ed 100644 --- a/Documentation/filesystems/proc.txt +++ b/Documentation/filesystems/proc.txt | |||
| @@ -28,7 +28,7 @@ Table of Contents | |||
| 28 | 1.6 Parallel port info in /proc/parport | 28 | 1.6 Parallel port info in /proc/parport |
| 29 | 1.7 TTY info in /proc/tty | 29 | 1.7 TTY info in /proc/tty |
| 30 | 1.8 Miscellaneous kernel statistics in /proc/stat | 30 | 1.8 Miscellaneous kernel statistics in /proc/stat |
| 31 | 1.9 Ext4 file system parameters | 31 | 1.9 Ext4 file system parameters |
| 32 | 32 | ||
| 33 | 2 Modifying System Parameters | 33 | 2 Modifying System Parameters |
| 34 | 34 | ||
| @@ -42,6 +42,7 @@ Table of Contents | |||
| 42 | 3.6 /proc/<pid>/comm & /proc/<pid>/task/<tid>/comm | 42 | 3.6 /proc/<pid>/comm & /proc/<pid>/task/<tid>/comm |
| 43 | 3.7 /proc/<pid>/task/<tid>/children - Information about task children | 43 | 3.7 /proc/<pid>/task/<tid>/children - Information about task children |
| 44 | 3.8 /proc/<pid>/fdinfo/<fd> - Information about opened file | 44 | 3.8 /proc/<pid>/fdinfo/<fd> - Information about opened file |
| 45 | 3.9 /proc/<pid>/map_files - Information about memory mapped files | ||
| 45 | 46 | ||
| 46 | 4 Configuring procfs | 47 | 4 Configuring procfs |
| 47 | 4.1 Mount options | 48 | 4.1 Mount options |
| @@ -144,6 +145,8 @@ Table 1-1: Process specific entries in /proc | |||
| 144 | stack Report full stack trace, enable via CONFIG_STACKTRACE | 145 | stack Report full stack trace, enable via CONFIG_STACKTRACE |
| 145 | smaps a extension based on maps, showing the memory consumption of | 146 | smaps a extension based on maps, showing the memory consumption of |
| 146 | each mapping and flags associated with it | 147 | each mapping and flags associated with it |
| 148 | numa_maps an extension based on maps, showing the memory locality and | ||
| 149 | binding policy as well as mem usage (in pages) of each mapping. | ||
| 147 | .............................................................................. | 150 | .............................................................................. |
| 148 | 151 | ||
| 149 | For example, to get the status information of a process, all you have to do is | 152 | For example, to get the status information of a process, all you have to do is |
| @@ -488,12 +491,47 @@ To clear the bits for the file mapped pages associated with the process | |||
| 488 | To clear the soft-dirty bit | 491 | To clear the soft-dirty bit |
| 489 | > echo 4 > /proc/PID/clear_refs | 492 | > echo 4 > /proc/PID/clear_refs |
| 490 | 493 | ||
| 494 | To reset the peak resident set size ("high water mark") to the process's | ||
| 495 | current value: | ||
| 496 | > echo 5 > /proc/PID/clear_refs | ||
| 497 | |||
| 491 | Any other value written to /proc/PID/clear_refs will have no effect. | 498 | Any other value written to /proc/PID/clear_refs will have no effect. |
| 492 | 499 | ||
| 493 | The /proc/pid/pagemap gives the PFN, which can be used to find the pageflags | 500 | The /proc/pid/pagemap gives the PFN, which can be used to find the pageflags |
| 494 | using /proc/kpageflags and number of times a page is mapped using | 501 | using /proc/kpageflags and number of times a page is mapped using |
| 495 | /proc/kpagecount. For detailed explanation, see Documentation/vm/pagemap.txt. | 502 | /proc/kpagecount. For detailed explanation, see Documentation/vm/pagemap.txt. |
| 496 | 503 | ||
| 504 | The /proc/pid/numa_maps is an extension based on maps, showing the memory | ||
| 505 | locality and binding policy, as well as the memory usage (in pages) of | ||
| 506 | each mapping. The output follows a general format where mapping details get | ||
| 507 | summarized separated by blank spaces, one mapping per each file line: | ||
| 508 | |||
| 509 | address policy mapping details | ||
| 510 | |||
| 511 | 00400000 default file=/usr/local/bin/app mapped=1 active=0 N3=1 kernelpagesize_kB=4 | ||
| 512 | 00600000 default file=/usr/local/bin/app anon=1 dirty=1 N3=1 kernelpagesize_kB=4 | ||
| 513 | 3206000000 default file=/lib64/ld-2.12.so mapped=26 mapmax=6 N0=24 N3=2 kernelpagesize_kB=4 | ||
| 514 | 320621f000 default file=/lib64/ld-2.12.so anon=1 dirty=1 N3=1 kernelpagesize_kB=4 | ||
| 515 | 3206220000 default file=/lib64/ld-2.12.so anon=1 dirty=1 N3=1 kernelpagesize_kB=4 | ||
| 516 | 3206221000 default anon=1 dirty=1 N3=1 kernelpagesize_kB=4 | ||
| 517 | 3206800000 default file=/lib64/libc-2.12.so mapped=59 mapmax=21 active=55 N0=41 N3=18 kernelpagesize_kB=4 | ||
| 518 | 320698b000 default file=/lib64/libc-2.12.so | ||
| 519 | 3206b8a000 default file=/lib64/libc-2.12.so anon=2 dirty=2 N3=2 kernelpagesize_kB=4 | ||
| 520 | 3206b8e000 default file=/lib64/libc-2.12.so anon=1 dirty=1 N3=1 kernelpagesize_kB=4 | ||
| 521 | 3206b8f000 default anon=3 dirty=3 active=1 N3=3 kernelpagesize_kB=4 | ||
| 522 | 7f4dc10a2000 default anon=3 dirty=3 N3=3 kernelpagesize_kB=4 | ||
| 523 | 7f4dc10b4000 default anon=2 dirty=2 active=1 N3=2 kernelpagesize_kB=4 | ||
| 524 | 7f4dc1200000 default file=/anon_hugepage\040(deleted) huge anon=1 dirty=1 N3=1 kernelpagesize_kB=2048 | ||
| 525 | 7fff335f0000 default stack anon=3 dirty=3 N3=3 kernelpagesize_kB=4 | ||
| 526 | 7fff3369d000 default mapped=1 mapmax=35 active=0 N3=1 kernelpagesize_kB=4 | ||
| 527 | |||
| 528 | Where: | ||
| 529 | "address" is the starting address for the mapping; | ||
| 530 | "policy" reports the NUMA memory policy set for the mapping (see vm/numa_memory_policy.txt); | ||
| 531 | "mapping details" summarizes mapping data such as mapping type, page usage counters, | ||
| 532 | node locality page counters (N0 == node0, N1 == node1, ...) and the kernel page | ||
| 533 | size, in KB, that is backing the mapping up. | ||
| 534 | |||
| 497 | 1.2 Kernel data | 535 | 1.2 Kernel data |
| 498 | --------------- | 536 | --------------- |
| 499 | 537 | ||
| @@ -1763,6 +1801,28 @@ pair provide additional information particular to the objects they represent. | |||
| 1763 | with TIMER_ABSTIME option which will be shown in 'settime flags', but 'it_value' | 1801 | with TIMER_ABSTIME option which will be shown in 'settime flags', but 'it_value' |
| 1764 | still exhibits timer's remaining time. | 1802 | still exhibits timer's remaining time. |
| 1765 | 1803 | ||
| 1804 | 3.9 /proc/<pid>/map_files - Information about memory mapped files | ||
| 1805 | --------------------------------------------------------------------- | ||
| 1806 | This directory contains symbolic links which represent memory mapped files | ||
| 1807 | the process is maintaining. Example output: | ||
| 1808 | |||
| 1809 | | lr-------- 1 root root 64 Jan 27 11:24 333c600000-333c620000 -> /usr/lib64/ld-2.18.so | ||
| 1810 | | lr-------- 1 root root 64 Jan 27 11:24 333c81f000-333c820000 -> /usr/lib64/ld-2.18.so | ||
| 1811 | | lr-------- 1 root root 64 Jan 27 11:24 333c820000-333c821000 -> /usr/lib64/ld-2.18.so | ||
| 1812 | | ... | ||
| 1813 | | lr-------- 1 root root 64 Jan 27 11:24 35d0421000-35d0422000 -> /usr/lib64/libselinux.so.1 | ||
| 1814 | | lr-------- 1 root root 64 Jan 27 11:24 400000-41a000 -> /usr/bin/ls | ||
| 1815 | |||
| 1816 | The name of a link represents the virtual memory bounds of a mapping, i.e. | ||
| 1817 | vm_area_struct::vm_start-vm_area_struct::vm_end. | ||
| 1818 | |||
| 1819 | The main purpose of the map_files is to retrieve a set of memory mapped | ||
| 1820 | files in a fast way instead of parsing /proc/<pid>/maps or | ||
| 1821 | /proc/<pid>/smaps, both of which contain many more records. At the same | ||
| 1822 | time one can open(2) mappings from the listings of two processes and | ||
| 1823 | comparing their inode numbers to figure out which anonymous memory areas | ||
| 1824 | are actually shared. | ||
| 1825 | |||
| 1766 | ------------------------------------------------------------------------------ | 1826 | ------------------------------------------------------------------------------ |
| 1767 | Configuring procfs | 1827 | Configuring procfs |
| 1768 | ------------------------------------------------------------------------------ | 1828 | ------------------------------------------------------------------------------ |
diff --git a/Documentation/filesystems/seq_file.txt b/Documentation/filesystems/seq_file.txt index b797ed38de46..9de4303201e1 100644 --- a/Documentation/filesystems/seq_file.txt +++ b/Documentation/filesystems/seq_file.txt | |||
| @@ -194,16 +194,16 @@ which is in the string esc will be represented in octal form in the output. | |||
| 194 | 194 | ||
| 195 | There are also a pair of functions for printing filenames: | 195 | There are also a pair of functions for printing filenames: |
| 196 | 196 | ||
| 197 | int seq_path(struct seq_file *m, struct path *path, char *esc); | 197 | int seq_path(struct seq_file *m, const struct path *path, |
| 198 | int seq_path_root(struct seq_file *m, struct path *path, | 198 | const char *esc); |
| 199 | struct path *root, char *esc) | 199 | int seq_path_root(struct seq_file *m, const struct path *path, |
| 200 | const struct path *root, const char *esc) | ||
| 200 | 201 | ||
| 201 | Here, path indicates the file of interest, and esc is a set of characters | 202 | Here, path indicates the file of interest, and esc is a set of characters |
| 202 | which should be escaped in the output. A call to seq_path() will output | 203 | which should be escaped in the output. A call to seq_path() will output |
| 203 | the path relative to the current process's filesystem root. If a different | 204 | the path relative to the current process's filesystem root. If a different |
| 204 | root is desired, it can be used with seq_path_root(). Note that, if it | 205 | root is desired, it can be used with seq_path_root(). If it turns out that |
| 205 | turns out that path cannot be reached from root, the value of root will be | 206 | path cannot be reached from root, seq_path_root() returns SEQ_SKIP. |
| 206 | changed in seq_file_root() to a root which *does* work. | ||
| 207 | 207 | ||
| 208 | A function producing complicated output may want to check | 208 | A function producing complicated output may want to check |
| 209 | bool seq_has_overflowed(struct seq_file *m); | 209 | bool seq_has_overflowed(struct seq_file *m); |
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt index 43ce0507ee25..966b22829f3b 100644 --- a/Documentation/filesystems/vfs.txt +++ b/Documentation/filesystems/vfs.txt | |||
| @@ -591,8 +591,6 @@ struct address_space_operations { | |||
| 591 | int (*releasepage) (struct page *, int); | 591 | int (*releasepage) (struct page *, int); |
| 592 | void (*freepage)(struct page *); | 592 | void (*freepage)(struct page *); |
| 593 | ssize_t (*direct_IO)(int, struct kiocb *, struct iov_iter *iter, loff_t offset); | 593 | ssize_t (*direct_IO)(int, struct kiocb *, struct iov_iter *iter, loff_t offset); |
| 594 | struct page* (*get_xip_page)(struct address_space *, sector_t, | ||
| 595 | int); | ||
| 596 | /* migrate the contents of a page to the specified target */ | 594 | /* migrate the contents of a page to the specified target */ |
| 597 | int (*migratepage) (struct page *, struct page *); | 595 | int (*migratepage) (struct page *, struct page *); |
| 598 | int (*launder_page) (struct page *); | 596 | int (*launder_page) (struct page *); |
| @@ -748,11 +746,6 @@ struct address_space_operations { | |||
| 748 | and transfer data directly between the storage and the | 746 | and transfer data directly between the storage and the |
| 749 | application's address space. | 747 | application's address space. |
| 750 | 748 | ||
| 751 | get_xip_page: called by the VM to translate a block number to a page. | ||
| 752 | The page is valid until the corresponding filesystem is unmounted. | ||
| 753 | Filesystems that want to use execute-in-place (XIP) need to implement | ||
| 754 | it. An example implementation can be found in fs/ext2/xip.c. | ||
| 755 | |||
| 756 | migrate_page: This is used to compact the physical memory usage. | 749 | migrate_page: This is used to compact the physical memory usage. |
| 757 | If the VM wants to relocate a page (maybe off a memory card | 750 | If the VM wants to relocate a page (maybe off a memory card |
| 758 | that is signalling imminent failure) it will pass a new page | 751 | that is signalling imminent failure) it will pass a new page |
diff --git a/Documentation/filesystems/xfs.txt b/Documentation/filesystems/xfs.txt index 5be51fd888bd..0bfafe108357 100644 --- a/Documentation/filesystems/xfs.txt +++ b/Documentation/filesystems/xfs.txt | |||
| @@ -287,9 +287,9 @@ The following sysctls are available for the XFS filesystem: | |||
| 287 | XFS_ERRLEVEL_LOW: 1 | 287 | XFS_ERRLEVEL_LOW: 1 |
| 288 | XFS_ERRLEVEL_HIGH: 5 | 288 | XFS_ERRLEVEL_HIGH: 5 |
| 289 | 289 | ||
| 290 | fs.xfs.panic_mask (Min: 0 Default: 0 Max: 127) | 290 | fs.xfs.panic_mask (Min: 0 Default: 0 Max: 255) |
| 291 | Causes certain error conditions to call BUG(). Value is a bitmask; | 291 | Causes certain error conditions to call BUG(). Value is a bitmask; |
| 292 | AND together the tags which represent errors which should cause panics: | 292 | OR together the tags which represent errors which should cause panics: |
| 293 | 293 | ||
| 294 | XFS_NO_PTAG 0 | 294 | XFS_NO_PTAG 0 |
| 295 | XFS_PTAG_IFLUSH 0x00000001 | 295 | XFS_PTAG_IFLUSH 0x00000001 |
| @@ -299,6 +299,7 @@ The following sysctls are available for the XFS filesystem: | |||
| 299 | XFS_PTAG_SHUTDOWN_CORRUPT 0x00000010 | 299 | XFS_PTAG_SHUTDOWN_CORRUPT 0x00000010 |
| 300 | XFS_PTAG_SHUTDOWN_IOERROR 0x00000020 | 300 | XFS_PTAG_SHUTDOWN_IOERROR 0x00000020 |
| 301 | XFS_PTAG_SHUTDOWN_LOGERROR 0x00000040 | 301 | XFS_PTAG_SHUTDOWN_LOGERROR 0x00000040 |
| 302 | XFS_PTAG_FSBLOCK_ZERO 0x00000080 | ||
| 302 | 303 | ||
| 303 | This option is intended for debugging only. | 304 | This option is intended for debugging only. |
| 304 | 305 | ||
| @@ -348,16 +349,13 @@ The following sysctls are available for the XFS filesystem: | |||
| 348 | Deprecated Sysctls | 349 | Deprecated Sysctls |
| 349 | ================== | 350 | ================== |
| 350 | 351 | ||
| 351 | fs.xfs.xfsbufd_centisecs (Min: 50 Default: 100 Max: 3000) | 352 | None at present. |
| 352 | Dirty metadata is now tracked by the log subsystem and | ||
| 353 | flushing is driven by log space and idling demands. The | ||
| 354 | xfsbufd no longer exists, so this syctl does nothing. | ||
| 355 | 353 | ||
| 356 | Due for removal in 3.14. | ||
| 357 | 354 | ||
| 358 | fs.xfs.age_buffer_centisecs (Min: 100 Default: 1500 Max: 720000) | 355 | Removed Sysctls |
| 359 | Dirty metadata is now tracked by the log subsystem and | 356 | =============== |
| 360 | flushing is driven by log space and idling demands. The | ||
| 361 | xfsbufd no longer exists, so this syctl does nothing. | ||
| 362 | 357 | ||
| 363 | Due for removal in 3.14. | 358 | Name Removed |
| 359 | ---- ------- | ||
| 360 | fs.xfs.xfsbufd_centisec v3.20 | ||
| 361 | fs.xfs.age_buffer_centisecs v3.20 | ||
diff --git a/Documentation/filesystems/xip.txt b/Documentation/filesystems/xip.txt deleted file mode 100644 index 0466ee569278..000000000000 --- a/Documentation/filesystems/xip.txt +++ /dev/null | |||
| @@ -1,68 +0,0 @@ | |||
| 1 | Execute-in-place for file mappings | ||
| 2 | ---------------------------------- | ||
| 3 | |||
| 4 | Motivation | ||
| 5 | ---------- | ||
| 6 | File mappings are performed by mapping page cache pages to userspace. In | ||
| 7 | addition, read&write type file operations also transfer data from/to the page | ||
| 8 | cache. | ||
| 9 | |||
| 10 | For memory backed storage devices that use the block device interface, the page | ||
| 11 | cache pages are in fact copies of the original storage. Various approaches | ||
| 12 | exist to work around the need for an extra copy. The ramdisk driver for example | ||
| 13 | does read the data into the page cache, keeps a reference, and discards the | ||
| 14 | original data behind later on. | ||
| 15 | |||
| 16 | Execute-in-place solves this issue the other way around: instead of keeping | ||
| 17 | data in the page cache, the need to have a page cache copy is eliminated | ||
| 18 | completely. With execute-in-place, read&write type operations are performed | ||
| 19 | directly from/to the memory backed storage device. For file mappings, the | ||
| 20 | storage device itself is mapped directly into userspace. | ||
| 21 | |||
| 22 | This implementation was initially written for shared memory segments between | ||
| 23 | different virtual machines on s390 hardware to allow multiple machines to | ||
| 24 | share the same binaries and libraries. | ||
| 25 | |||
| 26 | Implementation | ||
| 27 | -------------- | ||
| 28 | Execute-in-place is implemented in three steps: block device operation, | ||
| 29 | address space operation, and file operations. | ||
| 30 | |||
| 31 | A block device operation named direct_access is used to retrieve a | ||
| 32 | reference (pointer) to a block on-disk. The reference is supposed to be | ||
| 33 | cpu-addressable, physical address and remain valid until the release operation | ||
| 34 | is performed. A struct block_device reference is used to address the device, | ||
| 35 | and a sector_t argument is used to identify the individual block. As an | ||
| 36 | alternative, memory technology devices can be used for this. | ||
| 37 | |||
| 38 | The block device operation is optional, these block devices support it as of | ||
| 39 | today: | ||
| 40 | - dcssblk: s390 dcss block device driver | ||
| 41 | |||
| 42 | An address space operation named get_xip_mem is used to retrieve references | ||
| 43 | to a page frame number and a kernel address. To obtain these values a reference | ||
| 44 | to an address_space is provided. This function assigns values to the kmem and | ||
| 45 | pfn parameters. The third argument indicates whether the function should allocate | ||
| 46 | blocks if needed. | ||
| 47 | |||
| 48 | This address space operation is mutually exclusive with readpage&writepage that | ||
| 49 | do page cache read/write operations. | ||
| 50 | The following filesystems support it as of today: | ||
| 51 | - ext2: the second extended filesystem, see Documentation/filesystems/ext2.txt | ||
| 52 | |||
| 53 | A set of file operations that do utilize get_xip_page can be found in | ||
| 54 | mm/filemap_xip.c . The following file operation implementations are provided: | ||
| 55 | - aio_read/aio_write | ||
| 56 | - readv/writev | ||
| 57 | - sendfile | ||
| 58 | |||
| 59 | The generic file operations do_sync_read/do_sync_write can be used to implement | ||
| 60 | classic synchronous IO calls. | ||
| 61 | |||
| 62 | Shortcomings | ||
| 63 | ------------ | ||
| 64 | This implementation is limited to storage devices that are cpu addressable at | ||
| 65 | all times (no highmem or such). It works well on rom/ram, but enhancements are | ||
| 66 | needed to make it work with flash in read+write mode. | ||
| 67 | Putting the Linux kernel and/or its modules on a xip filesystem does not mean | ||
| 68 | they are not copied. | ||
diff --git a/Documentation/futex-requeue-pi.txt b/Documentation/futex-requeue-pi.txt index 31b16610c416..77b36f59d16b 100644 --- a/Documentation/futex-requeue-pi.txt +++ b/Documentation/futex-requeue-pi.txt | |||
| @@ -98,7 +98,7 @@ rt_mutex_start_proxy_lock() and rt_mutex_finish_proxy_lock(), which | |||
| 98 | allow the requeue code to acquire an uncontended rt_mutex on behalf | 98 | allow the requeue code to acquire an uncontended rt_mutex on behalf |
| 99 | of the waiter and to enqueue the waiter on a contended rt_mutex. | 99 | of the waiter and to enqueue the waiter on a contended rt_mutex. |
| 100 | Two new system calls provide the kernel<->user interface to | 100 | Two new system calls provide the kernel<->user interface to |
| 101 | requeue_pi: FUTEX_WAIT_REQUEUE_PI and FUTEX_REQUEUE_CMP_PI. | 101 | requeue_pi: FUTEX_WAIT_REQUEUE_PI and FUTEX_CMP_REQUEUE_PI. |
| 102 | 102 | ||
| 103 | FUTEX_WAIT_REQUEUE_PI is called by the waiter (pthread_cond_wait() | 103 | FUTEX_WAIT_REQUEUE_PI is called by the waiter (pthread_cond_wait() |
| 104 | and pthread_cond_timedwait()) to block on the initial futex and wait | 104 | and pthread_cond_timedwait()) to block on the initial futex and wait |
| @@ -107,7 +107,7 @@ result of a high-speed collision between futex_wait() and | |||
| 107 | futex_lock_pi(), with some extra logic to check for the additional | 107 | futex_lock_pi(), with some extra logic to check for the additional |
| 108 | wake-up scenarios. | 108 | wake-up scenarios. |
| 109 | 109 | ||
| 110 | FUTEX_REQUEUE_CMP_PI is called by the waker | 110 | FUTEX_CMP_REQUEUE_PI is called by the waker |
| 111 | (pthread_cond_broadcast() and pthread_cond_signal()) to requeue and | 111 | (pthread_cond_broadcast() and pthread_cond_signal()) to requeue and |
| 112 | possibly wake the waiting tasks. Internally, this system call is | 112 | possibly wake the waiting tasks. Internally, this system call is |
| 113 | still handled by futex_requeue (by passing requeue_pi=1). Before | 113 | still handled by futex_requeue (by passing requeue_pi=1). Before |
| @@ -120,12 +120,12 @@ task as a waiter on the underlying rt_mutex. It is possible that | |||
| 120 | the lock can be acquired at this stage as well, if so, the next | 120 | the lock can be acquired at this stage as well, if so, the next |
| 121 | waiter is woken to finish the acquisition of the lock. | 121 | waiter is woken to finish the acquisition of the lock. |
| 122 | 122 | ||
| 123 | FUTEX_REQUEUE_PI accepts nr_wake and nr_requeue as arguments, but | 123 | FUTEX_CMP_REQUEUE_PI accepts nr_wake and nr_requeue as arguments, but |
| 124 | their sum is all that really matters. futex_requeue() will wake or | 124 | their sum is all that really matters. futex_requeue() will wake or |
| 125 | requeue up to nr_wake + nr_requeue tasks. It will wake only as many | 125 | requeue up to nr_wake + nr_requeue tasks. It will wake only as many |
| 126 | tasks as it can acquire the lock for, which in the majority of cases | 126 | tasks as it can acquire the lock for, which in the majority of cases |
| 127 | should be 0 as good programming practice dictates that the caller of | 127 | should be 0 as good programming practice dictates that the caller of |
| 128 | either pthread_cond_broadcast() or pthread_cond_signal() acquire the | 128 | either pthread_cond_broadcast() or pthread_cond_signal() acquire the |
| 129 | mutex prior to making the call. FUTEX_REQUEUE_PI requires that | 129 | mutex prior to making the call. FUTEX_CMP_REQUEUE_PI requires that |
| 130 | nr_wake=1. nr_requeue should be INT_MAX for broadcast and 0 for | 130 | nr_wake=1. nr_requeue should be INT_MAX for broadcast and 0 for |
| 131 | signal. | 131 | signal. |
diff --git a/Documentation/gdb-kernel-debugging.txt b/Documentation/gdb-kernel-debugging.txt new file mode 100644 index 000000000000..7050ce8794b9 --- /dev/null +++ b/Documentation/gdb-kernel-debugging.txt | |||
| @@ -0,0 +1,160 @@ | |||
| 1 | Debugging kernel and modules via gdb | ||
| 2 | ==================================== | ||
| 3 | |||
| 4 | The kernel debugger kgdb, hypervisors like QEMU or JTAG-based hardware | ||
| 5 | interfaces allow to debug the Linux kernel and its modules during runtime | ||
| 6 | using gdb. Gdb comes with a powerful scripting interface for python. The | ||
| 7 | kernel provides a collection of helper scripts that can simplify typical | ||
| 8 | kernel debugging steps. This is a short tutorial about how to enable and use | ||
| 9 | them. It focuses on QEMU/KVM virtual machines as target, but the examples can | ||
| 10 | be transferred to the other gdb stubs as well. | ||
| 11 | |||
| 12 | |||
| 13 | Requirements | ||
| 14 | ------------ | ||
| 15 | |||
| 16 | o gdb 7.2+ (recommended: 7.4+) with python support enabled (typically true | ||
| 17 | for distributions) | ||
| 18 | |||
| 19 | |||
| 20 | Setup | ||
| 21 | ----- | ||
| 22 | |||
| 23 | o Create a virtual Linux machine for QEMU/KVM (see www.linux-kvm.org and | ||
| 24 | www.qemu.org for more details). For cross-development, | ||
| 25 | http://landley.net/aboriginal/bin keeps a pool of machine images and | ||
| 26 | toolchains that can be helpful to start from. | ||
| 27 | |||
| 28 | o Build the kernel with CONFIG_GDB_SCRIPTS enabled, but leave | ||
| 29 | CONFIG_DEBUG_INFO_REDUCED off. If your architecture supports | ||
| 30 | CONFIG_FRAME_POINTER, keep it enabled. | ||
| 31 | |||
| 32 | o Install that kernel on the guest. | ||
| 33 | |||
| 34 | Alternatively, QEMU allows to boot the kernel directly using -kernel, | ||
| 35 | -append, -initrd command line switches. This is generally only useful if | ||
| 36 | you do not depend on modules. See QEMU documentation for more details on | ||
| 37 | this mode. | ||
| 38 | |||
| 39 | o Enable the gdb stub of QEMU/KVM, either | ||
| 40 | - at VM startup time by appending "-s" to the QEMU command line | ||
| 41 | or | ||
| 42 | - during runtime by issuing "gdbserver" from the QEMU monitor | ||
| 43 | console | ||
| 44 | |||
| 45 | o cd /path/to/linux-build | ||
| 46 | |||
| 47 | o Start gdb: gdb vmlinux | ||
| 48 | |||
| 49 | Note: Some distros may restrict auto-loading of gdb scripts to known safe | ||
| 50 | directories. In case gdb reports to refuse loading vmlinux-gdb.py, add | ||
| 51 | |||
| 52 | add-auto-load-safe-path /path/to/linux-build | ||
| 53 | |||
| 54 | to ~/.gdbinit. See gdb help for more details. | ||
| 55 | |||
| 56 | o Attach to the booted guest: | ||
| 57 | (gdb) target remote :1234 | ||
| 58 | |||
| 59 | |||
| 60 | Examples of using the Linux-provided gdb helpers | ||
| 61 | ------------------------------------------------ | ||
| 62 | |||
| 63 | o Load module (and main kernel) symbols: | ||
| 64 | (gdb) lx-symbols | ||
| 65 | loading vmlinux | ||
| 66 | scanning for modules in /home/user/linux/build | ||
| 67 | loading @0xffffffffa0020000: /home/user/linux/build/net/netfilter/xt_tcpudp.ko | ||
| 68 | loading @0xffffffffa0016000: /home/user/linux/build/net/netfilter/xt_pkttype.ko | ||
| 69 | loading @0xffffffffa0002000: /home/user/linux/build/net/netfilter/xt_limit.ko | ||
| 70 | loading @0xffffffffa00ca000: /home/user/linux/build/net/packet/af_packet.ko | ||
| 71 | loading @0xffffffffa003c000: /home/user/linux/build/fs/fuse/fuse.ko | ||
| 72 | ... | ||
| 73 | loading @0xffffffffa0000000: /home/user/linux/build/drivers/ata/ata_generic.ko | ||
| 74 | |||
| 75 | o Set a breakpoint on some not yet loaded module function, e.g.: | ||
| 76 | (gdb) b btrfs_init_sysfs | ||
| 77 | Function "btrfs_init_sysfs" not defined. | ||
| 78 | Make breakpoint pending on future shared library load? (y or [n]) y | ||
| 79 | Breakpoint 1 (btrfs_init_sysfs) pending. | ||
| 80 | |||
| 81 | o Continue the target | ||
| 82 | (gdb) c | ||
| 83 | |||
| 84 | o Load the module on the target and watch the symbols being loaded as well as | ||
| 85 | the breakpoint hit: | ||
| 86 | loading @0xffffffffa0034000: /home/user/linux/build/lib/libcrc32c.ko | ||
| 87 | loading @0xffffffffa0050000: /home/user/linux/build/lib/lzo/lzo_compress.ko | ||
| 88 | loading @0xffffffffa006e000: /home/user/linux/build/lib/zlib_deflate/zlib_deflate.ko | ||
| 89 | loading @0xffffffffa01b1000: /home/user/linux/build/fs/btrfs/btrfs.ko | ||
| 90 | |||
| 91 | Breakpoint 1, btrfs_init_sysfs () at /home/user/linux/fs/btrfs/sysfs.c:36 | ||
| 92 | 36 btrfs_kset = kset_create_and_add("btrfs", NULL, fs_kobj); | ||
| 93 | |||
| 94 | o Dump the log buffer of the target kernel: | ||
| 95 | (gdb) lx-dmesg | ||
| 96 | [ 0.000000] Initializing cgroup subsys cpuset | ||
| 97 | [ 0.000000] Initializing cgroup subsys cpu | ||
| 98 | [ 0.000000] Linux version 3.8.0-rc4-dbg+ (... | ||
| 99 | [ 0.000000] Command line: root=/dev/sda2 resume=/dev/sda1 vga=0x314 | ||
| 100 | [ 0.000000] e820: BIOS-provided physical RAM map: | ||
| 101 | [ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable | ||
| 102 | [ 0.000000] BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved | ||
| 103 | .... | ||
| 104 | |||
| 105 | o Examine fields of the current task struct: | ||
| 106 | (gdb) p $lx_current().pid | ||
| 107 | $1 = 4998 | ||
| 108 | (gdb) p $lx_current().comm | ||
| 109 | $2 = "modprobe\000\000\000\000\000\000\000" | ||
| 110 | |||
| 111 | o Make use of the per-cpu function for the current or a specified CPU: | ||
| 112 | (gdb) p $lx_per_cpu("runqueues").nr_running | ||
| 113 | $3 = 1 | ||
| 114 | (gdb) p $lx_per_cpu("runqueues", 2).nr_running | ||
| 115 | $4 = 0 | ||
| 116 | |||
| 117 | o Dig into hrtimers using the container_of helper: | ||
| 118 | (gdb) set $next = $lx_per_cpu("hrtimer_bases").clock_base[0].active.next | ||
| 119 | (gdb) p *$container_of($next, "struct hrtimer", "node") | ||
| 120 | $5 = { | ||
| 121 | node = { | ||
| 122 | node = { | ||
| 123 | __rb_parent_color = 18446612133355256072, | ||
| 124 | rb_right = 0x0 <irq_stack_union>, | ||
| 125 | rb_left = 0x0 <irq_stack_union> | ||
| 126 | }, | ||
| 127 | expires = { | ||
| 128 | tv64 = 1835268000000 | ||
| 129 | } | ||
| 130 | }, | ||
| 131 | _softexpires = { | ||
| 132 | tv64 = 1835268000000 | ||
| 133 | }, | ||
| 134 | function = 0xffffffff81078232 <tick_sched_timer>, | ||
| 135 | base = 0xffff88003fd0d6f0, | ||
| 136 | state = 1, | ||
| 137 | start_pid = 0, | ||
| 138 | start_site = 0xffffffff81055c1f <hrtimer_start_range_ns+20>, | ||
| 139 | start_comm = "swapper/2\000\000\000\000\000\000" | ||
| 140 | } | ||
| 141 | |||
| 142 | |||
| 143 | List of commands and functions | ||
| 144 | ------------------------------ | ||
| 145 | |||
| 146 | The number of commands and convenience functions may evolve over the time, | ||
| 147 | this is just a snapshot of the initial version: | ||
| 148 | |||
| 149 | (gdb) apropos lx | ||
| 150 | function lx_current -- Return current task | ||
| 151 | function lx_module -- Find module by name and return the module variable | ||
| 152 | function lx_per_cpu -- Return per-cpu variable | ||
| 153 | function lx_task_by_pid -- Find Linux task by PID and return the task_struct variable | ||
| 154 | function lx_thread_info -- Calculate Linux thread_info from task variable | ||
| 155 | lx-dmesg -- Print Linux kernel log buffer | ||
| 156 | lx-lsmod -- List currently loaded modules | ||
| 157 | lx-symbols -- (Re-)load symbols of Linux kernel and currently loaded modules | ||
| 158 | |||
| 159 | Detailed help can be obtained via "help <command-name>" for commands and "help | ||
| 160 | function <function-name>" for convenience functions. | ||
diff --git a/Documentation/gpio/board.txt b/Documentation/gpio/board.txt index 4452786225b8..8b35f51fe7b6 100644 --- a/Documentation/gpio/board.txt +++ b/Documentation/gpio/board.txt | |||
| @@ -31,7 +31,7 @@ through gpiod_get(). For example: | |||
| 31 | <&gpio 16 GPIO_ACTIVE_HIGH>, /* green */ | 31 | <&gpio 16 GPIO_ACTIVE_HIGH>, /* green */ |
| 32 | <&gpio 17 GPIO_ACTIVE_HIGH>; /* blue */ | 32 | <&gpio 17 GPIO_ACTIVE_HIGH>; /* blue */ |
| 33 | 33 | ||
| 34 | power-gpio = <&gpio 1 GPIO_ACTIVE_LOW>; | 34 | power-gpios = <&gpio 1 GPIO_ACTIVE_LOW>; |
| 35 | }; | 35 | }; |
| 36 | 36 | ||
| 37 | This property will make GPIOs 15, 16 and 17 available to the driver under the | 37 | This property will make GPIOs 15, 16 and 17 available to the driver under the |
diff --git a/Documentation/hwmon/ina2xx b/Documentation/hwmon/ina2xx index 4223c2d3b508..cfd31d94c872 100644 --- a/Documentation/hwmon/ina2xx +++ b/Documentation/hwmon/ina2xx | |||
| @@ -26,6 +26,12 @@ Supported chips: | |||
| 26 | Datasheet: Publicly available at the Texas Instruments website | 26 | Datasheet: Publicly available at the Texas Instruments website |
| 27 | http://www.ti.com/ | 27 | http://www.ti.com/ |
| 28 | 28 | ||
| 29 | * Texas Instruments INA231 | ||
| 30 | Prefix: 'ina231' | ||
| 31 | Addresses: I2C 0x40 - 0x4f | ||
| 32 | Datasheet: Publicly available at the Texas Instruments website | ||
| 33 | http://www.ti.com/ | ||
| 34 | |||
| 29 | Author: Lothar Felten <l-felten@ti.com> | 35 | Author: Lothar Felten <l-felten@ti.com> |
| 30 | 36 | ||
| 31 | Description | 37 | Description |
| @@ -41,9 +47,18 @@ interface. The INA220 monitors both shunt drop and supply voltage. | |||
| 41 | The INA226 is a current shunt and power monitor with an I2C interface. | 47 | The INA226 is a current shunt and power monitor with an I2C interface. |
| 42 | The INA226 monitors both a shunt voltage drop and bus supply voltage. | 48 | The INA226 monitors both a shunt voltage drop and bus supply voltage. |
| 43 | 49 | ||
| 44 | The INA230 is a high or low side current shunt and power monitor with an I2C | 50 | INA230 and INA231 are high or low side current shunt and power monitors |
| 45 | interface. The INA230 monitors both a shunt voltage drop and bus supply voltage. | 51 | with an I2C interface. The chips monitor both a shunt voltage drop and |
| 52 | bus supply voltage. | ||
| 46 | 53 | ||
| 47 | The shunt value in micro-ohms can be set via platform data or device tree. | 54 | The shunt value in micro-ohms can be set via platform data or device tree at |
| 48 | Please refer to the Documentation/devicetree/bindings/i2c/ina2xx.txt for bindings | 55 | compile-time or via the shunt_resistor attribute in sysfs at run-time. Please |
| 56 | refer to the Documentation/devicetree/bindings/i2c/ina2xx.txt for bindings | ||
| 49 | if the device tree is used. | 57 | if the device tree is used. |
| 58 | |||
| 59 | Additionally ina226 supports update_interval attribute as described in | ||
| 60 | Documentation/hwmon/sysfs-interface. Internally the interval is the sum of | ||
| 61 | bus and shunt voltage conversion times multiplied by the averaging rate. We | ||
| 62 | don't touch the conversion times and only modify the number of averages. The | ||
| 63 | lower limit of the update_interval is 2 ms, the upper limit is 2253 ms. | ||
| 64 | The actual programmed interval may vary from the desired value. | ||
diff --git a/Documentation/i2c/functionality b/Documentation/i2c/functionality index 4556a3eb87c4..4aae8ed15873 100644 --- a/Documentation/i2c/functionality +++ b/Documentation/i2c/functionality | |||
| @@ -12,7 +12,7 @@ FUNCTIONALITY CONSTANTS | |||
| 12 | ----------------------- | 12 | ----------------------- |
| 13 | 13 | ||
| 14 | For the most up-to-date list of functionality constants, please check | 14 | For the most up-to-date list of functionality constants, please check |
| 15 | <linux/i2c.h>! | 15 | <uapi/linux/i2c.h>! |
| 16 | 16 | ||
| 17 | I2C_FUNC_I2C Plain i2c-level commands (Pure SMBus | 17 | I2C_FUNC_I2C Plain i2c-level commands (Pure SMBus |
| 18 | adapters typically can not do these) | 18 | adapters typically can not do these) |
diff --git a/Documentation/ia64/paravirt_ops.txt b/Documentation/ia64/paravirt_ops.txt deleted file mode 100644 index 39ded02ec33f..000000000000 --- a/Documentation/ia64/paravirt_ops.txt +++ /dev/null | |||
| @@ -1,137 +0,0 @@ | |||
| 1 | Paravirt_ops on IA64 | ||
| 2 | ==================== | ||
| 3 | 21 May 2008, Isaku Yamahata <yamahata@valinux.co.jp> | ||
| 4 | |||
| 5 | |||
| 6 | Introduction | ||
| 7 | ------------ | ||
| 8 | The aim of this documentation is to help with maintainability and/or to | ||
| 9 | encourage people to use paravirt_ops/IA64. | ||
| 10 | |||
| 11 | paravirt_ops (pv_ops in short) is a way for virtualization support of | ||
| 12 | Linux kernel on x86. Several ways for virtualization support were | ||
| 13 | proposed, paravirt_ops is the winner. | ||
| 14 | On the other hand, now there are also several IA64 virtualization | ||
| 15 | technologies like kvm/IA64, xen/IA64 and many other academic IA64 | ||
| 16 | hypervisors so that it is good to add generic virtualization | ||
| 17 | infrastructure on Linux/IA64. | ||
| 18 | |||
| 19 | |||
| 20 | What is paravirt_ops? | ||
| 21 | --------------------- | ||
| 22 | It has been developed on x86 as virtualization support via API, not ABI. | ||
| 23 | It allows each hypervisor to override operations which are important for | ||
| 24 | hypervisors at API level. And it allows a single kernel binary to run on | ||
| 25 | all supported execution environments including native machine. | ||
| 26 | Essentially paravirt_ops is a set of function pointers which represent | ||
| 27 | operations corresponding to low level sensitive instructions and high | ||
| 28 | level functionalities in various area. But one significant difference | ||
| 29 | from usual function pointer table is that it allows optimization with | ||
| 30 | binary patch. It is because some of these operations are very | ||
| 31 | performance sensitive and indirect call overhead is not negligible. | ||
| 32 | With binary patch, indirect C function call can be transformed into | ||
| 33 | direct C function call or in-place execution to eliminate the overhead. | ||
| 34 | |||
| 35 | Thus, operations of paravirt_ops are classified into three categories. | ||
| 36 | - simple indirect call | ||
| 37 | These operations correspond to high level functionality so that the | ||
| 38 | overhead of indirect call isn't very important. | ||
| 39 | |||
| 40 | - indirect call which allows optimization with binary patch | ||
| 41 | Usually these operations correspond to low level instructions. They | ||
| 42 | are called frequently and performance critical. So the overhead is | ||
| 43 | very important. | ||
| 44 | |||
| 45 | - a set of macros for hand written assembly code | ||
| 46 | Hand written assembly codes (.S files) also need paravirtualization | ||
| 47 | because they include sensitive instructions or some of code paths in | ||
| 48 | them are very performance critical. | ||
| 49 | |||
| 50 | |||
| 51 | The relation to the IA64 machine vector | ||
| 52 | --------------------------------------- | ||
| 53 | Linux/IA64 has the IA64 machine vector functionality which allows the | ||
| 54 | kernel to switch implementations (e.g. initialization, ipi, dma api...) | ||
| 55 | depending on executing platform. | ||
| 56 | We can replace some implementations very easily defining a new machine | ||
| 57 | vector. Thus another approach for virtualization support would be | ||
| 58 | enhancing the machine vector functionality. | ||
| 59 | But paravirt_ops approach was taken because | ||
| 60 | - virtualization support needs wider support than machine vector does. | ||
| 61 | e.g. low level instruction paravirtualization. It must be | ||
| 62 | initialized very early before platform detection. | ||
| 63 | |||
| 64 | - virtualization support needs more functionality like binary patch. | ||
| 65 | Probably the calling overhead might not be very large compared to the | ||
| 66 | emulation overhead of virtualization. However in the native case, the | ||
| 67 | overhead should be eliminated completely. | ||
| 68 | A single kernel binary should run on each environment including native, | ||
| 69 | and the overhead of paravirt_ops on native environment should be as | ||
| 70 | small as possible. | ||
| 71 | |||
| 72 | - for full virtualization technology, e.g. KVM/IA64 or | ||
| 73 | Xen/IA64 HVM domain, the result would be | ||
| 74 | (the emulated platform machine vector. probably dig) + (pv_ops). | ||
| 75 | This means that the virtualization support layer should be under | ||
| 76 | the machine vector layer. | ||
| 77 | |||
| 78 | Possibly it might be better to move some function pointers from | ||
| 79 | paravirt_ops to machine vector. In fact, Xen domU case utilizes both | ||
| 80 | pv_ops and machine vector. | ||
| 81 | |||
| 82 | |||
| 83 | IA64 paravirt_ops | ||
| 84 | ----------------- | ||
| 85 | In this section, the concrete paravirt_ops will be discussed. | ||
| 86 | Because of the architecture difference between ia64 and x86, the | ||
| 87 | resulting set of functions is very different from x86 pv_ops. | ||
| 88 | |||
| 89 | - C function pointer tables | ||
| 90 | They are not very performance critical so that simple C indirect | ||
| 91 | function call is acceptable. The following structures are defined at | ||
| 92 | this moment. For details see linux/include/asm-ia64/paravirt.h | ||
| 93 | - struct pv_info | ||
| 94 | This structure describes the execution environment. | ||
| 95 | - struct pv_init_ops | ||
| 96 | This structure describes the various initialization hooks. | ||
| 97 | - struct pv_iosapic_ops | ||
| 98 | This structure describes hooks to iosapic operations. | ||
| 99 | - struct pv_irq_ops | ||
| 100 | This structure describes hooks to irq related operations | ||
| 101 | - struct pv_time_op | ||
| 102 | This structure describes hooks to steal time accounting. | ||
| 103 | |||
| 104 | - a set of indirect calls which need optimization | ||
| 105 | Currently this class of functions correspond to a subset of IA64 | ||
| 106 | intrinsics. At this moment the optimization with binary patch isn't | ||
| 107 | implemented yet. | ||
| 108 | struct pv_cpu_op is defined. For details see | ||
| 109 | linux/include/asm-ia64/paravirt_privop.h | ||
| 110 | Mostly they correspond to ia64 intrinsics 1-to-1. | ||
| 111 | Caveat: Now they are defined as C indirect function pointers, but in | ||
| 112 | order to support binary patch optimization, they will be changed | ||
| 113 | using GCC extended inline assembly code. | ||
| 114 | |||
| 115 | - a set of macros for hand written assembly code (.S files) | ||
| 116 | For maintenance purpose, the taken approach for .S files is single | ||
| 117 | source code and compile multiple times with different macros definitions. | ||
| 118 | Each pv_ops instance must define those macros to compile. | ||
| 119 | The important thing here is that sensitive, but non-privileged | ||
| 120 | instructions must be paravirtualized and that some privileged | ||
| 121 | instructions also need paravirtualization for reasonable performance. | ||
| 122 | Developers who modify .S files must be aware of that. At this moment | ||
| 123 | an easy checker is implemented to detect paravirtualization breakage. | ||
| 124 | But it doesn't cover all the cases. | ||
| 125 | |||
| 126 | Sometimes this set of macros is called pv_cpu_asm_op. But there is no | ||
| 127 | corresponding structure in the source code. | ||
| 128 | Those macros mostly 1:1 correspond to a subset of privileged | ||
| 129 | instructions. See linux/include/asm-ia64/native/inst.h. | ||
| 130 | And some functions written in assembly also need to be overrided so | ||
| 131 | that each pv_ops instance have to define some macros. Again see | ||
| 132 | linux/include/asm-ia64/native/inst.h. | ||
| 133 | |||
| 134 | |||
| 135 | Those structures must be initialized very early before start_kernel. | ||
| 136 | Probably initialized in head.S using multi entry point or some other trick. | ||
| 137 | For native case implementation see linux/arch/ia64/kernel/paravirt.c. | ||
diff --git a/Documentation/input/alps.txt b/Documentation/input/alps.txt index 90bca6f988e1..a63e5e013a8c 100644 --- a/Documentation/input/alps.txt +++ b/Documentation/input/alps.txt | |||
| @@ -3,8 +3,8 @@ ALPS Touchpad Protocol | |||
| 3 | 3 | ||
| 4 | Introduction | 4 | Introduction |
| 5 | ------------ | 5 | ------------ |
| 6 | Currently the ALPS touchpad driver supports five protocol versions in use by | 6 | Currently the ALPS touchpad driver supports seven protocol versions in use by |
| 7 | ALPS touchpads, called versions 1, 2, 3, 4 and 5. | 7 | ALPS touchpads, called versions 1, 2, 3, 4, 5, 6 and 7. |
| 8 | 8 | ||
| 9 | Since roughly mid-2010 several new ALPS touchpads have been released and | 9 | Since roughly mid-2010 several new ALPS touchpads have been released and |
| 10 | integrated into a variety of laptops and netbooks. These new touchpads | 10 | integrated into a variety of laptops and netbooks. These new touchpads |
| @@ -240,3 +240,67 @@ For mt, the format is: | |||
| 240 | byte 3: 0 x23 x22 x21 x20 x19 x18 x17 | 240 | byte 3: 0 x23 x22 x21 x20 x19 x18 x17 |
| 241 | byte 4: 0 x9 x8 x7 x6 x5 x4 x3 | 241 | byte 4: 0 x9 x8 x7 x6 x5 x4 x3 |
| 242 | byte 5: 0 x16 x15 x14 x13 x12 x11 x10 | 242 | byte 5: 0 x16 x15 x14 x13 x12 x11 x10 |
| 243 | |||
| 244 | ALPS Absolute Mode - Protocol Version 6 | ||
| 245 | --------------------------------------- | ||
| 246 | |||
| 247 | For trackstick packet, the format is: | ||
| 248 | |||
| 249 | byte 0: 1 1 1 1 1 1 1 1 | ||
| 250 | byte 1: 0 X6 X5 X4 X3 X2 X1 X0 | ||
| 251 | byte 2: 0 Y6 Y5 Y4 Y3 Y2 Y1 Y0 | ||
| 252 | byte 3: ? Y7 X7 ? ? M R L | ||
| 253 | byte 4: Z7 Z6 Z5 Z4 Z3 Z2 Z1 Z0 | ||
| 254 | byte 5: 0 1 1 1 1 1 1 1 | ||
| 255 | |||
| 256 | For touchpad packet, the format is: | ||
| 257 | |||
| 258 | byte 0: 1 1 1 1 1 1 1 1 | ||
| 259 | byte 1: 0 0 0 0 x3 x2 x1 x0 | ||
| 260 | byte 2: 0 0 0 0 y3 y2 y1 y0 | ||
| 261 | byte 3: ? x7 x6 x5 x4 ? r l | ||
| 262 | byte 4: ? y7 y6 y5 y4 ? ? ? | ||
| 263 | byte 5: z7 z6 z5 z4 z3 z2 z1 z0 | ||
| 264 | |||
| 265 | (v6 touchpad does not have middle button) | ||
| 266 | |||
| 267 | ALPS Absolute Mode - Protocol Version 7 | ||
| 268 | --------------------------------------- | ||
| 269 | |||
| 270 | For trackstick packet, the format is: | ||
| 271 | |||
| 272 | byte 0: 0 1 0 0 1 0 0 0 | ||
| 273 | byte 1: 1 1 * * 1 M R L | ||
| 274 | byte 2: X7 1 X5 X4 X3 X2 X1 X0 | ||
| 275 | byte 3: Z6 1 Y6 X6 1 Y2 Y1 Y0 | ||
| 276 | byte 4: Y7 0 Y5 Y4 Y3 1 1 0 | ||
| 277 | byte 5: T&P 0 Z5 Z4 Z3 Z2 Z1 Z0 | ||
| 278 | |||
| 279 | For touchpad packet, the format is: | ||
| 280 | |||
| 281 | packet-fmt b7 b6 b5 b4 b3 b2 b1 b0 | ||
| 282 | byte 0: TWO & MULTI L 1 R M 1 Y0-2 Y0-1 Y0-0 | ||
| 283 | byte 0: NEW L 1 X1-5 1 1 Y0-2 Y0-1 Y0-0 | ||
| 284 | byte 1: Y0-10 Y0-9 Y0-8 Y0-7 Y0-6 Y0-5 Y0-4 Y0-3 | ||
| 285 | byte 2: X0-11 1 X0-10 X0-9 X0-8 X0-7 X0-6 X0-5 | ||
| 286 | byte 3: X1-11 1 X0-4 X0-3 1 X0-2 X0-1 X0-0 | ||
| 287 | byte 4: TWO X1-10 TWO X1-9 X1-8 X1-7 X1-6 X1-5 X1-4 | ||
| 288 | byte 4: MULTI X1-10 TWO X1-9 X1-8 X1-7 X1-6 Y1-5 1 | ||
| 289 | byte 4: NEW X1-10 TWO X1-9 X1-8 X1-7 X1-6 0 0 | ||
| 290 | byte 5: TWO & NEW Y1-10 0 Y1-9 Y1-8 Y1-7 Y1-6 Y1-5 Y1-4 | ||
| 291 | byte 5: MULTI Y1-10 0 Y1-9 Y1-8 Y1-7 Y1-6 F-1 F-0 | ||
| 292 | |||
| 293 | L: Left button | ||
| 294 | R / M: Non-clickpads: Right / Middle button | ||
| 295 | Clickpads: When > 2 fingers are down, and some fingers | ||
| 296 | are in the button area, then the 2 coordinates reported | ||
| 297 | are for fingers outside the button area and these report | ||
| 298 | extra fingers being present in the right / left button | ||
| 299 | area. Note these fingers are not added to the F field! | ||
| 300 | so if a TWO packet is received and R = 1 then there are | ||
| 301 | 3 fingers down, etc. | ||
| 302 | TWO: 1: Two touches present, byte 0/4/5 are in TWO fmt | ||
| 303 | 0: If byte 4 bit 0 is 1, then byte 0/4/5 are in MULTI fmt | ||
| 304 | otherwise byte 0 bit 4 must be set and byte 0/4/5 are | ||
| 305 | in NEW fmt | ||
| 306 | F: Number of fingers - 3, 0 means 3 fingers, 1 means 4 ... | ||
diff --git a/Documentation/kasan.txt b/Documentation/kasan.txt new file mode 100644 index 000000000000..092fc10961fe --- /dev/null +++ b/Documentation/kasan.txt | |||
| @@ -0,0 +1,170 @@ | |||
| 1 | Kernel address sanitizer | ||
| 2 | ================ | ||
| 3 | |||
| 4 | 0. Overview | ||
| 5 | =========== | ||
| 6 | |||
| 7 | Kernel Address sanitizer (KASan) is a dynamic memory error detector. It provides | ||
| 8 | a fast and comprehensive solution for finding use-after-free and out-of-bounds | ||
| 9 | bugs. | ||
| 10 | |||
| 11 | KASan uses compile-time instrumentation for checking every memory access, | ||
| 12 | therefore you will need a certain version of GCC > 4.9.2 | ||
| 13 | |||
| 14 | Currently KASan is supported only for x86_64 architecture and requires that the | ||
| 15 | kernel be built with the SLUB allocator. | ||
| 16 | |||
| 17 | 1. Usage | ||
| 18 | ========= | ||
| 19 | |||
| 20 | To enable KASAN configure kernel with: | ||
| 21 | |||
| 22 | CONFIG_KASAN = y | ||
| 23 | |||
| 24 | and choose between CONFIG_KASAN_OUTLINE and CONFIG_KASAN_INLINE. Outline/inline | ||
| 25 | is compiler instrumentation types. The former produces smaller binary the | ||
| 26 | latter is 1.1 - 2 times faster. Inline instrumentation requires GCC 5.0 or | ||
| 27 | latter. | ||
| 28 | |||
| 29 | Currently KASAN works only with the SLUB memory allocator. | ||
| 30 | For better bug detection and nicer report, enable CONFIG_STACKTRACE and put | ||
| 31 | at least 'slub_debug=U' in the boot cmdline. | ||
| 32 | |||
| 33 | To disable instrumentation for specific files or directories, add a line | ||
| 34 | similar to the following to the respective kernel Makefile: | ||
| 35 | |||
| 36 | For a single file (e.g. main.o): | ||
| 37 | KASAN_SANITIZE_main.o := n | ||
| 38 | |||
| 39 | For all files in one directory: | ||
| 40 | KASAN_SANITIZE := n | ||
| 41 | |||
| 42 | 1.1 Error reports | ||
| 43 | ========== | ||
| 44 | |||
| 45 | A typical out of bounds access report looks like this: | ||
| 46 | |||
| 47 | ================================================================== | ||
| 48 | BUG: AddressSanitizer: out of bounds access in kmalloc_oob_right+0x65/0x75 [test_kasan] at addr ffff8800693bc5d3 | ||
| 49 | Write of size 1 by task modprobe/1689 | ||
| 50 | ============================================================================= | ||
| 51 | BUG kmalloc-128 (Not tainted): kasan error | ||
| 52 | ----------------------------------------------------------------------------- | ||
| 53 | |||
| 54 | Disabling lock debugging due to kernel taint | ||
| 55 | INFO: Allocated in kmalloc_oob_right+0x3d/0x75 [test_kasan] age=0 cpu=0 pid=1689 | ||
| 56 | __slab_alloc+0x4b4/0x4f0 | ||
| 57 | kmem_cache_alloc_trace+0x10b/0x190 | ||
| 58 | kmalloc_oob_right+0x3d/0x75 [test_kasan] | ||
| 59 | init_module+0x9/0x47 [test_kasan] | ||
| 60 | do_one_initcall+0x99/0x200 | ||
| 61 | load_module+0x2cb3/0x3b20 | ||
| 62 | SyS_finit_module+0x76/0x80 | ||
| 63 | system_call_fastpath+0x12/0x17 | ||
| 64 | INFO: Slab 0xffffea0001a4ef00 objects=17 used=7 fp=0xffff8800693bd728 flags=0x100000000004080 | ||
| 65 | INFO: Object 0xffff8800693bc558 @offset=1368 fp=0xffff8800693bc720 | ||
| 66 | |||
| 67 | Bytes b4 ffff8800693bc548: 00 00 00 00 00 00 00 00 5a 5a 5a 5a 5a 5a 5a 5a ........ZZZZZZZZ | ||
| 68 | Object ffff8800693bc558: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk | ||
| 69 | Object ffff8800693bc568: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk | ||
| 70 | Object ffff8800693bc578: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk | ||
| 71 | Object ffff8800693bc588: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk | ||
| 72 | Object ffff8800693bc598: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk | ||
| 73 | Object ffff8800693bc5a8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk | ||
| 74 | Object ffff8800693bc5b8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk | ||
| 75 | Object ffff8800693bc5c8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b a5 kkkkkkkkkkkkkkk. | ||
| 76 | Redzone ffff8800693bc5d8: cc cc cc cc cc cc cc cc ........ | ||
| 77 | Padding ffff8800693bc718: 5a 5a 5a 5a 5a 5a 5a 5a ZZZZZZZZ | ||
| 78 | CPU: 0 PID: 1689 Comm: modprobe Tainted: G B 3.18.0-rc1-mm1+ #98 | ||
| 79 | Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.7.5-0-ge51488c-20140602_164612-nilsson.home.kraxel.org 04/01/2014 | ||
| 80 | ffff8800693bc000 0000000000000000 ffff8800693bc558 ffff88006923bb78 | ||
| 81 | ffffffff81cc68ae 00000000000000f3 ffff88006d407600 ffff88006923bba8 | ||
| 82 | ffffffff811fd848 ffff88006d407600 ffffea0001a4ef00 ffff8800693bc558 | ||
| 83 | Call Trace: | ||
| 84 | [<ffffffff81cc68ae>] dump_stack+0x46/0x58 | ||
| 85 | [<ffffffff811fd848>] print_trailer+0xf8/0x160 | ||
| 86 | [<ffffffffa00026a7>] ? kmem_cache_oob+0xc3/0xc3 [test_kasan] | ||
| 87 | [<ffffffff811ff0f5>] object_err+0x35/0x40 | ||
| 88 | [<ffffffffa0002065>] ? kmalloc_oob_right+0x65/0x75 [test_kasan] | ||
| 89 | [<ffffffff8120b9fa>] kasan_report_error+0x38a/0x3f0 | ||
| 90 | [<ffffffff8120a79f>] ? kasan_poison_shadow+0x2f/0x40 | ||
| 91 | [<ffffffff8120b344>] ? kasan_unpoison_shadow+0x14/0x40 | ||
| 92 | [<ffffffff8120a79f>] ? kasan_poison_shadow+0x2f/0x40 | ||
| 93 | [<ffffffffa00026a7>] ? kmem_cache_oob+0xc3/0xc3 [test_kasan] | ||
| 94 | [<ffffffff8120a995>] __asan_store1+0x75/0xb0 | ||
| 95 | [<ffffffffa0002601>] ? kmem_cache_oob+0x1d/0xc3 [test_kasan] | ||
| 96 | [<ffffffffa0002065>] ? kmalloc_oob_right+0x65/0x75 [test_kasan] | ||
| 97 | [<ffffffffa0002065>] kmalloc_oob_right+0x65/0x75 [test_kasan] | ||
| 98 | [<ffffffffa00026b0>] init_module+0x9/0x47 [test_kasan] | ||
| 99 | [<ffffffff810002d9>] do_one_initcall+0x99/0x200 | ||
| 100 | [<ffffffff811e4e5c>] ? __vunmap+0xec/0x160 | ||
| 101 | [<ffffffff81114f63>] load_module+0x2cb3/0x3b20 | ||
| 102 | [<ffffffff8110fd70>] ? m_show+0x240/0x240 | ||
| 103 | [<ffffffff81115f06>] SyS_finit_module+0x76/0x80 | ||
| 104 | [<ffffffff81cd3129>] system_call_fastpath+0x12/0x17 | ||
| 105 | Memory state around the buggy address: | ||
| 106 | ffff8800693bc300: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc | ||
| 107 | ffff8800693bc380: fc fc 00 00 00 00 00 00 00 00 00 00 00 00 00 fc | ||
| 108 | ffff8800693bc400: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc | ||
| 109 | ffff8800693bc480: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc | ||
| 110 | ffff8800693bc500: fc fc fc fc fc fc fc fc fc fc fc 00 00 00 00 00 | ||
| 111 | >ffff8800693bc580: 00 00 00 00 00 00 00 00 00 00 03 fc fc fc fc fc | ||
| 112 | ^ | ||
| 113 | ffff8800693bc600: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc | ||
| 114 | ffff8800693bc680: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc | ||
| 115 | ffff8800693bc700: fc fc fc fc fb fb fb fb fb fb fb fb fb fb fb fb | ||
| 116 | ffff8800693bc780: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb | ||
| 117 | ffff8800693bc800: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb | ||
| 118 | ================================================================== | ||
| 119 | |||
| 120 | First sections describe slub object where bad access happened. | ||
| 121 | See 'SLUB Debug output' section in Documentation/vm/slub.txt for details. | ||
| 122 | |||
| 123 | In the last section the report shows memory state around the accessed address. | ||
| 124 | Reading this part requires some more understanding of how KASAN works. | ||
| 125 | |||
| 126 | Each 8 bytes of memory are encoded in one shadow byte as accessible, | ||
| 127 | partially accessible, freed or they can be part of a redzone. | ||
| 128 | We use the following encoding for each shadow byte: 0 means that all 8 bytes | ||
| 129 | of the corresponding memory region are accessible; number N (1 <= N <= 7) means | ||
| 130 | that the first N bytes are accessible, and other (8 - N) bytes are not; | ||
| 131 | any negative value indicates that the entire 8-byte word is inaccessible. | ||
| 132 | We use different negative values to distinguish between different kinds of | ||
| 133 | inaccessible memory like redzones or freed memory (see mm/kasan/kasan.h). | ||
| 134 | |||
| 135 | In the report above the arrows point to the shadow byte 03, which means that | ||
| 136 | the accessed address is partially accessible. | ||
| 137 | |||
| 138 | |||
| 139 | 2. Implementation details | ||
| 140 | ======================== | ||
| 141 | |||
| 142 | From a high level, our approach to memory error detection is similar to that | ||
| 143 | of kmemcheck: use shadow memory to record whether each byte of memory is safe | ||
| 144 | to access, and use compile-time instrumentation to check shadow memory on each | ||
| 145 | memory access. | ||
| 146 | |||
| 147 | AddressSanitizer dedicates 1/8 of kernel memory to its shadow memory | ||
| 148 | (e.g. 16TB to cover 128TB on x86_64) and uses direct mapping with a scale and | ||
| 149 | offset to translate a memory address to its corresponding shadow address. | ||
| 150 | |||
| 151 | Here is the function witch translate an address to its corresponding shadow | ||
| 152 | address: | ||
| 153 | |||
| 154 | static inline void *kasan_mem_to_shadow(const void *addr) | ||
| 155 | { | ||
| 156 | return ((unsigned long)addr >> KASAN_SHADOW_SCALE_SHIFT) | ||
| 157 | + KASAN_SHADOW_OFFSET; | ||
| 158 | } | ||
| 159 | |||
| 160 | where KASAN_SHADOW_SCALE_SHIFT = 3. | ||
| 161 | |||
| 162 | Compile-time instrumentation used for checking memory accesses. Compiler inserts | ||
| 163 | function calls (__asan_load*(addr), __asan_store*(addr)) before each memory | ||
| 164 | access of size 1, 2, 4, 8 or 16. These functions check whether memory access is | ||
| 165 | valid or not by checking corresponding shadow memory. | ||
| 166 | |||
| 167 | GCC 5.0 has possibility to perform inline instrumentation. Instead of making | ||
| 168 | function calls GCC directly inserts the code to check the shadow memory. | ||
| 169 | This option significantly enlarges kernel but it gives x1.1-x2 performance | ||
| 170 | boost over outline instrumented kernel. | ||
diff --git a/Documentation/kbuild/makefiles.txt b/Documentation/kbuild/makefiles.txt index a311db829e9b..74b6c6d97210 100644 --- a/Documentation/kbuild/makefiles.txt +++ b/Documentation/kbuild/makefiles.txt | |||
| @@ -524,15 +524,16 @@ more details, with real examples. | |||
| 524 | Example: | 524 | Example: |
| 525 | #arch/x86/Makefile | 525 | #arch/x86/Makefile |
| 526 | cflags-y += $(shell \ | 526 | cflags-y += $(shell \ |
| 527 | if [ $(call cc-version) -ge 0300 ] ; then \ | 527 | if [ $(cc-version) -ge 0300 ] ; then \ |
| 528 | echo "-mregparm=3"; fi ;) | 528 | echo "-mregparm=3"; fi ;) |
| 529 | 529 | ||
| 530 | In the above example, -mregparm=3 is only used for gcc version greater | 530 | In the above example, -mregparm=3 is only used for gcc version greater |
| 531 | than or equal to gcc 3.0. | 531 | than or equal to gcc 3.0. |
| 532 | 532 | ||
| 533 | cc-ifversion | 533 | cc-ifversion |
| 534 | cc-ifversion tests the version of $(CC) and equals last argument if | 534 | cc-ifversion tests the version of $(CC) and equals the fourth parameter |
| 535 | version expression is true. | 535 | if version expression is true, or the fifth (if given) if the version |
| 536 | expression is false. | ||
| 536 | 537 | ||
| 537 | Example: | 538 | Example: |
| 538 | #fs/reiserfs/Makefile | 539 | #fs/reiserfs/Makefile |
| @@ -552,7 +553,7 @@ more details, with real examples. | |||
| 552 | 553 | ||
| 553 | Example: | 554 | Example: |
| 554 | #arch/powerpc/Makefile | 555 | #arch/powerpc/Makefile |
| 555 | $(Q)if test "$(call cc-fullversion)" = "040200" ; then \ | 556 | $(Q)if test "$(cc-fullversion)" = "040200" ; then \ |
| 556 | echo -n '*** GCC-4.2.0 cannot compile the 64-bit powerpc ' ; \ | 557 | echo -n '*** GCC-4.2.0 cannot compile the 64-bit powerpc ' ; \ |
| 557 | false ; \ | 558 | false ; \ |
| 558 | fi | 559 | fi |
| @@ -751,12 +752,12 @@ generated by kbuild are deleted all over the kernel src tree when | |||
| 751 | Additional files can be specified in kbuild makefiles by use of $(clean-files). | 752 | Additional files can be specified in kbuild makefiles by use of $(clean-files). |
| 752 | 753 | ||
| 753 | Example: | 754 | Example: |
| 754 | #drivers/pci/Makefile | 755 | #lib/Makefile |
| 755 | clean-files := devlist.h classlist.h | 756 | clean-files := crc32table.h |
| 756 | 757 | ||
| 757 | When executing "make clean", the two files "devlist.h classlist.h" will be | 758 | When executing "make clean", the two files "devlist.h classlist.h" will be |
| 758 | deleted. Kbuild will assume files to be in the same relative directory as the | 759 | deleted. Kbuild will assume files to be in the same relative directory as the |
| 759 | Makefile except if an absolute path is specified (path starting with '/'). | 760 | Makefile, except if prefixed with $(objtree). |
| 760 | 761 | ||
| 761 | To delete a directory hierarchy use: | 762 | To delete a directory hierarchy use: |
| 762 | 763 | ||
| @@ -764,9 +765,8 @@ To delete a directory hierarchy use: | |||
| 764 | #scripts/package/Makefile | 765 | #scripts/package/Makefile |
| 765 | clean-dirs := $(objtree)/debian/ | 766 | clean-dirs := $(objtree)/debian/ |
| 766 | 767 | ||
| 767 | This will delete the directory debian, including all subdirectories. | 768 | This will delete the directory debian in the toplevel directory, including all |
| 768 | Kbuild will assume the directories to be in the same relative path as the | 769 | subdirectories. |
| 769 | Makefile if no absolute path is specified (path does not start with '/'). | ||
| 770 | 770 | ||
| 771 | To exclude certain files from make clean, use the $(no-clean-files) variable. | 771 | To exclude certain files from make clean, use the $(no-clean-files) variable. |
| 772 | This is only a special case used in the top level Kbuild file: | 772 | This is only a special case used in the top level Kbuild file: |
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 4df73da11adc..bfcb1a62a7b4 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
| @@ -970,6 +970,18 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
| 970 | 970 | ||
| 971 | smh Use ARM semihosting calls for early console. | 971 | smh Use ARM semihosting calls for early console. |
| 972 | 972 | ||
| 973 | s3c2410,<addr> | ||
| 974 | s3c2412,<addr> | ||
| 975 | s3c2440,<addr> | ||
| 976 | s3c6400,<addr> | ||
| 977 | s5pv210,<addr> | ||
| 978 | exynos4210,<addr> | ||
| 979 | Use early console provided by serial driver available | ||
| 980 | on Samsung SoCs, requires selecting proper type and | ||
| 981 | a correct base address of the selected UART port. The | ||
| 982 | serial port must already be setup and configured. | ||
| 983 | Options are not yet supported. | ||
| 984 | |||
| 973 | earlyprintk= [X86,SH,BLACKFIN,ARM,M68k] | 985 | earlyprintk= [X86,SH,BLACKFIN,ARM,M68k] |
| 974 | earlyprintk=vga | 986 | earlyprintk=vga |
| 975 | earlyprintk=efi | 987 | earlyprintk=efi |
| @@ -1277,6 +1289,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
| 1277 | i8042.notimeout [HW] Ignore timeout condition signalled by controller | 1289 | i8042.notimeout [HW] Ignore timeout condition signalled by controller |
| 1278 | i8042.reset [HW] Reset the controller during init and cleanup | 1290 | i8042.reset [HW] Reset the controller during init and cleanup |
| 1279 | i8042.unlock [HW] Unlock (ignore) the keylock | 1291 | i8042.unlock [HW] Unlock (ignore) the keylock |
| 1292 | i8042.kbdreset [HW] Reset device connected to KBD port | ||
| 1280 | 1293 | ||
| 1281 | i810= [HW,DRM] | 1294 | i810= [HW,DRM] |
| 1282 | 1295 | ||
| @@ -1469,6 +1482,9 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
| 1469 | no_hwp | 1482 | no_hwp |
| 1470 | Do not enable hardware P state control (HWP) | 1483 | Do not enable hardware P state control (HWP) |
| 1471 | if available. | 1484 | if available. |
| 1485 | hwp_only | ||
| 1486 | Only load intel_pstate on systems which support | ||
| 1487 | hardware P state control (HWP) if available. | ||
| 1472 | 1488 | ||
| 1473 | intremap= [X86-64, Intel-IOMMU] | 1489 | intremap= [X86-64, Intel-IOMMU] |
| 1474 | on enable Interrupt Remapping (default) | 1490 | on enable Interrupt Remapping (default) |
| @@ -1493,6 +1509,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
| 1493 | forcesac | 1509 | forcesac |
| 1494 | soft | 1510 | soft |
| 1495 | pt [x86, IA-64] | 1511 | pt [x86, IA-64] |
| 1512 | nobypass [PPC/POWERNV] | ||
| 1513 | Disable IOMMU bypass, using IOMMU for PCI devices. | ||
| 1496 | 1514 | ||
| 1497 | 1515 | ||
| 1498 | io7= [HW] IO7 for Marvel based alpha systems | 1516 | io7= [HW] IO7 for Marvel based alpha systems |
| @@ -3206,6 +3224,18 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
| 3206 | 3224 | ||
| 3207 | retain_initrd [RAM] Keep initrd memory after extraction | 3225 | retain_initrd [RAM] Keep initrd memory after extraction |
| 3208 | 3226 | ||
| 3227 | rfkill.default_state= | ||
| 3228 | 0 "airplane mode". All wifi, bluetooth, wimax, gps, fm, | ||
| 3229 | etc. communication is blocked by default. | ||
| 3230 | 1 Unblocked. | ||
| 3231 | |||
| 3232 | rfkill.master_switch_mode= | ||
| 3233 | 0 The "airplane mode" button does nothing. | ||
| 3234 | 1 The "airplane mode" button toggles between everything | ||
| 3235 | blocked and the previous configuration. | ||
| 3236 | 2 The "airplane mode" button toggles between everything | ||
| 3237 | blocked and everything unblocked. | ||
| 3238 | |||
| 3209 | rhash_entries= [KNL,NET] | 3239 | rhash_entries= [KNL,NET] |
| 3210 | Set number of hash buckets for route cache | 3240 | Set number of hash buckets for route cache |
| 3211 | 3241 | ||
diff --git a/Documentation/kprobes.txt b/Documentation/kprobes.txt index 4227ec2e3ab2..1488b6525eb6 100644 --- a/Documentation/kprobes.txt +++ b/Documentation/kprobes.txt | |||
| @@ -702,7 +702,8 @@ a virtual address that is no longer valid (module init sections, module | |||
| 702 | virtual addresses that correspond to modules that've been unloaded), | 702 | virtual addresses that correspond to modules that've been unloaded), |
| 703 | such probes are marked with [GONE]. If the probe is temporarily disabled, | 703 | such probes are marked with [GONE]. If the probe is temporarily disabled, |
| 704 | such probes are marked with [DISABLED]. If the probe is optimized, it is | 704 | such probes are marked with [DISABLED]. If the probe is optimized, it is |
| 705 | marked with [OPTIMIZED]. | 705 | marked with [OPTIMIZED]. If the probe is ftrace-based, it is marked with |
| 706 | [FTRACE]. | ||
| 706 | 707 | ||
| 707 | /sys/kernel/debug/kprobes/enabled: Turn kprobes ON/OFF forcibly. | 708 | /sys/kernel/debug/kprobes/enabled: Turn kprobes ON/OFF forcibly. |
| 708 | 709 | ||
diff --git a/Documentation/locking/00-INDEX b/Documentation/locking/00-INDEX new file mode 100644 index 000000000000..c256c9bee2a4 --- /dev/null +++ b/Documentation/locking/00-INDEX | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | 00-INDEX | ||
| 2 | - this file. | ||
| 3 | lockdep-design.txt | ||
| 4 | - documentation on the runtime locking correctness validator. | ||
| 5 | lockstat.txt | ||
| 6 | - info on collecting statistics on locks (and contention). | ||
| 7 | mutex-design.txt | ||
| 8 | - info on the generic mutex subsystem. | ||
| 9 | rt-mutex-design.txt | ||
| 10 | - description of the RealTime mutex implementation design. | ||
| 11 | rt-mutex.txt | ||
| 12 | - desc. of RT-mutex subsystem with PI (Priority Inheritance) support. | ||
| 13 | spinlocks.txt | ||
| 14 | - info on using spinlocks to provide exclusive access in kernel. | ||
| 15 | ww-mutex-design.txt | ||
| 16 | - Intro to Mutex wait/would deadlock handling.s | ||
diff --git a/Documentation/locking/lockdep-design.txt b/Documentation/locking/lockdep-design.txt index 5dbc99c04f6e..5001280e9d82 100644 --- a/Documentation/locking/lockdep-design.txt +++ b/Documentation/locking/lockdep-design.txt | |||
| @@ -34,7 +34,7 @@ The validator tracks lock-class usage history into 4n + 1 separate state bits: | |||
| 34 | - 'ever held with STATE enabled' | 34 | - 'ever held with STATE enabled' |
| 35 | - 'ever held as readlock with STATE enabled' | 35 | - 'ever held as readlock with STATE enabled' |
| 36 | 36 | ||
| 37 | Where STATE can be either one of (kernel/lockdep_states.h) | 37 | Where STATE can be either one of (kernel/locking/lockdep_states.h) |
| 38 | - hardirq | 38 | - hardirq |
| 39 | - softirq | 39 | - softirq |
| 40 | - reclaim_fs | 40 | - reclaim_fs |
diff --git a/Documentation/locking/lockstat.txt b/Documentation/locking/lockstat.txt index 7428773a1e69..568bbbacee91 100644 --- a/Documentation/locking/lockstat.txt +++ b/Documentation/locking/lockstat.txt | |||
| @@ -121,6 +121,11 @@ show the header with column descriptions. Lines 05-18 and 20-31 show the actual | |||
| 121 | statistics. These statistics come in two parts; the actual stats separated by a | 121 | statistics. These statistics come in two parts; the actual stats separated by a |
| 122 | short separator (line 08, 13) from the contention points. | 122 | short separator (line 08, 13) from the contention points. |
| 123 | 123 | ||
| 124 | Lines 09-12 show the first 4 recorded contention points (the code | ||
| 125 | which tries to get the lock) and lines 14-17 show the first 4 recorded | ||
| 126 | contended points (the lock holder). It is possible that the max | ||
| 127 | con-bounces point is missing in the statistics. | ||
| 128 | |||
| 124 | The first lock (05-18) is a read/write lock, and shows two lines above the | 129 | The first lock (05-18) is a read/write lock, and shows two lines above the |
| 125 | short separator. The contention points don't match the column descriptors, | 130 | short separator. The contention points don't match the column descriptors, |
| 126 | they have two: contentions and [<IP>] symbol. The second set of contention | 131 | they have two: contentions and [<IP>] symbol. The second set of contention |
diff --git a/Documentation/memory-barriers.txt b/Documentation/memory-barriers.txt index 70a09f8a0383..ca2387ef27ab 100644 --- a/Documentation/memory-barriers.txt +++ b/Documentation/memory-barriers.txt | |||
| @@ -269,6 +269,50 @@ And there are a number of things that _must_ or _must_not_ be assumed: | |||
| 269 | STORE *(A + 4) = Y; STORE *A = X; | 269 | STORE *(A + 4) = Y; STORE *A = X; |
| 270 | STORE {*A, *(A + 4) } = {X, Y}; | 270 | STORE {*A, *(A + 4) } = {X, Y}; |
| 271 | 271 | ||
| 272 | And there are anti-guarantees: | ||
| 273 | |||
| 274 | (*) These guarantees do not apply to bitfields, because compilers often | ||
| 275 | generate code to modify these using non-atomic read-modify-write | ||
| 276 | sequences. Do not attempt to use bitfields to synchronize parallel | ||
| 277 | algorithms. | ||
| 278 | |||
| 279 | (*) Even in cases where bitfields are protected by locks, all fields | ||
| 280 | in a given bitfield must be protected by one lock. If two fields | ||
| 281 | in a given bitfield are protected by different locks, the compiler's | ||
| 282 | non-atomic read-modify-write sequences can cause an update to one | ||
| 283 | field to corrupt the value of an adjacent field. | ||
| 284 | |||
| 285 | (*) These guarantees apply only to properly aligned and sized scalar | ||
| 286 | variables. "Properly sized" currently means variables that are | ||
| 287 | the same size as "char", "short", "int" and "long". "Properly | ||
| 288 | aligned" means the natural alignment, thus no constraints for | ||
| 289 | "char", two-byte alignment for "short", four-byte alignment for | ||
| 290 | "int", and either four-byte or eight-byte alignment for "long", | ||
| 291 | on 32-bit and 64-bit systems, respectively. Note that these | ||
| 292 | guarantees were introduced into the C11 standard, so beware when | ||
| 293 | using older pre-C11 compilers (for example, gcc 4.6). The portion | ||
| 294 | of the standard containing this guarantee is Section 3.14, which | ||
| 295 | defines "memory location" as follows: | ||
| 296 | |||
| 297 | memory location | ||
| 298 | either an object of scalar type, or a maximal sequence | ||
| 299 | of adjacent bit-fields all having nonzero width | ||
| 300 | |||
| 301 | NOTE 1: Two threads of execution can update and access | ||
| 302 | separate memory locations without interfering with | ||
| 303 | each other. | ||
| 304 | |||
| 305 | NOTE 2: A bit-field and an adjacent non-bit-field member | ||
| 306 | are in separate memory locations. The same applies | ||
| 307 | to two bit-fields, if one is declared inside a nested | ||
| 308 | structure declaration and the other is not, or if the two | ||
| 309 | are separated by a zero-length bit-field declaration, | ||
| 310 | or if they are separated by a non-bit-field member | ||
| 311 | declaration. It is not safe to concurrently update two | ||
| 312 | bit-fields in the same structure if all members declared | ||
| 313 | between them are also bit-fields, no matter what the | ||
| 314 | sizes of those intervening bit-fields happen to be. | ||
| 315 | |||
| 272 | 316 | ||
| 273 | ========================= | 317 | ========================= |
| 274 | WHAT ARE MEMORY BARRIERS? | 318 | WHAT ARE MEMORY BARRIERS? |
| @@ -750,7 +794,7 @@ In summary: | |||
| 750 | However, they do -not- guarantee any other sort of ordering: | 794 | However, they do -not- guarantee any other sort of ordering: |
| 751 | Not prior loads against later loads, nor prior stores against | 795 | Not prior loads against later loads, nor prior stores against |
| 752 | later anything. If you need these other forms of ordering, | 796 | later anything. If you need these other forms of ordering, |
| 753 | use smb_rmb(), smp_wmb(), or, in the case of prior stores and | 797 | use smp_rmb(), smp_wmb(), or, in the case of prior stores and |
| 754 | later loads, smp_mb(). | 798 | later loads, smp_mb(). |
| 755 | 799 | ||
| 756 | (*) If both legs of the "if" statement begin with identical stores | 800 | (*) If both legs of the "if" statement begin with identical stores |
diff --git a/Documentation/misc-devices/mei/mei-client-bus.txt b/Documentation/misc-devices/mei/mei-client-bus.txt index f83910a8ce76..743be4ec8989 100644 --- a/Documentation/misc-devices/mei/mei-client-bus.txt +++ b/Documentation/misc-devices/mei/mei-client-bus.txt | |||
| @@ -1,9 +1,10 @@ | |||
| 1 | Intel(R) Management Engine (ME) Client bus API | 1 | Intel(R) Management Engine (ME) Client bus API |
| 2 | =============================================== | 2 | ============================================== |
| 3 | 3 | ||
| 4 | 4 | ||
| 5 | Rationale | 5 | Rationale |
| 6 | ========= | 6 | ========= |
| 7 | |||
| 7 | MEI misc character device is useful for dedicated applications to send and receive | 8 | MEI misc character device is useful for dedicated applications to send and receive |
| 8 | data to the many FW appliance found in Intel's ME from the user space. | 9 | data to the many FW appliance found in Intel's ME from the user space. |
| 9 | However for some of the ME functionalities it make sense to leverage existing software | 10 | However for some of the ME functionalities it make sense to leverage existing software |
| @@ -17,7 +18,8 @@ the existing code. | |||
| 17 | 18 | ||
| 18 | 19 | ||
| 19 | MEI CL bus API | 20 | MEI CL bus API |
| 20 | =========== | 21 | ============== |
| 22 | |||
| 21 | A driver implementation for an MEI Client is very similar to existing bus | 23 | A driver implementation for an MEI Client is very similar to existing bus |
| 22 | based device drivers. The driver registers itself as an MEI CL bus driver through | 24 | based device drivers. The driver registers itself as an MEI CL bus driver through |
| 23 | the mei_cl_driver structure: | 25 | the mei_cl_driver structure: |
| @@ -55,6 +57,7 @@ received buffers. | |||
| 55 | 57 | ||
| 56 | Example | 58 | Example |
| 57 | ======= | 59 | ======= |
| 60 | |||
| 58 | As a theoretical example let's pretend the ME comes with a "contact" NFC IP. | 61 | As a theoretical example let's pretend the ME comes with a "contact" NFC IP. |
| 59 | The driver init and exit routines for this device would look like: | 62 | The driver init and exit routines for this device would look like: |
| 60 | 63 | ||
| @@ -69,11 +72,11 @@ static struct mei_cl_device_id contact_mei_cl_tbl[] = { | |||
| 69 | MODULE_DEVICE_TABLE(mei_cl, contact_mei_cl_tbl); | 72 | MODULE_DEVICE_TABLE(mei_cl, contact_mei_cl_tbl); |
| 70 | 73 | ||
| 71 | static struct mei_cl_driver contact_driver = { | 74 | static struct mei_cl_driver contact_driver = { |
| 72 | .id_table = contact_mei_tbl, | 75 | .id_table = contact_mei_tbl, |
| 73 | .name = CONTACT_DRIVER_NAME, | 76 | .name = CONTACT_DRIVER_NAME, |
| 74 | 77 | ||
| 75 | .probe = contact_probe, | 78 | .probe = contact_probe, |
| 76 | .remove = contact_remove, | 79 | .remove = contact_remove, |
| 77 | }; | 80 | }; |
| 78 | 81 | ||
| 79 | static int contact_init(void) | 82 | static int contact_init(void) |
| @@ -109,7 +112,7 @@ int contact_probe(struct mei_cl_device *dev, struct mei_cl_device_id *id) | |||
| 109 | mei_cl_register_event_cb(dev, contact_event_cb, contact); | 112 | mei_cl_register_event_cb(dev, contact_event_cb, contact); |
| 110 | 113 | ||
| 111 | return 0; | 114 | return 0; |
| 112 | } | 115 | } |
| 113 | 116 | ||
| 114 | In the probe routine the driver first enable the MEI device and then registers | 117 | In the probe routine the driver first enable the MEI device and then registers |
| 115 | an ME bus event handler which is as close as it can get to registering a | 118 | an ME bus event handler which is as close as it can get to registering a |
diff --git a/Documentation/misc-devices/mei/mei.txt b/Documentation/misc-devices/mei/mei.txt index 15bba1aeba9a..8d47501bba0a 100644 --- a/Documentation/misc-devices/mei/mei.txt +++ b/Documentation/misc-devices/mei/mei.txt | |||
| @@ -1,8 +1,8 @@ | |||
| 1 | Intel(R) Management Engine Interface (Intel(R) MEI) | 1 | Intel(R) Management Engine Interface (Intel(R) MEI) |
| 2 | ======================= | 2 | =================================================== |
| 3 | 3 | ||
| 4 | Introduction | 4 | Introduction |
| 5 | ======================= | 5 | ============ |
| 6 | 6 | ||
| 7 | The Intel Management Engine (Intel ME) is an isolated and protected computing | 7 | The Intel Management Engine (Intel ME) is an isolated and protected computing |
| 8 | resource (Co-processor) residing inside certain Intel chipsets. The Intel ME | 8 | resource (Co-processor) residing inside certain Intel chipsets. The Intel ME |
| @@ -19,7 +19,7 @@ each client has its own protocol. The protocol is message-based with a | |||
| 19 | header and payload up to 512 bytes. | 19 | header and payload up to 512 bytes. |
| 20 | 20 | ||
| 21 | Prominent usage of the Intel ME Interface is to communicate with Intel(R) | 21 | Prominent usage of the Intel ME Interface is to communicate with Intel(R) |
| 22 | Active Management Technology (Intel AMT)implemented in firmware running on | 22 | Active Management Technology (Intel AMT) implemented in firmware running on |
| 23 | the Intel ME. | 23 | the Intel ME. |
| 24 | 24 | ||
| 25 | Intel AMT provides the ability to manage a host remotely out-of-band (OOB) | 25 | Intel AMT provides the ability to manage a host remotely out-of-band (OOB) |
| @@ -44,8 +44,9 @@ HTTP/S that are received from a remote management console application. | |||
| 44 | For more information about Intel AMT: | 44 | For more information about Intel AMT: |
| 45 | http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide | 45 | http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide |
| 46 | 46 | ||
| 47 | |||
| 47 | Intel MEI Driver | 48 | Intel MEI Driver |
| 48 | ======================= | 49 | ================ |
| 49 | 50 | ||
| 50 | The driver exposes a misc device called /dev/mei. | 51 | The driver exposes a misc device called /dev/mei. |
| 51 | 52 | ||
| @@ -91,8 +92,10 @@ A code snippet for an application communicating with Intel AMTHI client: | |||
| 91 | [...] | 92 | [...] |
| 92 | close(fd); | 93 | close(fd); |
| 93 | 94 | ||
| 94 | IOCTL: | 95 | |
| 95 | ====== | 96 | IOCTL |
| 97 | ===== | ||
| 98 | |||
| 96 | The Intel MEI Driver supports the following IOCTL command: | 99 | The Intel MEI Driver supports the following IOCTL command: |
| 97 | IOCTL_MEI_CONNECT_CLIENT Connect to firmware Feature (client). | 100 | IOCTL_MEI_CONNECT_CLIENT Connect to firmware Feature (client). |
| 98 | 101 | ||
| @@ -122,58 +125,61 @@ The Intel MEI Driver supports the following IOCTL command: | |||
| 122 | data that can be sent or received. (e.g. if MTU=2K, can send | 125 | data that can be sent or received. (e.g. if MTU=2K, can send |
| 123 | requests up to bytes 2k and received responses up to 2k bytes). | 126 | requests up to bytes 2k and received responses up to 2k bytes). |
| 124 | 127 | ||
| 125 | Intel ME Applications: | 128 | |
| 126 | ============== | 129 | Intel ME Applications |
| 127 | 130 | ===================== | |
| 128 | 1) Intel Local Management Service (Intel LMS) | 131 | |
| 129 | 132 | 1) Intel Local Management Service (Intel LMS) | |
| 130 | Applications running locally on the platform communicate with Intel AMT Release | 133 | |
| 131 | 2.0 and later releases in the same way that network applications do via SOAP | 134 | Applications running locally on the platform communicate with Intel AMT Release |
| 132 | over HTTP (deprecated starting with Release 6.0) or with WS-Management over | 135 | 2.0 and later releases in the same way that network applications do via SOAP |
| 133 | SOAP over HTTP. This means that some Intel AMT features can be accessed from a | 136 | over HTTP (deprecated starting with Release 6.0) or with WS-Management over |
| 134 | local application using the same network interface as a remote application | 137 | SOAP over HTTP. This means that some Intel AMT features can be accessed from a |
| 135 | communicating with Intel AMT over the network. | 138 | local application using the same network interface as a remote application |
| 136 | 139 | communicating with Intel AMT over the network. | |
| 137 | When a local application sends a message addressed to the local Intel AMT host | 140 | |
| 138 | name, the Intel LMS, which listens for traffic directed to the host name, | 141 | When a local application sends a message addressed to the local Intel AMT host |
| 139 | intercepts the message and routes it to the Intel MEI. | 142 | name, the Intel LMS, which listens for traffic directed to the host name, |
| 140 | For more information: | 143 | intercepts the message and routes it to the Intel MEI. |
| 141 | http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide | 144 | For more information: |
| 142 | Under "About Intel AMT" => "Local Access" | 145 | http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide |
| 143 | 146 | Under "About Intel AMT" => "Local Access" | |
| 144 | For downloading Intel LMS: | 147 | |
| 145 | http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/ | 148 | For downloading Intel LMS: |
| 146 | 149 | http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/ | |
| 147 | The Intel LMS opens a connection using the Intel MEI driver to the Intel LMS | 150 | |
| 148 | firmware feature using a defined UUID and then communicates with the feature | 151 | The Intel LMS opens a connection using the Intel MEI driver to the Intel LMS |
| 149 | using a protocol called Intel AMT Port Forwarding Protocol(Intel APF protocol). | 152 | firmware feature using a defined UUID and then communicates with the feature |
| 150 | The protocol is used to maintain multiple sessions with Intel AMT from a | 153 | using a protocol called Intel AMT Port Forwarding Protocol (Intel APF protocol). |
| 151 | single application. | 154 | The protocol is used to maintain multiple sessions with Intel AMT from a |
| 152 | 155 | single application. | |
| 153 | See the protocol specification in the Intel AMT Software Development Kit(SDK) | 156 | |
| 154 | http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide | 157 | See the protocol specification in the Intel AMT Software Development Kit (SDK) |
| 155 | Under "SDK Resources" => "Intel(R) vPro(TM) Gateway(MPS)" | 158 | http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide |
| 156 | => "Information for Intel(R) vPro(TM) Gateway Developers" | 159 | Under "SDK Resources" => "Intel(R) vPro(TM) Gateway (MPS)" |
| 157 | => "Description of the Intel AMT Port Forwarding (APF)Protocol" | 160 | => "Information for Intel(R) vPro(TM) Gateway Developers" |
| 158 | 161 | => "Description of the Intel AMT Port Forwarding (APF) Protocol" | |
| 159 | 2) Intel AMT Remote configuration using a Local Agent | 162 | |
| 160 | A Local Agent enables IT personnel to configure Intel AMT out-of-the-box | 163 | 2) Intel AMT Remote configuration using a Local Agent |
| 161 | without requiring installing additional data to enable setup. The remote | 164 | |
| 162 | configuration process may involve an ISV-developed remote configuration | 165 | A Local Agent enables IT personnel to configure Intel AMT out-of-the-box |
| 163 | agent that runs on the host. | 166 | without requiring installing additional data to enable setup. The remote |
| 164 | For more information: | 167 | configuration process may involve an ISV-developed remote configuration |
| 165 | http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide | 168 | agent that runs on the host. |
| 166 | Under "Setup and Configuration of Intel AMT" => | 169 | For more information: |
| 167 | "SDK Tools Supporting Setup and Configuration" => | 170 | http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide |
| 168 | "Using the Local Agent Sample" | 171 | Under "Setup and Configuration of Intel AMT" => |
| 169 | 172 | "SDK Tools Supporting Setup and Configuration" => | |
| 170 | An open source Intel AMT configuration utility, implementing a local agent | 173 | "Using the Local Agent Sample" |
| 171 | that accesses the Intel MEI driver, can be found here: | 174 | |
| 172 | http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/ | 175 | An open source Intel AMT configuration utility, implementing a local agent |
| 173 | 176 | that accesses the Intel MEI driver, can be found here: | |
| 174 | 177 | http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/ | |
| 175 | Intel AMT OS Health Watchdog: | 178 | |
| 176 | ============================= | 179 | |
| 180 | Intel AMT OS Health Watchdog | ||
| 181 | ============================ | ||
| 182 | |||
| 177 | The Intel AMT Watchdog is an OS Health (Hang/Crash) watchdog. | 183 | The Intel AMT Watchdog is an OS Health (Hang/Crash) watchdog. |
| 178 | Whenever the OS hangs or crashes, Intel AMT will send an event | 184 | Whenever the OS hangs or crashes, Intel AMT will send an event |
| 179 | to any subscriber to this event. This mechanism means that | 185 | to any subscriber to this event. This mechanism means that |
| @@ -192,8 +198,10 @@ watchdog is 120 seconds. | |||
| 192 | If the Intel AMT Watchdog feature does not exist (i.e. the connection failed), | 198 | If the Intel AMT Watchdog feature does not exist (i.e. the connection failed), |
| 193 | the Intel MEI driver will disable the sending of heartbeats. | 199 | the Intel MEI driver will disable the sending of heartbeats. |
| 194 | 200 | ||
| 195 | Supported Chipsets: | 201 | |
| 202 | Supported Chipsets | ||
| 196 | ================== | 203 | ================== |
| 204 | |||
| 197 | 7 Series Chipset Family | 205 | 7 Series Chipset Family |
| 198 | 6 Series Chipset Family | 206 | 6 Series Chipset Family |
| 199 | 5 Series Chipset Family | 207 | 5 Series Chipset Family |
diff --git a/Documentation/networking/00-INDEX b/Documentation/networking/00-INDEX index 557b6ef70c26..df27a1a50776 100644 --- a/Documentation/networking/00-INDEX +++ b/Documentation/networking/00-INDEX | |||
| @@ -1,7 +1,5 @@ | |||
| 1 | 00-INDEX | 1 | 00-INDEX |
| 2 | - this file | 2 | - this file |
| 3 | 3c505.txt | ||
| 4 | - information on the 3Com EtherLink Plus (3c505) driver. | ||
| 5 | 3c509.txt | 3 | 3c509.txt |
| 6 | - information on the 3Com Etherlink III Series Ethernet cards. | 4 | - information on the 3Com Etherlink III Series Ethernet cards. |
| 7 | 6pack.txt | 5 | 6pack.txt |
| @@ -24,6 +22,8 @@ README.sb1000 | |||
| 24 | - info on General Instrument/NextLevel SURFboard1000 cable modem. | 22 | - info on General Instrument/NextLevel SURFboard1000 cable modem. |
| 25 | alias.txt | 23 | alias.txt |
| 26 | - info on using alias network devices. | 24 | - info on using alias network devices. |
| 25 | altera_tse.txt | ||
| 26 | - Altera Triple-Speed Ethernet controller. | ||
| 27 | arcnet-hardware.txt | 27 | arcnet-hardware.txt |
| 28 | - tons of info on ARCnet, hubs, jumper settings for ARCnet cards, etc. | 28 | - tons of info on ARCnet, hubs, jumper settings for ARCnet cards, etc. |
| 29 | arcnet.txt | 29 | arcnet.txt |
| @@ -42,6 +42,8 @@ bridge.txt | |||
| 42 | - where to get user space programs for ethernet bridging with Linux. | 42 | - where to get user space programs for ethernet bridging with Linux. |
| 43 | can.txt | 43 | can.txt |
| 44 | - documentation on CAN protocol family. | 44 | - documentation on CAN protocol family. |
| 45 | cdc_mbim.txt | ||
| 46 | - 3G/LTE USB modem (Mobile Broadband Interface Model) | ||
| 45 | cops.txt | 47 | cops.txt |
| 46 | - info on the COPS LocalTalk Linux driver | 48 | - info on the COPS LocalTalk Linux driver |
| 47 | cs89x0.txt | 49 | cs89x0.txt |
| @@ -54,6 +56,8 @@ cxgb.txt | |||
| 54 | - Release Notes for the Chelsio N210 Linux device driver. | 56 | - Release Notes for the Chelsio N210 Linux device driver. |
| 55 | dccp.txt | 57 | dccp.txt |
| 56 | - the Datagram Congestion Control Protocol (DCCP) (RFC 4340..42). | 58 | - the Datagram Congestion Control Protocol (DCCP) (RFC 4340..42). |
| 59 | dctcp.txt | ||
| 60 | - DataCenter TCP congestion control | ||
| 57 | de4x5.txt | 61 | de4x5.txt |
| 58 | - the Digital EtherWORKS DE4?? and DE5?? PCI Ethernet driver | 62 | - the Digital EtherWORKS DE4?? and DE5?? PCI Ethernet driver |
| 59 | decnet.txt | 63 | decnet.txt |
diff --git a/Documentation/networking/can.txt b/Documentation/networking/can.txt index 2236d6dcb7da..0a2859a8ee7e 100644 --- a/Documentation/networking/can.txt +++ b/Documentation/networking/can.txt | |||
| @@ -234,7 +234,7 @@ solution for a couple of reasons: | |||
| 234 | mechanisms. Inside this filter definition the (interested) type of | 234 | mechanisms. Inside this filter definition the (interested) type of |
| 235 | errors may be selected. The reception of error messages is disabled | 235 | errors may be selected. The reception of error messages is disabled |
| 236 | by default. The format of the CAN error message frame is briefly | 236 | by default. The format of the CAN error message frame is briefly |
| 237 | described in the Linux header file "include/linux/can/error.h". | 237 | described in the Linux header file "include/uapi/linux/can/error.h". |
| 238 | 238 | ||
| 239 | 4. How to use SocketCAN | 239 | 4. How to use SocketCAN |
| 240 | ------------------------ | 240 | ------------------------ |
diff --git a/Documentation/networking/filter.txt b/Documentation/networking/filter.txt index 58d08f8d8d80..9930ecfbb465 100644 --- a/Documentation/networking/filter.txt +++ b/Documentation/networking/filter.txt | |||
| @@ -279,8 +279,8 @@ Possible BPF extensions are shown in the following table: | |||
| 279 | hatype skb->dev->type | 279 | hatype skb->dev->type |
| 280 | rxhash skb->hash | 280 | rxhash skb->hash |
| 281 | cpu raw_smp_processor_id() | 281 | cpu raw_smp_processor_id() |
| 282 | vlan_tci vlan_tx_tag_get(skb) | 282 | vlan_tci skb_vlan_tag_get(skb) |
| 283 | vlan_pr vlan_tx_tag_present(skb) | 283 | vlan_pr skb_vlan_tag_present(skb) |
| 284 | rand prandom_u32() | 284 | rand prandom_u32() |
| 285 | 285 | ||
| 286 | These extensions can also be prefixed with '#'. | 286 | These extensions can also be prefixed with '#'. |
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt index 9bffdfc648dc..1b8c964b0d17 100644 --- a/Documentation/networking/ip-sysctl.txt +++ b/Documentation/networking/ip-sysctl.txt | |||
| @@ -66,6 +66,8 @@ fwmark_reflect - BOOLEAN | |||
| 66 | route/max_size - INTEGER | 66 | route/max_size - INTEGER |
| 67 | Maximum number of routes allowed in the kernel. Increase | 67 | Maximum number of routes allowed in the kernel. Increase |
| 68 | this when using large numbers of interfaces and/or routes. | 68 | this when using large numbers of interfaces and/or routes. |
| 69 | From linux kernel 3.6 onwards, this is deprecated for ipv4 | ||
| 70 | as route cache is no longer used. | ||
| 69 | 71 | ||
| 70 | neigh/default/gc_thresh1 - INTEGER | 72 | neigh/default/gc_thresh1 - INTEGER |
| 71 | Minimum number of entries to keep. Garbage collector will not | 73 | Minimum number of entries to keep. Garbage collector will not |
| @@ -288,6 +290,28 @@ tcp_frto - INTEGER | |||
| 288 | 290 | ||
| 289 | By default it's enabled with a non-zero value. 0 disables F-RTO. | 291 | By default it's enabled with a non-zero value. 0 disables F-RTO. |
| 290 | 292 | ||
| 293 | tcp_invalid_ratelimit - INTEGER | ||
| 294 | Limit the maximal rate for sending duplicate acknowledgments | ||
| 295 | in response to incoming TCP packets that are for an existing | ||
| 296 | connection but that are invalid due to any of these reasons: | ||
| 297 | |||
| 298 | (a) out-of-window sequence number, | ||
| 299 | (b) out-of-window acknowledgment number, or | ||
| 300 | (c) PAWS (Protection Against Wrapped Sequence numbers) check failure | ||
| 301 | |||
| 302 | This can help mitigate simple "ack loop" DoS attacks, wherein | ||
| 303 | a buggy or malicious middlebox or man-in-the-middle can | ||
| 304 | rewrite TCP header fields in manner that causes each endpoint | ||
| 305 | to think that the other is sending invalid TCP segments, thus | ||
| 306 | causing each side to send an unterminating stream of duplicate | ||
| 307 | acknowledgments for invalid segments. | ||
| 308 | |||
| 309 | Using 0 disables rate-limiting of dupacks in response to | ||
| 310 | invalid segments; otherwise this value specifies the minimal | ||
| 311 | space between sending such dupacks, in milliseconds. | ||
| 312 | |||
| 313 | Default: 500 (milliseconds). | ||
| 314 | |||
| 291 | tcp_keepalive_time - INTEGER | 315 | tcp_keepalive_time - INTEGER |
| 292 | How often TCP sends out keepalive messages when keepalive is enabled. | 316 | How often TCP sends out keepalive messages when keepalive is enabled. |
| 293 | Default: 2hours. | 317 | Default: 2hours. |
| @@ -1285,6 +1309,13 @@ accept_ra_rtr_pref - BOOLEAN | |||
| 1285 | Functional default: enabled if accept_ra is enabled. | 1309 | Functional default: enabled if accept_ra is enabled. |
| 1286 | disabled if accept_ra is disabled. | 1310 | disabled if accept_ra is disabled. |
| 1287 | 1311 | ||
| 1312 | accept_ra_mtu - BOOLEAN | ||
| 1313 | Apply the MTU value specified in RA option 5 (RFC4861). If | ||
| 1314 | disabled, the MTU specified in the RA will be ignored. | ||
| 1315 | |||
| 1316 | Functional default: enabled if accept_ra is enabled. | ||
| 1317 | disabled if accept_ra is disabled. | ||
| 1318 | |||
| 1288 | accept_redirects - BOOLEAN | 1319 | accept_redirects - BOOLEAN |
| 1289 | Accept Redirects. | 1320 | Accept Redirects. |
| 1290 | 1321 | ||
diff --git a/Documentation/networking/netlink_mmap.txt b/Documentation/networking/netlink_mmap.txt index c6af4bac5aa8..54f10478e8e3 100644 --- a/Documentation/networking/netlink_mmap.txt +++ b/Documentation/networking/netlink_mmap.txt | |||
| @@ -199,16 +199,9 @@ frame header. | |||
| 199 | TX limitations | 199 | TX limitations |
| 200 | -------------- | 200 | -------------- |
| 201 | 201 | ||
| 202 | Kernel processing usually involves validation of the message received by | 202 | As of Jan 2015 the message is always copied from the ring frame to an |
| 203 | user-space, then processing its contents. The kernel must assure that | 203 | allocated buffer due to unresolved security concerns. |
| 204 | userspace is not able to modify the message contents after they have been | 204 | See commit 4682a0358639b29cf ("netlink: Always copy on mmap TX."). |
| 205 | validated. In order to do so, the message is copied from the ring frame | ||
| 206 | to an allocated buffer if either of these conditions is false: | ||
| 207 | |||
| 208 | - only a single mapping of the ring exists | ||
| 209 | - the file descriptor is not shared between processes | ||
| 210 | |||
| 211 | This means that for threaded programs, the kernel will fall back to copying. | ||
| 212 | 205 | ||
| 213 | Example | 206 | Example |
| 214 | ------- | 207 | ------- |
diff --git a/Documentation/networking/nf_conntrack-sysctl.txt b/Documentation/networking/nf_conntrack-sysctl.txt index 70da5086153d..f55599c62c9d 100644 --- a/Documentation/networking/nf_conntrack-sysctl.txt +++ b/Documentation/networking/nf_conntrack-sysctl.txt | |||
| @@ -11,7 +11,8 @@ nf_conntrack_buckets - INTEGER (read-only) | |||
| 11 | Size of hash table. If not specified as parameter during module | 11 | Size of hash table. If not specified as parameter during module |
| 12 | loading, the default size is calculated by dividing total memory | 12 | loading, the default size is calculated by dividing total memory |
| 13 | by 16384 to determine the number of buckets but the hash table will | 13 | by 16384 to determine the number of buckets but the hash table will |
| 14 | never have fewer than 32 or more than 16384 buckets. | 14 | never have fewer than 32 and limited to 16384 buckets. For systems |
| 15 | with more than 4GB of memory it will be 65536 buckets. | ||
| 15 | 16 | ||
| 16 | nf_conntrack_checksum - BOOLEAN | 17 | nf_conntrack_checksum - BOOLEAN |
| 17 | 0 - disabled | 18 | 0 - disabled |
diff --git a/Documentation/networking/openvswitch.txt b/Documentation/networking/openvswitch.txt index 37c20ee2455e..b3b9ac61d29d 100644 --- a/Documentation/networking/openvswitch.txt +++ b/Documentation/networking/openvswitch.txt | |||
| @@ -131,6 +131,19 @@ performs best-effort detection of overlapping wildcarded flows and may reject | |||
| 131 | some but not all of them. However, this behavior may change in future versions. | 131 | some but not all of them. However, this behavior may change in future versions. |
| 132 | 132 | ||
| 133 | 133 | ||
| 134 | Unique flow identifiers | ||
| 135 | ----------------------- | ||
| 136 | |||
| 137 | An alternative to using the original match portion of a key as the handle for | ||
| 138 | flow identification is a unique flow identifier, or "UFID". UFIDs are optional | ||
| 139 | for both the kernel and user space program. | ||
| 140 | |||
| 141 | User space programs that support UFID are expected to provide it during flow | ||
| 142 | setup in addition to the flow, then refer to the flow using the UFID for all | ||
| 143 | future operations. The kernel is not required to index flows by the original | ||
| 144 | flow key if a UFID is specified. | ||
| 145 | |||
| 146 | |||
| 134 | Basic rule for evolving flow keys | 147 | Basic rule for evolving flow keys |
| 135 | --------------------------------- | 148 | --------------------------------- |
| 136 | 149 | ||
diff --git a/Documentation/networking/timestamping.txt b/Documentation/networking/timestamping.txt index a5c784c89312..5f0922613f1a 100644 --- a/Documentation/networking/timestamping.txt +++ b/Documentation/networking/timestamping.txt | |||
| @@ -162,6 +162,27 @@ SOF_TIMESTAMPING_OPT_CMSG: | |||
| 162 | option IP_PKTINFO simultaneously. | 162 | option IP_PKTINFO simultaneously. |
| 163 | 163 | ||
| 164 | 164 | ||
| 165 | SOF_TIMESTAMPING_OPT_TSONLY: | ||
| 166 | |||
| 167 | Applies to transmit timestamps only. Makes the kernel return the | ||
| 168 | timestamp as a cmsg alongside an empty packet, as opposed to | ||
| 169 | alongside the original packet. This reduces the amount of memory | ||
| 170 | charged to the socket's receive budget (SO_RCVBUF) and delivers | ||
| 171 | the timestamp even if sysctl net.core.tstamp_allow_data is 0. | ||
| 172 | This option disables SOF_TIMESTAMPING_OPT_CMSG. | ||
| 173 | |||
| 174 | |||
| 175 | New applications are encouraged to pass SOF_TIMESTAMPING_OPT_ID to | ||
| 176 | disambiguate timestamps and SOF_TIMESTAMPING_OPT_TSONLY to operate | ||
| 177 | regardless of the setting of sysctl net.core.tstamp_allow_data. | ||
| 178 | |||
| 179 | An exception is when a process needs additional cmsg data, for | ||
| 180 | instance SOL_IP/IP_PKTINFO to detect the egress network interface. | ||
| 181 | Then pass option SOF_TIMESTAMPING_OPT_CMSG. This option depends on | ||
| 182 | having access to the contents of the original packet, so cannot be | ||
| 183 | combined with SOF_TIMESTAMPING_OPT_TSONLY. | ||
| 184 | |||
| 185 | |||
| 165 | 1.4 Bytestream Timestamps | 186 | 1.4 Bytestream Timestamps |
| 166 | 187 | ||
| 167 | The SO_TIMESTAMPING interface supports timestamping of bytes in a | 188 | The SO_TIMESTAMPING interface supports timestamping of bytes in a |
diff --git a/Documentation/networking/timestamping/txtimestamp.c b/Documentation/networking/timestamping/txtimestamp.c index 876f71c5625a..8217510d3842 100644 --- a/Documentation/networking/timestamping/txtimestamp.c +++ b/Documentation/networking/timestamping/txtimestamp.c | |||
| @@ -30,6 +30,8 @@ | |||
| 30 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | 30 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. |
| 31 | */ | 31 | */ |
| 32 | 32 | ||
| 33 | #define _GNU_SOURCE | ||
| 34 | |||
| 33 | #include <arpa/inet.h> | 35 | #include <arpa/inet.h> |
| 34 | #include <asm/types.h> | 36 | #include <asm/types.h> |
| 35 | #include <error.h> | 37 | #include <error.h> |
| @@ -59,14 +61,6 @@ | |||
| 59 | #include <time.h> | 61 | #include <time.h> |
| 60 | #include <unistd.h> | 62 | #include <unistd.h> |
| 61 | 63 | ||
| 62 | /* ugly hack to work around netinet/in.h and linux/ipv6.h conflicts */ | ||
| 63 | #ifndef in6_pktinfo | ||
| 64 | struct in6_pktinfo { | ||
| 65 | struct in6_addr ipi6_addr; | ||
| 66 | int ipi6_ifindex; | ||
| 67 | }; | ||
| 68 | #endif | ||
| 69 | |||
| 70 | /* command line parameters */ | 64 | /* command line parameters */ |
| 71 | static int cfg_proto = SOCK_STREAM; | 65 | static int cfg_proto = SOCK_STREAM; |
| 72 | static int cfg_ipproto = IPPROTO_TCP; | 66 | static int cfg_ipproto = IPPROTO_TCP; |
| @@ -76,6 +70,7 @@ static int do_ipv6 = 1; | |||
| 76 | static int cfg_payload_len = 10; | 70 | static int cfg_payload_len = 10; |
| 77 | static bool cfg_show_payload; | 71 | static bool cfg_show_payload; |
| 78 | static bool cfg_do_pktinfo; | 72 | static bool cfg_do_pktinfo; |
| 73 | static bool cfg_loop_nodata; | ||
| 79 | static uint16_t dest_port = 9000; | 74 | static uint16_t dest_port = 9000; |
| 80 | 75 | ||
| 81 | static struct sockaddr_in daddr; | 76 | static struct sockaddr_in daddr; |
| @@ -147,6 +142,9 @@ static void print_payload(char *data, int len) | |||
| 147 | { | 142 | { |
| 148 | int i; | 143 | int i; |
| 149 | 144 | ||
| 145 | if (!len) | ||
| 146 | return; | ||
| 147 | |||
| 150 | if (len > 70) | 148 | if (len > 70) |
| 151 | len = 70; | 149 | len = 70; |
| 152 | 150 | ||
| @@ -183,6 +181,7 @@ static void __recv_errmsg_cmsg(struct msghdr *msg, int payload_len) | |||
| 183 | struct sock_extended_err *serr = NULL; | 181 | struct sock_extended_err *serr = NULL; |
| 184 | struct scm_timestamping *tss = NULL; | 182 | struct scm_timestamping *tss = NULL; |
| 185 | struct cmsghdr *cm; | 183 | struct cmsghdr *cm; |
| 184 | int batch = 0; | ||
| 186 | 185 | ||
| 187 | for (cm = CMSG_FIRSTHDR(msg); | 186 | for (cm = CMSG_FIRSTHDR(msg); |
| 188 | cm && cm->cmsg_len; | 187 | cm && cm->cmsg_len; |
| @@ -215,10 +214,18 @@ static void __recv_errmsg_cmsg(struct msghdr *msg, int payload_len) | |||
| 215 | } else | 214 | } else |
| 216 | fprintf(stderr, "unknown cmsg %d,%d\n", | 215 | fprintf(stderr, "unknown cmsg %d,%d\n", |
| 217 | cm->cmsg_level, cm->cmsg_type); | 216 | cm->cmsg_level, cm->cmsg_type); |
| 217 | |||
| 218 | if (serr && tss) { | ||
| 219 | print_timestamp(tss, serr->ee_info, serr->ee_data, | ||
| 220 | payload_len); | ||
| 221 | serr = NULL; | ||
| 222 | tss = NULL; | ||
| 223 | batch++; | ||
| 224 | } | ||
| 218 | } | 225 | } |
| 219 | 226 | ||
| 220 | if (serr && tss) | 227 | if (batch > 1) |
| 221 | print_timestamp(tss, serr->ee_info, serr->ee_data, payload_len); | 228 | fprintf(stderr, "batched %d timestamps\n", batch); |
| 222 | } | 229 | } |
| 223 | 230 | ||
| 224 | static int recv_errmsg(int fd) | 231 | static int recv_errmsg(int fd) |
| @@ -250,7 +257,7 @@ static int recv_errmsg(int fd) | |||
| 250 | if (ret == -1 && errno != EAGAIN) | 257 | if (ret == -1 && errno != EAGAIN) |
| 251 | error(1, errno, "recvmsg"); | 258 | error(1, errno, "recvmsg"); |
| 252 | 259 | ||
| 253 | if (ret > 0) { | 260 | if (ret >= 0) { |
| 254 | __recv_errmsg_cmsg(&msg, ret); | 261 | __recv_errmsg_cmsg(&msg, ret); |
| 255 | if (cfg_show_payload) | 262 | if (cfg_show_payload) |
| 256 | print_payload(data, cfg_payload_len); | 263 | print_payload(data, cfg_payload_len); |
| @@ -315,6 +322,9 @@ static void do_test(int family, unsigned int opt) | |||
| 315 | opt |= SOF_TIMESTAMPING_SOFTWARE | | 322 | opt |= SOF_TIMESTAMPING_SOFTWARE | |
| 316 | SOF_TIMESTAMPING_OPT_CMSG | | 323 | SOF_TIMESTAMPING_OPT_CMSG | |
| 317 | SOF_TIMESTAMPING_OPT_ID; | 324 | SOF_TIMESTAMPING_OPT_ID; |
| 325 | if (cfg_loop_nodata) | ||
| 326 | opt |= SOF_TIMESTAMPING_OPT_TSONLY; | ||
| 327 | |||
| 318 | if (setsockopt(fd, SOL_SOCKET, SO_TIMESTAMPING, | 328 | if (setsockopt(fd, SOL_SOCKET, SO_TIMESTAMPING, |
| 319 | (char *) &opt, sizeof(opt))) | 329 | (char *) &opt, sizeof(opt))) |
| 320 | error(1, 0, "setsockopt timestamping"); | 330 | error(1, 0, "setsockopt timestamping"); |
| @@ -384,6 +394,7 @@ static void __attribute__((noreturn)) usage(const char *filepath) | |||
| 384 | " -h: show this message\n" | 394 | " -h: show this message\n" |
| 385 | " -I: request PKTINFO\n" | 395 | " -I: request PKTINFO\n" |
| 386 | " -l N: send N bytes at a time\n" | 396 | " -l N: send N bytes at a time\n" |
| 397 | " -n: set no-payload option\n" | ||
| 387 | " -r: use raw\n" | 398 | " -r: use raw\n" |
| 388 | " -R: use raw (IP_HDRINCL)\n" | 399 | " -R: use raw (IP_HDRINCL)\n" |
| 389 | " -p N: connect to port N\n" | 400 | " -p N: connect to port N\n" |
| @@ -398,7 +409,7 @@ static void parse_opt(int argc, char **argv) | |||
| 398 | int proto_count = 0; | 409 | int proto_count = 0; |
| 399 | char c; | 410 | char c; |
| 400 | 411 | ||
| 401 | while ((c = getopt(argc, argv, "46hIl:p:rRux")) != -1) { | 412 | while ((c = getopt(argc, argv, "46hIl:np:rRux")) != -1) { |
| 402 | switch (c) { | 413 | switch (c) { |
| 403 | case '4': | 414 | case '4': |
| 404 | do_ipv6 = 0; | 415 | do_ipv6 = 0; |
| @@ -409,6 +420,9 @@ static void parse_opt(int argc, char **argv) | |||
| 409 | case 'I': | 420 | case 'I': |
| 410 | cfg_do_pktinfo = true; | 421 | cfg_do_pktinfo = true; |
| 411 | break; | 422 | break; |
| 423 | case 'n': | ||
| 424 | cfg_loop_nodata = true; | ||
| 425 | break; | ||
| 412 | case 'r': | 426 | case 'r': |
| 413 | proto_count++; | 427 | proto_count++; |
| 414 | cfg_proto = SOCK_RAW; | 428 | cfg_proto = SOCK_RAW; |
diff --git a/Documentation/nommu-mmap.txt b/Documentation/nommu-mmap.txt index 8e1ddec2c78a..ae57b9ea0d41 100644 --- a/Documentation/nommu-mmap.txt +++ b/Documentation/nommu-mmap.txt | |||
| @@ -43,12 +43,12 @@ and it's also much more restricted in the latter case: | |||
| 43 | even if this was created by another process. | 43 | even if this was created by another process. |
| 44 | 44 | ||
| 45 | - If possible, the file mapping will be directly on the backing device | 45 | - If possible, the file mapping will be directly on the backing device |
| 46 | if the backing device has the BDI_CAP_MAP_DIRECT capability and | 46 | if the backing device has the NOMMU_MAP_DIRECT capability and |
| 47 | appropriate mapping protection capabilities. Ramfs, romfs, cramfs | 47 | appropriate mapping protection capabilities. Ramfs, romfs, cramfs |
| 48 | and mtd might all permit this. | 48 | and mtd might all permit this. |
| 49 | 49 | ||
| 50 | - If the backing device device can't or won't permit direct sharing, | 50 | - If the backing device device can't or won't permit direct sharing, |
| 51 | but does have the BDI_CAP_MAP_COPY capability, then a copy of the | 51 | but does have the NOMMU_MAP_COPY capability, then a copy of the |
| 52 | appropriate bit of the file will be read into a contiguous bit of | 52 | appropriate bit of the file will be read into a contiguous bit of |
| 53 | memory and any extraneous space beyond the EOF will be cleared | 53 | memory and any extraneous space beyond the EOF will be cleared |
| 54 | 54 | ||
| @@ -220,7 +220,7 @@ directly (can't be copied). | |||
| 220 | 220 | ||
| 221 | The file->f_op->mmap() operation will be called to actually inaugurate the | 221 | The file->f_op->mmap() operation will be called to actually inaugurate the |
| 222 | mapping. It can be rejected at that point. Returning the ENOSYS error will | 222 | mapping. It can be rejected at that point. Returning the ENOSYS error will |
| 223 | cause the mapping to be copied instead if BDI_CAP_MAP_COPY is specified. | 223 | cause the mapping to be copied instead if NOMMU_MAP_COPY is specified. |
| 224 | 224 | ||
| 225 | The vm_ops->close() routine will be invoked when the last mapping on a chardev | 225 | The vm_ops->close() routine will be invoked when the last mapping on a chardev |
| 226 | is removed. An existing mapping will be shared, partially or not, if possible | 226 | is removed. An existing mapping will be shared, partially or not, if possible |
| @@ -232,7 +232,7 @@ want to handle it, despite the fact it's got an operation. For instance, it | |||
| 232 | might try directing the call to a secondary driver which turns out not to | 232 | might try directing the call to a secondary driver which turns out not to |
| 233 | implement it. Such is the case for the framebuffer driver which attempts to | 233 | implement it. Such is the case for the framebuffer driver which attempts to |
| 234 | direct the call to the device-specific driver. Under such circumstances, the | 234 | direct the call to the device-specific driver. Under such circumstances, the |
| 235 | mapping request will be rejected if BDI_CAP_MAP_COPY is not specified, and a | 235 | mapping request will be rejected if NOMMU_MAP_COPY is not specified, and a |
| 236 | copy mapped otherwise. | 236 | copy mapped otherwise. |
| 237 | 237 | ||
| 238 | IMPORTANT NOTE: | 238 | IMPORTANT NOTE: |
diff --git a/Documentation/oops-tracing.txt b/Documentation/oops-tracing.txt index beefb9f82902..f3ac05cc23e4 100644 --- a/Documentation/oops-tracing.txt +++ b/Documentation/oops-tracing.txt | |||
| @@ -270,6 +270,8 @@ characters, each representing a particular tainted value. | |||
| 270 | 270 | ||
| 271 | 15: 'L' if a soft lockup has previously occurred on the system. | 271 | 15: 'L' if a soft lockup has previously occurred on the system. |
| 272 | 272 | ||
| 273 | 16: 'K' if the kernel has been live patched. | ||
| 274 | |||
| 273 | The primary reason for the 'Tainted: ' string is to tell kernel | 275 | The primary reason for the 'Tainted: ' string is to tell kernel |
| 274 | debuggers if this is a clean kernel or if anything unusual has | 276 | debuggers if this is a clean kernel or if anything unusual has |
| 275 | occurred. Tainting is permanent: even if an offending module is | 277 | occurred. Tainting is permanent: even if an offending module is |
diff --git a/Documentation/power/s2ram.txt b/Documentation/power/s2ram.txt index 1bdfa0443773..4685aee197fd 100644 --- a/Documentation/power/s2ram.txt +++ b/Documentation/power/s2ram.txt | |||
| @@ -69,6 +69,10 @@ Reason for this is that the RTC is the only reliably available piece of | |||
| 69 | hardware during resume operations where a value can be set that will | 69 | hardware during resume operations where a value can be set that will |
| 70 | survive a reboot. | 70 | survive a reboot. |
| 71 | 71 | ||
| 72 | pm_trace is not compatible with asynchronous suspend, so it turns | ||
| 73 | asynchronous suspend off (which may work around timing or | ||
| 74 | ordering-sensitive bugs). | ||
| 75 | |||
| 72 | Consequence is that after a resume (even if it is successful) your system | 76 | Consequence is that after a resume (even if it is successful) your system |
| 73 | clock will have a value corresponding to the magic number instead of the | 77 | clock will have a value corresponding to the magic number instead of the |
| 74 | correct date/time! It is therefore advisable to use a program like ntp-date | 78 | correct date/time! It is therefore advisable to use a program like ntp-date |
diff --git a/Documentation/rfkill.txt b/Documentation/rfkill.txt index 427e89712f4a..2ee6ef9a6554 100644 --- a/Documentation/rfkill.txt +++ b/Documentation/rfkill.txt | |||
| @@ -25,6 +25,9 @@ whether they can be changed or not: | |||
| 25 | - soft block: writable radio block (need not be readable) that is set by | 25 | - soft block: writable radio block (need not be readable) that is set by |
| 26 | the system software. | 26 | the system software. |
| 27 | 27 | ||
| 28 | The rfkill subsystem has two parameters, rfkill.default_state and | ||
| 29 | rfkill.master_switch_mode, which are documented in kernel-parameters.txt. | ||
| 30 | |||
| 28 | 31 | ||
| 29 | 2. Implementation details | 32 | 2. Implementation details |
| 30 | 33 | ||
diff --git a/Documentation/s390/Debugging390.txt b/Documentation/s390/Debugging390.txt index 08911b5c6b0e..3df8babcdc41 100644 --- a/Documentation/s390/Debugging390.txt +++ b/Documentation/s390/Debugging390.txt | |||
| @@ -1,14 +1,14 @@ | |||
| 1 | 1 | ||
| 2 | Debugging on Linux for s/390 & z/Architecture | 2 | Debugging on Linux for s/390 & z/Architecture |
| 3 | by | 3 | by |
| 4 | Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com) | 4 | Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com) |
| 5 | Copyright (C) 2000-2001 IBM Deutschland Entwicklung GmbH, IBM Corporation | 5 | Copyright (C) 2000-2001 IBM Deutschland Entwicklung GmbH, IBM Corporation |
| 6 | Best viewed with fixed width fonts | 6 | Best viewed with fixed width fonts |
| 7 | 7 | ||
| 8 | Overview of Document: | 8 | Overview of Document: |
| 9 | ===================== | 9 | ===================== |
| 10 | This document is intended to give a good overview of how to debug | 10 | This document is intended to give a good overview of how to debug Linux for |
| 11 | Linux for s/390 & z/Architecture. It isn't intended as a complete reference & not a | 11 | s/390 and z/Architecture. It is not intended as a complete reference and not a |
| 12 | tutorial on the fundamentals of C & assembly. It doesn't go into | 12 | tutorial on the fundamentals of C & assembly. It doesn't go into |
| 13 | 390 IO in any detail. It is intended to complement the documents in the | 13 | 390 IO in any detail. It is intended to complement the documents in the |
| 14 | reference section below & any other worthwhile references you get. | 14 | reference section below & any other worthwhile references you get. |
| @@ -35,7 +35,6 @@ Examining core dumps | |||
| 35 | ldd | 35 | ldd |
| 36 | Debugging modules | 36 | Debugging modules |
| 37 | The proc file system | 37 | The proc file system |
| 38 | Starting points for debugging scripting languages etc. | ||
| 39 | SysRq | 38 | SysRq |
| 40 | References | 39 | References |
| 41 | Special Thanks | 40 | Special Thanks |
| @@ -44,18 +43,20 @@ Register Set | |||
| 44 | ============ | 43 | ============ |
| 45 | The current architectures have the following registers. | 44 | The current architectures have the following registers. |
| 46 | 45 | ||
| 47 | 16 General propose registers, 32 bit on s/390 64 bit on z/Architecture, r0-r15 or gpr0-gpr15 used for arithmetic & addressing. | 46 | 16 General propose registers, 32 bit on s/390 and 64 bit on z/Architecture, |
| 48 | 47 | r0-r15 (or gpr0-gpr15), used for arithmetic and addressing. | |
| 49 | 16 Control registers, 32 bit on s/390 64 bit on z/Architecture, ( cr0-cr15 kernel usage only ) used for memory management, | 48 | |
| 50 | interrupt control,debugging control etc. | 49 | 16 Control registers, 32 bit on s/390 and 64 bit on z/Architecture, cr0-cr15, |
| 51 | 50 | kernel usage only, used for memory management, interrupt control, debugging | |
| 52 | 16 Access registers ( ar0-ar15 ) 32 bit on s/390 & z/Architecture | 51 | control etc. |
| 53 | not used by normal programs but potentially could | 52 | |
| 54 | be used as temporary storage. Their main purpose is their 1 to 1 | 53 | 16 Access registers (ar0-ar15), 32 bit on both s/390 and z/Architecture, |
| 55 | association with general purpose registers and are used in | 54 | normally not used by normal programs but potentially could be used as |
| 56 | the kernel for copying data between kernel & user address spaces. | 55 | temporary storage. These registers have a 1:1 association with general |
| 57 | Access register 0 ( & access register 1 on z/Architecture ( needs 64 bit | 56 | purpose registers and are designed to be used in the so-called access |
| 58 | pointer ) ) is currently used by the pthread library as a pointer to | 57 | register mode to select different address spaces. |
| 58 | Access register 0 (and access register 1 on z/Architecture, which needs a | ||
| 59 | 64 bit pointer) is currently used by the pthread library as a pointer to | ||
| 59 | the current running threads private area. | 60 | the current running threads private area. |
| 60 | 61 | ||
| 61 | 16 64 bit floating point registers (fp0-fp15 ) IEEE & HFP floating | 62 | 16 64 bit floating point registers (fp0-fp15 ) IEEE & HFP floating |
| @@ -90,18 +91,19 @@ s/390 z/Architecture | |||
| 90 | 91 | ||
| 91 | 6 6 Input/Output interrupt Mask | 92 | 6 6 Input/Output interrupt Mask |
| 92 | 93 | ||
| 93 | 7 7 External interrupt Mask used primarily for interprocessor signalling & | 94 | 7 7 External interrupt Mask used primarily for interprocessor |
| 94 | clock interrupts. | 95 | signalling and clock interrupts. |
| 95 | 96 | ||
| 96 | 8-11 8-11 PSW Key used for complex memory protection mechanism not used under linux | 97 | 8-11 8-11 PSW Key used for complex memory protection mechanism |
| 98 | (not used under linux) | ||
| 97 | 99 | ||
| 98 | 12 12 1 on s/390 0 on z/Architecture | 100 | 12 12 1 on s/390 0 on z/Architecture |
| 99 | 101 | ||
| 100 | 13 13 Machine Check Mask 1=enable machine check interrupts | 102 | 13 13 Machine Check Mask 1=enable machine check interrupts |
| 101 | 103 | ||
| 102 | 14 14 Wait State set this to 1 to stop the processor except for interrupts & give | 104 | 14 14 Wait State. Set this to 1 to stop the processor except for |
| 103 | time to other LPARS used in CPU idle in the kernel to increase overall | 105 | interrupts and give time to other LPARS. Used in CPU idle in |
| 104 | usage of processor resources. | 106 | the kernel to increase overall usage of processor resources. |
| 105 | 107 | ||
| 106 | 15 15 Problem state ( if set to 1 certain instructions are disabled ) | 108 | 15 15 Problem state ( if set to 1 certain instructions are disabled ) |
| 107 | all linux user programs run with this bit 1 | 109 | all linux user programs run with this bit 1 |
| @@ -165,21 +167,23 @@ s/390 z/Architecture | |||
| 165 | when loading the address with LPSWE otherwise a | 167 | when loading the address with LPSWE otherwise a |
| 166 | specification exception occurs, LPSW is fully backward | 168 | specification exception occurs, LPSW is fully backward |
| 167 | compatible. | 169 | compatible. |
| 168 | 170 | ||
| 169 | 171 | ||
| 170 | Prefix Page(s) | 172 | Prefix Page(s) |
| 171 | -------------- | 173 | -------------- |
| 172 | This per cpu memory area is too intimately tied to the processor not to mention. | 174 | This per cpu memory area is too intimately tied to the processor not to mention. |
| 173 | It exists between the real addresses 0-4096 on s/390 & 0-8192 z/Architecture & is exchanged | 175 | It exists between the real addresses 0-4096 on s/390 and between 0-8192 on |
| 174 | with a 1 page on s/390 or 2 pages on z/Architecture in absolute storage by the set | 176 | z/Architecture and is exchanged with one page on s/390 or two pages on |
| 175 | prefix instruction in linux'es startup. | 177 | z/Architecture in absolute storage by the set prefix instruction during Linux |
| 176 | This page is mapped to a different prefix for each processor in an SMP configuration | 178 | startup. |
| 177 | ( assuming the os designer is sane of course :-) ). | 179 | This page is mapped to a different prefix for each processor in an SMP |
| 178 | Bytes 0-512 ( 200 hex ) on s/390 & 0-512,4096-4544,4604-5119 currently on z/Architecture | 180 | configuration (assuming the OS designer is sane of course). |
| 179 | are used by the processor itself for holding such information as exception indications & | 181 | Bytes 0-512 (200 hex) on s/390 and 0-512, 4096-4544, 4604-5119 currently on |
| 180 | entry points for exceptions. | 182 | z/Architecture are used by the processor itself for holding such information |
| 181 | Bytes after 0xc00 hex are used by linux for per processor globals on s/390 & z/Architecture | 183 | as exception indications and entry points for exceptions. |
| 182 | ( there is a gap on z/Architecture too currently between 0xc00 & 1000 which linux uses ). | 184 | Bytes after 0xc00 hex are used by linux for per processor globals on s/390 and |
| 185 | z/Architecture (there is a gap on z/Architecture currently between 0xc00 and | ||
| 186 | 0x1000, too, which is used by Linux). | ||
| 183 | The closest thing to this on traditional architectures is the interrupt | 187 | The closest thing to this on traditional architectures is the interrupt |
| 184 | vector table. This is a good thing & does simplify some of the kernel coding | 188 | vector table. This is a good thing & does simplify some of the kernel coding |
| 185 | however it means that we now cannot catch stray NULL pointers in the | 189 | however it means that we now cannot catch stray NULL pointers in the |
| @@ -192,26 +196,26 @@ Address Spaces on Intel Linux | |||
| 192 | 196 | ||
| 193 | The traditional Intel Linux is approximately mapped as follows forgive | 197 | The traditional Intel Linux is approximately mapped as follows forgive |
| 194 | the ascii art. | 198 | the ascii art. |
| 195 | 0xFFFFFFFF 4GB Himem ***************** | 199 | 0xFFFFFFFF 4GB Himem ***************** |
| 196 | * * | 200 | * * |
| 197 | * Kernel Space * | 201 | * Kernel Space * |
| 198 | * * | 202 | * * |
| 199 | ***************** **************** | 203 | ***************** **************** |
| 200 | User Space Himem (typically 0xC0000000 3GB )* User Stack * * * | 204 | User Space Himem * User Stack * * * |
| 201 | ***************** * * | 205 | (typically 0xC0000000 3GB ) ***************** * * |
| 202 | * Shared Libs * * Next Process * | 206 | * Shared Libs * * Next Process * |
| 203 | ***************** * to * | 207 | ***************** * to * |
| 204 | * * <== * Run * <== | 208 | * * <== * Run * <== |
| 205 | * User Program * * * | 209 | * User Program * * * |
| 206 | * Data BSS * * * | 210 | * Data BSS * * * |
| 207 | * Text * * * | 211 | * Text * * * |
| 208 | * Sections * * * | 212 | * Sections * * * |
| 209 | 0x00000000 ***************** **************** | 213 | 0x00000000 ***************** **************** |
| 210 | 214 | ||
| 211 | Now it is easy to see that on Intel it is quite easy to recognise a kernel address | 215 | Now it is easy to see that on Intel it is quite easy to recognise a kernel |
| 212 | as being one greater than user space himem ( in this case 0xC0000000). | 216 | address as being one greater than user space himem (in this case 0xC0000000), |
| 213 | & addresses of less than this are the ones in the current running program on this | 217 | and addresses of less than this are the ones in the current running program on |
| 214 | processor ( if an smp box ). | 218 | this processor (if an smp box). |
| 215 | If using the virtual machine ( VM ) as a debugger it is quite difficult to | 219 | If using the virtual machine ( VM ) as a debugger it is quite difficult to |
| 216 | know which user process is running as the address space you are looking at | 220 | know which user process is running as the address space you are looking at |
| 217 | could be from any process in the run queue. | 221 | could be from any process in the run queue. |
| @@ -247,8 +251,8 @@ Our addressing scheme is basically as follows: | |||
| 247 | Himem 0x7fffffff 2GB on s/390 ***************** **************** | 251 | Himem 0x7fffffff 2GB on s/390 ***************** **************** |
| 248 | currently 0x3ffffffffff (2^42)-1 * User Stack * * * | 252 | currently 0x3ffffffffff (2^42)-1 * User Stack * * * |
| 249 | on z/Architecture. ***************** * * | 253 | on z/Architecture. ***************** * * |
| 250 | * Shared Libs * * * | 254 | * Shared Libs * * * |
| 251 | ***************** * * | 255 | ***************** * * |
| 252 | * * * Kernel * | 256 | * * * Kernel * |
| 253 | * User Program * * * | 257 | * User Program * * * |
| 254 | * Data BSS * * * | 258 | * Data BSS * * * |
| @@ -301,10 +305,10 @@ Virtual Addresses on s/390 & z/Architecture | |||
| 301 | =========================================== | 305 | =========================================== |
| 302 | 306 | ||
| 303 | A virtual address on s/390 is made up of 3 parts | 307 | A virtual address on s/390 is made up of 3 parts |
| 304 | The SX ( segment index, roughly corresponding to the PGD & PMD in linux terminology ) | 308 | The SX (segment index, roughly corresponding to the PGD & PMD in Linux |
| 305 | being bits 1-11. | 309 | terminology) being bits 1-11. |
| 306 | The PX ( page index, corresponding to the page table entry (pte) in linux terminology ) | 310 | The PX (page index, corresponding to the page table entry (pte) in Linux |
| 307 | being bits 12-19. | 311 | terminology) being bits 12-19. |
| 308 | The remaining bits BX (the byte index are the offset in the page ) | 312 | The remaining bits BX (the byte index are the offset in the page ) |
| 309 | i.e. bits 20 to 31. | 313 | i.e. bits 20 to 31. |
| 310 | 314 | ||
| @@ -368,9 +372,9 @@ each processor as follows. | |||
| 368 | * ( 8K ) * | 372 | * ( 8K ) * |
| 369 | 16K aligned ************************ | 373 | 16K aligned ************************ |
| 370 | 374 | ||
| 371 | What this means is that we don't need to dedicate any register or global variable | 375 | What this means is that we don't need to dedicate any register or global |
| 372 | to point to the current running process & can retrieve it with the following | 376 | variable to point to the current running process & can retrieve it with the |
| 373 | very simple construct for s/390 & one very similar for z/Architecture. | 377 | following very simple construct for s/390 & one very similar for z/Architecture. |
| 374 | 378 | ||
| 375 | static inline struct task_struct * get_current(void) | 379 | static inline struct task_struct * get_current(void) |
| 376 | { | 380 | { |
| @@ -403,8 +407,8 @@ Note: To follow stackframes requires a knowledge of C or Pascal & | |||
| 403 | limited knowledge of one assembly language. | 407 | limited knowledge of one assembly language. |
| 404 | 408 | ||
| 405 | It should be noted that there are some differences between the | 409 | It should be noted that there are some differences between the |
| 406 | s/390 & z/Architecture stack layouts as the z/Architecture stack layout didn't have | 410 | s/390 and z/Architecture stack layouts as the z/Architecture stack layout |
| 407 | to maintain compatibility with older linkage formats. | 411 | didn't have to maintain compatibility with older linkage formats. |
| 408 | 412 | ||
| 409 | Glossary: | 413 | Glossary: |
| 410 | --------- | 414 | --------- |
| @@ -440,7 +444,7 @@ The code generated by the compiler to return to the caller. | |||
| 440 | 444 | ||
| 441 | frameless-function | 445 | frameless-function |
| 442 | A frameless function in Linux for s390 & z/Architecture is one which doesn't | 446 | A frameless function in Linux for s390 & z/Architecture is one which doesn't |
| 443 | need more than the register save area ( 96 bytes on s/390, 160 on z/Architecture ) | 447 | need more than the register save area (96 bytes on s/390, 160 on z/Architecture) |
| 444 | given to it by the caller. | 448 | given to it by the caller. |
| 445 | A frameless function never: | 449 | A frameless function never: |
| 446 | 1) Sets up a back chain. | 450 | 1) Sets up a back chain. |
| @@ -588,8 +592,8 @@ A sample program with comments. | |||
| 588 | 592 | ||
| 589 | Comments on the function test | 593 | Comments on the function test |
| 590 | ----------------------------- | 594 | ----------------------------- |
| 591 | 1) It didn't need to set up a pointer to the constant pool gpr13 as it isn't used | 595 | 1) It didn't need to set up a pointer to the constant pool gpr13 as it is not |
| 592 | ( :-( ). | 596 | used ( :-( ). |
| 593 | 2) This is a frameless function & no stack is bought. | 597 | 2) This is a frameless function & no stack is bought. |
| 594 | 3) The compiler was clever enough to recognise that it could return the | 598 | 3) The compiler was clever enough to recognise that it could return the |
| 595 | value in r2 as well as use it for the passed in parameter ( :-) ). | 599 | value in r2 as well as use it for the passed in parameter ( :-) ). |
| @@ -743,35 +747,34 @@ Debugging under VM | |||
| 743 | Notes | 747 | Notes |
| 744 | ----- | 748 | ----- |
| 745 | Addresses & values in the VM debugger are always hex never decimal | 749 | Addresses & values in the VM debugger are always hex never decimal |
| 746 | Address ranges are of the format <HexValue1>-<HexValue2> or <HexValue1>.<HexValue2> | 750 | Address ranges are of the format <HexValue1>-<HexValue2> or |
| 747 | e.g. The address range 0x2000 to 0x3000 can be described as 2000-3000 or 2000.1000 | 751 | <HexValue1>.<HexValue2> |
| 752 | For example, the address range 0x2000 to 0x3000 can be described as 2000-3000 | ||
| 753 | or 2000.1000 | ||
| 748 | 754 | ||
| 749 | The VM Debugger is case insensitive. | 755 | The VM Debugger is case insensitive. |
| 750 | 756 | ||
| 751 | VM's strengths are usually other debuggers weaknesses you can get at any resource | 757 | VM's strengths are usually other debuggers weaknesses you can get at any |
| 752 | no matter how sensitive e.g. memory management resources,change address translation | 758 | resource no matter how sensitive e.g. memory management resources, change |
| 753 | in the PSW. For kernel hacking you will reap dividends if you get good at it. | 759 | address translation in the PSW. For kernel hacking you will reap dividends if |
| 754 | 760 | you get good at it. | |
| 755 | The VM Debugger displays operators but not operands, probably because some | 761 | |
| 756 | of it was written when memory was expensive & the programmer was probably proud that | 762 | The VM Debugger displays operators but not operands, and also the debugger |
| 757 | it fitted into 2k of memory & the programmers & didn't want to shock hardcore VM'ers by | 763 | displays useful information on the same line as the author of the code probably |
| 758 | changing the interface :-), also the debugger displays useful information on the same line & | 764 | felt that it was a good idea not to go over the 80 columns on the screen. |
| 759 | the author of the code probably felt that it was a good idea not to go over | 765 | This isn't as unintuitive as it may seem as the s/390 instructions are easy to |
| 760 | the 80 columns on the screen. | 766 | decode mentally and you can make a good guess at a lot of them as all the |
| 761 | 767 | operands are nibble (half byte aligned). | |
| 762 | As some of you are probably in a panic now this isn't as unintuitive as it may seem | 768 | So if you have an objdump listing by hand, it is quite easy to follow, and if |
| 763 | as the 390 instructions are easy to decode mentally & you can make a good guess at a lot | 769 | you don't have an objdump listing keep a copy of the s/390 Reference Summary |
| 764 | of them as all the operands are nibble ( half byte aligned ) & if you have an objdump listing | 770 | or alternatively the s/390 principles of operation next to you. |
| 765 | also it is quite easy to follow, if you don't have an objdump listing keep a copy of | ||
| 766 | the s/390 Reference Summary & look at between pages 2 & 7 or alternatively the | ||
| 767 | s/390 principles of operation. | ||
| 768 | e.g. even I can guess that | 771 | e.g. even I can guess that |
| 769 | 0001AFF8' LR 180F CC 0 | 772 | 0001AFF8' LR 180F CC 0 |
| 770 | is a ( load register ) lr r0,r15 | 773 | is a ( load register ) lr r0,r15 |
| 771 | 774 | ||
| 772 | Also it is very easy to tell the length of a 390 instruction from the 2 most significant | 775 | Also it is very easy to tell the length of a 390 instruction from the 2 most |
| 773 | bits in the instruction ( not that this info is really useful except if you are trying to | 776 | significant bits in the instruction (not that this info is really useful except |
| 774 | make sense of a hexdump of code ). | 777 | if you are trying to make sense of a hexdump of code). |
| 775 | Here is a table | 778 | Here is a table |
| 776 | Bits Instruction Length | 779 | Bits Instruction Length |
| 777 | ------------------------------------------ | 780 | ------------------------------------------ |
| @@ -780,9 +783,6 @@ Bits Instruction Length | |||
| 780 | 10 4 Bytes | 783 | 10 4 Bytes |
| 781 | 11 6 Bytes | 784 | 11 6 Bytes |
| 782 | 785 | ||
| 783 | |||
| 784 | |||
| 785 | |||
| 786 | The debugger also displays other useful info on the same line such as the | 786 | The debugger also displays other useful info on the same line such as the |
| 787 | addresses being operated on destination addresses of branches & condition codes. | 787 | addresses being operated on destination addresses of branches & condition codes. |
| 788 | e.g. | 788 | e.g. |
| @@ -853,8 +853,8 @@ Displaying & modifying Registers | |||
| 853 | -------------------------------- | 853 | -------------------------------- |
| 854 | D G will display all the gprs | 854 | D G will display all the gprs |
| 855 | Adding a extra G to all the commands is necessary to access the full 64 bit | 855 | Adding a extra G to all the commands is necessary to access the full 64 bit |
| 856 | content in VM on z/Architecture obviously this isn't required for access registers | 856 | content in VM on z/Architecture. Obviously this isn't required for access |
| 857 | as these are still 32 bit. | 857 | registers as these are still 32 bit. |
| 858 | e.g. DGG instead of DG | 858 | e.g. DGG instead of DG |
| 859 | D X will display all the control registers | 859 | D X will display all the control registers |
| 860 | D AR will display all the access registers | 860 | D AR will display all the access registers |
| @@ -870,10 +870,11 @@ Displaying Memory | |||
| 870 | ----------------- | 870 | ----------------- |
| 871 | To display memory mapped using the current PSW's mapping try | 871 | To display memory mapped using the current PSW's mapping try |
| 872 | D <range> | 872 | D <range> |
| 873 | To make VM display a message each time it hits a particular address & continue try | 873 | To make VM display a message each time it hits a particular address and |
| 874 | continue try | ||
| 874 | D I<range> will disassemble/display a range of instructions. | 875 | D I<range> will disassemble/display a range of instructions. |
| 875 | ST addr 32 bit word will store a 32 bit aligned address | 876 | ST addr 32 bit word will store a 32 bit aligned address |
| 876 | D T<range> will display the EBCDIC in an address ( if you are that way inclined ) | 877 | D T<range> will display the EBCDIC in an address (if you are that way inclined) |
| 877 | D R<range> will display real addresses ( without DAT ) but with prefixing. | 878 | D R<range> will display real addresses ( without DAT ) but with prefixing. |
| 878 | There are other complex options to display if you need to get at say home space | 879 | There are other complex options to display if you need to get at say home space |
| 879 | but are in primary space the easiest thing to do is to temporarily | 880 | but are in primary space the easiest thing to do is to temporarily |
| @@ -884,8 +885,8 @@ restore it. | |||
| 884 | 885 | ||
| 885 | Hints | 886 | Hints |
| 886 | ----- | 887 | ----- |
| 887 | If you want to issue a debugger command without halting your virtual machine with the | 888 | If you want to issue a debugger command without halting your virtual machine |
| 888 | PA1 key try prefixing the command with #CP e.g. | 889 | with the PA1 key try prefixing the command with #CP e.g. |
| 889 | #cp tr i pswa 2000 | 890 | #cp tr i pswa 2000 |
| 890 | also suffixing most debugger commands with RUN will cause them not | 891 | also suffixing most debugger commands with RUN will cause them not |
| 891 | to stop just display the mnemonic at the current instruction on the console. | 892 | to stop just display the mnemonic at the current instruction on the console. |
| @@ -903,9 +904,10 @@ This sends a message to your own console each time do_signal is entered. | |||
| 903 | script with breakpoints on every kernel procedure, this isn't a good idea | 904 | script with breakpoints on every kernel procedure, this isn't a good idea |
| 904 | because there are thousands of these routines & VM can only set 255 breakpoints | 905 | because there are thousands of these routines & VM can only set 255 breakpoints |
| 905 | at a time so you nearly had to spend as long pruning the file down as you would | 906 | at a time so you nearly had to spend as long pruning the file down as you would |
| 906 | entering the msg's by hand ),however, the trick might be useful for a single object file. | 907 | entering the msgs by hand), however, the trick might be useful for a single |
| 907 | On linux'es 3270 emulator x3270 there is a very useful option under the file ment | 908 | object file. In the 3270 terminal emulator x3270 there is a very useful option |
| 908 | Save Screens In File this is very good of keeping a copy of traces. | 909 | in the file menu called "Save Screen In File" - this is very good for keeping a |
| 910 | copy of traces. | ||
| 909 | 911 | ||
| 910 | From CMS help <command name> will give you online help on a particular command. | 912 | From CMS help <command name> will give you online help on a particular command. |
| 911 | e.g. | 913 | e.g. |
| @@ -920,7 +922,8 @@ SET PF9 IMM B | |||
| 920 | This does a single step in VM on pressing F8. | 922 | This does a single step in VM on pressing F8. |
| 921 | SET PF10 ^ | 923 | SET PF10 ^ |
| 922 | This sets up the ^ key. | 924 | This sets up the ^ key. |
| 923 | which can be used for ^c (ctrl-c),^z (ctrl-z) which can't be typed directly into some 3270 consoles. | 925 | which can be used for ^c (ctrl-c),^z (ctrl-z) which can't be typed directly |
| 926 | into some 3270 consoles. | ||
| 924 | SET PF11 ^- | 927 | SET PF11 ^- |
| 925 | This types the starting keystrokes for a sysrq see SysRq below. | 928 | This types the starting keystrokes for a sysrq see SysRq below. |
| 926 | SET PF12 RETRIEVE | 929 | SET PF12 RETRIEVE |
| @@ -1014,8 +1017,8 @@ Tracing Program Exceptions | |||
| 1014 | -------------------------- | 1017 | -------------------------- |
| 1015 | If you get a crash which says something like | 1018 | If you get a crash which says something like |
| 1016 | illegal operation or specification exception followed by a register dump | 1019 | illegal operation or specification exception followed by a register dump |
| 1017 | You can restart linux & trace these using the tr prog <range or value> trace option. | 1020 | You can restart linux & trace these using the tr prog <range or value> trace |
| 1018 | 1021 | option. | |
| 1019 | 1022 | ||
| 1020 | 1023 | ||
| 1021 | The most common ones you will normally be tracing for is | 1024 | The most common ones you will normally be tracing for is |
| @@ -1057,9 +1060,10 @@ TR GOTO INITIAL | |||
| 1057 | 1060 | ||
| 1058 | Tracing linux syscalls under VM | 1061 | Tracing linux syscalls under VM |
| 1059 | ------------------------------- | 1062 | ------------------------------- |
| 1060 | Syscalls are implemented on Linux for S390 by the Supervisor call instruction (SVC) there 256 | 1063 | Syscalls are implemented on Linux for S390 by the Supervisor call instruction |
| 1061 | possibilities of these as the instruction is made up of a 0xA opcode & the second byte being | 1064 | (SVC). There 256 possibilities of these as the instruction is made up of a 0xA |
| 1062 | the syscall number. They are traced using the simple command. | 1065 | opcode and the second byte being the syscall number. They are traced using the |
| 1066 | simple command: | ||
| 1063 | TR SVC <Optional value or range> | 1067 | TR SVC <Optional value or range> |
| 1064 | the syscalls are defined in linux/arch/s390/include/asm/unistd.h | 1068 | the syscalls are defined in linux/arch/s390/include/asm/unistd.h |
| 1065 | e.g. to trace all file opens just do | 1069 | e.g. to trace all file opens just do |
| @@ -1070,12 +1074,12 @@ SMP Specific commands | |||
| 1070 | --------------------- | 1074 | --------------------- |
| 1071 | To find out how many cpus you have | 1075 | To find out how many cpus you have |
| 1072 | Q CPUS displays all the CPU's available to your virtual machine | 1076 | Q CPUS displays all the CPU's available to your virtual machine |
| 1073 | To find the cpu that the current cpu VM debugger commands are being directed at do | 1077 | To find the cpu that the current cpu VM debugger commands are being directed at |
| 1074 | Q CPU to change the current cpu VM debugger commands are being directed at do | 1078 | do Q CPU to change the current cpu VM debugger commands are being directed at do |
| 1075 | CPU <desired cpu no> | 1079 | CPU <desired cpu no> |
| 1076 | 1080 | ||
| 1077 | On a SMP guest issue a command to all CPUs try prefixing the command with cpu all. | 1081 | On a SMP guest issue a command to all CPUs try prefixing the command with cpu |
| 1078 | To issue a command to a particular cpu try cpu <cpu number> e.g. | 1082 | all. To issue a command to a particular cpu try cpu <cpu number> e.g. |
| 1079 | CPU 01 TR I R 2000.3000 | 1083 | CPU 01 TR I R 2000.3000 |
| 1080 | If you are running on a guest with several cpus & you have a IO related problem | 1084 | If you are running on a guest with several cpus & you have a IO related problem |
| 1081 | & cannot follow the flow of code but you know it isn't smp related. | 1085 | & cannot follow the flow of code but you know it isn't smp related. |
| @@ -1101,10 +1105,10 @@ D TX0.100 | |||
| 1101 | 1105 | ||
| 1102 | Alternatively | 1106 | Alternatively |
| 1103 | ============= | 1107 | ============= |
| 1104 | Under older VM debuggers ( I love EBDIC too ) you can use this little program I wrote which | 1108 | Under older VM debuggers (I love EBDIC too) you can use following little |
| 1105 | will convert a command line of hex digits to ascii text which can be compiled under linux & | 1109 | program which converts a command line of hex digits to ascii text. It can be |
| 1106 | you can copy the hex digits from your x3270 terminal to your xterm if you are debugging | 1110 | compiled under linux and you can copy the hex digits from your x3270 terminal |
| 1107 | from a linuxbox. | 1111 | to your xterm if you are debugging from a linuxbox. |
| 1108 | 1112 | ||
| 1109 | This is quite useful when looking at a parameter passed in as a text string | 1113 | This is quite useful when looking at a parameter passed in as a text string |
| 1110 | under VM ( unless you are good at decoding ASCII in your head ). | 1114 | under VM ( unless you are good at decoding ASCII in your head ). |
| @@ -1114,14 +1118,14 @@ TR SVC 5 | |||
| 1114 | We have stopped at a breakpoint | 1118 | We have stopped at a breakpoint |
| 1115 | 000151B0' SVC 0A05 -> 0001909A' CC 0 | 1119 | 000151B0' SVC 0A05 -> 0001909A' CC 0 |
| 1116 | 1120 | ||
| 1117 | D 20.8 to check the SVC old psw in the prefix area & see was it from userspace | 1121 | D 20.8 to check the SVC old psw in the prefix area and see was it from userspace |
| 1118 | ( for the layout of the prefix area consult P18 of the s/390 390 Reference Summary | 1122 | (for the layout of the prefix area consult the "Fixed Storage Locations" |
| 1119 | if you have it available ). | 1123 | chapter of the s/390 Reference Summary if you have it available). |
| 1120 | V00000020 070C2000 800151B2 | 1124 | V00000020 070C2000 800151B2 |
| 1121 | The problem state bit wasn't set & it's also too early in the boot sequence | 1125 | The problem state bit wasn't set & it's also too early in the boot sequence |
| 1122 | for it to be a userspace SVC if it was we would have to temporarily switch the | 1126 | for it to be a userspace SVC if it was we would have to temporarily switch the |
| 1123 | psw to user space addressing so we could get at the first parameter of the open in | 1127 | psw to user space addressing so we could get at the first parameter of the open |
| 1124 | gpr2. | 1128 | in gpr2. |
| 1125 | Next do a | 1129 | Next do a |
| 1126 | D G2 | 1130 | D G2 |
| 1127 | GPR 2 = 00014CB4 | 1131 | GPR 2 = 00014CB4 |
| @@ -1208,9 +1212,9 @@ Here are the tricks I use 9 out of 10 times it works pretty well, | |||
| 1208 | 1212 | ||
| 1209 | When your backchain reaches a dead end | 1213 | When your backchain reaches a dead end |
| 1210 | -------------------------------------- | 1214 | -------------------------------------- |
| 1211 | This can happen when an exception happens in the kernel & the kernel is entered twice | 1215 | This can happen when an exception happens in the kernel and the kernel is |
| 1212 | if you reach the NULL pointer at the end of the back chain you should be | 1216 | entered twice. If you reach the NULL pointer at the end of the back chain you |
| 1213 | able to sniff further back if you follow the following tricks. | 1217 | should be able to sniff further back if you follow the following tricks. |
| 1214 | 1) A kernel address should be easy to recognise since it is in | 1218 | 1) A kernel address should be easy to recognise since it is in |
| 1215 | primary space & the problem state bit isn't set & also | 1219 | primary space & the problem state bit isn't set & also |
| 1216 | The Hi bit of the address is set. | 1220 | The Hi bit of the address is set. |
| @@ -1260,8 +1264,8 @@ V000FFFD0 00010400 80010802 8001085A 000FFFA0 | |||
| 1260 | 1264 | ||
| 1261 | our 3rd return address is 8001085A | 1265 | our 3rd return address is 8001085A |
| 1262 | 1266 | ||
| 1263 | as the 04B52002 looks suspiciously like rubbish it is fair to assume that the kernel entry routines | 1267 | as the 04B52002 looks suspiciously like rubbish it is fair to assume that the |
| 1264 | for the sake of optimisation don't set up a backchain. | 1268 | kernel entry routines for the sake of optimisation don't set up a backchain. |
| 1265 | 1269 | ||
| 1266 | now look at System.map to see if the addresses make any sense. | 1270 | now look at System.map to see if the addresses make any sense. |
| 1267 | 1271 | ||
| @@ -1289,67 +1293,75 @@ Congrats you've done your first backchain. | |||
| 1289 | s/390 & z/Architecture IO Overview | 1293 | s/390 & z/Architecture IO Overview |
| 1290 | ================================== | 1294 | ================================== |
| 1291 | 1295 | ||
| 1292 | I am not going to give a course in 390 IO architecture as this would take me quite a | 1296 | I am not going to give a course in 390 IO architecture as this would take me |
| 1293 | while & I'm no expert. Instead I'll give a 390 IO architecture summary for Dummies if you have | 1297 | quite a while and I'm no expert. Instead I'll give a 390 IO architecture |
| 1294 | the s/390 principles of operation available read this instead. If nothing else you may find a few | 1298 | summary for Dummies. If you have the s/390 principles of operation available |
| 1295 | useful keywords in here & be able to use them on a web search engine like altavista to find | 1299 | read this instead. If nothing else you may find a few useful keywords in here |
| 1296 | more useful information. | 1300 | and be able to use them on a web search engine to find more useful information. |
| 1297 | 1301 | ||
| 1298 | Unlike other bus architectures modern 390 systems do their IO using mostly | 1302 | Unlike other bus architectures modern 390 systems do their IO using mostly |
| 1299 | fibre optics & devices such as tapes & disks can be shared between several mainframes, | 1303 | fibre optics and devices such as tapes and disks can be shared between several |
| 1300 | also S390 can support up to 65536 devices while a high end PC based system might be choking | 1304 | mainframes. Also S390 can support up to 65536 devices while a high end PC based |
| 1301 | with around 64. Here is some of the common IO terminology | 1305 | system might be choking with around 64. |
| 1302 | 1306 | ||
| 1303 | Subchannel: | 1307 | Here is some of the common IO terminology: |
| 1304 | This is the logical number most IO commands use to talk to an IO device there can be up to | ||
| 1305 | 0x10000 (65536) of these in a configuration typically there is a few hundred. Under VM | ||
| 1306 | for simplicity they are allocated contiguously, however on the native hardware they are not | ||
| 1307 | they typically stay consistent between boots provided no new hardware is inserted or removed. | ||
| 1308 | Under Linux for 390 we use these as IRQ's & also when issuing an IO command (CLEAR SUBCHANNEL, | ||
| 1309 | HALT SUBCHANNEL,MODIFY SUBCHANNEL,RESUME SUBCHANNEL,START SUBCHANNEL,STORE SUBCHANNEL & | ||
| 1310 | TEST SUBCHANNEL ) we use this as the ID of the device we wish to talk to, the most | ||
| 1311 | important of these instructions are START SUBCHANNEL ( to start IO ), TEST SUBCHANNEL ( to check | ||
| 1312 | whether the IO completed successfully ), & HALT SUBCHANNEL ( to kill IO ), a subchannel | ||
| 1313 | can have up to 8 channel paths to a device this offers redundancy if one is not available. | ||
| 1314 | 1308 | ||
| 1309 | Subchannel: | ||
| 1310 | This is the logical number most IO commands use to talk to an IO device. There | ||
| 1311 | can be up to 0x10000 (65536) of these in a configuration, typically there are a | ||
| 1312 | few hundred. Under VM for simplicity they are allocated contiguously, however | ||
| 1313 | on the native hardware they are not. They typically stay consistent between | ||
| 1314 | boots provided no new hardware is inserted or removed. | ||
| 1315 | Under Linux for s390 we use these as IRQ's and also when issuing an IO command | ||
| 1316 | (CLEAR SUBCHANNEL, HALT SUBCHANNEL, MODIFY SUBCHANNEL, RESUME SUBCHANNEL, | ||
| 1317 | START SUBCHANNEL, STORE SUBCHANNEL and TEST SUBCHANNEL). We use this as the ID | ||
| 1318 | of the device we wish to talk to. The most important of these instructions are | ||
| 1319 | START SUBCHANNEL (to start IO), TEST SUBCHANNEL (to check whether the IO | ||
| 1320 | completed successfully) and HALT SUBCHANNEL (to kill IO). A subchannel can have | ||
| 1321 | up to 8 channel paths to a device, this offers redundancy if one is not | ||
| 1322 | available. | ||
| 1315 | 1323 | ||
| 1316 | Device Number: | 1324 | Device Number: |
| 1317 | This number remains static & Is closely tied to the hardware, there are 65536 of these | 1325 | This number remains static and is closely tied to the hardware. There are 65536 |
| 1318 | also they are made up of a CHPID ( Channel Path ID, the most significant 8 bits ) | 1326 | of these, made up of a CHPID (Channel Path ID, the most significant 8 bits) and |
| 1319 | & another lsb 8 bits. These remain static even if more devices are inserted or removed | 1327 | another lsb 8 bits. These remain static even if more devices are inserted or |
| 1320 | from the hardware, there is a 1 to 1 mapping between Subchannels & Device Numbers provided | 1328 | removed from the hardware. There is a 1 to 1 mapping between subchannels and |
| 1321 | devices aren't inserted or removed. | 1329 | device numbers, provided devices aren't inserted or removed. |
| 1322 | 1330 | ||
| 1323 | Channel Control Words: | 1331 | Channel Control Words: |
| 1324 | CCWS are linked lists of instructions initially pointed to by an operation request block (ORB), | 1332 | CCWs are linked lists of instructions initially pointed to by an operation |
| 1325 | which is initially given to Start Subchannel (SSCH) command along with the subchannel number | 1333 | request block (ORB), which is initially given to Start Subchannel (SSCH) |
| 1326 | for the IO subsystem to process while the CPU continues executing normal code. | 1334 | command along with the subchannel number for the IO subsystem to process |
| 1327 | These come in two flavours, Format 0 ( 24 bit for backward ) | 1335 | while the CPU continues executing normal code. |
| 1328 | compatibility & Format 1 ( 31 bit ). These are typically used to issue read & write | 1336 | CCWs come in two flavours, Format 0 (24 bit for backward compatibility) and |
| 1329 | ( & many other instructions ) they consist of a length field & an absolute address field. | 1337 | Format 1 (31 bit). These are typically used to issue read and write (and many |
| 1330 | For each IO typically get 1 or 2 interrupts one for channel end ( primary status ) when the | 1338 | other) instructions. They consist of a length field and an absolute address |
| 1331 | channel is idle & the second for device end ( secondary status ) sometimes you get both | 1339 | field. |
| 1332 | concurrently, you check how the IO went on by issuing a TEST SUBCHANNEL at each interrupt, | 1340 | Each IO typically gets 1 or 2 interrupts, one for channel end (primary status) |
| 1333 | from which you receive an Interruption response block (IRB). If you get channel & device end | 1341 | when the channel is idle, and the second for device end (secondary status). |
| 1334 | status in the IRB without channel checks etc. your IO probably went okay. If you didn't you | 1342 | Sometimes you get both concurrently. You check how the IO went on by issuing a |
| 1335 | probably need a doctor to examine the IRB & extended status word etc. | 1343 | TEST SUBCHANNEL at each interrupt, from which you receive an Interruption |
| 1344 | response block (IRB). If you get channel and device end status in the IRB | ||
| 1345 | without channel checks etc. your IO probably went okay. If you didn't you | ||
| 1346 | probably need to examine the IRB, extended status word etc. | ||
| 1336 | If an error occurs, more sophisticated control units have a facility known as | 1347 | If an error occurs, more sophisticated control units have a facility known as |
| 1337 | concurrent sense this means that if an error occurs Extended sense information will | 1348 | concurrent sense. This means that if an error occurs Extended sense information |
| 1338 | be presented in the Extended status word in the IRB if not you have to issue a | 1349 | will be presented in the Extended status word in the IRB. If not you have to |
| 1339 | subsequent SENSE CCW command after the test subchannel. | 1350 | issue a subsequent SENSE CCW command after the test subchannel. |
| 1340 | 1351 | ||
| 1341 | 1352 | ||
| 1342 | TPI( Test pending interrupt) can also be used for polled IO but in multitasking multiprocessor | 1353 | TPI (Test pending interrupt) can also be used for polled IO, but in |
| 1343 | systems it isn't recommended except for checking special cases ( i.e. non looping checks for | 1354 | multitasking multiprocessor systems it isn't recommended except for |
| 1344 | pending IO etc. ). | 1355 | checking special cases (i.e. non looping checks for pending IO etc.). |
| 1345 | 1356 | ||
| 1346 | Store Subchannel & Modify Subchannel can be used to examine & modify operating characteristics | 1357 | Store Subchannel and Modify Subchannel can be used to examine and modify |
| 1347 | of a subchannel ( e.g. channel paths ). | 1358 | operating characteristics of a subchannel (e.g. channel paths). |
| 1348 | 1359 | ||
| 1349 | Other IO related Terms: | 1360 | Other IO related Terms: |
| 1350 | Sysplex: S390's Clustering Technology | 1361 | Sysplex: S390's Clustering Technology |
| 1351 | QDIO: S390's new high speed IO architecture to support devices such as gigabit ethernet, | 1362 | QDIO: S390's new high speed IO architecture to support devices such as gigabit |
| 1352 | this architecture is also designed to be forward compatible with up & coming 64 bit machines. | 1363 | ethernet, this architecture is also designed to be forward compatible with |
| 1364 | upcoming 64 bit machines. | ||
| 1353 | 1365 | ||
| 1354 | 1366 | ||
| 1355 | General Concepts | 1367 | General Concepts |
| @@ -1406,37 +1418,40 @@ sometimes called Bus-and Tag & sometimes Original Equipment Manufacturers | |||
| 1406 | Interface (OEMI). | 1418 | Interface (OEMI). |
| 1407 | 1419 | ||
| 1408 | This byte wide Parallel channel path/bus has parity & data on the "Bus" cable | 1420 | This byte wide Parallel channel path/bus has parity & data on the "Bus" cable |
| 1409 | & control lines on the "Tag" cable. These can operate in byte multiplex mode for | 1421 | and control lines on the "Tag" cable. These can operate in byte multiplex mode |
| 1410 | sharing between several slow devices or burst mode & monopolize the channel for the | 1422 | for sharing between several slow devices or burst mode and monopolize the |
| 1411 | whole burst. Up to 256 devices can be addressed on one of these cables. These cables are | 1423 | channel for the whole burst. Up to 256 devices can be addressed on one of these |
| 1412 | about one inch in diameter. The maximum unextended length supported by these cables is | 1424 | cables. These cables are about one inch in diameter. The maximum unextended |
| 1413 | 125 Meters but this can be extended up to 2km with a fibre optic channel extended | 1425 | length supported by these cables is 125 Meters but this can be extended up to |
| 1414 | such as a 3044. The maximum burst speed supported is 4.5 megabytes per second however | 1426 | 2km with a fibre optic channel extended such as a 3044. The maximum burst speed |
| 1415 | some really old processors support only transfer rates of 3.0, 2.0 & 1.0 MB/sec. | 1427 | supported is 4.5 megabytes per second. However, some really old processors |
| 1428 | support only transfer rates of 3.0, 2.0 & 1.0 MB/sec. | ||
| 1416 | One of these paths can be daisy chained to up to 8 control units. | 1429 | One of these paths can be daisy chained to up to 8 control units. |
| 1417 | 1430 | ||
| 1418 | 1431 | ||
| 1419 | ESCON if fibre optic it is also called FICON | 1432 | ESCON if fibre optic it is also called FICON |
| 1420 | Was introduced by IBM in 1990. Has 2 fibre optic cables & uses either leds or lasers | 1433 | Was introduced by IBM in 1990. Has 2 fibre optic cables and uses either leds or |
| 1421 | for communication at a signaling rate of up to 200 megabits/sec. As 10bits are transferred | 1434 | lasers for communication at a signaling rate of up to 200 megabits/sec. As |
| 1422 | for every 8 bits info this drops to 160 megabits/sec & to 18.6 Megabytes/sec once | 1435 | 10bits are transferred for every 8 bits info this drops to 160 megabits/sec |
| 1423 | control info & CRC are added. ESCON only operates in burst mode. | 1436 | and to 18.6 Megabytes/sec once control info and CRC are added. ESCON only |
| 1437 | operates in burst mode. | ||
| 1424 | 1438 | ||
| 1425 | ESCONs typical max cable length is 3km for the led version & 20km for the laser version | 1439 | ESCONs typical max cable length is 3km for the led version and 20km for the |
| 1426 | known as XDF ( extended distance facility ). This can be further extended by using an | 1440 | laser version known as XDF (extended distance facility). This can be further |
| 1427 | ESCON director which triples the above mentioned ranges. Unlike Bus & Tag as ESCON is | 1441 | extended by using an ESCON director which triples the above mentioned ranges. |
| 1428 | serial it uses a packet switching architecture the standard Bus & Tag control protocol | 1442 | Unlike Bus & Tag as ESCON is serial it uses a packet switching architecture, |
| 1429 | is however present within the packets. Up to 256 devices can be attached to each control | 1443 | the standard Bus & Tag control protocol is however present within the packets. |
| 1430 | unit that uses one of these interfaces. | 1444 | Up to 256 devices can be attached to each control unit that uses one of these |
| 1445 | interfaces. | ||
| 1431 | 1446 | ||
| 1432 | Common 390 Devices include: | 1447 | Common 390 Devices include: |
| 1433 | Network adapters typically OSA2,3172's,2116's & OSA-E gigabit ethernet adapters, | 1448 | Network adapters typically OSA2,3172's,2116's & OSA-E gigabit ethernet adapters, |
| 1434 | Consoles 3270 & 3215 ( a teletype emulated under linux for a line mode console ). | 1449 | Consoles 3270 & 3215 (a teletype emulated under linux for a line mode console). |
| 1435 | DASD's direct access storage devices ( otherwise known as hard disks ). | 1450 | DASD's direct access storage devices ( otherwise known as hard disks ). |
| 1436 | Tape Drives. | 1451 | Tape Drives. |
| 1437 | CTC ( Channel to Channel Adapters ), | 1452 | CTC ( Channel to Channel Adapters ), |
| 1438 | ESCON or Parallel Cables used as a very high speed serial link | 1453 | ESCON or Parallel Cables used as a very high speed serial link |
| 1439 | between 2 machines. We use 2 cables under linux to do a bi-directional serial link. | 1454 | between 2 machines. |
| 1440 | 1455 | ||
| 1441 | 1456 | ||
| 1442 | Debugging IO on s/390 & z/Architecture under VM | 1457 | Debugging IO on s/390 & z/Architecture under VM |
| @@ -1475,9 +1490,9 @@ or the halt subchannels | |||
| 1475 | or TR HSCH 7C08-7C09 | 1490 | or TR HSCH 7C08-7C09 |
| 1476 | MSCH's ,STSCH's I think you can guess the rest | 1491 | MSCH's ,STSCH's I think you can guess the rest |
| 1477 | 1492 | ||
| 1478 | Ingo's favourite trick is tracing all the IO's & CCWS & spooling them into the reader of another | 1493 | A good trick is tracing all the IO's and CCWS and spooling them into the reader |
| 1479 | VM guest so he can ftp the logfile back to his own machine.I'll do a small bit of this & give you | 1494 | of another VM guest so he can ftp the logfile back to his own machine. I'll do |
| 1480 | a look at the output. | 1495 | a small bit of this and give you a look at the output. |
| 1481 | 1496 | ||
| 1482 | 1) Spool stdout to VM reader | 1497 | 1) Spool stdout to VM reader |
| 1483 | SP PRT TO (another vm guest ) or * for the local vm guest | 1498 | SP PRT TO (another vm guest ) or * for the local vm guest |
| @@ -1593,8 +1608,8 @@ undisplay : undo's display's | |||
| 1593 | 1608 | ||
| 1594 | info breakpoints: shows all current breakpoints | 1609 | info breakpoints: shows all current breakpoints |
| 1595 | 1610 | ||
| 1596 | info stack: shows stack back trace ( if this doesn't work too well, I'll show you the | 1611 | info stack: shows stack back trace (if this doesn't work too well, I'll show |
| 1597 | stacktrace by hand below ). | 1612 | you the stacktrace by hand below). |
| 1598 | 1613 | ||
| 1599 | info locals: displays local variables. | 1614 | info locals: displays local variables. |
| 1600 | 1615 | ||
| @@ -1619,7 +1634,8 @@ next: like step except this will not step into subroutines | |||
| 1619 | stepi: steps a single machine code instruction. | 1634 | stepi: steps a single machine code instruction. |
| 1620 | e.g. stepi 100 | 1635 | e.g. stepi 100 |
| 1621 | 1636 | ||
| 1622 | nexti: steps a single machine code instruction but will not step into subroutines. | 1637 | nexti: steps a single machine code instruction but will not step into |
| 1638 | subroutines. | ||
| 1623 | 1639 | ||
| 1624 | finish: will run until exit of the current routine | 1640 | finish: will run until exit of the current routine |
| 1625 | 1641 | ||
| @@ -1721,7 +1737,8 @@ e.g. | |||
| 1721 | outputs: | 1737 | outputs: |
| 1722 | $1 = 11 | 1738 | $1 = 11 |
| 1723 | 1739 | ||
| 1724 | You might now be thinking that the line above didn't work, something extra had to be done. | 1740 | You might now be thinking that the line above didn't work, something extra had |
| 1741 | to be done. | ||
| 1725 | (gdb) call fflush(stdout) | 1742 | (gdb) call fflush(stdout) |
| 1726 | hello world$2 = 0 | 1743 | hello world$2 = 0 |
| 1727 | As an aside the debugger also calls malloc & free under the hood | 1744 | As an aside the debugger also calls malloc & free under the hood |
| @@ -1804,26 +1821,17 @@ man gdb or info gdb. | |||
| 1804 | core dumps | 1821 | core dumps |
| 1805 | ---------- | 1822 | ---------- |
| 1806 | What a core dump ?, | 1823 | What a core dump ?, |
| 1807 | A core dump is a file generated by the kernel ( if allowed ) which contains the registers, | 1824 | A core dump is a file generated by the kernel (if allowed) which contains the |
| 1808 | & all active pages of the program which has crashed. | 1825 | registers and all active pages of the program which has crashed. |
| 1809 | From this file gdb will allow you to look at the registers & stack trace & memory of the | 1826 | From this file gdb will allow you to look at the registers, stack trace and |
| 1810 | program as if it just crashed on your system, it is usually called core & created in the | 1827 | memory of the program as if it just crashed on your system. It is usually |
| 1811 | current working directory. | 1828 | called core and created in the current working directory. |
| 1812 | This is very useful in that a customer can mail a core dump to a technical support department | 1829 | This is very useful in that a customer can mail a core dump to a technical |
| 1813 | & the technical support department can reconstruct what happened. | 1830 | support department and the technical support department can reconstruct what |
| 1814 | Provided they have an identical copy of this program with debugging symbols compiled in & | 1831 | happened. Provided they have an identical copy of this program with debugging |
| 1815 | the source base of this build is available. | 1832 | symbols compiled in and the source base of this build is available. |
| 1816 | In short it is far more useful than something like a crash log could ever hope to be. | 1833 | In short it is far more useful than something like a crash log could ever hope |
| 1817 | 1834 | to be. | |
| 1818 | In theory all that is missing to restart a core dumped program is a kernel patch which | ||
| 1819 | will do the following. | ||
| 1820 | 1) Make a new kernel task structure | ||
| 1821 | 2) Reload all the dumped pages back into the kernel's memory management structures. | ||
| 1822 | 3) Do the required clock fixups | ||
| 1823 | 4) Get all files & network connections for the process back into an identical state ( really difficult ). | ||
| 1824 | 5) A few more difficult things I haven't thought of. | ||
| 1825 | |||
| 1826 | |||
| 1827 | 1835 | ||
| 1828 | Why have I never seen one ?. | 1836 | Why have I never seen one ?. |
| 1829 | Probably because you haven't used the command | 1837 | Probably because you haven't used the command |
| @@ -1868,7 +1876,7 @@ Breakpoint 2 at 0x4d87a4: file top.c, line 2609. | |||
| 1868 | #3 0x5167e6 in readline_internal_char () at readline.c:454 | 1876 | #3 0x5167e6 in readline_internal_char () at readline.c:454 |
| 1869 | #4 0x5168ee in readline_internal_charloop () at readline.c:507 | 1877 | #4 0x5168ee in readline_internal_charloop () at readline.c:507 |
| 1870 | #5 0x51692c in readline_internal () at readline.c:521 | 1878 | #5 0x51692c in readline_internal () at readline.c:521 |
| 1871 | #6 0x5164fe in readline (prompt=0x7ffff810 "\177ÿøx\177ÿ÷Ø\177ÿøxÀ") | 1879 | #6 0x5164fe in readline (prompt=0x7ffff810) |
| 1872 | at readline.c:349 | 1880 | at readline.c:349 |
| 1873 | #7 0x4d7a8a in command_line_input (prompt=0x564420 "(gdb) ", repeat=1, | 1881 | #7 0x4d7a8a in command_line_input (prompt=0x564420 "(gdb) ", repeat=1, |
| 1874 | annotation_suffix=0x4d6b44 "prompt") at top.c:2091 | 1882 | annotation_suffix=0x4d6b44 "prompt") at top.c:2091 |
| @@ -1929,8 +1937,8 @@ cat /proc/sys/net/ipv4/ip_forward | |||
| 1929 | On my machine now outputs | 1937 | On my machine now outputs |
| 1930 | 1 | 1938 | 1 |
| 1931 | IP forwarding is on. | 1939 | IP forwarding is on. |
| 1932 | There is a lot of useful info in here best found by going in & having a look around, | 1940 | There is a lot of useful info in here best found by going in and having a look |
| 1933 | so I'll take you through some entries I consider important. | 1941 | around, so I'll take you through some entries I consider important. |
| 1934 | 1942 | ||
| 1935 | All the processes running on the machine have their own entry defined by | 1943 | All the processes running on the machine have their own entry defined by |
| 1936 | /proc/<pid> | 1944 | /proc/<pid> |
| @@ -2060,7 +2068,8 @@ if the device doesn't say up | |||
| 2060 | try | 2068 | try |
| 2061 | /etc/rc.d/init.d/network start | 2069 | /etc/rc.d/init.d/network start |
| 2062 | ( this starts the network stack & hopefully calls ifconfig tr0 up ). | 2070 | ( this starts the network stack & hopefully calls ifconfig tr0 up ). |
| 2063 | ifconfig looks at the output of /proc/net/dev & presents it in a more presentable form | 2071 | ifconfig looks at the output of /proc/net/dev and presents it in a more |
| 2072 | presentable form. | ||
| 2064 | Now ping the device from a machine in the same subnet. | 2073 | Now ping the device from a machine in the same subnet. |
| 2065 | if the RX packets count & TX packets counts don't increment you probably | 2074 | if the RX packets count & TX packets counts don't increment you probably |
| 2066 | have problems. | 2075 | have problems. |
| @@ -2086,34 +2095,6 @@ of the device. | |||
| 2086 | See the manpage chandev.8 &type cat /proc/chandev for more info. | 2095 | See the manpage chandev.8 &type cat /proc/chandev for more info. |
| 2087 | 2096 | ||
| 2088 | 2097 | ||
| 2089 | |||
| 2090 | Starting points for debugging scripting languages etc. | ||
| 2091 | ====================================================== | ||
| 2092 | |||
| 2093 | bash/sh | ||
| 2094 | |||
| 2095 | bash -x <scriptname> | ||
| 2096 | e.g. bash -x /usr/bin/bashbug | ||
| 2097 | displays the following lines as it executes them. | ||
| 2098 | + MACHINE=i586 | ||
| 2099 | + OS=linux-gnu | ||
| 2100 | + CC=gcc | ||
| 2101 | + CFLAGS= -DPROGRAM='bash' -DHOSTTYPE='i586' -DOSTYPE='linux-gnu' -DMACHTYPE='i586-pc-linux-gnu' -DSHELL -DHAVE_CONFIG_H -I. -I. -I./lib -O2 -pipe | ||
| 2102 | + RELEASE=2.01 | ||
| 2103 | + PATCHLEVEL=1 | ||
| 2104 | + RELSTATUS=release | ||
| 2105 | + MACHTYPE=i586-pc-linux-gnu | ||
| 2106 | |||
| 2107 | perl -d <scriptname> runs the perlscript in a fully interactive debugger | ||
| 2108 | <like gdb>. | ||
| 2109 | Type 'h' in the debugger for help. | ||
| 2110 | |||
| 2111 | for debugging java type | ||
| 2112 | jdb <filename> another fully interactive gdb style debugger. | ||
| 2113 | & type ? in the debugger for help. | ||
| 2114 | |||
| 2115 | |||
| 2116 | |||
| 2117 | SysRq | 2098 | SysRq |
| 2118 | ===== | 2099 | ===== |
| 2119 | This is now supported by linux for s/390 & z/Architecture. | 2100 | This is now supported by linux for s/390 & z/Architecture. |
diff --git a/Documentation/scheduler/completion.txt b/Documentation/scheduler/completion.txt new file mode 100644 index 000000000000..f77651eca31e --- /dev/null +++ b/Documentation/scheduler/completion.txt | |||
| @@ -0,0 +1,236 @@ | |||
| 1 | completions - wait for completion handling | ||
| 2 | ========================================== | ||
| 3 | |||
| 4 | This document was originally written based on 3.18.0 (linux-next) | ||
| 5 | |||
| 6 | Introduction: | ||
| 7 | ------------- | ||
| 8 | |||
| 9 | If you have one or more threads of execution that must wait for some process | ||
| 10 | to have reached a point or a specific state, completions can provide a race | ||
| 11 | free solution to this problem. Semantically they are somewhat like a | ||
| 12 | pthread_barriers and have similar use-cases. | ||
| 13 | |||
| 14 | Completions are a code synchronization mechanism that is preferable to any | ||
| 15 | misuse of locks. Any time you think of using yield() or some quirky | ||
| 16 | msleep(1); loop to allow something else to proceed, you probably want to | ||
| 17 | look into using one of the wait_for_completion*() calls instead. The | ||
| 18 | advantage of using completions is clear intent of the code but also more | ||
| 19 | efficient code as both threads can continue until the result is actually | ||
| 20 | needed. | ||
| 21 | |||
| 22 | Completions are built on top of the generic event infrastructure in Linux, | ||
| 23 | with the event reduced to a simple flag appropriately called "done" in | ||
| 24 | struct completion, that tells the waiting threads of execution if they | ||
| 25 | can continue safely. | ||
| 26 | |||
| 27 | As completions are scheduling related the code is found in | ||
| 28 | kernel/sched/completion.c - for details on completion design and | ||
| 29 | implementation see completions-design.txt | ||
| 30 | |||
| 31 | |||
| 32 | Usage: | ||
| 33 | ------ | ||
| 34 | |||
| 35 | There are three parts to the using completions, the initialization of the | ||
| 36 | struct completion, the waiting part through a call to one of the variants of | ||
| 37 | wait_for_completion() and the signaling side through a call to complete(), | ||
| 38 | or complete_all(). Further there are some helper functions for checking the | ||
| 39 | state of completions. | ||
| 40 | |||
| 41 | To use completions one needs to include <linux/completion.h> and | ||
| 42 | create a variable of type struct completion. The structure used for | ||
| 43 | handling of completions is: | ||
| 44 | |||
| 45 | struct completion { | ||
| 46 | unsigned int done; | ||
| 47 | wait_queue_head_t wait; | ||
| 48 | }; | ||
| 49 | |||
| 50 | providing the wait queue to place tasks on for waiting and the flag for | ||
| 51 | indicating the state of affairs. | ||
| 52 | |||
| 53 | Completions should be named to convey the intent of the waiter. A good | ||
| 54 | example is: | ||
| 55 | |||
| 56 | wait_for_completion(&early_console_added); | ||
| 57 | |||
| 58 | complete(&early_console_added); | ||
| 59 | |||
| 60 | Good naming (as always) helps code readability. | ||
| 61 | |||
| 62 | |||
| 63 | Initializing completions: | ||
| 64 | ------------------------- | ||
| 65 | |||
| 66 | Initialization of dynamically allocated completions, often embedded in | ||
| 67 | other structures, is done with: | ||
| 68 | |||
| 69 | void init_completion(&done); | ||
| 70 | |||
| 71 | Initialization is accomplished by initializing the wait queue and setting | ||
| 72 | the default state to "not available", that is, "done" is set to 0. | ||
| 73 | |||
| 74 | The re-initialization function, reinit_completion(), simply resets the | ||
| 75 | done element to "not available", thus again to 0, without touching the | ||
| 76 | wait queue. Calling init_completion() on the same completions object is | ||
| 77 | most likely a bug as it re-initializes the queue to an empty queue and | ||
| 78 | enqueued tasks could get "lost" - use reinit_completion() in that case. | ||
| 79 | |||
| 80 | For static declaration and initialization, macros are available. These are: | ||
| 81 | |||
| 82 | static DECLARE_COMPLETION(setup_done) | ||
| 83 | |||
| 84 | used for static declarations in file scope. Within functions the static | ||
| 85 | initialization should always use: | ||
| 86 | |||
| 87 | DECLARE_COMPLETION_ONSTACK(setup_done) | ||
| 88 | |||
| 89 | suitable for automatic/local variables on the stack and will make lockdep | ||
| 90 | happy. Note also that one needs to making *sure* the completion passt to | ||
| 91 | work threads remains in-scope, and no references remain to on-stack data | ||
| 92 | when the initiating function returns. | ||
| 93 | |||
| 94 | |||
| 95 | Waiting for completions: | ||
| 96 | ------------------------ | ||
| 97 | |||
| 98 | For a thread of execution to wait for some concurrent work to finish, it | ||
| 99 | calls wait_for_completion() on the initialized completion structure. | ||
| 100 | A typical usage scenario is: | ||
| 101 | |||
| 102 | structure completion setup_done; | ||
| 103 | init_completion(&setup_done); | ||
| 104 | initialze_work(...,&setup_done,...) | ||
| 105 | |||
| 106 | /* run non-dependent code */ /* do setup */ | ||
| 107 | |||
| 108 | wait_for_completion(&seupt_done); complete(setup_done) | ||
| 109 | |||
| 110 | This is not implying any temporal order of wait_for_completion() and the | ||
| 111 | call to complete() - if the call to complete() happened before the call | ||
| 112 | to wait_for_completion() then the waiting side simply will continue | ||
| 113 | immediately as all dependencies are satisfied. | ||
| 114 | |||
| 115 | Note that wait_for_completion() is calling spin_lock_irq/spin_unlock_irq | ||
| 116 | so it can only be called safely when you know that interrupts are enabled. | ||
| 117 | Calling it from hard-irq context will result in hard to detect spurious | ||
| 118 | enabling of interrupts. | ||
| 119 | |||
| 120 | wait_for_completion(): | ||
| 121 | |||
| 122 | void wait_for_completion(struct completion *done): | ||
| 123 | |||
| 124 | The default behavior is to wait without a timeout and mark the task as | ||
| 125 | uninterruptible. wait_for_completion() and its variants are only safe | ||
| 126 | in soft-interrupt or process context but not in hard-irq context. | ||
| 127 | As all variants of wait_for_completion() can (obviously) block for a long | ||
| 128 | time, you probably don't want to call this with held locks - see also | ||
| 129 | try_wait_for_completion() below. | ||
| 130 | |||
| 131 | |||
| 132 | Variants available: | ||
| 133 | ------------------- | ||
| 134 | |||
| 135 | The below variants all return status and this status should be checked in | ||
| 136 | most(/all) cases - in cases where the status is deliberately not checked you | ||
| 137 | probably want to make a note explaining this (e.g. see | ||
| 138 | arch/arm/kernel/smp.c:__cpu_up()). | ||
| 139 | |||
| 140 | A common problem that occurs is to have unclean assignment of return types, | ||
| 141 | so care should be taken with assigning return-values to variables of proper | ||
| 142 | type. Checking for the specific meaning of return values also has been found | ||
| 143 | to be quite inaccurate e.g. constructs like | ||
| 144 | if(!wait_for_completion_interruptible_timeout(...)) would execute the same | ||
| 145 | code path for successful completion and for the interrupted case - which is | ||
| 146 | probably not what you want. | ||
| 147 | |||
| 148 | int wait_for_completion_interruptible(struct completion *done) | ||
| 149 | |||
| 150 | marking the task TASK_INTERRUPTIBLE. If a signal was received while waiting. | ||
| 151 | It will return -ERESTARTSYS and 0 otherwise. | ||
| 152 | |||
| 153 | unsigned long wait_for_completion_timeout(struct completion *done, | ||
| 154 | unsigned long timeout) | ||
| 155 | |||
| 156 | The task is marked as TASK_UNINTERRUPTIBLE and will wait at most timeout | ||
| 157 | (in jiffies). If timeout occurs it return 0 else the remaining time in | ||
| 158 | jiffies (but at least 1). Timeouts are preferably passed by msecs_to_jiffies() | ||
| 159 | or usecs_to_jiffies(). If the returned timeout value is deliberately ignored | ||
| 160 | a comment should probably explain why (e.g. see drivers/mfd/wm8350-core.c | ||
| 161 | wm8350_read_auxadc()) | ||
| 162 | |||
| 163 | long wait_for_completion_interruptible_timeout( | ||
| 164 | struct completion *done, unsigned long timeout) | ||
| 165 | |||
| 166 | passing a timeout in jiffies and marking the task as TASK_INTERRUPTIBLE. If a | ||
| 167 | signal was received it will return -ERESTARTSYS, 0 if completion timed-out and | ||
| 168 | the remaining time in jiffies if completion occurred. | ||
| 169 | |||
| 170 | Further variants include _killable which passes TASK_KILLABLE as the | ||
| 171 | designated tasks state and will return a -ERESTARTSYS if interrupted or | ||
| 172 | else 0 if completions was achieved as well as a _timeout variant. | ||
| 173 | |||
| 174 | long wait_for_completion_killable(struct completion *done) | ||
| 175 | long wait_for_completion_killable_timeout(struct completion *done, | ||
| 176 | unsigned long timeout) | ||
| 177 | |||
| 178 | The _io variants wait_for_completion_io behave the same as the non-_io | ||
| 179 | variants, except for accounting waiting time as waiting on IO, which has | ||
| 180 | an impact on how scheduling is calculated. | ||
| 181 | |||
| 182 | void wait_for_completion_io(struct completion *done) | ||
| 183 | unsigned long wait_for_completion_io_timeout(struct completion *done | ||
| 184 | unsigned long timeout) | ||
| 185 | |||
| 186 | |||
| 187 | Signaling completions: | ||
| 188 | ---------------------- | ||
| 189 | |||
| 190 | A thread of execution that wants to signal that the conditions for | ||
| 191 | continuation have been achieved calls complete() to signal exactly one | ||
| 192 | of the waiters that it can continue. | ||
| 193 | |||
| 194 | void complete(struct completion *done) | ||
| 195 | |||
| 196 | or calls complete_all to signal all current and future waiters. | ||
| 197 | |||
| 198 | void complete_all(struct completion *done) | ||
| 199 | |||
| 200 | The signaling will work as expected even if completions are signaled before | ||
| 201 | a thread starts waiting. This is achieved by the waiter "consuming" | ||
| 202 | (decrementing) the done element of struct completion. Waiting threads | ||
| 203 | wakeup order is the same in which they were enqueued (FIFO order). | ||
| 204 | |||
| 205 | If complete() is called multiple times then this will allow for that number | ||
| 206 | of waiters to continue - each call to complete() will simply increment the | ||
| 207 | done element. Calling complete_all() multiple times is a bug though. Both | ||
| 208 | complete() and complete_all() can be called in hard-irq context safely. | ||
| 209 | |||
| 210 | There only can be one thread calling complete() or complete_all() on a | ||
| 211 | particular struct completions at any time - serialized through the wait | ||
| 212 | queue spinlock. Any such concurrent calls to complete() or complete_all() | ||
| 213 | probably are a design bug. | ||
| 214 | |||
| 215 | Signaling completion from hard-irq context is fine as it will appropriately | ||
| 216 | lock with spin_lock_irqsave/spin_unlock_irqrestore. | ||
| 217 | |||
| 218 | |||
| 219 | try_wait_for_completion()/completion_done(): | ||
| 220 | -------------------------------------------- | ||
| 221 | |||
| 222 | The try_wait_for_completion will not put the thread on the wait queue but | ||
| 223 | rather returns false if it would need to enqueue (block) the thread, else it | ||
| 224 | consumes any posted completions and returns true. | ||
| 225 | |||
| 226 | bool try_wait_for_completion(struct completion *done) | ||
| 227 | |||
| 228 | Finally to check state of a completions without changing it in any way is | ||
| 229 | provided by completion_done() returning false if there are any posted | ||
| 230 | completion that was not yet consumed by waiters implying that there are | ||
| 231 | waiters and true otherwise; | ||
| 232 | |||
| 233 | bool completion_done(struct completion *done) | ||
| 234 | |||
| 235 | Both try_wait_for_completion() and completion_done() are safe to be called in | ||
| 236 | hard-irq context. | ||
diff --git a/Documentation/security/keys.txt b/Documentation/security/keys.txt index 821c936e1a63..c9e7f4f223a5 100644 --- a/Documentation/security/keys.txt +++ b/Documentation/security/keys.txt | |||
| @@ -323,8 +323,6 @@ about the status of the key service: | |||
| 323 | U Under construction by callback to userspace | 323 | U Under construction by callback to userspace |
| 324 | N Negative key | 324 | N Negative key |
| 325 | 325 | ||
| 326 | This file must be enabled at kernel configuration time as it allows anyone | ||
| 327 | to list the keys database. | ||
| 328 | 326 | ||
| 329 | (*) /proc/key-users | 327 | (*) /proc/key-users |
| 330 | 328 | ||
diff --git a/Documentation/stable_kernel_rules.txt b/Documentation/stable_kernel_rules.txt index aee73e78c7d4..02f8331edb8b 100644 --- a/Documentation/stable_kernel_rules.txt +++ b/Documentation/stable_kernel_rules.txt | |||
| @@ -32,18 +32,42 @@ Procedure for submitting patches to the -stable tree: | |||
| 32 | - If the patch covers files in net/ or drivers/net please follow netdev stable | 32 | - If the patch covers files in net/ or drivers/net please follow netdev stable |
| 33 | submission guidelines as described in | 33 | submission guidelines as described in |
| 34 | Documentation/networking/netdev-FAQ.txt | 34 | Documentation/networking/netdev-FAQ.txt |
| 35 | - Send the patch, after verifying that it follows the above rules, to | 35 | - Security patches should not be handled (solely) by the -stable review |
| 36 | stable@vger.kernel.org. You must note the upstream commit ID in the | 36 | process but should follow the procedures in Documentation/SecurityBugs. |
| 37 | changelog of your submission, as well as the kernel version you wish | 37 | |
| 38 | it to be applied to. | 38 | For all other submissions, choose one of the following procedures: |
| 39 | - To have the patch automatically included in the stable tree, add the tag | 39 | |
| 40 | --- Option 1 --- | ||
| 41 | |||
| 42 | To have the patch automatically included in the stable tree, add the tag | ||
| 40 | Cc: stable@vger.kernel.org | 43 | Cc: stable@vger.kernel.org |
| 41 | in the sign-off area. Once the patch is merged it will be applied to | 44 | in the sign-off area. Once the patch is merged it will be applied to |
| 42 | the stable tree without anything else needing to be done by the author | 45 | the stable tree without anything else needing to be done by the author |
| 43 | or subsystem maintainer. | 46 | or subsystem maintainer. |
| 44 | - If the patch requires other patches as prerequisites which can be | 47 | |
| 45 | cherry-picked, then this can be specified in the following format in | 48 | --- Option 2 --- |
| 46 | the sign-off area: | 49 | |
| 50 | After the patch has been merged to Linus' tree, send an email to | ||
| 51 | stable@vger.kernel.org containing the subject of the patch, the commit ID, | ||
| 52 | why you think it should be applied, and what kernel version you wish it to | ||
| 53 | be applied to. | ||
| 54 | |||
| 55 | --- Option 3 --- | ||
| 56 | |||
| 57 | Send the patch, after verifying that it follows the above rules, to | ||
| 58 | stable@vger.kernel.org. You must note the upstream commit ID in the | ||
| 59 | changelog of your submission, as well as the kernel version you wish | ||
| 60 | it to be applied to. | ||
| 61 | |||
| 62 | Option 1 is probably the easiest and most common. Options 2 and 3 are more | ||
| 63 | useful if the patch isn't deemed worthy at the time it is applied to a public | ||
| 64 | git tree (for instance, because it deserves more regression testing first). | ||
| 65 | Option 3 is especially useful if the patch needs some special handling to apply | ||
| 66 | to an older kernel (e.g., if API's have changed in the meantime). | ||
| 67 | |||
| 68 | Additionally, some patches submitted via Option 1 may have additional patch | ||
| 69 | prerequisites which can be cherry-picked. This can be specified in the following | ||
| 70 | format in the sign-off area: | ||
| 47 | 71 | ||
| 48 | Cc: <stable@vger.kernel.org> # 3.3.x: a1f84a3: sched: Check for idle | 72 | Cc: <stable@vger.kernel.org> # 3.3.x: a1f84a3: sched: Check for idle |
| 49 | Cc: <stable@vger.kernel.org> # 3.3.x: 1b9508f: sched: Rate-limit newidle | 73 | Cc: <stable@vger.kernel.org> # 3.3.x: 1b9508f: sched: Rate-limit newidle |
| @@ -57,13 +81,13 @@ Procedure for submitting patches to the -stable tree: | |||
| 57 | git cherry-pick fd21073 | 81 | git cherry-pick fd21073 |
| 58 | git cherry-pick <this commit> | 82 | git cherry-pick <this commit> |
| 59 | 83 | ||
| 84 | Following the submission: | ||
| 85 | |||
| 60 | - The sender will receive an ACK when the patch has been accepted into the | 86 | - The sender will receive an ACK when the patch has been accepted into the |
| 61 | queue, or a NAK if the patch is rejected. This response might take a few | 87 | queue, or a NAK if the patch is rejected. This response might take a few |
| 62 | days, according to the developer's schedules. | 88 | days, according to the developer's schedules. |
| 63 | - If accepted, the patch will be added to the -stable queue, for review by | 89 | - If accepted, the patch will be added to the -stable queue, for review by |
| 64 | other developers and by the relevant subsystem maintainer. | 90 | other developers and by the relevant subsystem maintainer. |
| 65 | - Security patches should not be sent to this alias, but instead to the | ||
| 66 | documented security@kernel.org address. | ||
| 67 | 91 | ||
| 68 | 92 | ||
| 69 | Review cycle: | 93 | Review cycle: |
diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt index 75511efefc64..83ab25660fc9 100644 --- a/Documentation/sysctl/kernel.txt +++ b/Documentation/sysctl/kernel.txt | |||
| @@ -843,6 +843,7 @@ can be ORed together: | |||
| 843 | 8192 - An unsigned module has been loaded in a kernel supporting module | 843 | 8192 - An unsigned module has been loaded in a kernel supporting module |
| 844 | signature. | 844 | signature. |
| 845 | 16384 - A soft lockup has previously occurred on the system. | 845 | 16384 - A soft lockup has previously occurred on the system. |
| 846 | 32768 - The kernel has been live patched. | ||
| 846 | 847 | ||
| 847 | ============================================================== | 848 | ============================================================== |
| 848 | 849 | ||
diff --git a/Documentation/sysctl/net.txt b/Documentation/sysctl/net.txt index 666594b43cff..6294b5186ae5 100644 --- a/Documentation/sysctl/net.txt +++ b/Documentation/sysctl/net.txt | |||
| @@ -97,6 +97,14 @@ rmem_max | |||
| 97 | 97 | ||
| 98 | The maximum receive socket buffer size in bytes. | 98 | The maximum receive socket buffer size in bytes. |
| 99 | 99 | ||
| 100 | tstamp_allow_data | ||
| 101 | ----------------- | ||
| 102 | Allow processes to receive tx timestamps looped together with the original | ||
| 103 | packet contents. If disabled, transmit timestamp requests from unprivileged | ||
| 104 | processes are dropped unless socket option SOF_TIMESTAMPING_OPT_TSONLY is set. | ||
| 105 | Default: 1 (on) | ||
| 106 | |||
| 107 | |||
| 100 | wmem_default | 108 | wmem_default |
| 101 | ------------ | 109 | ------------ |
| 102 | 110 | ||
diff --git a/Documentation/sysctl/vm.txt b/Documentation/sysctl/vm.txt index 4415aa915681..902b4574acfb 100644 --- a/Documentation/sysctl/vm.txt +++ b/Documentation/sysctl/vm.txt | |||
| @@ -555,12 +555,12 @@ this is causing problems for your system/application. | |||
| 555 | 555 | ||
| 556 | oom_dump_tasks | 556 | oom_dump_tasks |
| 557 | 557 | ||
| 558 | Enables a system-wide task dump (excluding kernel threads) to be | 558 | Enables a system-wide task dump (excluding kernel threads) to be produced |
| 559 | produced when the kernel performs an OOM-killing and includes such | 559 | when the kernel performs an OOM-killing and includes such information as |
| 560 | information as pid, uid, tgid, vm size, rss, nr_ptes, swapents, | 560 | pid, uid, tgid, vm size, rss, nr_ptes, nr_pmds, swapents, oom_score_adj |
| 561 | oom_score_adj score, and name. This is helpful to determine why the | 561 | score, and name. This is helpful to determine why the OOM killer was |
| 562 | OOM killer was invoked, to identify the rogue task that caused it, | 562 | invoked, to identify the rogue task that caused it, and to determine why |
| 563 | and to determine why the OOM killer chose the task it did to kill. | 563 | the OOM killer chose the task it did to kill. |
| 564 | 564 | ||
| 565 | If this is set to zero, this information is suppressed. On very | 565 | If this is set to zero, this information is suppressed. On very |
| 566 | large systems with thousands of tasks it may not be feasible to dump | 566 | large systems with thousands of tasks it may not be feasible to dump |
| @@ -728,7 +728,7 @@ The default value is 60. | |||
| 728 | 728 | ||
| 729 | - user_reserve_kbytes | 729 | - user_reserve_kbytes |
| 730 | 730 | ||
| 731 | When overcommit_memory is set to 2, "never overommit" mode, reserve | 731 | When overcommit_memory is set to 2, "never overcommit" mode, reserve |
| 732 | min(3% of current process size, user_reserve_kbytes) of free memory. | 732 | min(3% of current process size, user_reserve_kbytes) of free memory. |
| 733 | This is intended to prevent a user from starting a single memory hogging | 733 | This is intended to prevent a user from starting a single memory hogging |
| 734 | process, such that they cannot recover (kill the hog). | 734 | process, such that they cannot recover (kill the hog). |
diff --git a/Documentation/target/tcm_mod_builder.py b/Documentation/target/tcm_mod_builder.py index 230ce71f4d75..2b47704f75cb 100755 --- a/Documentation/target/tcm_mod_builder.py +++ b/Documentation/target/tcm_mod_builder.py | |||
| @@ -389,9 +389,6 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): | |||
| 389 | buf += " .release_cmd = " + fabric_mod_name + "_release_cmd,\n" | 389 | buf += " .release_cmd = " + fabric_mod_name + "_release_cmd,\n" |
| 390 | buf += " .shutdown_session = " + fabric_mod_name + "_shutdown_session,\n" | 390 | buf += " .shutdown_session = " + fabric_mod_name + "_shutdown_session,\n" |
| 391 | buf += " .close_session = " + fabric_mod_name + "_close_session,\n" | 391 | buf += " .close_session = " + fabric_mod_name + "_close_session,\n" |
| 392 | buf += " .stop_session = " + fabric_mod_name + "_stop_session,\n" | ||
| 393 | buf += " .fall_back_to_erl0 = " + fabric_mod_name + "_reset_nexus,\n" | ||
| 394 | buf += " .sess_logged_in = " + fabric_mod_name + "_sess_logged_in,\n" | ||
| 395 | buf += " .sess_get_index = " + fabric_mod_name + "_sess_get_index,\n" | 392 | buf += " .sess_get_index = " + fabric_mod_name + "_sess_get_index,\n" |
| 396 | buf += " .sess_get_initiator_sid = NULL,\n" | 393 | buf += " .sess_get_initiator_sid = NULL,\n" |
| 397 | buf += " .write_pending = " + fabric_mod_name + "_write_pending,\n" | 394 | buf += " .write_pending = " + fabric_mod_name + "_write_pending,\n" |
| @@ -402,7 +399,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): | |||
| 402 | buf += " .queue_data_in = " + fabric_mod_name + "_queue_data_in,\n" | 399 | buf += " .queue_data_in = " + fabric_mod_name + "_queue_data_in,\n" |
| 403 | buf += " .queue_status = " + fabric_mod_name + "_queue_status,\n" | 400 | buf += " .queue_status = " + fabric_mod_name + "_queue_status,\n" |
| 404 | buf += " .queue_tm_rsp = " + fabric_mod_name + "_queue_tm_rsp,\n" | 401 | buf += " .queue_tm_rsp = " + fabric_mod_name + "_queue_tm_rsp,\n" |
| 405 | buf += " .is_state_remove = " + fabric_mod_name + "_is_state_remove,\n" | 402 | buf += " .aborted_task = " + fabric_mod_name + "_aborted_task,\n" |
| 406 | buf += " /*\n" | 403 | buf += " /*\n" |
| 407 | buf += " * Setup function pointers for generic logic in target_core_fabric_configfs.c\n" | 404 | buf += " * Setup function pointers for generic logic in target_core_fabric_configfs.c\n" |
| 408 | buf += " */\n" | 405 | buf += " */\n" |
| @@ -428,7 +425,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): | |||
| 428 | buf += " /*\n" | 425 | buf += " /*\n" |
| 429 | buf += " * Register the top level struct config_item_type with TCM core\n" | 426 | buf += " * Register the top level struct config_item_type with TCM core\n" |
| 430 | buf += " */\n" | 427 | buf += " */\n" |
| 431 | buf += " fabric = target_fabric_configfs_init(THIS_MODULE, \"" + fabric_mod_name[4:] + "\");\n" | 428 | buf += " fabric = target_fabric_configfs_init(THIS_MODULE, \"" + fabric_mod_name + "\");\n" |
| 432 | buf += " if (IS_ERR(fabric)) {\n" | 429 | buf += " if (IS_ERR(fabric)) {\n" |
| 433 | buf += " printk(KERN_ERR \"target_fabric_configfs_init() failed\\n\");\n" | 430 | buf += " printk(KERN_ERR \"target_fabric_configfs_init() failed\\n\");\n" |
| 434 | buf += " return PTR_ERR(fabric);\n" | 431 | buf += " return PTR_ERR(fabric);\n" |
| @@ -595,7 +592,7 @@ def tcm_mod_dump_fabric_ops(proto_ident, fabric_mod_dir_var, fabric_mod_name): | |||
| 595 | if re.search('get_fabric_name', fo): | 592 | if re.search('get_fabric_name', fo): |
| 596 | buf += "char *" + fabric_mod_name + "_get_fabric_name(void)\n" | 593 | buf += "char *" + fabric_mod_name + "_get_fabric_name(void)\n" |
| 597 | buf += "{\n" | 594 | buf += "{\n" |
| 598 | buf += " return \"" + fabric_mod_name[4:] + "\";\n" | 595 | buf += " return \"" + fabric_mod_name + "\";\n" |
| 599 | buf += "}\n\n" | 596 | buf += "}\n\n" |
| 600 | bufi += "char *" + fabric_mod_name + "_get_fabric_name(void);\n" | 597 | bufi += "char *" + fabric_mod_name + "_get_fabric_name(void);\n" |
| 601 | continue | 598 | continue |
| @@ -820,27 +817,6 @@ def tcm_mod_dump_fabric_ops(proto_ident, fabric_mod_dir_var, fabric_mod_name): | |||
| 820 | buf += "}\n\n" | 817 | buf += "}\n\n" |
| 821 | bufi += "void " + fabric_mod_name + "_close_session(struct se_session *);\n" | 818 | bufi += "void " + fabric_mod_name + "_close_session(struct se_session *);\n" |
| 822 | 819 | ||
| 823 | if re.search('stop_session\)\(', fo): | ||
| 824 | buf += "void " + fabric_mod_name + "_stop_session(struct se_session *se_sess, int sess_sleep , int conn_sleep)\n" | ||
| 825 | buf += "{\n" | ||
| 826 | buf += " return;\n" | ||
| 827 | buf += "}\n\n" | ||
| 828 | bufi += "void " + fabric_mod_name + "_stop_session(struct se_session *, int, int);\n" | ||
| 829 | |||
| 830 | if re.search('fall_back_to_erl0\)\(', fo): | ||
| 831 | buf += "void " + fabric_mod_name + "_reset_nexus(struct se_session *se_sess)\n" | ||
| 832 | buf += "{\n" | ||
| 833 | buf += " return;\n" | ||
| 834 | buf += "}\n\n" | ||
| 835 | bufi += "void " + fabric_mod_name + "_reset_nexus(struct se_session *);\n" | ||
| 836 | |||
| 837 | if re.search('sess_logged_in\)\(', fo): | ||
| 838 | buf += "int " + fabric_mod_name + "_sess_logged_in(struct se_session *se_sess)\n" | ||
| 839 | buf += "{\n" | ||
| 840 | buf += " return 0;\n" | ||
| 841 | buf += "}\n\n" | ||
| 842 | bufi += "int " + fabric_mod_name + "_sess_logged_in(struct se_session *);\n" | ||
| 843 | |||
| 844 | if re.search('sess_get_index\)\(', fo): | 820 | if re.search('sess_get_index\)\(', fo): |
| 845 | buf += "u32 " + fabric_mod_name + "_sess_get_index(struct se_session *se_sess)\n" | 821 | buf += "u32 " + fabric_mod_name + "_sess_get_index(struct se_session *se_sess)\n" |
| 846 | buf += "{\n" | 822 | buf += "{\n" |
| @@ -898,19 +874,18 @@ def tcm_mod_dump_fabric_ops(proto_ident, fabric_mod_dir_var, fabric_mod_name): | |||
| 898 | bufi += "int " + fabric_mod_name + "_queue_status(struct se_cmd *);\n" | 874 | bufi += "int " + fabric_mod_name + "_queue_status(struct se_cmd *);\n" |
| 899 | 875 | ||
| 900 | if re.search('queue_tm_rsp\)\(', fo): | 876 | if re.search('queue_tm_rsp\)\(', fo): |
| 901 | buf += "int " + fabric_mod_name + "_queue_tm_rsp(struct se_cmd *se_cmd)\n" | 877 | buf += "void " + fabric_mod_name + "_queue_tm_rsp(struct se_cmd *se_cmd)\n" |
| 902 | buf += "{\n" | 878 | buf += "{\n" |
| 903 | buf += " return 0;\n" | 879 | buf += " return;\n" |
| 904 | buf += "}\n\n" | 880 | buf += "}\n\n" |
| 905 | bufi += "int " + fabric_mod_name + "_queue_tm_rsp(struct se_cmd *);\n" | 881 | bufi += "void " + fabric_mod_name + "_queue_tm_rsp(struct se_cmd *);\n" |
| 906 | 882 | ||
| 907 | if re.search('is_state_remove\)\(', fo): | 883 | if re.search('aborted_task\)\(', fo): |
| 908 | buf += "int " + fabric_mod_name + "_is_state_remove(struct se_cmd *se_cmd)\n" | 884 | buf += "void " + fabric_mod_name + "_aborted_task(struct se_cmd *se_cmd)\n" |
| 909 | buf += "{\n" | 885 | buf += "{\n" |
| 910 | buf += " return 0;\n" | 886 | buf += " return;\n" |
| 911 | buf += "}\n\n" | 887 | buf += "}\n\n" |
| 912 | bufi += "int " + fabric_mod_name + "_is_state_remove(struct se_cmd *);\n" | 888 | bufi += "void " + fabric_mod_name + "_aborted_task(struct se_cmd *);\n" |
| 913 | |||
| 914 | 889 | ||
| 915 | ret = p.write(buf) | 890 | ret = p.write(buf) |
| 916 | if ret: | 891 | if ret: |
| @@ -1018,11 +993,11 @@ def main(modname, proto_ident): | |||
| 1018 | tcm_mod_build_kbuild(fabric_mod_dir, fabric_mod_name) | 993 | tcm_mod_build_kbuild(fabric_mod_dir, fabric_mod_name) |
| 1019 | tcm_mod_build_kconfig(fabric_mod_dir, fabric_mod_name) | 994 | tcm_mod_build_kconfig(fabric_mod_dir, fabric_mod_name) |
| 1020 | 995 | ||
| 1021 | input = raw_input("Would you like to add " + fabric_mod_name + "to drivers/target/Makefile..? [yes,no]: ") | 996 | input = raw_input("Would you like to add " + fabric_mod_name + " to drivers/target/Makefile..? [yes,no]: ") |
| 1022 | if input == "yes" or input == "y": | 997 | if input == "yes" or input == "y": |
| 1023 | tcm_mod_add_kbuild(tcm_dir, fabric_mod_name) | 998 | tcm_mod_add_kbuild(tcm_dir, fabric_mod_name) |
| 1024 | 999 | ||
| 1025 | input = raw_input("Would you like to add " + fabric_mod_name + "to drivers/target/Kconfig..? [yes,no]: ") | 1000 | input = raw_input("Would you like to add " + fabric_mod_name + " to drivers/target/Kconfig..? [yes,no]: ") |
| 1026 | if input == "yes" or input == "y": | 1001 | if input == "yes" or input == "y": |
| 1027 | tcm_mod_add_kconfig(tcm_dir, fabric_mod_name) | 1002 | tcm_mod_add_kconfig(tcm_dir, fabric_mod_name) |
| 1028 | 1003 | ||
diff --git a/Documentation/thermal/cpu-cooling-api.txt b/Documentation/thermal/cpu-cooling-api.txt index fca24c931ec8..753e47cc2e20 100644 --- a/Documentation/thermal/cpu-cooling-api.txt +++ b/Documentation/thermal/cpu-cooling-api.txt | |||
| @@ -3,7 +3,7 @@ CPU cooling APIs How To | |||
| 3 | 3 | ||
| 4 | Written by Amit Daniel Kachhap <amit.kachhap@linaro.org> | 4 | Written by Amit Daniel Kachhap <amit.kachhap@linaro.org> |
| 5 | 5 | ||
| 6 | Updated: 12 May 2012 | 6 | Updated: 6 Jan 2015 |
| 7 | 7 | ||
| 8 | Copyright (c) 2012 Samsung Electronics Co., Ltd(http://www.samsung.com) | 8 | Copyright (c) 2012 Samsung Electronics Co., Ltd(http://www.samsung.com) |
| 9 | 9 | ||
| @@ -25,7 +25,18 @@ the user. The registration APIs returns the cooling device pointer. | |||
| 25 | 25 | ||
| 26 | clip_cpus: cpumask of cpus where the frequency constraints will happen. | 26 | clip_cpus: cpumask of cpus where the frequency constraints will happen. |
| 27 | 27 | ||
| 28 | 1.1.2 void cpufreq_cooling_unregister(struct thermal_cooling_device *cdev) | 28 | 1.1.2 struct thermal_cooling_device *of_cpufreq_cooling_register( |
| 29 | struct device_node *np, const struct cpumask *clip_cpus) | ||
| 30 | |||
| 31 | This interface function registers the cpufreq cooling device with | ||
| 32 | the name "thermal-cpufreq-%x" linking it with a device tree node, in | ||
| 33 | order to bind it via the thermal DT code. This api can support multiple | ||
| 34 | instances of cpufreq cooling devices. | ||
| 35 | |||
| 36 | np: pointer to the cooling device device tree node | ||
| 37 | clip_cpus: cpumask of cpus where the frequency constraints will happen. | ||
| 38 | |||
| 39 | 1.1.3 void cpufreq_cooling_unregister(struct thermal_cooling_device *cdev) | ||
| 29 | 40 | ||
| 30 | This interface function unregisters the "thermal-cpufreq-%x" cooling device. | 41 | This interface function unregisters the "thermal-cpufreq-%x" cooling device. |
| 31 | 42 | ||
diff --git a/Documentation/trace/coresight.txt b/Documentation/trace/coresight.txt index bba7dbfc49ed..02361552a3ea 100644 --- a/Documentation/trace/coresight.txt +++ b/Documentation/trace/coresight.txt | |||
| @@ -46,7 +46,7 @@ At typical coresight system would look like this: | |||
| 46 | | | . | ! | | . | ! | ! . | | SWD/ | 46 | | | . | ! | | . | ! | ! . | | SWD/ |
| 47 | | | . | ! | | . | ! | ! . | | JTAG | 47 | | | . | ! | | . | ! | ! . | | JTAG |
| 48 | *****************************************************************<-| | 48 | *****************************************************************<-| |
| 49 | *************************** AMBA Debug ABP ************************ | 49 | *************************** AMBA Debug APB ************************ |
| 50 | ***************************************************************** | 50 | ***************************************************************** |
| 51 | | . ! . ! ! . | | 51 | | . ! . ! ! . | |
| 52 | | . * . * * . | | 52 | | . * . * * . | |
| @@ -79,7 +79,7 @@ At typical coresight system would look like this: | |||
| 79 | To trace port TPIU= Trace Port Interface Unit | 79 | To trace port TPIU= Trace Port Interface Unit |
| 80 | SWD = Serial Wire Debug | 80 | SWD = Serial Wire Debug |
| 81 | 81 | ||
| 82 | While on target configuration of the components is done via the ABP bus, | 82 | While on target configuration of the components is done via the APB bus, |
| 83 | all trace data are carried out-of-band on the ATB bus. The CTM provides | 83 | all trace data are carried out-of-band on the ATB bus. The CTM provides |
| 84 | a way to aggregate and distribute signals between CoreSight components. | 84 | a way to aggregate and distribute signals between CoreSight components. |
| 85 | 85 | ||
diff --git a/Documentation/trace/ftrace.txt b/Documentation/trace/ftrace.txt index 8408e040f06f..572ca923631a 100644 --- a/Documentation/trace/ftrace.txt +++ b/Documentation/trace/ftrace.txt | |||
| @@ -1740,7 +1740,7 @@ no pid | |||
| 1740 | yum-updatesd-3111 [003] 1637.254683: lock_hrtimer_base <-hrtimer_try_to_cancel | 1740 | yum-updatesd-3111 [003] 1637.254683: lock_hrtimer_base <-hrtimer_try_to_cancel |
| 1741 | yum-updatesd-3111 [003] 1637.254685: fget_light <-do_sys_poll | 1741 | yum-updatesd-3111 [003] 1637.254685: fget_light <-do_sys_poll |
| 1742 | yum-updatesd-3111 [003] 1637.254686: pipe_poll <-do_sys_poll | 1742 | yum-updatesd-3111 [003] 1637.254686: pipe_poll <-do_sys_poll |
| 1743 | # echo -1 > set_ftrace_pid | 1743 | # echo > set_ftrace_pid |
| 1744 | # cat trace |head | 1744 | # cat trace |head |
| 1745 | # tracer: function | 1745 | # tracer: function |
| 1746 | # | 1746 | # |
diff --git a/Documentation/usb/gadget-testing.txt b/Documentation/usb/gadget-testing.txt new file mode 100644 index 000000000000..076ac7ba7f93 --- /dev/null +++ b/Documentation/usb/gadget-testing.txt | |||
| @@ -0,0 +1,728 @@ | |||
| 1 | This file summarizes information on basic testing of USB functions | ||
| 2 | provided by gadgets. | ||
| 3 | |||
| 4 | 1. ACM function | ||
| 5 | 2. ECM function | ||
| 6 | 3. ECM subset function | ||
| 7 | 4. EEM function | ||
| 8 | 5. FFS function | ||
| 9 | 6. HID function | ||
| 10 | 7. LOOPBACK function | ||
| 11 | 8. MASS STORAGE function | ||
| 12 | 9. MIDI function | ||
| 13 | 10. NCM function | ||
| 14 | 11. OBEX function | ||
| 15 | 12. PHONET function | ||
| 16 | 13. RNDIS function | ||
| 17 | 14. SERIAL function | ||
| 18 | 15. SOURCESINK function | ||
| 19 | 16. UAC1 function | ||
| 20 | 17. UAC2 function | ||
| 21 | 18. UVC function | ||
| 22 | |||
| 23 | |||
| 24 | 1. ACM function | ||
| 25 | =============== | ||
| 26 | |||
| 27 | The function is provided by usb_f_acm.ko module. | ||
| 28 | |||
| 29 | Function-specific configfs interface | ||
| 30 | ------------------------------------ | ||
| 31 | |||
| 32 | The function name to use when creating the function directory is "acm". | ||
| 33 | The ACM function provides just one attribute in its function directory: | ||
| 34 | |||
| 35 | port_num | ||
| 36 | |||
| 37 | The attribute is read-only. | ||
| 38 | |||
| 39 | There can be at most 4 ACM/generic serial/OBEX ports in the system. | ||
| 40 | |||
| 41 | |||
| 42 | Testing the ACM function | ||
| 43 | ------------------------ | ||
| 44 | |||
| 45 | On the host: cat > /dev/ttyACM<X> | ||
| 46 | On the device : cat /dev/ttyGS<Y> | ||
| 47 | |||
| 48 | then the other way round | ||
| 49 | |||
| 50 | On the device: cat > /dev/ttyGS<Y> | ||
| 51 | On the host: cat /dev/ttyACM<X> | ||
| 52 | |||
| 53 | 2. ECM function | ||
| 54 | =============== | ||
| 55 | |||
| 56 | The function is provided by usb_f_ecm.ko module. | ||
| 57 | |||
| 58 | Function-specific configfs interface | ||
| 59 | ------------------------------------ | ||
| 60 | |||
| 61 | The function name to use when creating the function directory is "ecm". | ||
| 62 | The ECM function provides these attributes in its function directory: | ||
| 63 | |||
| 64 | ifname - network device interface name associated with this | ||
| 65 | function instance | ||
| 66 | qmult - queue length multiplier for high and super speed | ||
| 67 | host_addr - MAC address of host's end of this | ||
| 68 | Ethernet over USB link | ||
| 69 | dev_addr - MAC address of device's end of this | ||
| 70 | Ethernet over USB link | ||
| 71 | |||
| 72 | and after creating the functions/ecm.<instance name> they contain default | ||
| 73 | values: qmult is 5, dev_addr and host_addr are randomly selected. | ||
| 74 | Except for ifname they can be written to until the function is linked to a | ||
| 75 | configuration. The ifname is read-only and contains the name of the interface | ||
| 76 | which was assigned by the net core, e. g. usb0. | ||
| 77 | |||
| 78 | Testing the ECM function | ||
| 79 | ------------------------ | ||
| 80 | |||
| 81 | Configure IP addresses of the device and the host. Then: | ||
| 82 | |||
| 83 | On the device: ping <host's IP> | ||
| 84 | On the host: ping <device's IP> | ||
| 85 | |||
| 86 | 3. ECM subset function | ||
| 87 | ====================== | ||
| 88 | |||
| 89 | The function is provided by usb_f_ecm_subset.ko module. | ||
| 90 | |||
| 91 | Function-specific configfs interface | ||
| 92 | ------------------------------------ | ||
| 93 | |||
| 94 | The function name to use when creating the function directory is "geth". | ||
| 95 | The ECM subset function provides these attributes in its function directory: | ||
| 96 | |||
| 97 | ifname - network device interface name associated with this | ||
| 98 | function instance | ||
| 99 | qmult - queue length multiplier for high and super speed | ||
| 100 | host_addr - MAC address of host's end of this | ||
| 101 | Ethernet over USB link | ||
| 102 | dev_addr - MAC address of device's end of this | ||
| 103 | Ethernet over USB link | ||
| 104 | |||
| 105 | and after creating the functions/ecm.<instance name> they contain default | ||
| 106 | values: qmult is 5, dev_addr and host_addr are randomly selected. | ||
| 107 | Except for ifname they can be written to until the function is linked to a | ||
| 108 | configuration. The ifname is read-only and contains the name of the interface | ||
| 109 | which was assigned by the net core, e. g. usb0. | ||
| 110 | |||
| 111 | Testing the ECM subset function | ||
| 112 | ------------------------------- | ||
| 113 | |||
| 114 | Configure IP addresses of the device and the host. Then: | ||
| 115 | |||
| 116 | On the device: ping <host's IP> | ||
| 117 | On the host: ping <device's IP> | ||
| 118 | |||
| 119 | 4. EEM function | ||
| 120 | =============== | ||
| 121 | |||
| 122 | The function is provided by usb_f_eem.ko module. | ||
| 123 | |||
| 124 | Function-specific configfs interface | ||
| 125 | ------------------------------------ | ||
| 126 | |||
| 127 | The function name to use when creating the function directory is "eem". | ||
| 128 | The EEM function provides these attributes in its function directory: | ||
| 129 | |||
| 130 | ifname - network device interface name associated with this | ||
| 131 | function instance | ||
| 132 | qmult - queue length multiplier for high and super speed | ||
| 133 | host_addr - MAC address of host's end of this | ||
| 134 | Ethernet over USB link | ||
| 135 | dev_addr - MAC address of device's end of this | ||
| 136 | Ethernet over USB link | ||
| 137 | |||
| 138 | and after creating the functions/eem.<instance name> they contain default | ||
| 139 | values: qmult is 5, dev_addr and host_addr are randomly selected. | ||
| 140 | Except for ifname they can be written to until the function is linked to a | ||
| 141 | configuration. The ifname is read-only and contains the name of the interface | ||
| 142 | which was assigned by the net core, e. g. usb0. | ||
| 143 | |||
| 144 | Testing the EEM function | ||
| 145 | ------------------------ | ||
| 146 | |||
| 147 | Configure IP addresses of the device and the host. Then: | ||
| 148 | |||
| 149 | On the device: ping <host's IP> | ||
| 150 | On the host: ping <device's IP> | ||
| 151 | |||
| 152 | 5. FFS function | ||
| 153 | =============== | ||
| 154 | |||
| 155 | The function is provided by usb_f_fs.ko module. | ||
| 156 | |||
| 157 | Function-specific configfs interface | ||
| 158 | ------------------------------------ | ||
| 159 | |||
| 160 | The function name to use when creating the function directory is "ffs". | ||
| 161 | The function directory is intentionally empty and not modifiable. | ||
| 162 | |||
| 163 | After creating the directory there is a new instance (a "device") of FunctionFS | ||
| 164 | available in the system. Once a "device" is available, the user should follow | ||
| 165 | the standard procedure for using FunctionFS (mount it, run the userspace | ||
| 166 | process which implements the function proper). The gadget should be enabled | ||
| 167 | by writing a suitable string to usb_gadget/<gadget>/UDC. | ||
| 168 | |||
| 169 | Testing the FFS function | ||
| 170 | ------------------------ | ||
| 171 | |||
| 172 | On the device: start the function's userspace daemon, enable the gadget | ||
| 173 | On the host: use the USB function provided by the device | ||
| 174 | |||
| 175 | 6. HID function | ||
| 176 | =============== | ||
| 177 | |||
| 178 | The function is provided by usb_f_hid.ko module. | ||
| 179 | |||
| 180 | Function-specific configfs interface | ||
| 181 | ------------------------------------ | ||
| 182 | |||
| 183 | The function name to use when creating the function directory is "hid". | ||
| 184 | The HID function provides these attributes in its function directory: | ||
| 185 | |||
| 186 | protocol - HID protocol to use | ||
| 187 | report_desc - data to be used in HID reports, except data | ||
| 188 | passed with /dev/hidg<X> | ||
| 189 | report_length - HID report length | ||
| 190 | subclass - HID subclass to use | ||
| 191 | |||
| 192 | For a keyboard the protocol and the subclass are 1, the report_length is 8, | ||
| 193 | while the report_desc is: | ||
| 194 | |||
| 195 | $ hd my_report_desc | ||
| 196 | 00000000 05 01 09 06 a1 01 05 07 19 e0 29 e7 15 00 25 01 |..........)...%.| | ||
| 197 | 00000010 75 01 95 08 81 02 95 01 75 08 81 03 95 05 75 01 |u.......u.....u.| | ||
| 198 | 00000020 05 08 19 01 29 05 91 02 95 01 75 03 91 03 95 06 |....).....u.....| | ||
| 199 | 00000030 75 08 15 00 25 65 05 07 19 00 29 65 81 00 c0 |u...%e....)e...| | ||
| 200 | 0000003f | ||
| 201 | |||
| 202 | Such a sequence of bytes can be stored to the attribute with echo: | ||
| 203 | |||
| 204 | $ echo -ne \\x05\\x01\\x09\\x06\\xa1..... | ||
| 205 | |||
| 206 | Testing the HID function | ||
| 207 | ------------------------ | ||
| 208 | |||
| 209 | Device: | ||
| 210 | - create the gadget | ||
| 211 | - connect the gadget to a host, preferably not the one used | ||
| 212 | to control the gadget | ||
| 213 | - run a program which writes to /dev/hidg<N>, e.g. | ||
| 214 | a userspace program found in Documentation/usb/gadget_hid.txt: | ||
| 215 | |||
| 216 | $ ./hid_gadget_test /dev/hidg0 keyboard | ||
| 217 | |||
| 218 | Host: | ||
| 219 | - observe the keystrokes from the gadget | ||
| 220 | |||
| 221 | 7. LOOPBACK function | ||
| 222 | ==================== | ||
| 223 | |||
| 224 | The function is provided by usb_f_ss_lb.ko module. | ||
| 225 | |||
| 226 | Function-specific configfs interface | ||
| 227 | ------------------------------------ | ||
| 228 | |||
| 229 | The function name to use when creating the function directory is "Loopback". | ||
| 230 | The LOOPBACK function provides these attributes in its function directory: | ||
| 231 | |||
| 232 | qlen - depth of loopback queue | ||
| 233 | bulk_buflen - buffer length | ||
| 234 | |||
| 235 | Testing the LOOPBACK function | ||
| 236 | ----------------------------- | ||
| 237 | |||
| 238 | device: run the gadget | ||
| 239 | host: test-usb | ||
| 240 | |||
| 241 | http://www.linux-usb.org/usbtest/testusb.c | ||
| 242 | |||
| 243 | 8. MASS STORAGE function | ||
| 244 | ======================== | ||
| 245 | |||
| 246 | The function is provided by usb_f_mass_storage.ko module. | ||
| 247 | |||
| 248 | Function-specific configfs interface | ||
| 249 | ------------------------------------ | ||
| 250 | |||
| 251 | The function name to use when creating the function directory is "mass_storage". | ||
| 252 | The MASS STORAGE function provides these attributes in its directory: | ||
| 253 | files: | ||
| 254 | |||
| 255 | stall - Set to permit function to halt bulk endpoints. | ||
| 256 | Disabled on some USB devices known not to work | ||
| 257 | correctly. You should set it to true. | ||
| 258 | num_buffers - Number of pipeline buffers. Valid numbers | ||
| 259 | are 2..4. Available only if | ||
| 260 | CONFIG_USB_GADGET_DEBUG_FILES is set. | ||
| 261 | |||
| 262 | and a default lun.0 directory corresponding to SCSI LUN #0. | ||
| 263 | |||
| 264 | A new lun can be added with mkdir: | ||
| 265 | |||
| 266 | $ mkdir functions/mass_storage.0/partition.5 | ||
| 267 | |||
| 268 | Lun numbering does not have to be continuous, except for lun #0 which is | ||
| 269 | created by default. A maximum of 8 luns can be specified and they all must be | ||
| 270 | named following the <name>.<number> scheme. The numbers can be 0..8. | ||
| 271 | Probably a good convention is to name the luns "lun.<number>", | ||
| 272 | although it is not mandatory. | ||
| 273 | |||
| 274 | In each lun directory there are the following attribute files: | ||
| 275 | |||
| 276 | file - The path to the backing file for the LUN. | ||
| 277 | Required if LUN is not marked as removable. | ||
| 278 | ro - Flag specifying access to the LUN shall be | ||
| 279 | read-only. This is implied if CD-ROM emulation | ||
| 280 | is enabled as well as when it was impossible | ||
| 281 | to open "filename" in R/W mode. | ||
| 282 | removable - Flag specifying that LUN shall be indicated as | ||
| 283 | being removable. | ||
| 284 | cdrom - Flag specifying that LUN shall be reported as | ||
| 285 | being a CD-ROM. | ||
| 286 | nofua - Flag specifying that FUA flag | ||
| 287 | in SCSI WRITE(10,12) | ||
| 288 | |||
| 289 | Testing the MASS STORAGE function | ||
| 290 | --------------------------------- | ||
| 291 | |||
| 292 | device: connect the gadget, enable it | ||
| 293 | host: dmesg, see the USB drives appear (if system configured to automatically | ||
| 294 | mount) | ||
| 295 | |||
| 296 | 9. MIDI function | ||
| 297 | ================ | ||
| 298 | |||
| 299 | The function is provided by usb_f_midi.ko module. | ||
| 300 | |||
| 301 | Function-specific configfs interface | ||
| 302 | ------------------------------------ | ||
| 303 | |||
| 304 | The function name to use when creating the function directory is "midi". | ||
| 305 | The MIDI function provides these attributes in its function directory: | ||
| 306 | |||
| 307 | buflen - MIDI buffer length | ||
| 308 | id - ID string for the USB MIDI adapter | ||
| 309 | in_ports - number of MIDI input ports | ||
| 310 | index - index value for the USB MIDI adapter | ||
| 311 | out_ports - number of MIDI output ports | ||
| 312 | qlen - USB read request queue length | ||
| 313 | |||
| 314 | Testing the MIDI function | ||
| 315 | ------------------------- | ||
| 316 | |||
| 317 | There are two cases: playing a mid from the gadget to | ||
| 318 | the host and playing a mid from the host to the gadget. | ||
| 319 | |||
| 320 | 1) Playing a mid from the gadget to the host | ||
| 321 | host) | ||
| 322 | |||
| 323 | $ arecordmidi -l | ||
| 324 | Port Client name Port name | ||
| 325 | 14:0 Midi Through Midi Through Port-0 | ||
| 326 | 24:0 MIDI Gadget MIDI Gadget MIDI 1 | ||
| 327 | $ arecordmidi -p 24:0 from_gadget.mid | ||
| 328 | |||
| 329 | gadget) | ||
| 330 | |||
| 331 | $ aplaymidi -l | ||
| 332 | Port Client name Port name | ||
| 333 | 20:0 f_midi f_midi | ||
| 334 | |||
| 335 | $ aplaymidi -p 20:0 to_host.mid | ||
| 336 | |||
| 337 | 2) Playing a mid from the host to the gadget | ||
| 338 | gadget) | ||
| 339 | |||
| 340 | $ arecordmidi -l | ||
| 341 | Port Client name Port name | ||
| 342 | 20:0 f_midi f_midi | ||
| 343 | |||
| 344 | $ arecordmidi -p 20:0 from_host.mid | ||
| 345 | |||
| 346 | host) | ||
| 347 | |||
| 348 | $ aplaymidi -l | ||
| 349 | Port Client name Port name | ||
| 350 | 14:0 Midi Through Midi Through Port-0 | ||
| 351 | 24:0 MIDI Gadget MIDI Gadget MIDI 1 | ||
| 352 | |||
| 353 | $ aplaymidi -p24:0 to_gadget.mid | ||
| 354 | |||
| 355 | The from_gadget.mid should sound identical to the to_host.mid. | ||
| 356 | The from_host.id should sound identical to the to_gadget.mid. | ||
| 357 | |||
| 358 | MIDI files can be played to speakers/headphones with e.g. timidity installed | ||
| 359 | |||
| 360 | $ aplaymidi -l | ||
| 361 | Port Client name Port name | ||
| 362 | 14:0 Midi Through Midi Through Port-0 | ||
| 363 | 24:0 MIDI Gadget MIDI Gadget MIDI 1 | ||
| 364 | 128:0 TiMidity TiMidity port 0 | ||
| 365 | 128:1 TiMidity TiMidity port 1 | ||
| 366 | 128:2 TiMidity TiMidity port 2 | ||
| 367 | 128:3 TiMidity TiMidity port 3 | ||
| 368 | |||
| 369 | $ aplaymidi -p 128:0 file.mid | ||
| 370 | |||
| 371 | MIDI ports can be logically connected using the aconnect utility, e.g.: | ||
| 372 | |||
| 373 | $ aconnect 24:0 128:0 # try it on the host | ||
| 374 | |||
| 375 | After the gadget's MIDI port is connected to timidity's MIDI port, | ||
| 376 | whatever is played at the gadget side with aplaymidi -l is audible | ||
| 377 | in host's speakers/headphones. | ||
| 378 | |||
| 379 | 10. NCM function | ||
| 380 | ================ | ||
| 381 | |||
| 382 | The function is provided by usb_f_ncm.ko module. | ||
| 383 | |||
| 384 | Function-specific configfs interface | ||
| 385 | ------------------------------------ | ||
| 386 | |||
| 387 | The function name to use when creating the function directory is "ncm". | ||
| 388 | The NCM function provides these attributes in its function directory: | ||
| 389 | |||
| 390 | ifname - network device interface name associated with this | ||
| 391 | function instance | ||
| 392 | qmult - queue length multiplier for high and super speed | ||
| 393 | host_addr - MAC address of host's end of this | ||
| 394 | Ethernet over USB link | ||
| 395 | dev_addr - MAC address of device's end of this | ||
| 396 | Ethernet over USB link | ||
| 397 | |||
| 398 | and after creating the functions/ncm.<instance name> they contain default | ||
| 399 | values: qmult is 5, dev_addr and host_addr are randomly selected. | ||
| 400 | Except for ifname they can be written to until the function is linked to a | ||
| 401 | configuration. The ifname is read-only and contains the name of the interface | ||
| 402 | which was assigned by the net core, e. g. usb0. | ||
| 403 | |||
| 404 | Testing the NCM function | ||
| 405 | ------------------------ | ||
| 406 | |||
| 407 | Configure IP addresses of the device and the host. Then: | ||
| 408 | |||
| 409 | On the device: ping <host's IP> | ||
| 410 | On the host: ping <device's IP> | ||
| 411 | |||
| 412 | 11. OBEX function | ||
| 413 | ================= | ||
| 414 | |||
| 415 | The function is provided by usb_f_obex.ko module. | ||
| 416 | |||
| 417 | Function-specific configfs interface | ||
| 418 | ------------------------------------ | ||
| 419 | |||
| 420 | The function name to use when creating the function directory is "obex". | ||
| 421 | The OBEX function provides just one attribute in its function directory: | ||
| 422 | |||
| 423 | port_num | ||
| 424 | |||
| 425 | The attribute is read-only. | ||
| 426 | |||
| 427 | There can be at most 4 ACM/generic serial/OBEX ports in the system. | ||
| 428 | |||
| 429 | Testing the OBEX function | ||
| 430 | ------------------------- | ||
| 431 | |||
| 432 | On device: seriald -f /dev/ttyGS<Y> -s 1024 | ||
| 433 | On host: serialc -v <vendorID> -p <productID> -i<interface#> -a1 -s1024 \ | ||
| 434 | -t<out endpoint addr> -r<in endpoint addr> | ||
| 435 | |||
| 436 | where seriald and serialc are Felipe's utilities found here: | ||
| 437 | |||
| 438 | https://git.gitorious.org/usb/usb-tools.git master | ||
| 439 | |||
| 440 | 12. PHONET function | ||
| 441 | =================== | ||
| 442 | |||
| 443 | The function is provided by usb_f_phonet.ko module. | ||
| 444 | |||
| 445 | Function-specific configfs interface | ||
| 446 | ------------------------------------ | ||
| 447 | |||
| 448 | The function name to use when creating the function directory is "phonet". | ||
| 449 | The PHONET function provides just one attribute in its function directory: | ||
| 450 | |||
| 451 | ifname - network device interface name associated with this | ||
| 452 | function instance | ||
| 453 | |||
| 454 | Testing the PHONET function | ||
| 455 | --------------------------- | ||
| 456 | |||
| 457 | It is not possible to test the SOCK_STREAM protocol without a specific piece | ||
| 458 | of hardware, so only SOCK_DGRAM has been tested. For the latter to work, | ||
| 459 | in the past I had to apply the patch mentioned here: | ||
| 460 | |||
| 461 | http://www.spinics.net/lists/linux-usb/msg85689.html | ||
| 462 | |||
| 463 | These tools are required: | ||
| 464 | |||
| 465 | git://git.gitorious.org/meego-cellular/phonet-utils.git | ||
| 466 | |||
| 467 | On the host: | ||
| 468 | |||
| 469 | $ ./phonet -a 0x10 -i usbpn0 | ||
| 470 | $ ./pnroute add 0x6c usbpn0 | ||
| 471 | $./pnroute add 0x10 usbpn0 | ||
| 472 | $ ifconfig usbpn0 up | ||
| 473 | |||
| 474 | On the device: | ||
| 475 | |||
| 476 | $ ./phonet -a 0x6c -i upnlink0 | ||
| 477 | $ ./pnroute add 0x10 upnlink0 | ||
| 478 | $ ifconfig upnlink0 up | ||
| 479 | |||
| 480 | Then a test program can be used: | ||
| 481 | |||
| 482 | http://www.spinics.net/lists/linux-usb/msg85690.html | ||
| 483 | |||
| 484 | On the device: | ||
| 485 | |||
| 486 | $ ./pnxmit -a 0x6c -r | ||
| 487 | |||
| 488 | On the host: | ||
| 489 | |||
| 490 | $ ./pnxmit -a 0x10 -s 0x6c | ||
| 491 | |||
| 492 | As a result some data should be sent from host to device. | ||
| 493 | Then the other way round: | ||
| 494 | |||
| 495 | On the host: | ||
| 496 | |||
| 497 | $ ./pnxmit -a 0x10 -r | ||
| 498 | |||
| 499 | On the device: | ||
| 500 | |||
| 501 | $ ./pnxmit -a 0x6c -s 0x10 | ||
| 502 | |||
| 503 | 13. RNDIS function | ||
| 504 | ================== | ||
| 505 | |||
| 506 | The function is provided by usb_f_rndis.ko module. | ||
| 507 | |||
| 508 | Function-specific configfs interface | ||
| 509 | ------------------------------------ | ||
| 510 | |||
| 511 | The function name to use when creating the function directory is "rndis". | ||
| 512 | The RNDIS function provides these attributes in its function directory: | ||
| 513 | |||
| 514 | ifname - network device interface name associated with this | ||
| 515 | function instance | ||
| 516 | qmult - queue length multiplier for high and super speed | ||
| 517 | host_addr - MAC address of host's end of this | ||
| 518 | Ethernet over USB link | ||
| 519 | dev_addr - MAC address of device's end of this | ||
| 520 | Ethernet over USB link | ||
| 521 | |||
| 522 | and after creating the functions/rndis.<instance name> they contain default | ||
| 523 | values: qmult is 5, dev_addr and host_addr are randomly selected. | ||
| 524 | Except for ifname they can be written to until the function is linked to a | ||
| 525 | configuration. The ifname is read-only and contains the name of the interface | ||
| 526 | which was assigned by the net core, e. g. usb0. | ||
| 527 | |||
| 528 | By default there can be only 1 RNDIS interface in the system. | ||
| 529 | |||
| 530 | Testing the RNDIS function | ||
| 531 | -------------------------- | ||
| 532 | |||
| 533 | Configure IP addresses of the device and the host. Then: | ||
| 534 | |||
| 535 | On the device: ping <host's IP> | ||
| 536 | On the host: ping <device's IP> | ||
| 537 | |||
| 538 | 14. SERIAL function | ||
| 539 | =================== | ||
| 540 | |||
| 541 | The function is provided by usb_f_gser.ko module. | ||
| 542 | |||
| 543 | Function-specific configfs interface | ||
| 544 | ------------------------------------ | ||
| 545 | |||
| 546 | The function name to use when creating the function directory is "gser". | ||
| 547 | The SERIAL function provides just one attribute in its function directory: | ||
| 548 | |||
| 549 | port_num | ||
| 550 | |||
| 551 | The attribute is read-only. | ||
| 552 | |||
| 553 | There can be at most 4 ACM/generic serial/OBEX ports in the system. | ||
| 554 | |||
| 555 | Testing the SERIAL function | ||
| 556 | --------------------------- | ||
| 557 | |||
| 558 | On host: insmod usbserial | ||
| 559 | echo VID PID >/sys/bus/usb-serial/drivers/generic/new_id | ||
| 560 | On host: cat > /dev/ttyUSB<X> | ||
| 561 | On target: cat /dev/ttyGS<Y> | ||
| 562 | |||
| 563 | then the other way round | ||
| 564 | |||
| 565 | On target: cat > /dev/ttyGS<Y> | ||
| 566 | On host: cat /dev/ttyUSB<X> | ||
| 567 | |||
| 568 | 15. SOURCESINK function | ||
| 569 | ======================= | ||
| 570 | |||
| 571 | The function is provided by usb_f_ss_lb.ko module. | ||
| 572 | |||
| 573 | Function-specific configfs interface | ||
| 574 | ------------------------------------ | ||
| 575 | |||
| 576 | The function name to use when creating the function directory is "SourceSink". | ||
| 577 | The SOURCESINK function provides these attributes in its function directory: | ||
| 578 | |||
| 579 | pattern - 0 (all zeros), 1 (mod63), 2 (none) | ||
| 580 | isoc_interval - 1..16 | ||
| 581 | isoc_maxpacket - 0 - 1023 (fs), 0 - 1024 (hs/ss) | ||
| 582 | isoc_mult - 0..2 (hs/ss only) | ||
| 583 | isoc_maxburst - 0..15 (ss only) | ||
| 584 | bulk_buflen - buffer length | ||
| 585 | |||
| 586 | Testing the SOURCESINK function | ||
| 587 | ------------------------------- | ||
| 588 | |||
| 589 | device: run the gadget | ||
| 590 | host: test-usb | ||
| 591 | |||
| 592 | http://www.linux-usb.org/usbtest/testusb.c | ||
| 593 | |||
| 594 | 16. UAC1 function | ||
| 595 | ================= | ||
| 596 | |||
| 597 | The function is provided by usb_f_uac1.ko module. | ||
| 598 | |||
| 599 | Function-specific configfs interface | ||
| 600 | ------------------------------------ | ||
| 601 | |||
| 602 | The function name to use when creating the function directory is "uac1". | ||
| 603 | The uac1 function provides these attributes in its function directory: | ||
| 604 | |||
| 605 | audio_buf_size - audio buffer size | ||
| 606 | fn_cap - capture pcm device file name | ||
| 607 | fn_cntl - control device file name | ||
| 608 | fn_play - playback pcm device file name | ||
| 609 | req_buf_size - ISO OUT endpoint request buffer size | ||
| 610 | req_count - ISO OUT endpoint request count | ||
| 611 | |||
| 612 | The attributes have sane default values. | ||
| 613 | |||
| 614 | Testing the UAC1 function | ||
| 615 | ------------------------- | ||
| 616 | |||
| 617 | device: run the gadget | ||
| 618 | host: aplay -l # should list our USB Audio Gadget | ||
| 619 | |||
| 620 | 17. UAC2 function | ||
| 621 | ================= | ||
| 622 | |||
| 623 | The function is provided by usb_f_uac2.ko module. | ||
| 624 | |||
| 625 | Function-specific configfs interface | ||
| 626 | ------------------------------------ | ||
| 627 | |||
| 628 | The function name to use when creating the function directory is "uac2". | ||
| 629 | The uac2 function provides these attributes in its function directory: | ||
| 630 | |||
| 631 | chmask - capture channel mask | ||
| 632 | c_srate - capture sampling rate | ||
| 633 | c_ssize - capture sample size (bytes) | ||
| 634 | p_chmask - playback channel mask | ||
| 635 | p_srate - playback sampling rate | ||
| 636 | p_ssize - playback sample size (bytes) | ||
| 637 | |||
| 638 | The attributes have sane default values. | ||
| 639 | |||
| 640 | Testing the UAC2 function | ||
| 641 | ------------------------- | ||
| 642 | |||
| 643 | device: run the gadget | ||
| 644 | host: aplay -l # should list our USB Audio Gadget | ||
| 645 | |||
| 646 | This function does not require real hardware support, it just | ||
| 647 | sends a stream of audio data to/from the host. In order to | ||
| 648 | actually hear something at the device side, a command similar | ||
| 649 | to this must be used at the device side: | ||
| 650 | |||
| 651 | $ arecord -f dat -t wav -D hw:2,0 | aplay -D hw:0,0 & | ||
| 652 | |||
| 653 | e.g.: | ||
| 654 | |||
| 655 | $ arecord -f dat -t wav -D hw:CARD=UAC2Gadget,DEV=0 | \ | ||
| 656 | aplay -D default:CARD=OdroidU3 | ||
| 657 | |||
| 658 | 18. UVC function | ||
| 659 | ================ | ||
| 660 | |||
| 661 | The function is provided by usb_f_uvc.ko module. | ||
| 662 | |||
| 663 | Function-specific configfs interface | ||
| 664 | ------------------------------------ | ||
| 665 | |||
| 666 | The function name to use when creating the function directory is "uvc". | ||
| 667 | The uvc function provides these attributes in its function directory: | ||
| 668 | |||
| 669 | streaming_interval - interval for polling endpoint for data transfers | ||
| 670 | streaming_maxburst - bMaxBurst for super speed companion descriptor | ||
| 671 | streaming_maxpacket - maximum packet size this endpoint is capable of | ||
| 672 | sending or receiving when this configuration is | ||
| 673 | selected | ||
| 674 | |||
| 675 | There are also "control" and "streaming" subdirectories, each of which contain | ||
| 676 | a number of their subdirectories. There are some sane defaults provided, but | ||
| 677 | the user must provide the following: | ||
| 678 | |||
| 679 | control header - create in control/header, link from control/class/fs | ||
| 680 | and/or control/class/ss | ||
| 681 | streaming header - create in streaming/header, link from | ||
| 682 | streaming/class/fs and/or streaming/class/hs and/or | ||
| 683 | streaming/class/ss | ||
| 684 | format description - create in streaming/mjpeg and/or | ||
| 685 | streaming/uncompressed | ||
| 686 | frame description - create in streaming/mjpeg/<format> and/or in | ||
| 687 | streaming/uncompressed/<format> | ||
| 688 | |||
| 689 | Each frame description contains frame interval specification, and each | ||
| 690 | such specification consists of a number of lines with an inverval value | ||
| 691 | in each line. The rules stated above are best illustrated with an example: | ||
| 692 | |||
| 693 | # mkdir functions/uvc.usb0/control/header/h | ||
| 694 | # cd functions/uvc.usb0/control/header/h | ||
| 695 | # ln -s header/h class/fs | ||
| 696 | # ln -s header/h class/ss | ||
| 697 | # mkdir -p functions/uvc.usb0/streaming/uncompressed/u/360p | ||
| 698 | # cat <<EOF > functions/uvc.usb0/streaming/uncompressed/u/360p/dwFrameInterval | ||
| 699 | 666666 | ||
| 700 | 1000000 | ||
| 701 | 5000000 | ||
| 702 | EOF | ||
| 703 | # cd $GADGET_CONFIGFS_ROOT | ||
| 704 | # mkdir functions/uvc.usb0/streaming/header/h | ||
| 705 | # cd functions/uvc.usb0/streaming/header/h | ||
| 706 | # ln -s ../../uncompressed/u | ||
| 707 | # cd ../../class/fs | ||
| 708 | # ln -s ../../header/h | ||
| 709 | # cd ../../class/hs | ||
| 710 | # ln -s ../../header/h | ||
| 711 | # cd ../../class/ss | ||
| 712 | # ln -s ../../header/h | ||
| 713 | |||
| 714 | |||
| 715 | Testing the UVC function | ||
| 716 | ------------------------ | ||
| 717 | |||
| 718 | device: run the gadget, modprobe vivid | ||
| 719 | |||
| 720 | # uvc-gadget -u /dev/video<uvc video node #> -v /dev/video<vivid video node #> | ||
| 721 | |||
| 722 | where uvc-gadget is this program: | ||
| 723 | http://git.ideasonboard.org/uvc-gadget.git | ||
| 724 | |||
| 725 | with these patches: | ||
| 726 | http://www.spinics.net/lists/linux-usb/msg99220.html | ||
| 727 | |||
| 728 | host: luvcview -f yuv | ||
diff --git a/Documentation/usb/gadget_serial.txt b/Documentation/usb/gadget_serial.txt index 61e67f6a20a0..6b4a88a8c8e3 100644 --- a/Documentation/usb/gadget_serial.txt +++ b/Documentation/usb/gadget_serial.txt | |||
| @@ -236,8 +236,12 @@ I: If#= 0 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=serial | |||
| 236 | E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms | 236 | E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| 237 | E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms | 237 | E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| 238 | 238 | ||
| 239 | You must explicitly load the usbserial driver with parameters to | 239 | You must load the usbserial driver and explicitly set its parameters |
| 240 | configure it to recognize the gadget serial device, like this: | 240 | to configure it to recognize the gadget serial device, like this: |
| 241 | |||
| 242 | echo 0x0525 0xA4A6 >/sys/bus/usb-serial/drivers/generic/new_id | ||
| 243 | |||
| 244 | The legacy way is to use module parameters: | ||
| 241 | 245 | ||
| 242 | modprobe usbserial vendor=0x0525 product=0xA4A6 | 246 | modprobe usbserial vendor=0x0525 product=0xA4A6 |
| 243 | 247 | ||
diff --git a/Documentation/usb/usbmon.txt b/Documentation/usb/usbmon.txt index c42bb9cd3b43..28425f736756 100644 --- a/Documentation/usb/usbmon.txt +++ b/Documentation/usb/usbmon.txt | |||
| @@ -72,7 +72,7 @@ to listen on a single bus, otherwise, to listen on all buses, type: | |||
| 72 | 72 | ||
| 73 | # cat /sys/kernel/debug/usb/usbmon/0u > /tmp/1.mon.out | 73 | # cat /sys/kernel/debug/usb/usbmon/0u > /tmp/1.mon.out |
| 74 | 74 | ||
| 75 | This process will be reading until killed. Naturally, the output can be | 75 | This process will read until it is killed. Naturally, the output can be |
| 76 | redirected to a desirable location. This is preferred, because it is going | 76 | redirected to a desirable location. This is preferred, because it is going |
| 77 | to be quite long. | 77 | to be quite long. |
| 78 | 78 | ||
| @@ -231,7 +231,7 @@ number. Number zero (/dev/usbmon0) is special and means "all buses". | |||
| 231 | Note that specific naming policy is set by your Linux distribution. | 231 | Note that specific naming policy is set by your Linux distribution. |
| 232 | 232 | ||
| 233 | If you create /dev/usbmon0 by hand, make sure that it is owned by root | 233 | If you create /dev/usbmon0 by hand, make sure that it is owned by root |
| 234 | and has mode 0600. Otherwise, unpriviledged users will be able to snoop | 234 | and has mode 0600. Otherwise, unprivileged users will be able to snoop |
| 235 | keyboard traffic. | 235 | keyboard traffic. |
| 236 | 236 | ||
| 237 | The following ioctl calls are available, with MON_IOC_MAGIC 0x92: | 237 | The following ioctl calls are available, with MON_IOC_MAGIC 0x92: |
diff --git a/Documentation/video4linux/CQcam.txt b/Documentation/video4linux/CQcam.txt deleted file mode 100644 index 0b69e4ee8e31..000000000000 --- a/Documentation/video4linux/CQcam.txt +++ /dev/null | |||
| @@ -1,205 +0,0 @@ | |||
| 1 | c-qcam - Connectix Color QuickCam video4linux kernel driver | ||
| 2 | |||
| 3 | Copyright (C) 1999 Dave Forrest <drf5n@virginia.edu> | ||
| 4 | released under GNU GPL. | ||
| 5 | |||
| 6 | 1999-12-08 Dave Forrest, written with kernel version 2.2.12 in mind | ||
| 7 | |||
| 8 | |||
| 9 | Table of Contents | ||
| 10 | |||
| 11 | 1.0 Introduction | ||
| 12 | 2.0 Compilation, Installation, and Configuration | ||
| 13 | 3.0 Troubleshooting | ||
| 14 | 4.0 Future Work / current work arounds | ||
| 15 | 9.0 Sample Program, v4lgrab | ||
| 16 | 10.0 Other Information | ||
| 17 | |||
| 18 | |||
| 19 | 1.0 Introduction | ||
| 20 | |||
| 21 | The file ../../drivers/media/parport/c-qcam.c is a device driver for | ||
| 22 | the Logitech (nee Connectix) parallel port interface color CCD camera. | ||
| 23 | This is a fairly inexpensive device for capturing images. Logitech | ||
| 24 | does not currently provide information for developers, but many people | ||
| 25 | have engineered several solutions for non-Microsoft use of the Color | ||
| 26 | Quickcam. | ||
| 27 | |||
| 28 | 1.1 Motivation | ||
| 29 | |||
| 30 | I spent a number of hours trying to get my camera to work, and I | ||
| 31 | hope this document saves you some time. My camera will not work with | ||
| 32 | the 2.2.13 kernel as distributed, but with a few patches to the | ||
| 33 | module, I was able to grab some frames. See 4.0, Future Work. | ||
| 34 | |||
| 35 | |||
| 36 | |||
| 37 | 2.0 Compilation, Installation, and Configuration | ||
| 38 | |||
| 39 | The c-qcam depends on parallel port support, video4linux, and the | ||
| 40 | Color Quickcam. It is also nice to have the parallel port readback | ||
| 41 | support enabled. I enabled these as modules during the kernel | ||
| 42 | configuration. The appropriate flags are: | ||
| 43 | |||
| 44 | CONFIG_PRINTER M for lp.o, parport.o parport_pc.o modules | ||
| 45 | CONFIG_PNP_PARPORT M for autoprobe.o IEEE1284 readback module | ||
| 46 | CONFIG_PRINTER_READBACK M for parport_probe.o IEEE1284 readback module | ||
| 47 | CONFIG_VIDEO_DEV M for videodev.o video4linux module | ||
| 48 | CONFIG_VIDEO_CQCAM M for c-qcam.o Color Quickcam module | ||
| 49 | |||
| 50 | With these flags, the kernel should compile and install the modules. | ||
| 51 | To record and monitor the compilation, I use: | ||
| 52 | |||
| 53 | (make zlilo ; \ | ||
| 54 | make modules; \ | ||
| 55 | make modules_install ; | ||
| 56 | depmod -a ) &>log & | ||
| 57 | less log # then a capital 'F' to watch the progress | ||
| 58 | |||
| 59 | But that is my personal preference. | ||
| 60 | |||
| 61 | 2.2 Configuration | ||
| 62 | |||
| 63 | The configuration requires module configuration and device | ||
| 64 | configuration. The following sections detail these procedures. | ||
| 65 | |||
| 66 | |||
| 67 | 2.1 Module Configuration | ||
| 68 | |||
| 69 | Using modules requires a bit of work to install and pass the | ||
| 70 | parameters. Understand that entries in /etc/modprobe.d/*.conf of: | ||
| 71 | |||
| 72 | alias parport_lowlevel parport_pc | ||
| 73 | options parport_pc io=0x378 irq=none | ||
| 74 | alias char-major-81 videodev | ||
| 75 | alias char-major-81-0 c-qcam | ||
| 76 | |||
| 77 | 2.2 Device Configuration | ||
| 78 | |||
| 79 | At this point, we need to ensure that the device files exist. | ||
| 80 | Video4linux used the /dev/video* files, and we want to attach the | ||
| 81 | Quickcam to one of these. | ||
| 82 | |||
| 83 | ls -lad /dev/video* # should produce a list of the video devices | ||
| 84 | |||
| 85 | If the video devices do not exist, you can create them with: | ||
| 86 | |||
| 87 | su | ||
| 88 | cd /dev | ||
| 89 | for ii in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ; do | ||
| 90 | mknod video$ii c 81 $ii # char-major-81-[0-16] | ||
| 91 | chown root.root video$ii # owned by root | ||
| 92 | chmod 600 video$ii # read/writable by root only | ||
| 93 | done | ||
| 94 | |||
| 95 | Lots of people connect video0 to video and bttv, but you might want | ||
| 96 | your c-qcam to mean something more: | ||
| 97 | |||
| 98 | ln -s video0 c-qcam # make /dev/c-qcam a working file | ||
| 99 | ln -s c-qcam video # make /dev/c-qcam your default video source | ||
| 100 | |||
| 101 | But these are conveniences. The important part is to make the proper | ||
| 102 | special character files with the right major and minor numbers. All | ||
| 103 | of the special device files are listed in ../devices.txt. If you | ||
| 104 | would like the c-qcam readable by non-root users, you will need to | ||
| 105 | change the permissions. | ||
| 106 | |||
| 107 | 3.0 Troubleshooting | ||
| 108 | |||
| 109 | If the sample program below, v4lgrab, gives you output then | ||
| 110 | everything is working. | ||
| 111 | |||
| 112 | v4lgrab | wc # should give you a count of characters | ||
| 113 | |||
| 114 | Otherwise, you have some problem. | ||
| 115 | |||
| 116 | The c-qcam is IEEE1284 compatible, so if you are using the proc file | ||
| 117 | system (CONFIG_PROC_FS), the parallel printer support | ||
| 118 | (CONFIG_PRINTER), the IEEE 1284 system,(CONFIG_PRINTER_READBACK), you | ||
| 119 | should be able to read some identification from your quickcam with | ||
| 120 | |||
| 121 | modprobe -v parport | ||
| 122 | modprobe -v parport_probe | ||
| 123 | cat /proc/parport/PORTNUMBER/autoprobe | ||
| 124 | Returns: | ||
| 125 | CLASS:MEDIA; | ||
| 126 | MODEL:Color QuickCam 2.0; | ||
| 127 | MANUFACTURER:Connectix; | ||
| 128 | |||
| 129 | A good response to this indicates that your color quickcam is alive | ||
| 130 | and well. A common problem is that the current driver does not | ||
| 131 | reliably detect a c-qcam, even though one is attached. In this case, | ||
| 132 | |||
| 133 | modprobe -v c-qcam | ||
| 134 | or | ||
| 135 | insmod -v c-qcam | ||
| 136 | |||
| 137 | Returns a message saying "Device or resource busy" Development is | ||
| 138 | currently underway, but a workaround is to patch the module to skip | ||
| 139 | the detection code and attach to a defined port. Check the | ||
| 140 | video4linux mailing list and archive for more current information. | ||
| 141 | |||
| 142 | 3.1 Checklist: | ||
| 143 | |||
| 144 | Can you get an image? | ||
| 145 | v4lgrab >qcam.ppm ; wc qcam.ppm ; xv qcam.ppm | ||
| 146 | |||
| 147 | Is a working c-qcam connected to the port? | ||
| 148 | grep ^ /proc/parport/?/autoprobe | ||
| 149 | |||
| 150 | Do the /dev/video* files exist? | ||
| 151 | ls -lad /dev/video | ||
| 152 | |||
| 153 | Is the c-qcam module loaded? | ||
| 154 | modprobe -v c-qcam ; lsmod | ||
| 155 | |||
| 156 | Does the camera work with alternate programs? cqcam, etc? | ||
| 157 | |||
| 158 | |||
| 159 | |||
| 160 | |||
| 161 | 4.0 Future Work / current workarounds | ||
| 162 | |||
| 163 | It is hoped that this section will soon become obsolete, but if it | ||
| 164 | isn't, you might try patching the c-qcam module to add a parport=xxx | ||
| 165 | option as in the bw-qcam module so you can specify the parallel port: | ||
| 166 | |||
| 167 | insmod -v c-qcam parport=0 | ||
| 168 | |||
| 169 | And bypass the detection code, see ../../drivers/char/c-qcam.c and | ||
| 170 | look for the 'qc_detect' code and call. | ||
| 171 | |||
| 172 | Note that there is work in progress to change the video4linux API, | ||
| 173 | this work is documented at the video4linux2 site listed below. | ||
| 174 | |||
| 175 | |||
| 176 | 9.0 --- A sample program using v4lgrabber, | ||
| 177 | |||
| 178 | v4lgrab is a simple image grabber that will copy a frame from the | ||
| 179 | first video device, /dev/video0 to standard output in portable pixmap | ||
| 180 | format (.ppm) To produce .jpg output, you can use it like this: | ||
| 181 | 'v4lgrab | convert - c-qcam.jpg' | ||
| 182 | |||
| 183 | |||
| 184 | 10.0 --- Other Information | ||
| 185 | |||
| 186 | Use the ../../Maintainers file, particularly the VIDEO FOR LINUX and PARALLEL | ||
| 187 | PORT SUPPORT sections | ||
| 188 | |||
| 189 | The video4linux page: | ||
| 190 | http://linuxtv.org | ||
| 191 | |||
| 192 | The V4L2 API spec: | ||
| 193 | http://v4l2spec.bytesex.org/ | ||
| 194 | |||
| 195 | Some web pages about the quickcams: | ||
| 196 | http://www.pingouin-land.com/howto/QuickCam-HOWTO.html | ||
| 197 | |||
| 198 | http://www.crynwr.com/qcpc/ QuickCam Third-Party Drivers | ||
| 199 | http://www.crynwr.com/qcpc/re.html Some Reverse Engineering | ||
| 200 | http://www.wirelesscouch.net/software/gqcam/ v4l client | ||
| 201 | http://phobos.illtel.denver.co.us/pub/qcread/ doesn't use v4l | ||
| 202 | ftp://ftp.cs.unm.edu/pub/chris/quickcam/ Has lots of drivers | ||
| 203 | http://www.cs.duke.edu/~reynolds/quickcam/ Has lots of information | ||
| 204 | |||
| 205 | |||
diff --git a/Documentation/video4linux/README.tlg2300 b/Documentation/video4linux/README.tlg2300 deleted file mode 100644 index 416ccb93d8c9..000000000000 --- a/Documentation/video4linux/README.tlg2300 +++ /dev/null | |||
| @@ -1,47 +0,0 @@ | |||
| 1 | tlg2300 release notes | ||
| 2 | ==================== | ||
| 3 | |||
| 4 | This is a v4l2/dvb device driver for the tlg2300 chip. | ||
| 5 | |||
| 6 | |||
| 7 | current status | ||
| 8 | ============== | ||
| 9 | |||
| 10 | video | ||
| 11 | - support mmap and read().(no overlay) | ||
| 12 | |||
| 13 | audio | ||
| 14 | - The driver will register a ALSA card for the audio input. | ||
| 15 | |||
| 16 | vbi | ||
| 17 | - Works for almost TV norms. | ||
| 18 | |||
| 19 | dvb-t | ||
| 20 | - works for DVB-T | ||
| 21 | |||
| 22 | FM | ||
| 23 | - Works for radio. | ||
| 24 | |||
| 25 | --------------------------------------------------------------------------- | ||
| 26 | TESTED APPLICATIONS: | ||
| 27 | |||
| 28 | -VLC1.0.4 test the video and dvb. The GUI is friendly to use. | ||
| 29 | |||
| 30 | -Mplayer test the video. | ||
| 31 | |||
| 32 | -Mplayer test the FM. The mplayer should be compiled with --enable-radio and | ||
| 33 | --enable-radio-capture. | ||
| 34 | The command runs as this(The alsa audio registers to card 1): | ||
| 35 | #mplayer radio://103.7/capture/ -radio adevice=hw=1,0:arate=48000 \ | ||
| 36 | -rawaudio rate=48000:channels=2 | ||
| 37 | |||
| 38 | --------------------------------------------------------------------------- | ||
| 39 | KNOWN PROBLEMS: | ||
| 40 | about preemphasis: | ||
| 41 | You can set the preemphasis for radio by the following command: | ||
| 42 | #v4l2-ctl -d /dev/radio0 --set-ctrl=pre_emphasis_settings=1 | ||
| 43 | |||
| 44 | "pre_emphasis_settings=1" means that you select the 50us. If you want | ||
| 45 | to select the 75us, please use "pre_emphasis_settings=2" | ||
| 46 | |||
| 47 | |||
diff --git a/Documentation/video4linux/v4l2-framework.txt b/Documentation/video4linux/v4l2-framework.txt index a11dff07ef71..f586e29ce221 100644 --- a/Documentation/video4linux/v4l2-framework.txt +++ b/Documentation/video4linux/v4l2-framework.txt | |||
| @@ -793,8 +793,10 @@ video_register_device_no_warn() instead. | |||
| 793 | 793 | ||
| 794 | Whenever a device node is created some attributes are also created for you. | 794 | Whenever a device node is created some attributes are also created for you. |
| 795 | If you look in /sys/class/video4linux you see the devices. Go into e.g. | 795 | If you look in /sys/class/video4linux you see the devices. Go into e.g. |
| 796 | video0 and you will see 'name' and 'index' attributes. The 'name' attribute | 796 | video0 and you will see 'name', 'debug' and 'index' attributes. The 'name' |
| 797 | is the 'name' field of the video_device struct. | 797 | attribute is the 'name' field of the video_device struct. The 'debug' attribute |
| 798 | can be used to enable core debugging. See the next section for more detailed | ||
| 799 | information on this. | ||
| 798 | 800 | ||
| 799 | The 'index' attribute is the index of the device node: for each call to | 801 | The 'index' attribute is the index of the device node: for each call to |
| 800 | video_register_device() the index is just increased by 1. The first video | 802 | video_register_device() the index is just increased by 1. The first video |
| @@ -816,6 +818,25 @@ video_device was embedded in it. The vdev->release() callback will never | |||
| 816 | be called if the registration failed, nor should you ever attempt to | 818 | be called if the registration failed, nor should you ever attempt to |
| 817 | unregister the device if the registration failed. | 819 | unregister the device if the registration failed. |
| 818 | 820 | ||
| 821 | video device debugging | ||
| 822 | ---------------------- | ||
| 823 | |||
| 824 | The 'debug' attribute that is created for each video, vbi, radio or swradio | ||
| 825 | device in /sys/class/video4linux/<devX>/ allows you to enable logging of | ||
| 826 | file operations. | ||
| 827 | |||
| 828 | It is a bitmask and the following bits can be set: | ||
| 829 | |||
| 830 | 0x01: Log the ioctl name and error code. VIDIOC_(D)QBUF ioctls are only logged | ||
| 831 | if bit 0x08 is also set. | ||
| 832 | 0x02: Log the ioctl name arguments and error code. VIDIOC_(D)QBUF ioctls are | ||
| 833 | only logged if bit 0x08 is also set. | ||
| 834 | 0x04: Log the file operations open, release, read, write, mmap and | ||
| 835 | get_unmapped_area. The read and write operations are only logged if | ||
| 836 | bit 0x08 is also set. | ||
| 837 | 0x08: Log the read and write file operations and the VIDIOC_QBUF and | ||
| 838 | VIDIOC_DQBUF ioctls. | ||
| 839 | 0x10: Log the poll file operation. | ||
| 819 | 840 | ||
| 820 | video_device cleanup | 841 | video_device cleanup |
| 821 | -------------------- | 842 | -------------------- |
diff --git a/Documentation/video4linux/v4l2-pci-skeleton.c b/Documentation/video4linux/v4l2-pci-skeleton.c index 006721e43b2a..7bd1b975bfd2 100644 --- a/Documentation/video4linux/v4l2-pci-skeleton.c +++ b/Documentation/video4linux/v4l2-pci-skeleton.c | |||
| @@ -42,7 +42,6 @@ | |||
| 42 | MODULE_DESCRIPTION("V4L2 PCI Skeleton Driver"); | 42 | MODULE_DESCRIPTION("V4L2 PCI Skeleton Driver"); |
| 43 | MODULE_AUTHOR("Hans Verkuil"); | 43 | MODULE_AUTHOR("Hans Verkuil"); |
| 44 | MODULE_LICENSE("GPL v2"); | 44 | MODULE_LICENSE("GPL v2"); |
| 45 | MODULE_DEVICE_TABLE(pci, skeleton_pci_tbl); | ||
| 46 | 45 | ||
| 47 | /** | 46 | /** |
| 48 | * struct skeleton - All internal data for one instance of device | 47 | * struct skeleton - All internal data for one instance of device |
| @@ -95,6 +94,7 @@ static const struct pci_device_id skeleton_pci_tbl[] = { | |||
| 95 | /* { PCI_DEVICE(PCI_VENDOR_ID_, PCI_DEVICE_ID_) }, */ | 94 | /* { PCI_DEVICE(PCI_VENDOR_ID_, PCI_DEVICE_ID_) }, */ |
| 96 | { 0, } | 95 | { 0, } |
| 97 | }; | 96 | }; |
| 97 | MODULE_DEVICE_TABLE(pci, skeleton_pci_tbl); | ||
| 98 | 98 | ||
| 99 | /* | 99 | /* |
| 100 | * HDTV: this structure has the capabilities of the HDTV receiver. | 100 | * HDTV: this structure has the capabilities of the HDTV receiver. |
diff --git a/Documentation/video4linux/w9966.txt b/Documentation/video4linux/w9966.txt deleted file mode 100644 index 855024525fd2..000000000000 --- a/Documentation/video4linux/w9966.txt +++ /dev/null | |||
| @@ -1,33 +0,0 @@ | |||
| 1 | W9966 Camera driver, written by Jakob Kemi (jakob.kemi@telia.com) | ||
| 2 | |||
| 3 | After a lot of work in softice & wdasm, reading .pdf-files and tiresome | ||
| 4 | trial-and-error work I've finally got everything to work. I needed vision for a | ||
| 5 | robotics project so I borrowed this camera from a friend and started hacking. | ||
| 6 | Anyway I've converted my original code from the AVR 8bit RISC C/ASM code into | ||
| 7 | a working Linux driver. | ||
| 8 | |||
| 9 | To get it working simply configure your kernel to support | ||
| 10 | parport, ieee1284, video4linux and w9966 | ||
| 11 | |||
| 12 | If w9966 is statically linked it will always perform aggressive probing for | ||
| 13 | the camera. If built as a module you'll have more configuration options. | ||
| 14 | |||
| 15 | Options: | ||
| 16 | modprobe w9966.o pardev=parport0(or whatever) parmode=0 (0=auto, 1=ecp, 2=epp) | ||
| 17 | voila! | ||
| 18 | |||
| 19 | you can also type 'modinfo -p w9966.o' for option usage | ||
| 20 | (or checkout w9966.c) | ||
| 21 | |||
| 22 | The only thing to keep in mind is that the image format is in Y-U-Y-V format | ||
| 23 | where every two pixels take 4 bytes. In SDL (www.libsdl.org) this format | ||
| 24 | is called VIDEO_PALETTE_YUV422 (16 bpp). | ||
| 25 | |||
| 26 | A minimal test application (with source) is available from: | ||
| 27 | http://www.slackwaresupport.com/howtos/Webcam-HOWTO | ||
| 28 | |||
| 29 | The slow framerate is due to missing DMA ECP read support in the | ||
| 30 | parport drivers. I might add working EPP support later. | ||
| 31 | |||
| 32 | Good luck! | ||
| 33 | /Jakob Kemi | ||
diff --git a/Documentation/virtual/00-INDEX b/Documentation/virtual/00-INDEX index e952d30bbf0f..af0d23968ee7 100644 --- a/Documentation/virtual/00-INDEX +++ b/Documentation/virtual/00-INDEX | |||
| @@ -2,6 +2,9 @@ Virtualization support in the Linux kernel. | |||
| 2 | 2 | ||
| 3 | 00-INDEX | 3 | 00-INDEX |
| 4 | - this file. | 4 | - this file. |
| 5 | |||
| 6 | paravirt_ops.txt | ||
| 7 | - Describes the Linux kernel pv_ops to support different hypervisors | ||
| 5 | kvm/ | 8 | kvm/ |
| 6 | - Kernel Virtual Machine. See also http://linux-kvm.org | 9 | - Kernel Virtual Machine. See also http://linux-kvm.org |
| 7 | uml/ | 10 | uml/ |
diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt index 0007fef4ed81..b112efc816f1 100644 --- a/Documentation/virtual/kvm/api.txt +++ b/Documentation/virtual/kvm/api.txt | |||
| @@ -612,11 +612,14 @@ Type: vm ioctl | |||
| 612 | Parameters: none | 612 | Parameters: none |
| 613 | Returns: 0 on success, -1 on error | 613 | Returns: 0 on success, -1 on error |
| 614 | 614 | ||
| 615 | Creates an interrupt controller model in the kernel. On x86, creates a virtual | 615 | Creates an interrupt controller model in the kernel. |
| 616 | ioapic, a virtual PIC (two PICs, nested), and sets up future vcpus to have a | 616 | On x86, creates a virtual ioapic, a virtual PIC (two PICs, nested), and sets up |
| 617 | local APIC. IRQ routing for GSIs 0-15 is set to both PIC and IOAPIC; GSI 16-23 | 617 | future vcpus to have a local APIC. IRQ routing for GSIs 0-15 is set to both |
| 618 | only go to the IOAPIC. On ARM/arm64, a GIC is | 618 | PIC and IOAPIC; GSI 16-23 only go to the IOAPIC. |
| 619 | created. On s390, a dummy irq routing table is created. | 619 | On ARM/arm64, a GICv2 is created. Any other GIC versions require the usage of |
| 620 | KVM_CREATE_DEVICE, which also supports creating a GICv2. Using | ||
| 621 | KVM_CREATE_DEVICE is preferred over KVM_CREATE_IRQCHIP for GICv2. | ||
| 622 | On s390, a dummy irq routing table is created. | ||
| 620 | 623 | ||
| 621 | Note that on s390 the KVM_CAP_S390_IRQCHIP vm capability needs to be enabled | 624 | Note that on s390 the KVM_CAP_S390_IRQCHIP vm capability needs to be enabled |
| 622 | before KVM_CREATE_IRQCHIP can be used. | 625 | before KVM_CREATE_IRQCHIP can be used. |
| @@ -2312,7 +2315,7 @@ struct kvm_s390_interrupt { | |||
| 2312 | 2315 | ||
| 2313 | type can be one of the following: | 2316 | type can be one of the following: |
| 2314 | 2317 | ||
| 2315 | KVM_S390_SIGP_STOP (vcpu) - sigp restart | 2318 | KVM_S390_SIGP_STOP (vcpu) - sigp stop; optional flags in parm |
| 2316 | KVM_S390_PROGRAM_INT (vcpu) - program check; code in parm | 2319 | KVM_S390_PROGRAM_INT (vcpu) - program check; code in parm |
| 2317 | KVM_S390_SIGP_SET_PREFIX (vcpu) - sigp set prefix; prefix address in parm | 2320 | KVM_S390_SIGP_SET_PREFIX (vcpu) - sigp set prefix; prefix address in parm |
| 2318 | KVM_S390_RESTART (vcpu) - restart | 2321 | KVM_S390_RESTART (vcpu) - restart |
| @@ -3225,3 +3228,23 @@ userspace from doing that. | |||
| 3225 | If the hcall number specified is not one that has an in-kernel | 3228 | If the hcall number specified is not one that has an in-kernel |
| 3226 | implementation, the KVM_ENABLE_CAP ioctl will fail with an EINVAL | 3229 | implementation, the KVM_ENABLE_CAP ioctl will fail with an EINVAL |
| 3227 | error. | 3230 | error. |
| 3231 | |||
| 3232 | 7.2 KVM_CAP_S390_USER_SIGP | ||
| 3233 | |||
| 3234 | Architectures: s390 | ||
| 3235 | Parameters: none | ||
| 3236 | |||
| 3237 | This capability controls which SIGP orders will be handled completely in user | ||
| 3238 | space. With this capability enabled, all fast orders will be handled completely | ||
| 3239 | in the kernel: | ||
| 3240 | - SENSE | ||
| 3241 | - SENSE RUNNING | ||
| 3242 | - EXTERNAL CALL | ||
| 3243 | - EMERGENCY SIGNAL | ||
| 3244 | - CONDITIONAL EMERGENCY SIGNAL | ||
| 3245 | |||
| 3246 | All other orders will be handled completely in user space. | ||
| 3247 | |||
| 3248 | Only privileged operation exceptions will be checked for in the kernel (or even | ||
| 3249 | in the hardware prior to interception). If this capability is not enabled, the | ||
| 3250 | old way of handling SIGP orders is used (partially in kernel and user space). | ||
diff --git a/Documentation/virtual/kvm/devices/arm-vgic.txt b/Documentation/virtual/kvm/devices/arm-vgic.txt index df8b0c7540b6..3fb905429e8a 100644 --- a/Documentation/virtual/kvm/devices/arm-vgic.txt +++ b/Documentation/virtual/kvm/devices/arm-vgic.txt | |||
| @@ -3,22 +3,42 @@ ARM Virtual Generic Interrupt Controller (VGIC) | |||
| 3 | 3 | ||
| 4 | Device types supported: | 4 | Device types supported: |
| 5 | KVM_DEV_TYPE_ARM_VGIC_V2 ARM Generic Interrupt Controller v2.0 | 5 | KVM_DEV_TYPE_ARM_VGIC_V2 ARM Generic Interrupt Controller v2.0 |
| 6 | KVM_DEV_TYPE_ARM_VGIC_V3 ARM Generic Interrupt Controller v3.0 | ||
| 6 | 7 | ||
| 7 | Only one VGIC instance may be instantiated through either this API or the | 8 | Only one VGIC instance may be instantiated through either this API or the |
| 8 | legacy KVM_CREATE_IRQCHIP api. The created VGIC will act as the VM interrupt | 9 | legacy KVM_CREATE_IRQCHIP api. The created VGIC will act as the VM interrupt |
| 9 | controller, requiring emulated user-space devices to inject interrupts to the | 10 | controller, requiring emulated user-space devices to inject interrupts to the |
| 10 | VGIC instead of directly to CPUs. | 11 | VGIC instead of directly to CPUs. |
| 11 | 12 | ||
| 13 | Creating a guest GICv3 device requires a host GICv3 as well. | ||
| 14 | GICv3 implementations with hardware compatibility support allow a guest GICv2 | ||
| 15 | as well. | ||
| 16 | |||
| 12 | Groups: | 17 | Groups: |
| 13 | KVM_DEV_ARM_VGIC_GRP_ADDR | 18 | KVM_DEV_ARM_VGIC_GRP_ADDR |
| 14 | Attributes: | 19 | Attributes: |
| 15 | KVM_VGIC_V2_ADDR_TYPE_DIST (rw, 64-bit) | 20 | KVM_VGIC_V2_ADDR_TYPE_DIST (rw, 64-bit) |
| 16 | Base address in the guest physical address space of the GIC distributor | 21 | Base address in the guest physical address space of the GIC distributor |
| 17 | register mappings. | 22 | register mappings. Only valid for KVM_DEV_TYPE_ARM_VGIC_V2. |
| 23 | This address needs to be 4K aligned and the region covers 4 KByte. | ||
| 18 | 24 | ||
| 19 | KVM_VGIC_V2_ADDR_TYPE_CPU (rw, 64-bit) | 25 | KVM_VGIC_V2_ADDR_TYPE_CPU (rw, 64-bit) |
| 20 | Base address in the guest physical address space of the GIC virtual cpu | 26 | Base address in the guest physical address space of the GIC virtual cpu |
| 21 | interface register mappings. | 27 | interface register mappings. Only valid for KVM_DEV_TYPE_ARM_VGIC_V2. |
| 28 | This address needs to be 4K aligned and the region covers 4 KByte. | ||
| 29 | |||
| 30 | KVM_VGIC_V3_ADDR_TYPE_DIST (rw, 64-bit) | ||
| 31 | Base address in the guest physical address space of the GICv3 distributor | ||
| 32 | register mappings. Only valid for KVM_DEV_TYPE_ARM_VGIC_V3. | ||
| 33 | This address needs to be 64K aligned and the region covers 64 KByte. | ||
| 34 | |||
| 35 | KVM_VGIC_V3_ADDR_TYPE_REDIST (rw, 64-bit) | ||
| 36 | Base address in the guest physical address space of the GICv3 | ||
| 37 | redistributor register mappings. There are two 64K pages for each | ||
| 38 | VCPU and all of the redistributor pages are contiguous. | ||
| 39 | Only valid for KVM_DEV_TYPE_ARM_VGIC_V3. | ||
| 40 | This address needs to be 64K aligned. | ||
| 41 | |||
| 22 | 42 | ||
| 23 | KVM_DEV_ARM_VGIC_GRP_DIST_REGS | 43 | KVM_DEV_ARM_VGIC_GRP_DIST_REGS |
| 24 | Attributes: | 44 | Attributes: |
| @@ -36,6 +56,7 @@ Groups: | |||
| 36 | the register. | 56 | the register. |
| 37 | Limitations: | 57 | Limitations: |
| 38 | - Priorities are not implemented, and registers are RAZ/WI | 58 | - Priorities are not implemented, and registers are RAZ/WI |
| 59 | - Currently only implemented for KVM_DEV_TYPE_ARM_VGIC_V2. | ||
| 39 | Errors: | 60 | Errors: |
| 40 | -ENODEV: Getting or setting this register is not yet supported | 61 | -ENODEV: Getting or setting this register is not yet supported |
| 41 | -EBUSY: One or more VCPUs are running | 62 | -EBUSY: One or more VCPUs are running |
| @@ -68,6 +89,7 @@ Groups: | |||
| 68 | 89 | ||
| 69 | Limitations: | 90 | Limitations: |
| 70 | - Priorities are not implemented, and registers are RAZ/WI | 91 | - Priorities are not implemented, and registers are RAZ/WI |
| 92 | - Currently only implemented for KVM_DEV_TYPE_ARM_VGIC_V2. | ||
| 71 | Errors: | 93 | Errors: |
| 72 | -ENODEV: Getting or setting this register is not yet supported | 94 | -ENODEV: Getting or setting this register is not yet supported |
| 73 | -EBUSY: One or more VCPUs are running | 95 | -EBUSY: One or more VCPUs are running |
| @@ -81,3 +103,14 @@ Groups: | |||
| 81 | -EINVAL: Value set is out of the expected range | 103 | -EINVAL: Value set is out of the expected range |
| 82 | -EBUSY: Value has already be set, or GIC has already been initialized | 104 | -EBUSY: Value has already be set, or GIC has already been initialized |
| 83 | with default values. | 105 | with default values. |
| 106 | |||
| 107 | KVM_DEV_ARM_VGIC_GRP_CTRL | ||
| 108 | Attributes: | ||
| 109 | KVM_DEV_ARM_VGIC_CTRL_INIT | ||
| 110 | request the initialization of the VGIC, no additional parameter in | ||
| 111 | kvm_device_attr.addr. | ||
| 112 | Errors: | ||
| 113 | -ENXIO: VGIC not properly configured as required prior to calling | ||
| 114 | this attribute | ||
| 115 | -ENODEV: no online VCPU | ||
| 116 | -ENOMEM: memory shortage when allocating vgic internal data | ||
diff --git a/Documentation/virtual/kvm/devices/vm.txt b/Documentation/virtual/kvm/devices/vm.txt index d426fc87fe93..5542c4641a3c 100644 --- a/Documentation/virtual/kvm/devices/vm.txt +++ b/Documentation/virtual/kvm/devices/vm.txt | |||
| @@ -24,3 +24,62 @@ Returns: 0 | |||
| 24 | 24 | ||
| 25 | Clear the CMMA status for all guest pages, so any pages the guest marked | 25 | Clear the CMMA status for all guest pages, so any pages the guest marked |
| 26 | as unused are again used any may not be reclaimed by the host. | 26 | as unused are again used any may not be reclaimed by the host. |
| 27 | |||
| 28 | 1.3. ATTRIBUTE KVM_S390_VM_MEM_LIMIT_SIZE | ||
| 29 | Parameters: in attr->addr the address for the new limit of guest memory | ||
| 30 | Returns: -EFAULT if the given address is not accessible | ||
| 31 | -EINVAL if the virtual machine is of type UCONTROL | ||
| 32 | -E2BIG if the given guest memory is to big for that machine | ||
| 33 | -EBUSY if a vcpu is already defined | ||
| 34 | -ENOMEM if not enough memory is available for a new shadow guest mapping | ||
| 35 | 0 otherwise | ||
| 36 | |||
| 37 | Allows userspace to query the actual limit and set a new limit for | ||
| 38 | the maximum guest memory size. The limit will be rounded up to | ||
| 39 | 2048 MB, 4096 GB, 8192 TB respectively, as this limit is governed by | ||
| 40 | the number of page table levels. | ||
| 41 | |||
| 42 | 2. GROUP: KVM_S390_VM_CPU_MODEL | ||
| 43 | Architectures: s390 | ||
| 44 | |||
| 45 | 2.1. ATTRIBUTE: KVM_S390_VM_CPU_MACHINE (r/o) | ||
| 46 | |||
| 47 | Allows user space to retrieve machine and kvm specific cpu related information: | ||
| 48 | |||
| 49 | struct kvm_s390_vm_cpu_machine { | ||
| 50 | __u64 cpuid; # CPUID of host | ||
| 51 | __u32 ibc; # IBC level range offered by host | ||
| 52 | __u8 pad[4]; | ||
| 53 | __u64 fac_mask[256]; # set of cpu facilities enabled by KVM | ||
| 54 | __u64 fac_list[256]; # set of cpu facilities offered by host | ||
| 55 | } | ||
| 56 | |||
| 57 | Parameters: address of buffer to store the machine related cpu data | ||
| 58 | of type struct kvm_s390_vm_cpu_machine* | ||
| 59 | Returns: -EFAULT if the given address is not accessible from kernel space | ||
| 60 | -ENOMEM if not enough memory is available to process the ioctl | ||
| 61 | 0 in case of success | ||
| 62 | |||
| 63 | 2.2. ATTRIBUTE: KVM_S390_VM_CPU_PROCESSOR (r/w) | ||
| 64 | |||
| 65 | Allows user space to retrieve or request to change cpu related information for a vcpu: | ||
| 66 | |||
| 67 | struct kvm_s390_vm_cpu_processor { | ||
| 68 | __u64 cpuid; # CPUID currently (to be) used by this vcpu | ||
| 69 | __u16 ibc; # IBC level currently (to be) used by this vcpu | ||
| 70 | __u8 pad[6]; | ||
| 71 | __u64 fac_list[256]; # set of cpu facilities currently (to be) used | ||
| 72 | # by this vcpu | ||
| 73 | } | ||
| 74 | |||
| 75 | KVM does not enforce or limit the cpu model data in any form. Take the information | ||
| 76 | retrieved by means of KVM_S390_VM_CPU_MACHINE as hint for reasonable configuration | ||
| 77 | setups. Instruction interceptions triggered by additionally set facilitiy bits that | ||
| 78 | are not handled by KVM need to by imlemented in the VM driver code. | ||
| 79 | |||
| 80 | Parameters: address of buffer to store/set the processor related cpu | ||
| 81 | data of type struct kvm_s390_vm_cpu_processor*. | ||
| 82 | Returns: -EBUSY in case 1 or more vcpus are already activated (only in write case) | ||
| 83 | -EFAULT if the given address is not accessible from kernel space | ||
| 84 | -ENOMEM if not enough memory is available to process the ioctl | ||
| 85 | 0 in case of success | ||
diff --git a/Documentation/virtual/paravirt_ops.txt b/Documentation/virtual/paravirt_ops.txt new file mode 100644 index 000000000000..d4881c00e339 --- /dev/null +++ b/Documentation/virtual/paravirt_ops.txt | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | Paravirt_ops | ||
| 2 | ============ | ||
| 3 | |||
| 4 | Linux provides support for different hypervisor virtualization technologies. | ||
| 5 | Historically different binary kernels would be required in order to support | ||
| 6 | different hypervisors, this restriction was removed with pv_ops. | ||
| 7 | Linux pv_ops is a virtualization API which enables support for different | ||
| 8 | hypervisors. It allows each hypervisor to override critical operations and | ||
| 9 | allows a single kernel binary to run on all supported execution environments | ||
| 10 | including native machine -- without any hypervisors. | ||
| 11 | |||
| 12 | pv_ops provides a set of function pointers which represent operations | ||
| 13 | corresponding to low level critical instructions and high level | ||
| 14 | functionalities in various areas. pv-ops allows for optimizations at run | ||
| 15 | time by enabling binary patching of the low-ops critical operations | ||
| 16 | at boot time. | ||
| 17 | |||
| 18 | pv_ops operations are classified into three categories: | ||
| 19 | |||
| 20 | - simple indirect call | ||
| 21 | These operations correspond to high level functionality where it is | ||
| 22 | known that the overhead of indirect call isn't very important. | ||
| 23 | |||
| 24 | - indirect call which allows optimization with binary patch | ||
| 25 | Usually these operations correspond to low level critical instructions. They | ||
| 26 | are called frequently and are performance critical. The overhead is | ||
| 27 | very important. | ||
| 28 | |||
| 29 | - a set of macros for hand written assembly code | ||
| 30 | Hand written assembly codes (.S files) also need paravirtualization | ||
| 31 | because they include sensitive instructions or some of code paths in | ||
| 32 | them are very performance critical. | ||
diff --git a/Documentation/vm/cleancache.txt b/Documentation/vm/cleancache.txt index 142fbb0f325a..01d76282444e 100644 --- a/Documentation/vm/cleancache.txt +++ b/Documentation/vm/cleancache.txt | |||
| @@ -85,7 +85,7 @@ lock the page to ensure serial behavior. | |||
| 85 | CLEANCACHE PERFORMANCE METRICS | 85 | CLEANCACHE PERFORMANCE METRICS |
| 86 | 86 | ||
| 87 | If properly configured, monitoring of cleancache is done via debugfs in | 87 | If properly configured, monitoring of cleancache is done via debugfs in |
| 88 | the /sys/kernel/debug/mm/cleancache directory. The effectiveness of cleancache | 88 | the /sys/kernel/debug/cleancache directory. The effectiveness of cleancache |
| 89 | can be measured (across all filesystems) with: | 89 | can be measured (across all filesystems) with: |
| 90 | 90 | ||
| 91 | succ_gets - number of gets that were successful | 91 | succ_gets - number of gets that were successful |
diff --git a/Documentation/vm/pagemap.txt b/Documentation/vm/pagemap.txt index 5948e455c4d2..6fbd55ef6b45 100644 --- a/Documentation/vm/pagemap.txt +++ b/Documentation/vm/pagemap.txt | |||
| @@ -62,6 +62,8 @@ There are three components to pagemap: | |||
| 62 | 20. NOPAGE | 62 | 20. NOPAGE |
| 63 | 21. KSM | 63 | 21. KSM |
| 64 | 22. THP | 64 | 22. THP |
| 65 | 23. BALLOON | ||
| 66 | 24. ZERO_PAGE | ||
| 65 | 67 | ||
| 66 | Short descriptions to the page flags: | 68 | Short descriptions to the page flags: |
| 67 | 69 | ||
| @@ -102,6 +104,12 @@ Short descriptions to the page flags: | |||
| 102 | 22. THP | 104 | 22. THP |
| 103 | contiguous pages which construct transparent hugepages | 105 | contiguous pages which construct transparent hugepages |
| 104 | 106 | ||
| 107 | 23. BALLOON | ||
| 108 | balloon compaction page | ||
| 109 | |||
| 110 | 24. ZERO_PAGE | ||
| 111 | zero page for pfn_zero or huge_zero page | ||
| 112 | |||
| 105 | [IO related page flags] | 113 | [IO related page flags] |
| 106 | 1. ERROR IO error occurred | 114 | 1. ERROR IO error occurred |
| 107 | 3. UPTODATE page has up-to-date data | 115 | 3. UPTODATE page has up-to-date data |
diff --git a/Documentation/vm/remap_file_pages.txt b/Documentation/vm/remap_file_pages.txt index 560e4363a55d..f609142f406a 100644 --- a/Documentation/vm/remap_file_pages.txt +++ b/Documentation/vm/remap_file_pages.txt | |||
| @@ -18,10 +18,9 @@ on 32-bit systems to map files bigger than can linearly fit into 32-bit | |||
| 18 | virtual address space. This use-case is not critical anymore since 64-bit | 18 | virtual address space. This use-case is not critical anymore since 64-bit |
| 19 | systems are widely available. | 19 | systems are widely available. |
| 20 | 20 | ||
| 21 | The plan is to deprecate the syscall and replace it with an emulation. | 21 | The syscall is deprecated and replaced it with an emulation now. The |
| 22 | The emulation will create new VMAs instead of nonlinear mappings. It's | 22 | emulation creates new VMAs instead of nonlinear mappings. It's going to |
| 23 | going to work slower for rare users of remap_file_pages() but ABI is | 23 | work slower for rare users of remap_file_pages() but ABI is preserved. |
| 24 | preserved. | ||
| 25 | 24 | ||
| 26 | One side effect of emulation (apart from performance) is that user can hit | 25 | One side effect of emulation (apart from performance) is that user can hit |
| 27 | vm.max_map_count limit more easily due to additional VMAs. See comment for | 26 | vm.max_map_count limit more easily due to additional VMAs. See comment for |
diff --git a/Documentation/x86/entry_64.txt b/Documentation/x86/entry_64.txt index 4a1c5c2dc5a9..9132b86176a3 100644 --- a/Documentation/x86/entry_64.txt +++ b/Documentation/x86/entry_64.txt | |||
| @@ -78,9 +78,6 @@ The expensive (paranoid) way is to read back the MSR_GS_BASE value | |||
| 78 | xorl %ebx,%ebx | 78 | xorl %ebx,%ebx |
| 79 | 1: ret | 79 | 1: ret |
| 80 | 80 | ||
| 81 | and the whole paranoid non-paranoid macro complexity is about whether | ||
| 82 | to suffer that RDMSR cost. | ||
| 83 | |||
| 84 | If we are at an interrupt or user-trap/gate-alike boundary then we can | 81 | If we are at an interrupt or user-trap/gate-alike boundary then we can |
| 85 | use the faster check: the stack will be a reliable indicator of | 82 | use the faster check: the stack will be a reliable indicator of |
| 86 | whether SWAPGS was already done: if we see that we are a secondary | 83 | whether SWAPGS was already done: if we see that we are a secondary |
| @@ -93,6 +90,15 @@ which might have triggered right after a normal entry wrote CS to the | |||
| 93 | stack but before we executed SWAPGS, then the only safe way to check | 90 | stack but before we executed SWAPGS, then the only safe way to check |
| 94 | for GS is the slower method: the RDMSR. | 91 | for GS is the slower method: the RDMSR. |
| 95 | 92 | ||
| 96 | So we try only to mark those entry methods 'paranoid' that absolutely | 93 | Therefore, super-atomic entries (except NMI, which is handled separately) |
| 97 | need the more expensive check for the GS base - and we generate all | 94 | must use idtentry with paranoid=1 to handle gsbase correctly. This |
| 98 | 'normal' entry points with the regular (faster) entry macros. | 95 | triggers three main behavior changes: |
| 96 | |||
| 97 | - Interrupt entry will use the slower gsbase check. | ||
| 98 | - Interrupt entry from user mode will switch off the IST stack. | ||
| 99 | - Interrupt exit to kernel mode will not attempt to reschedule. | ||
| 100 | |||
| 101 | We try to only use IST entries and the paranoid entry code for vectors | ||
| 102 | that absolutely need the more expensive check for the GS base - and we | ||
| 103 | generate all 'normal' entry points with the regular (faster) paranoid=0 | ||
| 104 | variant. | ||
diff --git a/Documentation/x86/x86_64/kernel-stacks b/Documentation/x86/x86_64/kernel-stacks index a01eec5d1d0b..e3c8a49d1a2f 100644 --- a/Documentation/x86/x86_64/kernel-stacks +++ b/Documentation/x86/x86_64/kernel-stacks | |||
| @@ -40,9 +40,11 @@ An IST is selected by a non-zero value in the IST field of an | |||
| 40 | interrupt-gate descriptor. When an interrupt occurs and the hardware | 40 | interrupt-gate descriptor. When an interrupt occurs and the hardware |
| 41 | loads such a descriptor, the hardware automatically sets the new stack | 41 | loads such a descriptor, the hardware automatically sets the new stack |
| 42 | pointer based on the IST value, then invokes the interrupt handler. If | 42 | pointer based on the IST value, then invokes the interrupt handler. If |
| 43 | software wants to allow nested IST interrupts then the handler must | 43 | the interrupt came from user mode, then the interrupt handler prologue |
| 44 | adjust the IST values on entry to and exit from the interrupt handler. | 44 | will switch back to the per-thread stack. If software wants to allow |
| 45 | (This is occasionally done, e.g. for debug exceptions.) | 45 | nested IST interrupts then the handler must adjust the IST values on |
| 46 | entry to and exit from the interrupt handler. (This is occasionally | ||
| 47 | done, e.g. for debug exceptions.) | ||
| 46 | 48 | ||
| 47 | Events with different IST codes (i.e. with different stacks) can be | 49 | Events with different IST codes (i.e. with different stacks) can be |
| 48 | nested. For example, a debug interrupt can safely be interrupted by an | 50 | nested. For example, a debug interrupt can safely be interrupted by an |
diff --git a/Documentation/x86/x86_64/mm.txt b/Documentation/x86/x86_64/mm.txt index 052ee643a32e..05712ac83e38 100644 --- a/Documentation/x86/x86_64/mm.txt +++ b/Documentation/x86/x86_64/mm.txt | |||
| @@ -12,6 +12,8 @@ ffffc90000000000 - ffffe8ffffffffff (=45 bits) vmalloc/ioremap space | |||
| 12 | ffffe90000000000 - ffffe9ffffffffff (=40 bits) hole | 12 | ffffe90000000000 - ffffe9ffffffffff (=40 bits) hole |
| 13 | ffffea0000000000 - ffffeaffffffffff (=40 bits) virtual memory map (1TB) | 13 | ffffea0000000000 - ffffeaffffffffff (=40 bits) virtual memory map (1TB) |
| 14 | ... unused hole ... | 14 | ... unused hole ... |
| 15 | ffffec0000000000 - fffffc0000000000 (=44 bits) kasan shadow memory (16TB) | ||
| 16 | ... unused hole ... | ||
| 15 | ffffff0000000000 - ffffff7fffffffff (=39 bits) %esp fixup stacks | 17 | ffffff0000000000 - ffffff7fffffffff (=39 bits) %esp fixup stacks |
| 16 | ... unused hole ... | 18 | ... unused hole ... |
| 17 | ffffffff80000000 - ffffffffa0000000 (=512 MB) kernel text mapping, from phys 0 | 19 | ffffffff80000000 - ffffffffa0000000 (=512 MB) kernel text mapping, from phys 0 |
diff --git a/Documentation/x86/zero-page.txt b/Documentation/x86/zero-page.txt index 199f453cb4de..82fbdbc1e0b0 100644 --- a/Documentation/x86/zero-page.txt +++ b/Documentation/x86/zero-page.txt | |||
| @@ -3,7 +3,7 @@ protocol of kernel. These should be filled by bootloader or 16-bit | |||
| 3 | real-mode setup code of the kernel. References/settings to it mainly | 3 | real-mode setup code of the kernel. References/settings to it mainly |
| 4 | are in: | 4 | are in: |
| 5 | 5 | ||
| 6 | arch/x86/include/asm/bootparam.h | 6 | arch/x86/include/uapi/asm/bootparam.h |
| 7 | 7 | ||
| 8 | 8 | ||
| 9 | Offset Proto Name Meaning | 9 | Offset Proto Name Meaning |
