Unified · Split
| @@ -43,6 +43,7 @@ Module.symvers · 42 unmodified lines | ||
| 43 | 43 | /TAGS |
| 44 | 44 | /linux |
| 45 | 45 | /vmlinux |
| 46 | +/vmlinux-gdb.py | |
| 46 | 47 | /vmlinuz |
| 47 | 48 | /System.map |
| 48 | 49 | /Module.markers |
| @@ -52,6 +53,11 @@ Module.symvers · 3 unmodified lines | ||
| 52 | 53 | # |
| 53 | 54 | /debian/ |
| 54 | 55 | |
| 56 | +# | |
| 57 | +# tar directory (make tar*-pkg) | |
| 58 | +# | |
| 59 | +/tar-install/ | |
| 60 | + | |
| 55 | 61 | # |
| 56 | 62 | # git files that we don't want to ignore even it they are dot-files |
| 57 | 63 | # |
| @@ -73,6 +73,7 @@ Juha Yrjola <juha.yrjola@nokia.com> · 72 unmodified lines | ||
| 73 | 73 | Juha Yrjola <juha.yrjola@solidboot.com> |
| 74 | 74 | Kay Sievers <kay.sievers@vrfy.org> |
| 75 | 75 | Kenneth W Chen <kenneth.w.chen@intel.com> |
| 76 | +Konstantin Khlebnikov <koct9i@gmail.com> <k.khlebnikov@samsung.com> | |
| 76 | 77 | Koushik <raghavendra.koushik@neterion.com> |
| 77 | 78 | Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> |
| 78 | 79 | Leonid I Ananiev <leonid.i.ananiev@intel.com> |
| @@ -29,8 +29,6 @@ DMA-ISA-LPC.txt · 28 unmodified lines | ||
| 29 | 29 | - How to do DMA with ISA (and LPC) devices. |
| 30 | 30 | DMA-attributes.txt |
| 31 | 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 | 32 | DocBook/ |
| 35 | 33 | - directory with DocBook templates etc. for kernel documentation. |
| 36 | 34 | EDID/ |
| @@ -163,8 +161,6 @@ digsig.txt · 126 unmodified lines | ||
| 163 | 161 | -info on the Digital Signature Verification API |
| 164 | 162 | dma-buf-sharing.txt |
| 165 | 163 | - the DMA Buffer Sharing API Guide |
| 166 | −dmaengine.txt | |
| 167 | − -the DMA Engine API Guide | |
| 168 | 164 | dontdiff |
| 169 | 165 | - file containing a list of files that should never be diff'ed. |
| 170 | 166 | driver-model/ |
| @@ -209,6 +205,8 @@ hid/ · 38 unmodified lines | ||
| 209 | 205 | - directory with information on human interface devices |
| 210 | 206 | highuid.txt |
| 211 | 207 | - notes on the change from 16 bit to 32 bit user/group IDs. |
| 208 | +hsi.txt | |
| 209 | + - HSI subsystem overview. | |
| 212 | 210 | hwspinlock.txt |
| 213 | 211 | - hardware spinlock provides hardware assistance for synchronization |
| 214 | 212 | timers/ |
| @@ -277,6 +275,8 @@ kprobes.txt · 62 unmodified lines | ||
| 277 | 275 | - documents the kernel probes debugging feature. |
| 278 | 276 | kref.txt |
| 279 | 277 | - docs on adding reference counters (krefs) to kernel objects. |
| 278 | +kselftest.txt | |
| 279 | + - small unittests for (some) individual codepaths in the kernel. | |
| 280 | 280 | laptops/ |
| 281 | 281 | - directory with laptop related info and laptop driver documentation. |
| 282 | 282 | ldm.txt |
| @@ -285,22 +285,22 @@ leds/ · 2 unmodified lines | ||
| 285 | 285 | - directory with info about LED handling under Linux. |
| 286 | 286 | local_ops.txt |
| 287 | 287 | - semantics and behavior of local atomic operations. |
| 288 | −lockdep-design.txt | |
| 289 | − - documentation on the runtime locking correctness validator. | |
| 290 | 288 | locking/ |
| 291 | 289 | - directory with info about kernel locking primitives |
| 292 | −lockstat.txt | |
| 293 | − - info on collecting statistics on locks (and contention). | |
| 294 | 290 | lockup-watchdogs.txt |
| 295 | 291 | - info on soft and hard lockup detectors (aka nmi_watchdog). |
| 296 | 292 | logo.gif |
| 297 | 293 | - full colour GIF image of Linux logo (penguin - Tux). |
| 298 | 294 | logo.txt |
| 299 | 295 | - info on creator of above logo & site to get additional images from. |
| 296 | +lzo.txt | |
| 297 | + - kernel LZO decompressor input formats | |
| 300 | 298 | m68k/ |
| 301 | 299 | - directory with info about Linux on Motorola 68k architecture. |
| 302 | 300 | magic-number.txt |
| 303 | 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 | 304 | md.txt |
| 305 | 305 | - info on boot arguments for the multiple devices driver. |
| 306 | 306 | media-framework.txt |
| @@ -327,8 +327,6 @@ mtd/ · 20 unmodified lines | ||
| 327 | 327 | - directory with info about memory technology devices (flash) |
| 328 | 328 | mono.txt |
| 329 | 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 | 330 | namespaces/ |
| 333 | 331 | - directory with various information about namespaces |
| 334 | 332 | netlabel/ |
| @@ -395,10 +393,6 @@ robust-futexes.txt · 60 unmodified lines | ||
| 395 | 393 | - a description of what robust futexes are. |
| 396 | 394 | rpmsg.txt |
| 397 | 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 | 396 | rtc.txt |
| 403 | 397 | - notes on how to use the Real Time Clock (aka CMOS clock) driver. |
| 404 | 398 | s390/ |
| @@ -425,8 +419,6 @@ sparse.txt · 20 unmodified lines | ||
| 425 | 419 | - info on how to obtain and use the sparse tool for typechecking. |
| 426 | 420 | spi/ |
| 427 | 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 | 422 | stable_api_nonsense.txt |
| 431 | 423 | - info on why the kernel does not have a stable in-kernel api or abi. |
| 432 | 424 | stable_kernel_rules.txt |
| @@ -483,10 +475,10 @@ wimax/ · 50 unmodified lines | ||
| 483 | 475 | - directory with info about Intel Wireless Wimax Connections |
| 484 | 476 | workqueue.txt |
| 485 | 477 | - information on the Concurrency Managed Workqueue implementation |
| 486 | −ww-mutex-design.txt | |
| 487 | − - Intro to Mutex wait/would deadlock handling.s | |
| 488 | 478 | x86/x86_64/ |
| 489 | 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 | 482 | xtensa/ |
| 491 | 483 | - directory with documents relating to arch/xtensa port/implementation |
| 492 | 484 | xz.txt |
| @@ -1,4 +1,4 @@ | ||
| 1 | −What: /sys/class/misc/tpmX/device/ | |
| 1 | +What: /sys/class/tpm/tpmX/device/ | |
| 2 | 2 | Date: April 2005 |
| 3 | 3 | KernelVersion: 2.6.12 |
| 4 | 4 | Contact: tpmdd-devel@lists.sf.net |
| @@ -6,7 +6,7 @@ Description: The device/ directory under a specific TPM instance exposes · 1 unmodified line | ||
| 6 | 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 | 10 | Date: April 2006 |
| 11 | 11 | KernelVersion: 2.6.17 |
| 12 | 12 | Contact: tpmdd-devel@lists.sf.net |
| @@ -18,7 +18,7 @@ Description: The "active" property prints a '1' if the TPM chip is accepting · 5 unmodified lines | ||
| 18 | 18 | section 17 for more information on which commands are |
| 19 | 19 | available. |
| 20 | 20 | |
| 21 | −What: /sys/class/misc/tpmX/device/cancel | |
| 21 | +What: /sys/class/tpm/tpmX/device/cancel | |
| 22 | 22 | Date: June 2005 |
| 23 | 23 | KernelVersion: 2.6.13 |
| 24 | 24 | Contact: tpmdd-devel@lists.sf.net |
| @@ -26,7 +26,7 @@ Description: The "cancel" property allows you to cancel the currently · 1 unmodified line | ||
| 26 | 26 | pending TPM command. Writing any value to cancel will call the |
| 27 | 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 | 30 | Date: April 2005 |
| 31 | 31 | KernelVersion: 2.6.12 |
| 32 | 32 | Contact: tpmdd-devel@lists.sf.net |
| @@ -43,7 +43,7 @@ Description: The "caps" property contains TPM manufacturer and version info. · 10 unmodified lines | ||
| 43 | 43 | the chip supports. Firmware version is that of the chip and |
| 44 | 44 | is manufacturer specific. |
| 45 | 45 | |
| 46 | −What: /sys/class/misc/tpmX/device/durations | |
| 46 | +What: /sys/class/tpm/tpmX/device/durations | |
| 47 | 47 | Date: March 2011 |
| 48 | 48 | KernelVersion: 3.1 |
| 49 | 49 | Contact: tpmdd-devel@lists.sf.net |
| @@ -66,7 +66,7 @@ Description: The "durations" property shows the 3 vendor-specific values · 16 unmodified lines | ||
| 66 | 66 | scaled to be displayed in usecs. In this case "[adjusted]" |
| 67 | 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 | 70 | Date: April 2006 |
| 71 | 71 | KernelVersion: 2.6.17 |
| 72 | 72 | Contact: tpmdd-devel@lists.sf.net |
| @@ -75,7 +75,7 @@ Description: The "enabled" property prints a '1' if the TPM chip is enabled, · 2 unmodified lines | ||
| 75 | 75 | may be visible but produce a '0' after some operation that |
| 76 | 76 | disables the TPM. |
| 77 | 77 | |
| 78 | −What: /sys/class/misc/tpmX/device/owned | |
| 78 | +What: /sys/class/tpm/tpmX/device/owned | |
| 79 | 79 | Date: April 2006 |
| 80 | 80 | KernelVersion: 2.6.17 |
| 81 | 81 | Contact: tpmdd-devel@lists.sf.net |
| @@ -83,7 +83,7 @@ Description: The "owned" property produces a '1' if the TPM_TakeOwnership · 1 unmodified line | ||
| 83 | 83 | ordinal has been executed successfully in the chip. A '0' |
| 84 | 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 | 87 | Date: April 2005 |
| 88 | 88 | KernelVersion: 2.6.12 |
| 89 | 89 | Contact: tpmdd-devel@lists.sf.net |
| @@ -106,7 +106,7 @@ Description: The "pcrs" property will dump the current value of all Platform · 16 unmodified lines | ||
| 106 | 106 | 1.2 chips, PCRs represent SHA-1 hashes, which are 20 bytes |
| 107 | 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 | 110 | Date: April 2005 |
| 111 | 111 | KernelVersion: 2.6.12 |
| 112 | 112 | Contact: tpmdd-devel@lists.sf.net |
| @@ -158,7 +158,7 @@ Description: The "pubek" property will return the TPM's public endorsement · 45 unmodified lines | ||
| 158 | 158 | Modulus Length: 256 (bytes) |
| 159 | 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 | 162 | Date: April 2006 |
| 163 | 163 | KernelVersion: 2.6.17 |
| 164 | 164 | Contact: tpmdd-devel@lists.sf.net |
| @@ -167,7 +167,7 @@ Description: The "temp_deactivated" property returns a '1' if the chip has · 2 unmodified lines | ||
| 167 | 167 | cycle. Whether a warm boot (reboot) will clear a TPM chip |
| 168 | 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 | 171 | Date: March 2011 |
| 172 | 172 | KernelVersion: 3.1 |
| 173 | 173 | Contact: tpmdd-devel@lists.sf.net |
| @@ -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 | |
| @@ -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. | |
| @@ -21,3 +21,25 @@ Contact: Linux on PowerPC Developer List <linuxppc-dev@lists.ozlabs.org> · 20 unmodified lines | ||
| 21 | 21 | Description: |
| 22 | 22 | Exposes the "version" field of the 24x7 catalog. This is also |
| 23 | 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. | |
| @@ -92,6 +92,18 @@ Description: · 91 unmodified lines | ||
| 92 | 92 | is required is a consistent labeling. Units after application |
| 93 | 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 | 107 | What: /sys/bus/iio/devices/iio:deviceX/in_capacitanceY_raw |
| 96 | 108 | KernelVersion: 3.2 |
| 97 | 109 | Contact: linux-iio@vger.kernel.org |
| @@ -234,6 +246,8 @@ What: /sys/bus/iio/devices/iio:deviceX/in_accel_y_offset · 136 unmodified lines | ||
| 234 | 246 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_z_offset |
| 235 | 247 | What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_offset |
| 236 | 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 | 251 | What: /sys/bus/iio/devices/iio:deviceX/in_tempY_offset |
| 238 | 252 | What: /sys/bus/iio/devices/iio:deviceX/in_temp_offset |
| 239 | 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 · 22 unmodified lines | ||
| 262 | 276 | What: /sys/bus/iio/devices/iio:deviceX/in_voltage-voltage_scale |
| 263 | 277 | What: /sys/bus/iio/devices/iio:deviceX/out_voltageY_scale |
| 264 | 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 | 282 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_scale |
| 266 | 283 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_peak_scale |
| 267 | 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 | 287 | What: /sys/bus/iio/devices/iio:deviceX/in_magn_scale |
| 269 | 288 | What: /sys/bus/iio/devices/iio:deviceX/in_magn_x_scale |
| 270 | 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 · 5 unmodified lines | ||
| 276 | 295 | What: /sys/bus/iio/devices/iio:deviceX/in_pressureY_scale |
| 277 | 296 | What: /sys/bus/iio/devices/iio:deviceX/in_pressure_scale |
| 278 | 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 | 299 | KernelVersion: 2.6.35 |
| 280 | 300 | Contact: linux-iio@vger.kernel.org |
| 281 | 301 | Description: |
| @@ -323,6 +343,44 @@ Description: · 41 unmodified lines | ||
| 323 | 343 | production inaccuracies). If shared across all channels, |
| 324 | 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 | 384 | What: /sys/bus/iio/devices/iio:deviceX/in_accel_scale_available |
| 327 | 385 | What: /sys/.../iio:deviceX/in_voltageX_scale_available |
| 328 | 386 | What: /sys/.../iio:deviceX/in_voltage-voltage_scale_available |
| @@ -783,6 +841,14 @@ What: /sys/.../events/in_tempY_roc_falling_period · 454 unmodified lines | ||
| 783 | 841 | What: /sys/.../events/in_accel_x&y&z_mag_falling_period |
| 784 | 842 | What: /sys/.../events/in_intensity0_thresh_period |
| 785 | 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 | 852 | KernelVersion: 2.6.37 |
| 787 | 853 | Contact: linux-iio@vger.kernel.org |
| 788 | 854 | Description: |
| @@ -790,6 +856,40 @@ Description: · 1 unmodified line | ||
| 790 | 856 | met before an event is generated. If direction is not |
| 791 | 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 | 893 | What: /sys/.../iio:deviceX/events/in_accel_mag_en |
| 794 | 894 | What: /sys/.../iio:deviceX/events/in_accel_mag_rising_en |
| 795 | 895 | What: /sys/.../iio:deviceX/events/in_accel_mag_falling_en |
| @@ -822,6 +922,25 @@ Description: · 26 unmodified lines | ||
| 822 | 922 | number or direction is not specified, applies to all channels of |
| 823 | 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 | 944 | What: /sys/bus/iio/devices/iio:deviceX/trigger/current_trigger |
| 826 | 945 | KernelVersion: 2.6.35 |
| 827 | 946 | Contact: linux-iio@vger.kernel.org |
| @@ -956,6 +1075,16 @@ Description: · 128 unmodified lines | ||
| 956 | 1075 | and the relevant _type attributes to establish the data storage |
| 957 | 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 | 1088 | What: /sys/.../iio:deviceX/in_anglvel_z_quadrature_correction_raw |
| 960 | 1089 | KernelVersion: 2.6.38 |
| 961 | 1090 | Contact: linux-iio@vger.kernel.org |
| @@ -973,6 +1102,24 @@ Description: · 11 unmodified lines | ||
| 973 | 1102 | For a list of available output power modes read |
| 974 | 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 | 1123 | What: /sys/bus/iio/devices/iio:deviceX/store_eeprom |
| 977 | 1124 | KernelVersion: 3.4.0 |
| 978 | 1125 | Contact: linux-iio@vger.kernel.org |
| @@ -992,7 +1139,9 @@ Description: · 13 unmodified lines | ||
| 992 | 1139 | reflectivity of infrared or ultrasound emitted. |
| 993 | 1140 | Often these sensors are unit less and as such conversion |
| 994 | 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 | 1146 | What: /sys/.../iio:deviceX/in_illuminanceY_input |
| 998 | 1147 | What: /sys/.../iio:deviceX/in_illuminanceY_raw |
| @@ -1024,6 +1173,12 @@ Description: · 25 unmodified lines | ||
| 1024 | 1173 | This attribute is used to get/set the integration time in |
| 1025 | 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 | 1182 | What: /sys/bus/iio/devices/iio:deviceX/in_rot_quaternion_raw |
| 1028 | 1183 | KernelVersion: 3.15 |
| 1029 | 1184 | Contact: linux-iio@vger.kernel.org |
| @@ -1051,3 +1206,46 @@ Description: · 21 unmodified lines | ||
| 1051 | 1206 | after application of scale and offset. If no offset or scale is |
| 1052 | 1207 | present, output should be considered as processed with the |
| 1053 | 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. | |
| @@ -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 | 7 | Slave contexts (eg. /sys/class/cxl/afu0.0s): |
| 2 | 8 | |
| 3 | 9 | What: /sys/class/cxl/<afu>/irqs_max |
| @@ -67,7 +73,7 @@ Contact: linuxppc-dev@lists.ozlabs.org · 63 unmodified lines | ||
| 67 | 73 | Description: read only |
| 68 | 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 | 77 | Date: September 2014 |
| 72 | 78 | Contact: linuxppc-dev@lists.ozlabs.org |
| 73 | 79 | Description: read only |
| @@ -75,6 +81,42 @@ Description: read only · 1 unmodified line | ||
| 75 | 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 | 121 | Master contexts (eg. /sys/class/cxl/afu0.0m) |
| 80 | 122 | |
| @@ -106,7 +148,7 @@ Contact: linuxppc-dev@lists.ozlabs.org · 25 unmodified lines | ||
| 106 | 148 | Description: read only |
| 107 | 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 | 152 | Date: September 2014 |
| 111 | 153 | Contact: linuxppc-dev@lists.ozlabs.org |
| 112 | 154 | Description: read only |
| @@ -127,3 +169,24 @@ Contact: linuxppc-dev@lists.ozlabs.org · 14 unmodified lines | ||
| 127 | 169 | Description: read only |
| 128 | 170 | Will return "user" or "factory" depending on the image loaded |
| 129 | 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. | |
| @@ -32,3 +32,45 @@ Description: · 31 unmodified lines | ||
| 32 | 32 | Valid values: |
| 33 | 33 | - 5, 6 or 7 (hours), |
| 34 | 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) | |
| @@ -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> | |
| @@ -35,3 +35,11 @@ Contact: Corentin Chary <corentin.chary@gmail.com> · 34 unmodified lines | ||
| 35 | 35 | Description: Use your USB ports to charge devices, even |
| 36 | 36 | when your laptop is powered off. |
| 37 | 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. | |
| @@ -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) | |
| @@ -74,3 +74,9 @@ Date: March 2014 · 73 unmodified lines | ||
| 74 | 74 | Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com> |
| 75 | 75 | Description: |
| 76 | 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. | |
| @@ -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. | |
| @@ -21,8 +21,8 @@ running a Linux kernel. Also, not all tools are necessary on all · 20 unmodified lines | ||
| 21 | 21 | systems; obviously, if you don't have any ISDN hardware, for example, |
| 22 | 22 | you probably needn't concern yourself with isdn4k-utils. |
| 23 | 23 | |
| 24 | −o Gnu C 3.2 # gcc --version | |
| 25 | −o Gnu make 3.80 # make --version | |
| 24 | +o GNU C 3.2 # gcc --version | |
| 25 | +o GNU make 3.80 # make --version | |
| 26 | 26 | o binutils 2.12 # ld -v |
| 27 | 27 | o util-linux 2.10o # fdformat --version |
| 28 | 28 | o module-init-tools 0.9.10 # depmod -V |
| @@ -57,7 +57,7 @@ computer. · 28 unmodified lines | ||
| 57 | 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 | 62 | Binutils |
| 63 | 63 | -------- |
| @@ -527,6 +527,7 @@ values. To do the latter, you can stick the following in your .emacs file: · 526 unmodified lines | ||
| 527 | 527 | (string-match (expand-file-name "~/src/linux-trees") |
| 528 | 528 | filename)) |
| 529 | 529 | (setq indent-tabs-mode t) |
| 530 | + (setq show-trailing-whitespace t) | |
| 530 | 531 | (c-set-style "linux-tabs-only"))))) |
| 531 | 532 | |
| 532 | 533 | This will make emacs go better with the kernel coding style for C |
| @@ -113,7 +113,6 @@ · 112 unmodified lines | ||
| 113 | 113 | !Finclude/net/cfg80211.h cfg80211_beacon_data |
| 114 | 114 | !Finclude/net/cfg80211.h cfg80211_ap_settings |
| 115 | 115 | !Finclude/net/cfg80211.h station_parameters |
| 116 | −!Finclude/net/cfg80211.h station_info_flags | |
| 117 | 116 | !Finclude/net/cfg80211.h rate_info_flags |
| 118 | 117 | !Finclude/net/cfg80211.h rate_info |
| 119 | 118 | !Finclude/net/cfg80211.h station_info |
| @@ -435,7 +434,6 @@ · 315 unmodified lines | ||
| 435 | 434 | <section id="ps-client"> |
| 436 | 435 | <title>support for powersaving clients</title> |
| 437 | 436 | !Pinclude/net/mac80211.h AP support for powersaving clients |
| 438 | − </section> | |
| 439 | 437 | !Finclude/net/mac80211.h ieee80211_get_buffered_bc |
| 440 | 438 | !Finclude/net/mac80211.h ieee80211_beacon_get |
| 441 | 439 | !Finclude/net/mac80211.h ieee80211_sta_eosp |
| @@ -444,6 +442,7 @@ · 2 unmodified lines | ||
| 444 | 442 | !Finclude/net/mac80211.h ieee80211_sta_ps_transition_ni |
| 445 | 443 | !Finclude/net/mac80211.h ieee80211_sta_set_buffered |
| 446 | 444 | !Finclude/net/mac80211.h ieee80211_sta_block_awake |
| 445 | + </section> | |
| 447 | 446 | </chapter> |
| 448 | 447 | |
| 449 | 448 | <chapter id="multi-iface"> |
| @@ -488,8 +487,8 @@ · 38 unmodified lines | ||
| 488 | 487 | <title>RX A-MPDU aggregation</title> |
| 489 | 488 | !Pnet/mac80211/agg-rx.c RX A-MPDU aggregation |
| 490 | 489 | !Cnet/mac80211/agg-rx.c |
| 491 | − </sect1> | |
| 492 | 490 | !Finclude/net/mac80211.h ieee80211_ampdu_mlme_action |
| 491 | + </sect1> | |
| 493 | 492 | </chapter> |
| 494 | 493 | |
| 495 | 494 | <chapter id="smps"> |
| @@ -56,7 +56,7 @@ htmldocs: $(HTML) · 55 unmodified lines | ||
| 56 | 56 | |
| 57 | 57 | MAN := $(patsubst %.xml, %.9, $(BOOKS)) |
| 58 | 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 | 61 | installmandocs: mandocs |
| 62 | 62 | mkdir -p /usr/local/man/man9/ |
| @@ -111,7 +111,7 @@ · 110 unmodified lines | ||
| 111 | 111 | <para> |
| 112 | 112 | This specification is intended for consumers of the kernel crypto |
| 113 | 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 | 115 | to data transformation implementations (i.e. implementations of |
| 116 | 116 | ciphers and other transformations (such as CRC or even compression |
| 117 | 117 | algorithms) that can register with the kernel crypto API). |
| @@ -190,23 +190,6 @@ X!Edrivers/pnp/system.c · 189 unmodified lines | ||
| 190 | 190 | !Idrivers/message/fusion/mptfc.c |
| 191 | 191 | !Idrivers/message/fusion/mptlan.c |
| 192 | 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 | 193 | </chapter> |
| 211 | 194 | |
| 212 | 195 | <chapter id="snddev"> |
| @@ -239,6 +239,14 @@ · 238 unmodified lines | ||
| 239 | 239 | Driver supports dedicated render nodes. |
| 240 | 240 | </para></listitem> |
| 241 | 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 | 250 | </variablelist> |
| 243 | 251 | </sect3> |
| 244 | 252 | <sect3> |
| @@ -1377,7 +1385,7 @@ int max_width, max_height;</synopsis> · 1132 unmodified lines | ||
| 1377 | 1385 | <itemizedlist> |
| 1378 | 1386 | <listitem> |
| 1379 | 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 | 1389 | operations described in <xref linkend="drm-kms-crtcops"/>. |
| 1382 | 1390 | </listitem> |
| 1383 | 1391 | <listitem> |
| @@ -2362,6 +2370,7 @@ void intel_crt_init(struct drm_device *dev) · 978 unmodified lines | ||
| 2362 | 2370 | </sect2> |
| 2363 | 2371 | <sect2> |
| 2364 | 2372 | <title>Modeset Helper Functions Reference</title> |
| 2373 | +!Iinclude/drm/drm_crtc_helper.h | |
| 2365 | 2374 | !Edrivers/gpu/drm/drm_crtc_helper.c |
| 2366 | 2375 | !Pdrivers/gpu/drm/drm_crtc_helper.c overview |
| 2367 | 2376 | </sect2> |
| @@ -2564,8 +2573,8 @@ void intel_crt_init(struct drm_device *dev) · 196 unmodified lines | ||
| 2564 | 2573 | <td valign="top" >Description/Restrictions</td> |
| 2565 | 2574 | </tr> |
| 2566 | 2575 | <tr> |
| 2567 | − <td rowspan="25" valign="top" >DRM</td> | |
| 2568 | − <td rowspan="4" valign="top" >Generic</td> | |
| 2576 | + <td rowspan="36" valign="top" >DRM</td> | |
| 2577 | + <td rowspan="5" valign="top" >Connector</td> | |
| 2569 | 2578 | <td valign="top" >“EDID”</td> |
| 2570 | 2579 | <td valign="top" >BLOB | IMMUTABLE</td> |
| 2571 | 2580 | <td valign="top" >0</td> |
| @@ -2594,7 +2603,14 @@ void intel_crt_init(struct drm_device *dev) · 22 unmodified lines | ||
| 2594 | 2603 | <td valign="top" >Contains tiling information for a connector.</td> |
| 2595 | 2604 | </tr> |
| 2596 | 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 | 2614 | <td valign="top" >“type”</td> |
| 2599 | 2615 | <td valign="top" >ENUM | IMMUTABLE</td> |
| 2600 | 2616 | <td valign="top" >{ "Overlay", "Primary", "Cursor" }</td> |
| @@ -2602,6 +2618,76 @@ void intel_crt_init(struct drm_device *dev) · 1 unmodified line | ||
| 2602 | 2618 | <td valign="top" >Plane type</td> |
| 2603 | 2619 | </tr> |
| 2604 | 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 | 2691 | <td rowspan="2" valign="top" >DVI-I</td> |
| 2606 | 2692 | <td valign="top" >“subconnector”</td> |
| 2607 | 2693 | <td valign="top" >ENUM</td> |
| @@ -3883,6 +3969,7 @@ int num_ioctls;</synopsis> · 1275 unmodified lines | ||
| 3883 | 3969 | <title>Runtime Power Management</title> |
| 3884 | 3970 | !Pdrivers/gpu/drm/i915/intel_runtime_pm.c runtime pm |
| 3885 | 3971 | !Idrivers/gpu/drm/i915/intel_runtime_pm.c |
| 3972 | +!Idrivers/gpu/drm/i915/intel_uncore.c | |
| 3886 | 3973 | </sect2> |
| 3887 | 3974 | <sect2> |
| 3888 | 3975 | <title>Interrupt Handling</title> |
| @@ -3931,6 +4018,11 @@ int num_ioctls;</synopsis> · 42 unmodified lines | ||
| 3931 | 4018 | framebuffer compression and panel self refresh. |
| 3932 | 4019 | </para> |
| 3933 | 4020 | </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> | |
| 3934 | 4026 | <sect2> |
| 3935 | 4027 | <title>Output Probing</title> |
| 3936 | 4028 | <para> |
| @@ -3949,6 +4041,11 @@ int num_ioctls;</synopsis> · 12 unmodified lines | ||
| 3949 | 4041 | <title>Panel Self Refresh PSR (PSR/SRD)</title> |
| 3950 | 4042 | !Pdrivers/gpu/drm/i915/intel_psr.c Panel Self Refresh (PSR/SRD) |
| 3951 | 4043 | !Idrivers/gpu/drm/i915/intel_psr.c |
| 4044 | + </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 | |
| 3952 | 4049 | </sect2> |
| 3953 | 4050 | <sect2> |
| 3954 | 4051 | <title>DPIO</title> |
| @@ -4052,12 +4149,33 @@ int num_ioctls;</synopsis> · 97 unmodified lines | ||
| 4052 | 4149 | <title>Batchbuffer Parsing</title> |
| 4053 | 4150 | !Pdrivers/gpu/drm/i915/i915_cmd_parser.c batch buffer command parser |
| 4054 | 4151 | !Idrivers/gpu/drm/i915/i915_cmd_parser.c |
| 4152 | + </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 | |
| 4055 | 4157 | </sect2> |
| 4056 | 4158 | <sect2> |
| 4057 | 4159 | <title>Logical Rings, Logical Ring Contexts and Execlists</title> |
| 4058 | 4160 | !Pdrivers/gpu/drm/i915/intel_lrc.c Logical Rings, Logical Ring Contexts and Execlists |
| 4059 | 4161 | !Idrivers/gpu/drm/i915/intel_lrc.c |
| 4060 | 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 | 4179 | </sect1> |
| 4062 | 4180 | |
| 4063 | 4181 | <sect1> |
| @@ -75,7 +75,7 @@ · 74 unmodified lines | ||
| 75 | 75 | a development machine and the other is the target machine. The |
| 76 | 76 | kernel to be debugged runs on the target machine. The development |
| 77 | 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 | 79 | uImage...). In gdb the developer specifies the connection |
| 80 | 80 | parameters and connects to kgdb. The type of connection a |
| 81 | 81 | developer makes with gdb depends on the availability of kgdb I/O |
| @@ -95,7 +95,7 @@ · 13 unmodified lines | ||
| 95 | 95 | <title>Kernel config options for kgdb</title> |
| 96 | 96 | <para> |
| 97 | 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 | 99 | </para> |
| 100 | 100 | <para> |
| 101 | 101 | While it is not a hard requirement that you have symbols in your |
| @@ -105,7 +105,7 @@ · 3 unmodified lines | ||
| 105 | 105 | kernel with debug info" in the config menu. |
| 106 | 106 | </para> |
| 107 | 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 | 109 | <symbol>CONFIG_FRAME_POINTER</symbol> kernel option which is called "Compile the |
| 110 | 110 | kernel with frame pointers" in the config menu. This option |
| 111 | 111 | inserts code to into the compiled executable which saves the frame |
| @@ -181,7 +181,7 @@ · 69 unmodified lines | ||
| 181 | 181 | <para>This section describes the various runtime kernel |
| 182 | 182 | parameters that affect the configuration of the kernel debugger. |
| 183 | 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 | 185 | <sect1 id="kgdboc"> |
| 186 | 186 | <title>Kernel parameter: kgdboc</title> |
| 187 | 187 | <para>The kgdboc driver was originally an abbreviation meant to |
| @@ -197,6 +197,7 @@ · 9 unmodified lines | ||
| 197 | 197 | may be configured as a kernel built-in or a kernel loadable module. |
| 198 | 198 | You can only make use of <constant>kgdbwait</constant> and early |
| 199 | 199 | debugging if you build kgdboc into the kernel as a built-in. |
| 200 | + </para> | |
| 200 | 201 | <para>Optionally you can elect to activate kms (Kernel Mode |
| 201 | 202 | Setting) integration. When you use kms with kgdboc and you have a |
| 202 | 203 | video driver that has atomic mode setting hooks, it is possible to |
| @@ -206,7 +207,6 @@ · 3 unmodified lines | ||
| 206 | 207 | crashes or doing analysis of memory with kdb while allowing the |
| 207 | 208 | full graphics console applications to run. |
| 208 | 209 | </para> |
| 209 | − </para> | |
| 210 | 210 | <sect2 id="kgdbocArgs"> |
| 211 | 211 | <title>kgdboc arguments</title> |
| 212 | 212 | <para>Usage: <constant>kgdboc=[kms][[,]kbd][[,]serial_device][,baud]</constant></para> |
| @@ -219,8 +219,8 @@ · 6 unmodified lines | ||
| 219 | 219 | <listitem><para>kbd = Keyboard</para></listitem> |
| 220 | 220 | </itemizedlist> |
| 221 | 221 | </para> |
| 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 | |
| 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 | |
| 224 | 224 | following scenarios. The order listed above must be observed if |
| 225 | 225 | you use any of the optional configurations together. Using kms + |
| 226 | 226 | only gdb is generally not a useful combination.</para> |
| @@ -261,11 +261,8 @@ · 34 unmodified lines | ||
| 261 | 261 | </sect3> |
| 262 | 262 | <sect3 id="kgdbocArgs3"> |
| 263 | 263 | <title>More examples</title> |
| 264 | − <para>You can configure kgdboc to use the keyboard, and or a serial | |
| 265 | − device 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 | |
| 264 | + <para>You can configure kgdboc to use the keyboard, and/or a serial device | |
| 265 | + depending on if you are using kdb and/or kgdb, in one of the | |
| 269 | 266 | following scenarios. |
| 270 | 267 | <orderedlist> |
| 271 | 268 | <listitem><para>kdb and kgdb over only a serial port</para> |
| @@ -287,7 +284,6 @@ · 15 unmodified lines | ||
| 287 | 284 | </listitem> |
| 288 | 285 | </orderedlist> |
| 289 | 286 | </para> |
| 290 | − </sect3> | |
| 291 | 287 | <para>NOTE: Kgdboc does not support interrupting the target via the |
| 292 | 288 | gdb remote protocol. You must manually send a sysrq-g unless you |
| 293 | 289 | have a proxy that splits console output to a terminal program. |
| @@ -308,6 +304,7 @@ · 14 unmodified lines | ||
| 308 | 304 | as well as on the initial connect, or to use a debugger proxy that |
| 309 | 305 | allows an unmodified gdb to do the debugging. |
| 310 | 306 | </para> |
| 307 | + </sect3> | |
| 311 | 308 | </sect2> |
| 312 | 309 | </sect1> |
| 313 | 310 | <sect1 id="kgdbwait"> |
| @@ -315,7 +312,7 @@ · 1 unmodified line | ||
| 315 | 312 | <para> |
| 316 | 313 | The Kernel command line option <constant>kgdbwait</constant> makes |
| 317 | 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 | 316 | kernel and you specified the I/O driver configuration as a kernel |
| 320 | 317 | command line option. The kgdbwait parameter should always follow the |
| 321 | 318 | configuration parameter for the kgdb I/O driver in the kernel |
| @@ -353,12 +350,12 @@ · 31 unmodified lines | ||
| 353 | 350 | </para> |
| 354 | 351 | </listitem> |
| 355 | 352 | </orderedlist> |
| 353 | + </para> | |
| 356 | 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 | 356 | </para> |
| 359 | 357 | <para>It is possible to use this option with kgdboc on a tty that is not a system console. |
| 360 | 358 | </para> |
| 361 | − </para> | |
| 362 | 359 | </sect1> |
| 363 | 360 | <sect1 id="kgdbreboot"> |
| 364 | 361 | <title>Run time parameter: kgdbreboot</title> |
| @@ -386,12 +383,12 @@ · 21 unmodified lines | ||
| 386 | 383 | <title>Quick start for kdb on a serial port</title> |
| 387 | 384 | <para>This is a quick example of how to use kdb.</para> |
| 388 | 385 | <para><orderedlist> |
| 389 | − <listitem><para>Boot kernel with arguments: | |
| 386 | + <listitem><para>Configure kgdboc at boot using kernel parameters: | |
| 390 | 387 | <itemizedlist> |
| 391 | 388 | <listitem><para><constant>console=ttyS0,115200 kgdboc=ttyS0,115200</constant></para></listitem> |
| 392 | 389 | </itemizedlist></para> |
| 393 | 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 | 392 | <itemizedlist> |
| 396 | 393 | <listitem><para><constant>echo ttyS0 > /sys/module/kgdboc/parameters/kgdboc</constant></para></listitem> |
| 397 | 394 | </itemizedlist> |
| @@ -442,12 +439,12 @@ · 44 unmodified lines | ||
| 442 | 439 | <title>Quick start for kdb using a keyboard connected console</title> |
| 443 | 440 | <para>This is a quick example of how to use kdb with a keyboard.</para> |
| 444 | 441 | <para><orderedlist> |
| 445 | − <listitem><para>Boot kernel with arguments: | |
| 442 | + <listitem><para>Configure kgdboc at boot using kernel parameters: | |
| 446 | 443 | <itemizedlist> |
| 447 | 444 | <listitem><para><constant>kgdboc=kbd</constant></para></listitem> |
| 448 | 445 | </itemizedlist></para> |
| 449 | 446 | <para>OR</para> |
| 450 | − <para>Configure kgdboc after the kernel booted: | |
| 447 | + <para>Configure kgdboc after the kernel has booted: | |
| 451 | 448 | <itemizedlist> |
| 452 | 449 | <listitem><para><constant>echo kbd > /sys/module/kgdboc/parameters/kgdboc</constant></para></listitem> |
| 453 | 450 | </itemizedlist> |
| @@ -501,12 +498,12 @@ · 47 unmodified lines | ||
| 501 | 498 | <title>Connecting with gdb to a serial port</title> |
| 502 | 499 | <orderedlist> |
| 503 | 500 | <listitem><para>Configure kgdboc</para> |
| 504 | − <para>Boot kernel with arguments: | |
| 501 | + <para>Configure kgdboc at boot using kernel parameters: | |
| 505 | 502 | <itemizedlist> |
| 506 | 503 | <listitem><para><constant>kgdboc=ttyS0,115200</constant></para></listitem> |
| 507 | 504 | </itemizedlist></para> |
| 508 | 505 | <para>OR</para> |
| 509 | − <para>Configure kgdboc after the kernel booted: | |
| 506 | + <para>Configure kgdboc after the kernel has booted: | |
| 510 | 507 | <itemizedlist> |
| 511 | 508 | <listitem><para><constant>echo ttyS0 > /sys/module/kgdboc/parameters/kgdboc</constant></para></listitem> |
| 512 | 509 | </itemizedlist></para> |
| @@ -536,7 +533,7 @@ · 23 unmodified lines | ||
| 536 | 533 | </para> |
| 537 | 534 | </listitem> |
| 538 | 535 | <listitem> |
| 539 | − <para>Connect from from gdb</para> | |
| 536 | + <para>Connect from gdb</para> | |
| 540 | 537 | <para> |
| 541 | 538 | Example (using a directly connected port): |
| 542 | 539 | </para> |
| @@ -584,7 +581,7 @@ · 41 unmodified lines | ||
| 584 | 581 | <para> |
| 585 | 582 | There are two ways to switch from kgdb to kdb: you can use gdb to |
| 586 | 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 | 585 | message <constant>KGDB or $3#33 for KDB</constant>. It is important |
| 589 | 586 | to note that you have to type the sequence correctly in one pass. |
| 590 | 587 | You cannot type a backspace or delete because kgdb will interpret |
| @@ -704,7 +701,7 @@ Task Addr Pid Parent [*] cpu State Thread Command · 113 unmodified lines | ||
| 704 | 701 | <listitem><para>Registration and unregistration of architecture specific trap hooks</para></listitem> |
| 705 | 702 | <listitem><para>Any special exception handling and cleanup</para></listitem> |
| 706 | 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 | 705 | </itemizedlist> |
| 709 | 706 | </para> |
| 710 | 707 | </listitem> |
| @@ -760,7 +757,7 @@ Task Addr Pid Parent [*] cpu State Thread Command · 49 unmodified lines | ||
| 760 | 757 | a kgdb I/O driver for characters when it needs input. The I/O |
| 761 | 758 | driver is expected to return immediately if there is no data |
| 762 | 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 | 761 | reset when these are enabled. |
| 765 | 762 | </para> |
| 766 | 763 | </listitem> |
| @@ -779,21 +776,25 @@ Task Addr Pid Parent [*] cpu State Thread Command · 12 unmodified lines | ||
| 779 | 776 | their <asm/kgdb.h> file. These are: |
| 780 | 777 | <itemizedlist> |
| 781 | 778 | <listitem> |
| 782 | − <para> | |
| 783 | − NUMREGBYTES: The size in bytes of all of the registers, so | |
| 784 | − that we can ensure they will all fit into a packet. | |
| 785 | − </para> | |
| 786 | − <para> | |
| 787 | − BUFMAX: The size in bytes of the buffer GDB will read into. | |
| 788 | − This must be larger than NUMREGBYTES. | |
| 789 | − </para> | |
| 790 | − <para> | |
| 791 | − CACHE_FLUSH_IS_SAFE: Set to 1 if it is always safe to call | |
| 792 | − flush_cache_range or flush_icache_range. On some architectures, | |
| 793 | − these functions may not be safe to call on SMP since we keep other | |
| 794 | − CPUs in a holding pattern. | |
| 795 | − </para> | |
| 796 | − </listitem> | |
| 779 | + <para> | |
| 780 | + NUMREGBYTES: The size in bytes of all of the registers, so | |
| 781 | + that we can ensure they will all fit into a packet. | |
| 782 | + </para> | |
| 783 | + </listitem> | |
| 784 | + <listitem> | |
| 785 | + <para> | |
| 786 | + BUFMAX: The size in bytes of the buffer GDB will read into. | |
| 787 | + This must be larger than NUMREGBYTES. | |
| 788 | + </para> | |
| 789 | + </listitem> | |
| 790 | + <listitem> | |
| 791 | + <para> | |
| 792 | + CACHE_FLUSH_IS_SAFE: Set to 1 if it is always safe to call | |
| 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 | 798 | </itemizedlist> |
| 798 | 799 | </para> |
| 799 | 800 | <para> |
| @@ -812,8 +813,8 @@ Task Addr Pid Parent [*] cpu State Thread Command · 12 unmodified lines | ||
| 812 | 813 | <para> |
| 813 | 814 | The kgdboc driver is actually a very thin driver that relies on the |
| 814 | 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 | − implementation of kgdboc it the serial_core was changed to expose a | |
| 816 | + to which the tty driver is attached. In the initial | |
| 817 | + implementation of kgdboc the serial_core was changed to expose a | |
| 817 | 818 | low level UART hook for doing polled mode reading and writing of a |
| 818 | 819 | single character while in an atomic context. When kgdb makes an I/O |
| 819 | 820 | request to the debugger, kgdboc invokes a callback in the serial |
| @@ -2692,12 +2692,11 @@ in the S5P family of SoCs by Samsung. · 2691 unmodified lines | ||
| 2692 | 2692 | <row><entry></entry></row> |
| 2693 | 2693 | <row> |
| 2694 | 2694 | <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE</constant> </entry> |
| 2695 | − <entry>integer</entry> | |
| 2696 | − </row><row><entry spanname="descr">If the display delay is enabled then the decoder has to return a | |
| 2697 | −CAPTURE buffer after processing a certain number of OUTPUT buffers. If this number is low, then it may result in | |
| 2698 | −buffers not being dequeued in display order. In addition hardware may still use those buffers as reference, thus | |
| 2699 | −application should not write to those buffers. This feature can be used for example for generating thumbnails of videos. | |
| 2700 | −Applicable to the H264 decoder. | |
| 2695 | + <entry>boolean</entry> | |
| 2696 | + </row><row><entry spanname="descr">If the display delay is enabled then the decoder is forced to return a | |
| 2697 | +CAPTURE buffer (decoded frame) after processing a certain number of OUTPUT buffers. The delay can be set through | |
| 2698 | +<constant>V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY</constant>. This feature can be used for example | |
| 2699 | +for generating thumbnails of videos. Applicable to the H264 decoder. | |
| 2701 | 2700 | </entry> |
| 2702 | 2701 | </row> |
| 2703 | 2702 | <row><entry></entry></row> |
| @@ -17,7 +17,7 @@ · 16 unmodified lines | ||
| 17 | 17 | <refsect1> |
| 18 | 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 | 21 | 10 bits per colour. Each colour component is stored in a 16-bit word, with 6 |
| 22 | 22 | unused high bits filled with zeros. Each n-pixel row contains n/2 green samples |
| 23 | 23 | and n/2 blue or red samples, with alternating red and blue rows. Bytes are |
| @@ -25,7 +25,7 @@ · 24 unmodified lines | ||
| 25 | 25 | </refnamediv> |
| 26 | 26 | <refsect1> |
| 27 | 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 | 29 | formats with 10 bits per color compressed to 8 bits each, |
| 30 | 30 | using the A-LAW algorithm. Each color component consumes 8 |
| 31 | 31 | bits of memory. In other respects this format is similar to |
| @@ -18,7 +18,7 @@ · 17 unmodified lines | ||
| 18 | 18 | <refsect1> |
| 19 | 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 | 22 | with 10 bits per colour compressed to 8 bits each, using DPCM |
| 23 | 23 | compression. DPCM, differential pulse-code modulation, is lossy. |
| 24 | 24 | Each colour component consumes 8 bits of memory. In other respects |
| @@ -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> | |
| @@ -17,7 +17,7 @@ · 16 unmodified lines | ||
| 17 | 17 | <refsect1> |
| 18 | 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 | 21 | 12 bits per colour. Each colour component is stored in a 16-bit word, with 4 |
| 22 | 22 | unused high bits filled with zeros. Each n-pixel row contains n/2 green samples |
| 23 | 23 | and n/2 blue or red samples, with alternating red and blue rows. Bytes are |
| @@ -1405,6 +1405,7 @@ access the palette, this must be done with ioctls of the Linux framebuffer API.< · 1404 unmodified lines | ||
| 1405 | 1405 | &sub-srggb8; |
| 1406 | 1406 | &sub-sbggr16; |
| 1407 | 1407 | &sub-srggb10; |
| 1408 | + &sub-srggb10p; | |
| 1408 | 1409 | &sub-srggb10alaw8; |
| 1409 | 1410 | &sub-srggb10dpcm8; |
| 1410 | 1411 | &sub-srggb12; |
| @@ -212,11 +212,3 @@ standards set in the <structfield>standards</structfield> field. · 211 unmodified lines | ||
| 212 | 212 | &return-value; |
| 213 | 213 | </refsect1> |
| 214 | 214 | </refentry> |
| 215 | − | |
| 216 | −<!-- | |
| 217 | −Local Variables: | |
| 218 | −mode: sgml | |
| 219 | −sgml-parent-document: "v4l2.sgml" | |
| 220 | −indent-tabs-mode: nil | |
| 221 | −End: | |
| 222 | −--> | |
| @@ -131,11 +131,3 @@ is out of bounds or the <structfield>pad</structfield> number is invalid.</para> · 130 unmodified lines | ||
| 131 | 131 | </variablelist> |
| 132 | 132 | </refsect1> |
| 133 | 133 | </refentry> |
| 134 | − | |
| 135 | −<!-- | |
| 136 | −Local Variables: | |
| 137 | −mode: sgml | |
| 138 | −sgml-parent-document: "v4l2.sgml" | |
| 139 | −indent-tabs-mode: nil | |
| 140 | −End: | |
| 141 | −--> | |
| @@ -719,7 +719,7 @@ framework to set up sysfs files for this region. Simply leave it alone. · 718 unmodified lines | ||
| 719 | 719 | </para> |
| 720 | 720 | </sect1> |
| 721 | 721 | |
| 722 | −<sect1 id="using uio_dmem_genirq"> | |
| 722 | +<sect1 id="using-uio_dmem_genirq"> | |
| 723 | 723 | <title>Using uio_dmem_genirq for platform devices</title> |
| 724 | 724 | <para> |
| 725 | 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. · 20 unmodified lines | ||
| 746 | 746 | following elements: |
| 747 | 747 | </para> |
| 748 | 748 | <itemizedlist> |
| 749 | − <listitem><varname>struct uio_info uioinfo</varname>: The same | |
| 749 | + <listitem><para><varname>struct uio_info uioinfo</varname>: The same | |
| 750 | 750 | structure used as the <varname>uio_pdrv_genirq</varname> platform |
| 751 | − data</listitem> | |
| 752 | − <listitem><varname>unsigned int *dynamic_region_sizes</varname>: | |
| 751 | + data</para></listitem> | |
| 752 | + <listitem><para><varname>unsigned int *dynamic_region_sizes</varname>: | |
| 753 | 753 | Pointer to list of sizes of dynamic memory regions to be mapped into |
| 754 | 754 | user space. |
| 755 | − </listitem> | |
| 756 | − <listitem><varname>unsigned int num_dynamic_regions</varname>: | |
| 755 | + </para></listitem> | |
| 756 | + <listitem><para><varname>unsigned int num_dynamic_regions</varname>: | |
| 757 | 757 | Number of elements in <varname>dynamic_region_sizes</varname> array. |
| 758 | − </listitem> | |
| 758 | + </para></listitem> | |
| 759 | 759 | </itemizedlist> |
| 760 | 760 | <para> |
| 761 | 761 | The dynamic regions defined in the platform data will be appended to |
| @@ -15,7 +15,7 @@ CONFIG_RCU_CPU_STALL_TIMEOUT · 14 unmodified lines | ||
| 15 | 15 | 21 seconds. |
| 16 | 16 | |
| 17 | 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 | 19 | this parameter is checked only at the beginning of a cycle. |
| 20 | 20 | So if you are 10 seconds into a 40-second stall, setting this |
| 21 | 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 · 130 unmodified lines | ||
| 152 | 152 | "D" indicates that dyntick-idle processing is enabled ("." is printed |
| 153 | 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 | 165 | Multiple Warnings From One Stall |
| 157 | 166 | |
| @@ -187,6 +196,11 @@ o For !CONFIG_PREEMPT kernels, a CPU looping anywhere in the · 29 unmodified lines | ||
| 187 | 196 | behavior, you might need to replace some of the cond_resched() |
| 188 | 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 | 204 | o A CPU-bound real-time task in a CONFIG_PREEMPT kernel, which might |
| 191 | 205 | happen to preempt a low-priority task in the middle of an RCU |
| 192 | 206 | read-side critical section. This is especially damaging if |
| @@ -56,14 +56,14 @@ rcuboost: · 55 unmodified lines | ||
| 56 | 56 | |
| 57 | 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 | |
| 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 | |
| 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 | |
| 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 | |
| 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 | |
| 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 | |
| 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 | |
| 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 | |
| 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/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/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/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/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/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/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/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 | 68 | This file has one line per CPU, or eight for this 8-CPU system. |
| 69 | 69 | The fields are as follows: |
| @@ -188,14 +188,14 @@ o "ca" is the number of RCU callbacks that have been adopted by this · 118 unmodified lines | ||
| 188 | 188 | Kernels compiled with CONFIG_RCU_BOOST=y display the following from |
| 189 | 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 | |
| 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 | |
| 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 | |
| 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 | |
| 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 | |
| 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 | |
| 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 | |
| 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 | |
| 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/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/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/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/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/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/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/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 | 200 | This is similar to the output discussed above, but contains the following |
| 201 | 201 | additional fields: |
| @@ -10,27 +10,49 @@ kernel, the process can sometimes be daunting if you're not familiar · 9 unmodified lines | ||
| 10 | 10 | with "the system." This text is a collection of suggestions which |
| 11 | 11 | can greatly increase the chances of your change being accepted. |
| 12 | 12 | |
| 13 | −Read Documentation/SubmitChecklist for a list of items to check | |
| 14 | −before submitting code. If you are submitting a driver, also read | |
| 15 | −Documentation/SubmittingDrivers. | |
| 13 | +This document contains a large number of suggestions in a relatively terse | |
| 14 | +format. For detailed information on how the kernel development process | |
| 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 | 21 | Many of these steps describe the default behavior of the git version |
| 18 | 22 | control system; if you use git to prepare your patches, you'll find much |
| 19 | 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 | 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 | 50 | 1) "diff -up" |
| 29 | 51 | ------------ |
| 30 | 52 | |
| 31 | −Use "diff -up" or "diff -uprN" to create patches. git generates patches | |
| 32 | −in this form by default; if you're using git, you can skip this section | |
| 33 | −entirely. | |
| 53 | +If you must generate your patches by hand, use "diff -up" or "diff -uprN" | |
| 54 | +to create patches. Git generates patches in this form by default; if | |
| 55 | +you're using git, you can skip this section entirely. | |
| 34 | 56 | |
| 35 | 57 | All changes to the Linux kernel occur in the form of patches, as |
| 36 | 58 | generated by diff(1). When creating your patch, make sure to create it |
| @@ -42,7 +64,7 @@ not in any lower subdirectory. · 5 unmodified lines | ||
| 42 | 64 | |
| 43 | 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 | 68 | MYFILE= drivers/net/mydriver.c |
| 47 | 69 | |
| 48 | 70 | cd $SRCTREE |
| @@ -55,17 +77,16 @@ To create a patch for multiple files, you should unpack a "vanilla", · 6 unmodified lines | ||
| 55 | 77 | or unmodified kernel source tree, and generate a diff against your |
| 56 | 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 | |
| 61 | − mv linux-2.6.12 linux-2.6.12-vanilla | |
| 62 | − diff -uprN -X linux-2.6.12-vanilla/Documentation/dontdiff \ | |
| 63 | − linux-2.6.12-vanilla $MYSRC > /tmp/patch | |
| 82 | + tar xvfz linux-3.19.tar.gz | |
| 83 | + mv linux-3.19 linux-3.19-vanilla | |
| 84 | + diff -uprN -X linux-3.19-vanilla/Documentation/dontdiff \ | |
| 85 | + linux-3.19-vanilla $MYSRC > /tmp/patch | |
| 64 | 86 | |
| 65 | 87 | "dontdiff" is a list of files which are generated by the kernel during |
| 66 | 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 | |
| 68 | −2.6.12 and later. | |
| 89 | +patch. | |
| 69 | 90 | |
| 70 | 91 | Make sure your patch does not include any extra files which do not |
| 71 | 92 | belong in a patch submission. Make sure to review your patch -after- |
| @@ -83,6 +104,7 @@ is another popular alternative. · 11 unmodified lines | ||
| 83 | 104 | |
| 84 | 105 | |
| 85 | 106 | 2) Describe your changes. |
| 107 | +------------------------- | |
| 86 | 108 | |
| 87 | 109 | Describe your problem. Whether your patch is a one-line bug fix or |
| 88 | 110 | 5000 lines of a new feature, there must be an underlying problem that |
| @@ -124,10 +146,10 @@ See #3, next. · 35 unmodified lines | ||
| 124 | 146 | When you submit or resubmit a patch or patch series, include the |
| 125 | 147 | complete patch description and justification for it. Don't just |
| 126 | 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 | 150 | URLs to find the patch description and put that into the patch. |
| 129 | 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 | 153 | probably didn't even receive earlier versions of the patch. |
| 132 | 154 | |
| 133 | 155 | Describe your changes in imperative mood, e.g. "make xyzzy do frotz" |
| @@ -156,10 +178,15 @@ Example: · 22 unmodified lines | ||
| 156 | 178 | platform_set_drvdata(), but left the variable "dev" unused, |
| 157 | 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 | 187 | If your patch fixes a bug in a specific commit, e.g. you found an issue using |
| 160 | 188 | git-bisect, please use the 'Fixes:' tag with the first 12 characters of the |
| 161 | −SHA-1 ID, and the one line summary. | |
| 162 | −Example: | |
| 189 | +SHA-1 ID, and the one line summary. For example: | |
| 163 | 190 | |
| 164 | 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 · 6 unmodified lines | ||
| 172 | 199 | fixes = Fixes: %h (\"%s\") |
| 173 | 200 | |
| 174 | 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 | 206 | For example, if your changes include both bug fixes and performance |
| 179 | 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, · 4 unmodified lines | ||
| 184 | 212 | group those changes into a single patch. Thus a single logical change |
| 185 | 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 | 219 | If one patch depends on another patch in order for a change to be |
| 188 | 220 | complete, that is OK. Simply note "this patch depends on patch X" |
| 189 | 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 | 229 | If you cannot condense your patch set into a smaller set of patches, |
| 192 | 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 | 237 | Check your patch for basic style violations, details of which can be |
| 199 | 238 | found in Documentation/CodingStyle. Failure to do so simply wastes |
| 200 | 239 | the reviewers time and will get your patch rejected, probably |
| 201 | 240 | without even being read. |
| 202 | 241 | |
| 203 | −At a minimum you should check your patches with the patch style | |
| 204 | −checker prior to submission (scripts/checkpatch.pl). You should | |
| 205 | −be able to justify all violations that remain in your patch. | |
| 206 | − | |
| 207 | − | |
| 242 | +One significant exception is when moving code from one file to | |
| 243 | +another -- in this case you should not modify the moved code at all in | |
| 244 | +the same patch which moves it. This clearly delineates the act of | |
| 245 | +moving the code and your changes. This greatly aids review of the | |
| 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 | |
| 212 | −if your change applies to a specific subsystem of the kernel, with | |
| 213 | −an assigned maintainer. If so, e-mail that person. The script | |
| 214 | −scripts/get_maintainer.pl can be very useful at this step. | |
| 254 | +The checker reports at three levels: | |
| 255 | + - ERROR: things that are very likely to be wrong | |
| 256 | + - WARNING: things requiring careful review | |
| 257 | + - CHECK: things requiring thought | |
| 215 | 258 | |
| 216 | −If no maintainer is listed, or the maintainer does not respond, send | |
| 217 | −your patch to the primary Linux kernel developer's mailing list, | |
| 218 | −linux-kernel@vger.kernel.org. Most kernel developers monitor this | |
| 219 | −e-mail list, and can comment on your changes. | |
| 259 | +You should be able to justify all violations that remain in your | |
| 260 | +patch. | |
| 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 | |
| 226 | −Linux kernel. His e-mail address is <torvalds@linux-foundation.org>. | |
| 227 | −He gets a lot of e-mail, so typically you should do your best to -avoid- | |
| 228 | −sending him e-mail. | |
| 273 | +You should also normally choose at least one mailing list to receive a copy | |
| 274 | +of your patch set. linux-kernel@vger.kernel.org functions as a list of | |
| 275 | +last resort, but the volume on that list has caused a number of developers | |
| 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 | |
| 231 | −require little discussion should be sent or CC'd to Linus. Patches | |
| 232 | −which require discussion or do not have a clear advantage should | |
| 233 | −usually be sent first to linux-kernel. Only after the patch is | |
| 234 | −discussed should the patch then be submitted to Linus. | |
| 280 | +Many kernel-related lists are hosted on vger.kernel.org; you can find a | |
| 281 | +list of them at http://vger.kernel.org/vger-lists.html. There are | |
| 282 | +kernel-related lists hosted elsewhere as well, though. | |
| 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, | |
| 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. | |
| 300 | + Cc: stable@vger.kernel.org | |
| 249 | 301 | |
| 250 | −Majordomo lists of VGER.KERNEL.ORG at: | |
| 251 | − <http://vger.kernel.org/vger-lists.html> | |
| 302 | +into your patch. | |
| 252 | 303 | |
| 253 | −If changes affect userland-kernel interfaces, please send | |
| 254 | −the MAN-PAGES maintainer (as listed in the MAINTAINERS file) | |
| 255 | −a man-pages patch, or at least a notification of the change, | |
| 256 | −so that some information makes its way into the manual pages. | |
| 304 | +Note, however, that some subsystem maintainers want to come to their own | |
| 305 | +conclusions on which patches should go to the stable trees. The networking | |
| 306 | +maintainer, in particular, would rather not see individual developers | |
| 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 | |
| 259 | −copy the maintainer when you change their code. | |
| 309 | +If changes affect userland-kernel interfaces, please send the MAN-PAGES | |
| 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 | 315 | For small patches you may want to CC the Trivial Patch Monkey |
| 262 | 316 | trivial@kernel.org which collects "trivial" patches. Have a look |
| 263 | 317 | into the MAINTAINERS file for its current manager. |
| 264 | 318 | Trivial patches must qualify for one of the following rules: |
| 265 | 319 | Spelling fixes in documentation |
| 266 | − Spelling fixes which could break grep(1) | |
| 320 | + Spelling fixes for errors which could break grep(1) | |
| 267 | 321 | Warning fixes (cluttering with useless warnings is bad) |
| 268 | 322 | Compilation fixes (only if they are actually correct) |
| 269 | 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 | 325 | Contact detail and documentation fixes |
| 272 | 326 | Non-portable code replaced by portable code (even in arch-specific, |
| 273 | 327 | since people copy, as long as it's trivial) |
| @@ -276,7 +330,8 @@ Trivial patches must qualify for one of the following rules: · 2 unmodified lines | ||
| 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 | 336 | Linus and other kernel developers need to be able to read and comment |
| 282 | 337 | on the changes you are submitting. It is important for a kernel |
| @@ -299,54 +354,48 @@ you to re-send them using MIME. · 16 unmodified lines | ||
| 299 | 354 | See Documentation/email-clients.txt for hints about configuring |
| 300 | 355 | your e-mail client so that it sends your patches untouched. |
| 301 | 356 | |
| 302 | −8) E-mail size. | |
| 303 | − | |
| 304 | −When sending patches to Linus, always follow step #7. | |
| 357 | +7) E-mail size. | |
| 358 | +--------------- | |
| 305 | 359 | |
| 306 | 360 | Large changes are not appropriate for mailing lists, and some |
| 307 | 361 | maintainers. If your patch, uncompressed, exceeds 300 kB in size, |
| 308 | 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, | |
| 319 | −Linus will not apply it. | |
| 383 | +9) Don't get discouraged - or impatient. | |
| 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 | |
| 326 | −likes your change and applies it, it will appear in the next version | |
| 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 | |
| 397 | +10) Include PATCH in the subject | |
| 398 | +-------------------------------- | |
| 350 | 399 | |
| 351 | 400 | Due to high e-mail traffic to Linus, and to linux-kernel, it is common |
| 352 | 401 | convention to prefix your subject line with [PATCH]. This lets Linus |
| @@ -355,7 +404,8 @@ e-mail discussions. · 2 unmodified lines | ||
| 355 | 404 | |
| 356 | 405 | |
| 357 | 406 | |
| 358 | −12) Sign your work | |
| 407 | +11) Sign your work | |
| 408 | +------------------ | |
| 359 | 409 | |
| 360 | 410 | To improve tracking of who did what, especially with patches that can |
| 361 | 411 | percolate to their final resting place in the kernel through several |
| @@ -387,11 +437,11 @@ can certify the below: · 25 unmodified lines | ||
| 387 | 437 | person who certified (a), (b) or (c) and I have not modified |
| 388 | 438 | it. |
| 389 | 439 | |
| 390 | − (d) I understand and agree that this project and the contribution | |
| 391 | − are public and that a record of the contribution (including all | |
| 392 | − personal information I submit with it, including my sign-off) is | |
| 393 | − maintained indefinitely and may be redistributed consistent with | |
| 394 | − this project or the open source license(s) involved. | |
| 440 | + (d) I understand and agree that this project and the contribution | |
| 441 | + are public and that a record of the contribution (including all | |
| 442 | + personal information I submit with it, including my sign-off) is | |
| 443 | + maintained indefinitely and may be redistributed consistent with | |
| 444 | + this project or the open source license(s) involved. | |
| 395 | 445 | |
| 396 | 446 | then you just add a line saying |
| 397 | 447 | |
| @@ -401,7 +451,7 @@ using your real name (sorry, no pseudonyms or anonymous contributions.) · 3 unmodified lines | ||
| 401 | 451 | |
| 402 | 452 | Some people also put extra tags at the end. They'll just be ignored for |
| 403 | 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 | 456 | If you are a subsystem or branch maintainer, sometimes you need to slightly |
| 407 | 457 | modify patches you receive in order to merge them, because the code is not |
| @@ -429,15 +479,15 @@ which appears in the changelog. · 21 unmodified lines | ||
| 429 | 479 | Special note to back-porters: It seems to be a common and useful practice |
| 430 | 480 | to insert an indication of the origin of a patch at the top of the commit |
| 431 | 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 | 492 | Date: Tue May 13 22:12:27 2008 +0200 |
| 443 | 493 | |
| @@ -446,18 +496,19 @@ And here's what appears in 2.4 : · 2 unmodified lines | ||
| 446 | 496 | [backport of 2.6 commit b7acbdfbd1f277c1eb23f344f899cfa4cd0bf36a] |
| 447 | 497 | |
| 448 | 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 | 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 | 506 | The Signed-off-by: tag indicates that the signer was involved in the |
| 456 | 507 | development of the patch, or that he/she was in the patch's delivery path. |
| 457 | 508 | |
| 458 | 509 | If a person was not directly involved in the preparation or handling of a |
| 459 | 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 | 513 | Acked-by: is often used by the maintainer of the affected code when that |
| 463 | 514 | maintainer neither contributed to nor forwarded the patch. |
| @@ -465,7 +516,8 @@ maintainer neither contributed to nor forwarded the patch. · 1 unmodified line | ||
| 465 | 516 | Acked-by: is not as formal as Signed-off-by:. It is a record that the acker |
| 466 | 517 | has at least reviewed the patch and has indicated acceptance. Hence patch |
| 467 | 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 | 522 | Acked-by: does not necessarily indicate acknowledgement of the entire patch. |
| 471 | 523 | For example, if a patch affects multiple subsystems and has an Acked-by: from |
| @@ -477,11 +529,13 @@ list archives. · 5 unmodified lines | ||
| 477 | 529 | If a person has had the opportunity to comment on a patch, but has not |
| 478 | 530 | provided such comments, you may optionally add a "Cc:" tag to the patch. |
| 479 | 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 | |
| 481 | −have been included in the discussion | |
| 532 | +person it names - but it should indicate that this person was copied on the | |
| 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 | 540 | The Reported-by tag gives credit to people who find bugs and report them and it |
| 487 | 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 · 53 unmodified lines | ||
| 541 | 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 | 606 | The canonical patch subject line is: |
| 547 | 607 | |
| @@ -549,7 +609,8 @@ The canonical patch subject line is: · 1 unmodified line | ||
| 549 | 609 | |
| 550 | 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 | 615 | - An empty line. |
| 555 | 616 | |
| @@ -656,128 +717,63 @@ See more details on the proper patch format in the following · 100 unmodified lines | ||
| 656 | 717 | references. |
| 657 | 718 | |
| 658 | 719 | |
| 659 | −16) Sending "git pull" requests (from Linus emails) | |
| 660 | − | |
| 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 | |
| 720 | +15) Sending "git pull" requests | |
| 721 | +------------------------------- | |
| 747 | 722 | |
| 748 | −(in the code itself) | |
| 749 | − dev = alloc_etherdev (sizeof(struct funky_private)); | |
| 750 | − if (!dev) | |
| 751 | − return -ENODEV; | |
| 752 | − init_funky_net(dev); | |
| 723 | +If you have a series of patches, it may be most convenient to have the | |
| 724 | +maintainer pull them directly into the subsystem repository with a | |
| 725 | +"git pull" operation. Note, however, that pulling patches from a developer | |
| 726 | +requires a higher degree of trust than taking patches from a mailing list. | |
| 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. | |
| 759 | −They provide type safety, have no length limitations, no formatting | |
| 760 | −limitations, and under gcc they are as cheap as macros. | |
| 740 | + to get these changes:" | |
| 761 | 741 | |
| 762 | −Macros should only be used for cases where a static inline is clearly | |
| 763 | −suboptimal [there are a few, isolated cases of this in fast paths], | |
| 764 | −or where it is impossible to use a static inline function [such as | |
| 765 | −string-izing]. | |
| 742 | +A pull request should also include an overall message saying what will be | |
| 743 | +included in the request, a "git shortlog" listing of the patches | |
| 744 | +themselves, and a diffstat showing the overall effect of the patch series. | |
| 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', | |
| 768 | −and 'extern __inline__'. | |
| 748 | +Some maintainers (including Linus) want to see pull requests from signed | |
| 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 | |
| 775 | −be useful: "Make it as simple as you can, and no simpler." | |
| 769 | +When generating your pull request, use the signed tag as the target. A | |
| 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 | 779 | Andrew Morton, "The perfect patch" (tpp). |
| @@ -243,7 +243,7 @@ input driver: · 242 unmodified lines | ||
| 243 | 243 | .owner = THIS_MODULE, |
| 244 | 244 | .pm = &mpu3050_pm, |
| 245 | 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 | 248 | .probe = mpu3050_probe, |
| 249 | 249 | .remove = mpu3050_remove, |
| @@ -2,11 +2,15 @@ · 1 unmodified line | ||
| 2 | 2 | - this file |
| 3 | 3 | Booting |
| 4 | 4 | - requirements for booting |
| 5 | +CCN.txt | |
| 6 | + - Cache Coherent Network ring-bus and perf PMU driver. | |
| 5 | 7 | Interrupts |
| 6 | 8 | - ARM Interrupt subsystem documentation |
| 7 | 9 | IXP4xx |
| 8 | 10 | - Intel IXP4xx Network processor. |
| 9 | −msm | |
| 11 | +Makefile | |
| 12 | + - Build sourcefiles as part of the Documentation-build for arm | |
| 13 | +msm/ | |
| 10 | 14 | - MSM specific documentation |
| 11 | 15 | Netwinder |
| 12 | 16 | - Netwinder specific documentation |
| @@ -18,11 +22,9 @@ README · 5 unmodified lines | ||
| 18 | 22 | - General ARM documentation |
| 19 | 23 | SA1100/ |
| 20 | 24 | - SA1100 documentation |
| 21 | −Samsung-S3C24XX | |
| 25 | +Samsung-S3C24XX/ | |
| 22 | 26 | - S3C24XX ARM Linux Overview |
| 23 | −Sharp-LH | |
| 24 | − - Linux on Sharp LH79524 and LH7A40X System On a Chip (SOC) | |
| 25 | −SPEAr | |
| 27 | +SPEAr/ | |
| 26 | 28 | - ST SPEAr platform Linux Overview |
| 27 | 29 | VFP/ |
| 28 | 30 | - Release notes for Linux Kernel Vector Floating Point support code |
| @@ -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). | |
| @@ -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 | |
| @@ -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 | |
| @@ -50,7 +50,6 @@ SunXi family · 49 unmodified lines | ||
| 50 | 50 | http://dl.linux-sunxi.org/A31/A3x_release_document/A31/IC/A31%20user%20manual%20V1.1%2020130630.pdf |
| 51 | 51 | |
| 52 | 52 | - Allwinner A31s (sun6i) |
| 53 | − + Not Supported | |
| 54 | 53 | + Datasheet |
| 55 | 54 | http://dl.linux-sunxi.org/A31/A3x_release_document/A31s/IC/A31s%20datasheet%20V1.3%2020131106.pdf |
| 56 | 55 | + User Manual |
| @@ -32,6 +32,9 @@ The default mode depends on the status of the instruction in the · 31 unmodified lines | ||
| 32 | 32 | architecture. Deprecated instructions should default to emulation |
| 33 | 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 | 38 | Supported legacy instructions |
| 36 | 39 | ----------------------------- |
| 37 | 40 | * SWP{B} |
| @@ -43,3 +46,12 @@ Default: Undef (0) · 5 unmodified lines | ||
| 43 | 46 | Node: /proc/sys/abi/cp15_barrier |
| 44 | 47 | Status: Deprecated |
| 45 | 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. | |
| @@ -1,3 +1,5 @@ | ||
| 1 | 1 | ifneq ($(CONFIG_BLACKFIN),) |
| 2 | +ifneq ($(CONFIG_BFIN_GPTIMERS,) | |
| 2 | 3 | obj-m := gptimers-example.o |
| 3 | 4 | endif |
| 5 | +endif | |
| @@ -317,10 +317,10 @@ maps this page at its virtual address. · 316 unmodified lines | ||
| 317 | 317 | about doing this. |
| 318 | 318 | |
| 319 | 319 | The idea is, first at flush_dcache_page() time, if |
| 320 | − page->mapping->i_mmap is an empty tree and ->i_mmap_nonlinear | |
| 321 | − an empty list, just mark the architecture private page flag bit. | |
| 322 | − Later, in update_mmu_cache(), a check is made of this flag bit, | |
| 323 | − and if set the flush is done and the flag bit is cleared. | |
| 320 | + page->mapping->i_mmap is an empty tree, just mark the architecture | |
| 321 | + private page flag bit. Later, in update_mmu_cache(), a check is | |
| 322 | + made of this flag bit, and if set the flush is done and the flag | |
| 323 | + bit is cleared. | |
| 324 | 324 | |
| 325 | 325 | IMPORTANT NOTE: It is often important, if you defer the flush, |
| 326 | 326 | that the actual flush occurs on the same CPU |
| @@ -24,3 +24,5 @@ net_prio.txt · 23 unmodified lines | ||
| 24 | 24 | - Network priority cgroups details and usages. |
| 25 | 25 | resource_counter.txt |
| 26 | 26 | - Resource Counter API. |
| 27 | +unified-hierarchy.txt | |
| 28 | + - Description the new/next cgroup interface. | |
| @@ -327,6 +327,85 @@ supported and the interface files "release_agent" and · 326 unmodified lines | ||
| 327 | 327 | - use_hierarchy is on by default and the cgroup file for the flag is |
| 328 | 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 | 410 | 5. Planned Changes |
| 332 | 411 | |
| @@ -73,6 +73,8 @@ the operations defined in clk.h: · 72 unmodified lines | ||
| 73 | 73 | unsigned long *parent_rate); |
| 74 | 74 | long (*determine_rate)(struct clk_hw *hw, |
| 75 | 75 | unsigned long rate, |
| 76 | + unsigned long min_rate, | |
| 77 | + unsigned long max_rate, | |
| 76 | 78 | unsigned long *best_parent_rate, |
| 77 | 79 | struct clk_hw **best_parent_clk); |
| 78 | 80 | int (*set_parent)(struct clk_hw *hw, u8 index); |
| @@ -37,6 +37,14 @@ controlling P state selection. These files have been added to · 36 unmodified lines | ||
| 37 | 37 | no_turbo: limits the driver to selecting P states below the turbo |
| 38 | 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 | 48 | For contemporary Intel processors, the frequency is controlled by the |
| 41 | 49 | processor itself and the P-states exposed to software are related to |
| 42 | 50 | performance levels. The idea that frequency can be set to a single |
| @@ -51,7 +51,7 @@ Parameters: <cipher> <key> <iv_offset> <device path> \ · 50 unmodified lines | ||
| 51 | 51 | Otherwise #opt_params is the number of following arguments. |
| 52 | 52 | |
| 53 | 53 | Example of optional parameters section: |
| 54 | − 1 allow_discards | |
| 54 | + 3 allow_discards same_cpu_crypt submit_from_crypt_cpus | |
| 55 | 55 | |
| 56 | 56 | allow_discards |
| 57 | 57 | Block discard requests (a.k.a. TRIM) are passed through the crypt device. |
| @@ -63,6 +63,19 @@ allow_discards · 5 unmodified lines | ||
| 63 | 63 | used space etc.) if the discarded blocks can be located easily on the |
| 64 | 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 | 79 | Example scripts |
| 67 | 80 | =============== |
| 68 | 81 | LUKS (Linux Unified Key Setup) is now the preferred way to set up disk |
| @@ -15,6 +15,13 @@ Required root node property: · 14 unmodified lines | ||
| 15 | 15 | |
| 16 | 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 | 25 | Example: |
| 19 | 26 | |
| 20 | 27 | compatible = "marvell,a385-rd", "marvell,armada385", "marvell,armada380"; |
| @@ -24,6 +24,7 @@ compatible: must be one of: · 23 unmodified lines | ||
| 24 | 24 | o "atmel,at91sam9g45" |
| 25 | 25 | o "atmel,at91sam9n12" |
| 26 | 26 | o "atmel,at91sam9rl" |
| 27 | + o "atmel,at91sam9xe" | |
| 27 | 28 | * "atmel,sama5" for SoCs using a Cortex-A5, shall be extended with the specific |
| 28 | 29 | SoC family: |
| 29 | 30 | o "atmel,sama5d3" shall be extended with the specific SoC compatible: |
| @@ -136,3 +137,19 @@ Example: · 106 unmodified lines | ||
| 136 | 137 | compatible = "atmel,at91sam9260-rstc"; |
| 137 | 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 | + }; | |
| @@ -79,7 +79,9 @@ reboot · 78 unmodified lines | ||
| 79 | 79 | Required properties |
| 80 | 80 | |
| 81 | 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 | 86 | - syscon |
| 85 | 87 | A phandle / integer array that points to the syscon node which describes |
| @@ -38,8 +38,6 @@ its hardware characteristcs. · 37 unmodified lines | ||
| 38 | 38 | AMBA markee): |
| 39 | 39 | - "arm,coresight-replicator" |
| 40 | 40 | |
| 41 | − * id: a unique number that will identify this replicator. | |
| 42 | − | |
| 43 | 41 | * port or ports: same as above. |
| 44 | 42 | |
| 45 | 43 | * Optional properties for ETM/PTMs: |
| @@ -94,8 +92,6 @@ Example: · 48 unmodified lines | ||
| 94 | 92 | * AMBA bus. As such no need to add "arm,primecell". |
| 95 | 93 | */ |
| 96 | 94 | compatible = "arm,coresight-replicator"; |
| 97 | − /* this will show up in debugfs as "0.replicator" */ | |
| 98 | − id = <0>; | |
| 99 | 95 | |
| 100 | 96 | ports { |
| 101 | 97 | #address-cells = <1>; |
| @@ -175,6 +175,7 @@ nodes to be present and contain the properties described below. · 174 unmodified lines | ||
| 175 | 175 | "marvell,pj4a" |
| 176 | 176 | "marvell,pj4b" |
| 177 | 177 | "marvell,sheeva-v5" |
| 178 | + "nvidia,tegra132-denver" | |
| 178 | 179 | "qcom,krait" |
| 179 | 180 | "qcom,scorpion" |
| 180 | 181 | - enable-method |
| @@ -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 | |
| @@ -23,7 +23,7 @@ Optional Properties: · 22 unmodified lines | ||
| 23 | 23 | devices in this power domain. Maximum of 4 pairs (N = 0 to 3) |
| 24 | 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 | 27 | defined with a phandle to respective power domain. |
| 28 | 28 | |
| 29 | 29 | Example: |
| @@ -75,6 +75,18 @@ i.MX6q generic board · 74 unmodified lines | ||
| 75 | 75 | Required root node properties: |
| 76 | 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 | 91 | Freescale LS1021A Platform Device Tree Bindings |
| 80 | 92 | ------------------------------------------------ |
| @@ -112,3 +124,11 @@ Example: · 31 unmodified lines | ||
| 112 | 124 | compatible = "fsl,ls1021a-dcfg"; |
| 113 | 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 | + | |
| @@ -32,12 +32,16 @@ Main node required properties: · 31 unmodified lines | ||
| 32 | 32 | The 3rd cell is the flags, encoded as follows: |
| 33 | 33 | bits[3:0] trigger type and level flags. |
| 34 | 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 | 36 | 4 = active high level-sensitive |
| 37 | − 8 = active low level-sensitive | |
| 37 | + 8 = active low level-sensitive (invalid for SPIs). | |
| 38 | 38 | bits[15:8] PPI interrupt cpu mask. Each bit corresponds to each of |
| 39 | 39 | the 8 possible cpus attached to the GIC. A bit set to '1' indicated |
| 40 | 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 | 46 | - reg : Specifies base physical address(s) and size of the GIC registers. The |
| 43 | 47 | first region is the GIC distributor register base and size. The 2nd region is |
| @@ -9,6 +9,10 @@ HiP04 D01 Board · 8 unmodified lines | ||
| 9 | 9 | Required root node properties: |
| 10 | 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 | 17 | Hisilicon system controller |
| 14 | 18 | |
| @@ -36,6 +40,27 @@ Example: · 21 unmodified lines | ||
| 36 | 40 | reboot-offset = <0x4>; |
| 37 | 41 | }; |
| 38 | 42 | |
| 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 | + | |
| 39 | 64 | ----------------------------------------------------------------------- |
| 40 | 65 | Hisilicon CPU controller |
| 41 | 66 | |
| @@ -57,6 +57,16 @@ Optional properties: · 56 unmodified lines | ||
| 57 | 57 | - cache-id-part: cache id part number to be used if it is not present |
| 58 | 58 | on hardware |
| 59 | 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 | 71 | Example: |
| 62 | 72 | |
| @@ -9,6 +9,7 @@ compatible: Must contain one of · 8 unmodified lines | ||
| 9 | 9 | "mediatek,mt6592" |
| 10 | 10 | "mediatek,mt8127" |
| 11 | 11 | "mediatek,mt8135" |
| 12 | + "mediatek,mt8173" | |
| 12 | 13 | |
| 13 | 14 | |
| 14 | 15 | Supported boards: |
| @@ -25,3 +26,6 @@ Supported boards: · 10 unmodified lines | ||
| 25 | 26 | - MTK mt8135 tablet EVB: |
| 26 | 27 | Required root node properties: |
| 27 | 28 | - compatible = "mediatek,mt8135-evbp1", "mediatek,mt8135"; |
| 29 | +- MTK mt8173 tablet EVB: | |
| 30 | + Required root node properties: | |
| 31 | + - compatible = "mediatek,mt8173-evb", "mediatek,mt8173"; | |
| @@ -5,8 +5,10 @@ interrupt. · 4 unmodified lines | ||
| 5 | 5 | |
| 6 | 6 | Required properties: |
| 7 | 7 | - compatible: should be one of: |
| 8 | + "mediatek,mt8173-sysirq" | |
| 8 | 9 | "mediatek,mt8135-sysirq" |
| 9 | 10 | "mediatek,mt8127-sysirq" |
| 11 | + "mediatek,mt6592-sysirq" | |
| 10 | 12 | "mediatek,mt6589-sysirq" |
| 11 | 13 | "mediatek,mt6582-sysirq" |
| 12 | 14 | "mediatek,mt6577-sysirq" |
| @@ -8,7 +8,7 @@ Properties: · 7 unmodified lines | ||
| 8 | 8 | "qcom,kpss-timer" - krait subsystem |
| 9 | 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 | 12 | timer, and optionally a second general purpose timer in that |
| 13 | 13 | order. |
| 14 | 14 | |
| @@ -9,6 +9,16 @@ Rockchip platforms device tree bindings · 8 unmodified lines | ||
| 9 | 9 | Required root node properties: |
| 10 | 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 | 16 | - Radxa Rock board: |
| 13 | 17 | Required root node properties: |
| 14 | 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"; | |
| @@ -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 | + }; | |
| @@ -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 | + }; | |
| @@ -10,6 +10,7 @@ Properties: · 9 unmodified lines | ||
| 10 | 10 | - "samsung,exynos5260-pmu" - for Exynos5260 SoC. |
| 11 | 11 | - "samsung,exynos5410-pmu" - for Exynos5410 SoC, |
| 12 | 12 | - "samsung,exynos5420-pmu" - for Exynos5420 SoC. |
| 13 | + - "samsung,exynos7-pmu" - for Exynos7 SoC. | |
| 13 | 14 | second value must be always "syscon". |
| 14 | 15 | |
| 15 | 16 | - reg : offset and length of the register set. |
| @@ -3,7 +3,9 @@ CSR SiRFprimaII and SiRFmarco device tree bindings. · 2 unmodified lines | ||
| 3 | 3 | |
| 4 | 4 | Required root node properties: |
| 5 | 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 | 10 | - "sirf,prima2-cb" : prima2 "cb" evaluation board |
| 7 | − - "sirf,marco-cb" : marco "cb" evaluation board | |
| 8 | 11 | - "sirf,prima2" : prima2 device based board |
| 9 | − - "sirf,marco" : marco device based board | |
| @@ -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"; | |
| @@ -13,3 +13,7 @@ Boards with the ST STiH407 SoC shall have the following properties: · 12 unmodified lines | ||
| 13 | 13 | Required root node property: |
| 14 | 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 | + | |
| @@ -1,7 +1,10 @@ | ||
| 1 | 1 | NVIDIA Tegra AHB |
| 2 | 2 | |
| 3 | 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 | 8 | - reg : Should contain 1 register ranges(address and length) |
| 6 | 9 | |
| 7 | 10 | Example: |
| @@ -6,7 +6,11 @@ modes. It provides power-gating controllers for SoC and CPU power-islands. · 5 unmodified lines | ||
| 6 | 6 | |
| 7 | 7 | Required properties: |
| 8 | 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 | 14 | - reg : Offset and length of the register set for the device |
| 11 | 15 | - clocks : Must contain an entry for each entry in clock-names. |
| 12 | 16 | See ../clocks/clock-bindings.txt for details. |
| @@ -47,6 +51,23 @@ Required properties when nvidia,suspend-mode=<0>: · 34 unmodified lines | ||
| 47 | 51 | sleep mode, the warm boot code will restore some PLLs, clocks and then |
| 48 | 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 | 71 | Example: |
| 51 | 72 | |
| 52 | 73 | / SoC dts including file |
| @@ -68,6 +89,15 @@ pmc@7000f400 { · 15 unmodified lines | ||
| 68 | 89 | |
| 69 | 90 | / Tegra board dts file |
| 70 | 91 | { |
| 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 | + }; | |
| 71 | 101 | ... |
| 72 | 102 | clocks { |
| 73 | 103 | compatible = "simple-bus"; |
| @@ -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 | |
| @@ -37,9 +37,10 @@ Required properties when using sub-nodes: · 36 unmodified lines | ||
| 37 | 37 | |
| 38 | 38 | |
| 39 | 39 | Sub-nodes required properties: |
| 40 | −- reg : the port number | |
| 41 | −- phys : reference to the SATA PHY node | |
| 42 | − | |
| 40 | +- reg : the port number | |
| 41 | +And at least one of the following properties: | |
| 42 | +- phys : reference to the SATA PHY node | |
| 43 | +- target-supply : regulator for SATA target power | |
| 43 | 44 | |
| 44 | 45 | Examples: |
| 45 | 46 | sata@ffe08000 { |
| @@ -68,10 +69,12 @@ With sub-nodes: · 22 unmodified lines | ||
| 68 | 69 | sata0: sata-port@0 { |
| 69 | 70 | reg = <0>; |
| 70 | 71 | phys = <&sata_phy 0>; |
| 72 | + target-supply = <®_sata0>; | |
| 71 | 73 | }; |
| 72 | 74 | |
| 73 | 75 | sata1: sata-port@1 { |
| 74 | 76 | reg = <1>; |
| 75 | 77 | phys = <&sata_phy 1>; |
| 78 | + target-supply = <®_sata1>;; | |
| 76 | 79 | }; |
| 77 | 80 | }; |
| @@ -9,7 +9,7 @@ Properties: · 8 unmodified lines | ||
| 9 | 9 | |
| 10 | 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 | 13 | the device configuration, there may be one or two banks. |
| 14 | 14 | |
| 15 | 15 | - cavium,bus-width: The width of the connection to the CF devices. Valid |
| @@ -1,7 +1,9 @@ | ||
| 1 | 1 | Tegra124 SoC SATA AHCI controller |
| 2 | 2 | |
| 3 | 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 | 7 | - reg : Should contain 2 entries: |
| 6 | 8 | - AHCI register set (SATA BAR5) |
| 7 | 9 | - SATA register set |
| @@ -6,8 +6,8 @@ Required properties: · 5 unmodified lines | ||
| 6 | 6 | - compatible: Should be set to one of the following: |
| 7 | 7 | marvell,armada370-mbus |
| 8 | 8 | marvell,armadaxp-mbus |
| 9 | − marvell,armada370-mbus | |
| 10 | − marvell,armadaxp-mbus | |
| 9 | + marvell,armada375-mbus | |
| 10 | + marvell,armada380-mbus | |
| 11 | 11 | marvell,kirkwood-mbus |
| 12 | 12 | marvell,dove-mbus |
| 13 | 13 | marvell,orion5x-88f5281-mbus |
| @@ -12,7 +12,7 @@ configuration register for writes. These configuration register may be used to · 11 unmodified lines | ||
| 12 | 12 | enable (and disable in some cases) SoC pin drivers, select peripheral clock |
| 13 | 13 | sources (internal or pin), etc. In some cases, a configuration register is |
| 14 | 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 | 16 | provide device ID information, provide ethernet MAC addresses, as well as other |
| 17 | 17 | miscellaneous functions. |
| 18 | 18 | |
| @@ -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 | + | |
| @@ -34,6 +34,8 @@ Required Properties for Clock Controller: · 33 unmodified lines | ||
| 34 | 34 | - "samsung,exynos7-clock-peris" |
| 35 | 35 | - "samsung,exynos7-clock-fsys0" |
| 36 | 36 | - "samsung,exynos7-clock-fsys1" |
| 37 | + - "samsung,exynos7-clock-mscl" | |
| 38 | + - "samsung,exynos7-clock-aud" | |
| 37 | 39 | |
| 38 | 40 | - reg: physical base address of the controller and the length of |
| 39 | 41 | memory mapped region. |
| @@ -53,6 +55,7 @@ Input clocks for top0 clock controller: · 13 unmodified lines | ||
| 53 | 55 | - dout_sclk_bus1_pll |
| 54 | 56 | - dout_sclk_cc_pll |
| 55 | 57 | - dout_sclk_mfc_pll |
| 58 | + - dout_sclk_aud_pll | |
| 56 | 59 | |
| 57 | 60 | Input clocks for top1 clock controller: |
| 58 | 61 | - fin_pll |
| @@ -76,6 +79,14 @@ Input clocks for peric1 clock controller: · 17 unmodified lines | ||
| 76 | 79 | - sclk_uart1 |
| 77 | 80 | - sclk_uart2 |
| 78 | 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 | 91 | Input clocks for peris clock controller: |
| 81 | 92 | - fin_pll |
| @@ -91,3 +102,7 @@ Input clocks for fsys1 clock controller: · 9 unmodified lines | ||
| 91 | 102 | - dout_aclk_fsys1_200 |
| 92 | 103 | - dout_sclk_mmc0 |
| 93 | 104 | - dout_sclk_mmc1 |
| 105 | + | |
| 106 | +Input clocks for aud clock controller: | |
| 107 | + - fin_pll | |
| 108 | + - fout_aud_pll | |
| @@ -1,4 +1,4 @@ | ||
| 1 | −NVIDIA Tegra124 Clock And Reset Controller | |
| 1 | +NVIDIA Tegra124 and Tegra132 Clock And Reset Controller | |
| 2 | 2 | |
| 3 | 3 | This binding uses the common clock binding: |
| 4 | 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 · 2 unmodified lines | ||
| 7 | 7 | for muxing and gating Tegra's clocks, and setting their rates. |
| 8 | 8 | |
| 9 | 9 | Required properties : |
| 10 | −- compatible : Should be "nvidia,tegra124-car" | |
| 10 | +- compatible : Should be "nvidia,tegra124-car" or "nvidia,tegra132-car" | |
| 11 | 11 | - reg : Should contain CAR registers location and length |
| 12 | 12 | - clocks : Should contain phandle and clock specifiers for two clocks: |
| 13 | 13 | the 32 KHz "32k_in", and the board-specific oscillator "osc". |
| 14 | 14 | - #clock-cells : Should be 1. |
| 15 | 15 | In clock consumers, this cell represents the clock ID exposed by the |
| 16 | − CAR. The assignments may be found in header file | |
| 17 | − <dt-bindings/clock/tegra124-car.h>. | |
| 16 | + CAR. The assignments may be found in the header files | |
| 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 | 20 | - #reset-cells : Should be 1. |
| 19 | 21 | In clock consumers, this cell represents the bit number in the CAR's |
| 20 | 22 | array of CLK_RST_CONTROLLER_RST_DEVICES_* registers. |
| @@ -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 | + }; | |
| @@ -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 | 4 | SYSCLK signal. The SYSCLK input (frequency) is multiplied using |
| 5 | 5 | multiple phase locked loops (PLL) to create a variety of frequencies |
| 6 | 6 | which can then be passed to a variety of internal logic, including |
| @@ -29,6 +29,7 @@ Required properties: · 22 unmodified lines | ||
| 29 | 29 | * "fsl,t4240-clockgen" |
| 30 | 30 | * "fsl,b4420-clockgen" |
| 31 | 31 | * "fsl,b4860-clockgen" |
| 32 | + * "fsl,ls1021a-clockgen" | |
| 32 | 33 | Chassis clock strings include: |
| 33 | 34 | * "fsl,qoriq-clockgen-1.0": for chassis 1.0 clocks |
| 34 | 35 | * "fsl,qoriq-clockgen-2.0": for chassis 2.0 clocks |
| @@ -11,6 +11,7 @@ Required Properties: · 10 unmodified lines | ||
| 11 | 11 | |
| 12 | 12 | - compatible: Must be one of the following |
| 13 | 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 | 15 | - "renesas,r8a7740-mstp-clocks" for R8A7740 (R-Mobile A1) MSTP gate clocks |
| 15 | 16 | - "renesas,r8a7779-mstp-clocks" for R8A7779 (R-Car H1) MSTP gate clocks |
| 16 | 17 | - "renesas,r8a7790-mstp-clocks" for R8A7790 (R-Car H2) MSTP gate clocks |
| @@ -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 | + }; | |
| @@ -8,15 +8,18 @@ Required Properties: · 7 unmodified lines | ||
| 8 | 8 | - compatible: Must be one of |
| 9 | 9 | - "renesas,r8a7790-cpg-clocks" for the r8a7790 CPG |
| 10 | 10 | - "renesas,r8a7791-cpg-clocks" for the r8a7791 CPG |
| 11 | + - "renesas,r8a7793-cpg-clocks" for the r8a7793 CPG | |
| 11 | 12 | - "renesas,r8a7794-cpg-clocks" for the r8a7794 CPG |
| 12 | 13 | - "renesas,rcar-gen2-cpg-clocks" for the generic R-Car Gen2 CPG |
| 13 | 14 | |
| 14 | 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 | 19 | - #clock-cells: Must be 1 |
| 18 | 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 | 25 | Example |
| @@ -26,8 +29,9 @@ Example · 3 unmodified lines | ||
| 26 | 29 | compatible = "renesas,r8a7790-cpg-clocks", |
| 27 | 30 | "renesas,rcar-gen2-cpg-clocks"; |
| 28 | 31 | reg = <0 0xe6150000 0 0x1000>; |
| 29 | − clocks = <&extal_clk>; | |
| 32 | + clocks = <&extal_clk &usb_extal_clk>; | |
| 30 | 33 | #clock-cells = <1>; |
| 31 | 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 | }; |
| @@ -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 | + }; | |
| @@ -26,7 +26,7 @@ Required properties: · 25 unmodified lines | ||
| 26 | 26 | "allwinner,sun5i-a10s-ahb-gates-clk" - for the AHB gates on A10s |
| 27 | 27 | "allwinner,sun7i-a20-ahb-gates-clk" - for the AHB gates on A20 |
| 28 | 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 | 30 | "allwinner,sun6i-a31-ahb1-gates-clk" - for the AHB1 gates on A31 |
| 31 | 31 | "allwinner,sun8i-a23-ahb1-gates-clk" - for the AHB1 gates on A23 |
| 32 | 32 | "allwinner,sun9i-a80-ahb0-gates-clk" - for the AHB0 gates on A80 |
| @@ -55,9 +55,11 @@ Required properties: · 22 unmodified lines | ||
| 55 | 55 | "allwinner,sun6i-a31-apb2-gates-clk" - for the APB2 gates on A31 |
| 56 | 56 | "allwinner,sun8i-a23-apb2-gates-clk" - for the APB2 gates on A23 |
| 57 | 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 | |
| 59 | − "allwinner,sun4i-a10-mmc-sample-clk" - for the MMC sample clock on A10 | |
| 58 | + "allwinner,sun4i-a10-mmc-clk" - for the MMC clock | |
| 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 | 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 | 63 | "allwinner,sun8i-a23-mbus-clk" - for the MBUS clock on A23 |
| 62 | 64 | "allwinner,sun7i-a20-out-clk" - for the external output clocks |
| 63 | 65 | "allwinner,sun7i-a20-gmac-clk" - for the GMAC clock module on A20/A31 |
| @@ -73,7 +75,9 @@ Required properties for all clocks: · 9 unmodified lines | ||
| 73 | 75 | - #clock-cells : from common clock binding; shall be set to 0 except for |
| 74 | 76 | the following compatibles where it shall be set to 1: |
| 75 | 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 | 81 | - clock-output-names : shall be the corresponding names of the outputs. |
| 78 | 82 | If the clock module only has one output, the name shall be the |
| 79 | 83 | module name. |
| @@ -81,6 +85,10 @@ Required properties for all clocks: · 1 unmodified line | ||
| 81 | 85 | And "allwinner,*-usb-clk" clocks also require: |
| 82 | 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 | 92 | For "allwinner,sun7i-a20-gmac-clk", the parent clocks shall be fixed rate |
| 85 | 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 · 8 unmodified lines | ||
| 95 | 103 | is the normal PLL6 output, or "pll6". The second output is rate doubled |
| 96 | 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 | 114 | For example: |
| 99 | 115 | |
| 100 | 116 | osc24M: clk@01c20050 { |
| @@ -138,11 +154,11 @@ cpu: cpu@01c20054 { · 37 unmodified lines | ||
| 138 | 154 | }; |
| 139 | 155 | |
| 140 | 156 | mmc0_clk: clk@01c20088 { |
| 141 | − #clock-cells = <0>; | |
| 142 | − compatible = "allwinner,sun4i-mod0-clk"; | |
| 157 | + #clock-cells = <1>; | |
| 158 | + compatible = "allwinner,sun4i-a10-mmc-clk"; | |
| 143 | 159 | reg = <0x01c20088 0x4>; |
| 144 | 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 | 164 | mii_phy_tx_clk: clk@2 { |
| @@ -170,3 +186,16 @@ gmac_clk: clk@01c20164 { · 21 unmodified lines | ||
| 170 | 186 | clocks = <&mii_phy_tx_clk>, <&gmac_int_tx_clk>; |
| 171 | 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 | +}; | |
| @@ -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 | + }; | |
| @@ -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 | + }; | |
| @@ -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 | + }; | |
| @@ -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 | +}; | |
| @@ -1,13 +1,10 @@ | ||
| 1 | 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 | 4 | controller instances named DMAC capable of serving multiple clients. Channels |
| 5 | 5 | can be dedicated to specific clients or shared between a large number of |
| 6 | 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 | 8 | Each DMA client is connected to one dedicated port of the DMAC, identified by |
| 12 | 9 | an 8-bit port number called the MID/RID. A DMA controller can thus serve up to |
| 13 | 10 | 256 clients in total. When the number of hardware channels is lower than the |
| @@ -38,7 +38,7 @@ Example: · 37 unmodified lines | ||
| 38 | 38 | chan_allocation_order = <1>; |
| 39 | 39 | chan_priority = <1>; |
| 40 | 40 | block_size = <0xfff>; |
| 41 | − data_width = <3 3 0 0>; | |
| 41 | + data_width = <3 3>; | |
| 42 | 42 | }; |
| 43 | 43 | |
| 44 | 44 | DMA clients connected to the Designware DMA controller must use the format |
| @@ -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 | + }; | |
| @@ -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 | + }; | |
| @@ -2,6 +2,8 @@ Qualcomm adreno/snapdragon hdmi output · 1 unmodified line | ||
| 2 | 2 | |
| 3 | 3 | Required properties: |
| 4 | 4 | - compatible: one of the following |
| 5 | + * "qcom,hdmi-tx-8084" | |
| 6 | + * "qcom,hdmi-tx-8074" | |
| 5 | 7 | * "qcom,hdmi-tx-8660" |
| 6 | 8 | * "qcom,hdmi-tx-8960" |
| 7 | 9 | - reg: Physical base address and length of the controller's registers |
| @@ -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 | + }; | |
| @@ -1,11 +1,11 @@ | ||
| 1 | 1 | NVIDIA Tegra20/Tegra30/Tegr114/Tegra124 fuse block. |
| 2 | 2 | |
| 3 | 3 | Required properties: |
| 4 | −- compatible : should be: | |
| 5 | − "nvidia,tegra20-efuse" | |
| 6 | − "nvidia,tegra30-efuse" | |
| 7 | − "nvidia,tegra114-efuse" | |
| 8 | − "nvidia,tegra124-efuse" | |
| 4 | +- compatible : For Tegra20, must contain "nvidia,tegra20-efuse". For Tegra30, | |
| 5 | + must contain "nvidia,tegra30-efuse". For Tegra114, must contain | |
| 6 | + "nvidia,tegra114-efuse". For Tegra124, must contain "nvidia,tegra124-efuse". | |
| 7 | + Otherwise, must contain "nvidia,<chip>-efuse", plus one of the above, where | |
| 8 | + <chip> is tegra132. | |
| 9 | 9 | Details: |
| 10 | 10 | nvidia,tegra20-efuse: Tegra20 requires using APB DMA to read the fuse data |
| 11 | 11 | due to a hardware bug. Tegra20 also lacks certain information which is |
| @@ -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 | + }; | |
| @@ -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 | + }; | |
| @@ -39,7 +39,7 @@ Optional Properties: · 38 unmodified lines | ||
| 39 | 39 | - lines-initial-states: Bitmask that specifies the initial state of each |
| 40 | 40 | line. When a bit is set to zero, the corresponding line will be initialized to |
| 41 | 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 | 43 | all lines will be initialized to the input state. |
| 44 | 44 | |
| 45 | 45 | The I/O expander can detect input state changes, and thus optionally act as |
| @@ -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 | + }; | |
| @@ -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 | + }; | |
| @@ -69,7 +69,8 @@ GPIO pin number, and GPIO flags as accepted by the "qe_pio_e" gpio-controller. · 68 unmodified lines | ||
| 69 | 69 | ---------------------------------- |
| 70 | 70 | |
| 71 | 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 | 75 | The gpio-specifier's polarity flag should represent the physical level at the |
| 75 | 76 | GPIO controller that achieves (or represents, for inputs) a logically asserted |
| @@ -147,7 +148,7 @@ contains information structures as follows: · 71 unmodified lines | ||
| 147 | 148 | numeric-gpio-range ::= |
| 148 | 149 | <pinctrl-phandle> <gpio-base> <pinctrl-base> <count> |
| 149 | 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 | 152 | gpio-base : Base GPIO ID in the GPIO controller |
| 152 | 153 | pinctrl-base : Base pinctrl pin ID in the pin controller |
| 153 | 154 | count : The number of GPIOs/pins in this range |
| @@ -3,8 +3,8 @@ · 2 unmodified lines | ||
| 3 | 3 | Required properties: |
| 4 | 4 | - compatible : Should be "intel,pxa25x-gpio", "intel,pxa26x-gpio", |
| 5 | 5 | "intel,pxa27x-gpio", "intel,pxa3xx-gpio", |
| 6 | − "marvell,pxa93x-gpio", "marvell,mmp-gpio" or | |
| 7 | − "marvell,mmp2-gpio". | |
| 6 | + "marvell,pxa93x-gpio", "marvell,mmp-gpio", | |
| 7 | + "marvell,mmp2-gpio" or marvell,pxa1928-gpio. | |
| 8 | 8 | - reg : Address and length of the register set for the device |
| 9 | 9 | - interrupts : Should be the port interrupt shared by all gpio pins. |
| 10 | 10 | There're three gpio interrupts in arch-pxa, and they're gpio0, |
| @@ -197,7 +197,9 @@ of the following host1x client modules: · 196 unmodified lines | ||
| 197 | 197 | - sor: serial output resource |
| 198 | 198 | |
| 199 | 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 | 203 | - reg: Physical base address and length of the controller's registers. |
| 202 | 204 | - interrupts: The interrupt outputs from the controller. |
| 203 | 205 | - clocks: Must contain an entry for each entry in clock-names. |
| @@ -222,7 +224,9 @@ of the following host1x client modules: · 18 unmodified lines | ||
| 222 | 224 | - nvidia,dpaux: phandle to a DispayPort AUX interface |
| 223 | 225 | |
| 224 | 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 | 230 | - reg: Physical base address and length of the controller's registers. |
| 227 | 231 | - interrupts: The interrupt outputs from the controller. |
| 228 | 232 | - clocks: Must contain an entry for each entry in clock-names. |
| @@ -83,6 +83,22 @@ sti-hda: · 82 unmodified lines | ||
| 83 | 83 | - clock-names: names of the clocks listed in clocks property in the same |
| 84 | 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 | 102 | sti-hqvdp: |
| 87 | 103 | must be a child of sti-display-subsystem |
| 88 | 104 | Required properties: |
| @@ -198,6 +214,19 @@ Example: · 109 unmodified lines | ||
| 198 | 214 | clock-names = "pix", "hddac"; |
| 199 | 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 | 232 | sti-hqvdp@9c000000 { |
| @@ -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 | + }; | |
| @@ -16,6 +16,9 @@ Required Properties: · 15 unmodified lines | ||
| 16 | 16 | Optional Properties: |
| 17 | 17 | |
| 18 | 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 | 24 | Example: |
| @@ -4,24 +4,60 @@ Required properties: · 3 unmodified lines | ||
| 4 | 4 | - compatible : "opencores,i2c-ocores" or "aeroflexgaisler,i2cmst" |
| 5 | 5 | - reg : bus address start and address range size of device |
| 6 | 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 | 11 | - #address-cells : should be <1> |
| 9 | 12 | - #size-cells : should be <0> |
| 10 | 13 | |
| 11 | 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 | 17 | - reg-shift : device register offsets are shifted by this value |
| 13 | 18 | - reg-io-width : io register width in bytes (1, 2 or 4) |
| 14 | 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 | 53 | i2c0: ocores@a0000000 { |
| 19 | 54 | #address-cells = <1>; |
| 20 | 55 | #size-cells = <0>; |
| 21 | 56 | compatible = "opencores,i2c-ocores"; |
| 22 | 57 | reg = <0xa0000000 0x8>; |
| 23 | 58 | interrupts = <10>; |
| 24 | − clock-frequency = <20000000>; | |
| 59 | + clocks = <&osc>; | |
| 60 | + clock-frequency = <400000>; /* i2c bus frequency 400 KHz */ | |
| 25 | 61 | |
| 26 | 62 | reg-shift = <0>; /* 8 bit registers */ |
| 27 | 63 | reg-io-width = <1>; /* 8 bit read/write */ |
| @@ -21,6 +21,17 @@ Required on RK3066, RK3188 : · 20 unmodified lines | ||
| 21 | 21 | Optional properties : |
| 22 | 22 | |
| 23 | 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 | 36 | Example: |
| 26 | 37 | |
| @@ -39,4 +50,7 @@ i2c0: i2c@2002d000 { · 12 unmodified lines | ||
| 39 | 50 | |
| 40 | 51 | clock-names = "i2c"; |
| 41 | 52 | clocks = <&cru PCLK_I2C0>; |
| 53 | + | |
| 54 | + i2c-scl-rising-time-ns = <800>; | |
| 55 | + i2c-scl-falling-time-ns = <100>; | |
| 42 | 56 | }; |
| @@ -1,11 +1,11 @@ | ||
| 1 | 1 | NVIDIA Tegra20/Tegra30/Tegra114 I2C controller driver. |
| 2 | 2 | |
| 3 | 3 | Required properties: |
| 4 | −- compatible : should be: | |
| 5 | − "nvidia,tegra114-i2c" | |
| 6 | − "nvidia,tegra30-i2c" | |
| 7 | − "nvidia,tegra20-i2c" | |
| 8 | − "nvidia,tegra20-i2c-dvc" | |
| 4 | +- compatible : For Tegra20, must be one of "nvidia,tegra20-i2c-dvc" or | |
| 5 | + "nvidia,tegra20-i2c". For Tegra30, must be "nvidia,tegra30-i2c". | |
| 6 | + For Tegra114, must be "nvidia,tegra114-i2c". Otherwise, must be | |
| 7 | + "nvidia,<chip>-i2c", plus at least one of the above, where <chip> is | |
| 8 | + tegra124, tegra132, or tegra210. | |
| 9 | 9 | Details of compatible are as follows: |
| 10 | 10 | nvidia,tegra20-i2c-dvc: Tegra20 has specific I2C controller called as DVC I2C |
| 11 | 11 | controller. This only support master mode of I2C communication. Register |
| @@ -9,6 +9,7 @@ document for it just like any other devices. · 8 unmodified lines | ||
| 9 | 9 | |
| 10 | 10 | Compatible Vendor / Chip |
| 11 | 11 | ========== ============= |
| 12 | +abracon,abb5zes3 AB-RTCMC-32.768kHz-B5ZE-S3: Real Time Clock/Calendar Module with I2C Interface | |
| 12 | 13 | ad,ad7414 SMBus/I2C Digital Temperature Sensor in 6-Pin SOT with SMBus Alert and Over Temperature Pin |
| 13 | 14 | ad,adm9240 ADM9240: Complete System Hardware Monitor for uProcessor-Based Systems |
| 14 | 15 | adi,adt7461 +/-1C TDM Extended Temp Range I.C |
| @@ -34,6 +35,7 @@ atmel,24c512 i2c serial eeprom (24cxx) · 19 unmodified lines | ||
| 34 | 35 | atmel,24c1024 i2c serial eeprom (24cxx) |
| 35 | 36 | atmel,at97sc3204t i2c trusted platform module (TPM) |
| 36 | 37 | capella,cm32181 CM32181: Ambient Light Sensor |
| 38 | +capella,cm3232 CM3232: Ambient Light Sensor | |
| 37 | 39 | catalyst,24c32 i2c serial eeprom |
| 38 | 40 | cirrus,cs42l51 Cirrus Logic CS42L51 audio codec |
| 39 | 41 | dallas,ds1307 64 x 8, Serial, I2C Real-Time Clock |
| @@ -59,9 +61,8 @@ fsl,sgtl5000 SGTL5000: Ultra Low-Power Audio Codec · 19 unmodified lines | ||
| 59 | 61 | gmt,g751 G751: Digital Temperature Sensor and Thermal Watchdog with Two-Wire Interface |
| 60 | 62 | infineon,slb9635tt Infineon SLB9635 (Soft-) I2C TPM (old protocol, max 100khz) |
| 61 | 63 | infineon,slb9645tt Infineon SLB9645 I2C TPM (new protocol, max 400khz) |
| 62 | −isl,isl12057 Intersil ISL12057 I2C RTC Chip | |
| 63 | −isil,isl29028 (deprecated, use isl) | |
| 64 | −isl,isl29028 Intersil ISL29028 Ambient Light and Proximity Sensor | |
| 64 | +isil,isl12057 Intersil ISL12057 I2C RTC Chip | |
| 65 | +isil,isl29028 Intersil ISL29028 Ambient Light and Proximity Sensor | |
| 65 | 66 | maxim,ds1050 5 Bit Programmable, Pulse-Width Modulator |
| 66 | 67 | maxim,max1237 Low-Power, 4-/12-Channel, 2-Wire Serial, 12-Bit ADCs |
| 67 | 68 | maxim,max6625 9-Bit/12-Bit Temperature Sensors with I²C-Compatible Serial Interface |
| @@ -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 | +}; | |
| @@ -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 | + }; | |
| @@ -59,7 +59,7 @@ Optional properties: · 58 unmodified lines | ||
| 59 | 59 | Each child node represents one channel and has the following |
| 60 | 60 | properties: |
| 61 | 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 | 63 | 0: VP/VN |
| 64 | 64 | 1: VAUXP[0]/VAUXN[0] |
| 65 | 65 | 2: VAUXP[1]/VAUXN[1] |
| @@ -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 | + }; | |
| @@ -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 | + } | |
| @@ -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 | + }; | |
| @@ -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 | + }; | |
| @@ -2,9 +2,10 @@ sun4i resistive touchscreen controller · 1 unmodified line | ||
| 2 | 2 | -------------------------------------- |
| 3 | 3 | |
| 4 | 4 | Required properties: |
| 5 | − - compatible: "allwinner,sun4i-a10-ts" | |
| 5 | + - compatible: "allwinner,sun4i-a10-ts" or "allwinner,sun6i-a31-ts" | |
| 6 | 6 | - reg: mmio address range of the chip |
| 7 | 7 | - interrupts: interrupt to which the chip is connected |
| 8 | + - #thermal-sensor-cells: shall be 0 | |
| 8 | 9 | |
| 9 | 10 | Optional properties: |
| 10 | 11 | - allwinner,ts-attached: boolean indicating that an actual touchscreen is |
| @@ -17,4 +18,5 @@ Example: · 6 unmodified lines | ||
| 17 | 18 | reg = <0x01c25000 0x100>; |
| 18 | 19 | interrupts = <29>; |
| 19 | 20 | allwinner,ts-attached; |
| 21 | + #thermal-sensor-cells = <0>; | |
| 20 | 22 | }; |
| @@ -28,6 +28,20 @@ Required properties: · 27 unmodified lines | ||
| 28 | 28 | ti,adc-channels: List of analog inputs available for ADC. |
| 29 | 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 | 45 | Example: |
| 32 | 46 | tscadc: tscadc@44e0d000 { |
| 33 | 47 | compatible = "ti,am3359-tscadc"; |
| @@ -36,6 +50,7 @@ Example: · 2 unmodified lines | ||
| 36 | 50 | ti,x-plate-resistance = <200>; |
| 37 | 51 | ti,coordiante-readouts = <5>; |
| 38 | 52 | ti,wire-config = <0x00 0x11 0x22 0x33>; |
| 53 | + ti,charge-delay = <0x400>; | |
| 39 | 54 | }; |
| 40 | 55 | |
| 41 | 56 | adc { |
| @@ -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 | +}; | |
| @@ -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 | + }; | |
| @@ -9,6 +9,11 @@ Required properties: · 8 unmodified lines | ||
| 9 | 9 | - "renesas,intc-irqpin-r8a7778" (R-Car M1A) |
| 10 | 10 | - "renesas,intc-irqpin-r8a7779" (R-Car H1) |
| 11 | 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 | 17 | - #interrupt-cells: has to be <2>: an interrupt index and flags, as defined in |
| 13 | 18 | interrupts.txt in this directory |
| 14 | 19 | |
| @@ -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 | + }; | |
| @@ -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 | + }; | |
| @@ -45,7 +45,7 @@ Required properties: · 44 unmodified lines | ||
| 45 | 45 | Exynos4 SoCs, there needs no "master" clock. |
| 46 | 46 | Exynos5 SoCs, some System MMUs must have "master" clocks. |
| 47 | 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 | 49 | Please refer to the following document: |
| 50 | 50 | Documentation/devicetree/bindings/arm/exynos/power_domain.txt |
| 51 | 51 | |
| @@ -54,7 +54,7 @@ Examples: · 2 unmodified lines | ||
| 54 | 54 | compatible = "samsung,exynos5-gsc"; |
| 55 | 55 | reg = <0x13e00000 0x1000>; |
| 56 | 56 | interrupts = <0 85 0>; |
| 57 | − samsung,power-domain = <&pd_gsc>; | |
| 57 | + power-domains = <&pd_gsc>; | |
| 58 | 58 | clocks = <&clock CLK_GSCL0>; |
| 59 | 59 | clock-names = "gscl"; |
| 60 | 60 | }; |
| @@ -66,5 +66,5 @@ Examples: · 5 unmodified lines | ||
| 66 | 66 | interrupts = <2 0>; |
| 67 | 67 | clock-names = "sysmmu", "master"; |
| 68 | 68 | clocks = <&clock CLK_SMMU_GSCL0>, <&clock CLK_GSCL0>; |
| 69 | − samsung,power-domain = <&pd_gsc>; | |
| 69 | + power-domains = <&pd_gsc>; | |
| 70 | 70 | }; |
| @@ -1,6 +1,19 @@ | ||
| 1 | 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 | 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 | 17 | - label : The label for this LED. If omitted, the label is |
| 5 | 18 | taken from the node name (excluding the unit address). |
| 6 | 19 | |
| @@ -14,6 +27,15 @@ Optional properties for child nodes: · 7 unmodified lines | ||
| 14 | 27 | "ide-disk" - LED indicates disk activity |
| 15 | 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 | 39 | Examples: |
| 18 | 40 | |
| 19 | 41 | system-status { |
| @@ -21,3 +43,11 @@ system-status { · 1 unmodified line | ||
| 21 | 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 | +}; | |
| @@ -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 | + }; | |
| @@ -38,7 +38,7 @@ Example: · 37 unmodified lines | ||
| 38 | 38 | |
| 39 | 39 | i2c1: i2c@f0018000 { |
| 40 | 40 | ov2640: camera@0x30 { |
| 41 | − compatible = "omnivision,ov2640"; | |
| 41 | + compatible = "ovti,ov2640"; | |
| 42 | 42 | reg = <0x30>; |
| 43 | 43 | |
| 44 | 44 | port { |
| @@ -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 | +}; | |
| @@ -28,7 +28,7 @@ Required properties: · 27 unmodified lines | ||
| 28 | 28 | for DMA contiguous memory allocation and its size. |
| 29 | 29 | |
| 30 | 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 | 32 | to respective power domain. |
| 33 | 33 | |
| 34 | 34 | Example: |
| @@ -38,7 +38,7 @@ mfc: codec@13400000 { · 3 unmodified lines | ||
| 38 | 38 | compatible = "samsung,mfc-v5"; |
| 39 | 39 | reg = <0x13400000 0x10000>; |
| 40 | 40 | interrupts = <0 94 0>; |
| 41 | − samsung,power-domain = <&pd_mfc>; | |
| 41 | + power-domains = <&pd_mfc>; | |
| 42 | 42 | clocks = <&clock 273>; |
| 43 | 43 | clock-names = "mfc"; |
| 44 | 44 | }; |
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | Device-Tree bindings for SUNXI IR controller found in sunXi SoC family |
| 2 | 2 | |
| 3 | 3 | Required properties: |
| 4 | −- compatible : should be "allwinner,sun4i-a10-ir"; | |
| 4 | +- compatible : "allwinner,sun4i-a10-ir" or "allwinner,sun5i-a13-ir" | |
| 5 | 5 | - clocks : list of clock specifiers, corresponding to |
| 6 | 6 | entries in clock-names property; |
| 7 | 7 | - clock-names : should contain "apb" and "ir" entries; |
| @@ -10,6 +10,7 @@ Required properties: · 2 unmodified lines | ||
| 10 | 10 | |
| 11 | 11 | Optional properties: |
| 12 | 12 | - linux,rc-map-name : Remote control map name. |
| 13 | +- resets : phandle + reset specifier pair | |
| 13 | 14 | |
| 14 | 15 | Example: |
| 15 | 16 | |
| @@ -17,6 +18,7 @@ ir0: ir@01c21800 { · 1 unmodified line | ||
| 17 | 18 | compatible = "allwinner,sun4i-a10-ir"; |
| 18 | 19 | clocks = <&apb0_gates 6>, <&ir0_clk>; |
| 19 | 20 | clock-names = "apb", "ir"; |
| 21 | + resets = <&apb0_rst 1>; | |
| 20 | 22 | interrupts = <0 5 1>; |
| 21 | 23 | reg = <0x01C21800 0x40>; |
| 22 | 24 | linux,rc-map-name = "rc-rc6-mce"; |
| @@ -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 | + }; | |
| @@ -103,6 +103,9 @@ Optional endpoint properties · 102 unmodified lines | ||
| 103 | 103 | array contains only one entry. |
| 104 | 104 | - clock-noncontinuous: a boolean property to allow MIPI CSI-2 non-continuous |
| 105 | 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 | 111 | Example |
| @@ -159,7 +162,7 @@ pipelines can be active: ov772x -> ceu0 or imx074 -> csi2 -> ceu0. · 50 unmodified lines | ||
| 159 | 162 | i2c0: i2c@0xfff20000 { |
| 160 | 163 | ... |
| 161 | 164 | ov772x_1: camera@0x21 { |
| 162 | − compatible = "omnivision,ov772x"; | |
| 165 | + compatible = "ovti,ov772x"; | |
| 163 | 166 | reg = <0x21>; |
| 164 | 167 | vddio-supply = <®ulator1>; |
| 165 | 168 | vddcore-supply = <®ulator2>; |
| @@ -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 | + }; | |
| @@ -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 | +}; | |
| @@ -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 | +}; | |
| @@ -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 | + | |
| @@ -39,6 +39,12 @@ to get matched with their hardware counterparts as follow: · 38 unmodified lines | ||
| 39 | 39 | -BUCKn : 1-4. |
| 40 | 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 | 49 | Example: |
| 44 | 50 | |
| @@ -65,4 +71,12 @@ Example: · 20 unmodified lines | ||
| 65 | 71 | regulator-always-on; |
| 66 | 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 | } |
| @@ -41,6 +41,41 @@ Optional properties: · 40 unmodified lines | ||
| 41 | 41 | To get more informations, please refer to documentaion. |
| 42 | 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 | 79 | Example: |
| 45 | 80 | max77693@66 { |
| 46 | 81 | compatible = "maxim,max77693"; |
| @@ -73,4 +108,14 @@ Example: · 26 unmodified lines | ||
| 73 | 108 | pwms = <&pwm 0 40000 0>; |
| 74 | 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 | }; |
| @@ -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 | + | |
| @@ -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 | + }; | |
| @@ -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 | + | |
| @@ -1,11 +1,10 @@ | ||
| 1 | 1 | NVIDIA Tegra20/Tegra30/Tegr114/Tegra124 apbmisc block |
| 2 | 2 | |
| 3 | 3 | Required properties: |
| 4 | −- compatible : should be: | |
| 5 | − "nvidia,tegra20-apbmisc" | |
| 6 | − "nvidia,tegra30-apbmisc" | |
| 7 | − "nvidia,tegra114-apbmisc" | |
| 8 | − "nvidia,tegra124-apbmisc" | |
| 4 | +- compatible : For Tegra20, must be "nvidia,tegra20-apbmisc". For Tegra30, | |
| 5 | + must be "nvidia,tegra30-apbmisc". Otherwise, must contain | |
| 6 | + "nvidia,<chip>-apbmisc", plus one of the above, where <chip> is tegra114, | |
| 7 | + tegra124, tegra132. | |
| 9 | 8 | - reg: Should contain 2 entries: the first entry gives the physical address |
| 10 | 9 | and length of the registers which contain revision and debug features. |
| 11 | 10 | The second entry gives the physical address and length of the |
| @@ -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 | + } | |
| @@ -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 | + } | |
| @@ -64,7 +64,43 @@ Optional SDIO properties: · 63 unmodified lines | ||
| 64 | 64 | - keep-power-in-suspend: Preserves card power during a suspend/resume cycle |
| 65 | 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 | 105 | sdhci@ab000000 { |
| 70 | 106 | compatible = "sdhci"; |
| @@ -77,4 +113,28 @@ sdhci@ab000000 { · 6 unmodified lines | ||
| 77 | 113 | max-frequency = <50000000>; |
| 78 | 114 | keep-power-in-suspend; |
| 79 | 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 | +}; | |
| @@ -7,7 +7,11 @@ This file documents differences between the core properties described · 6 unmodified lines | ||
| 7 | 7 | by mmc.txt and the properties used by the sdhci-tegra driver. |
| 8 | 8 | |
| 9 | 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 | 15 | - clocks : Must contain one entry, for the module clock. |
| 12 | 16 | See ../clocks/clock-bindings.txt for details. |
| 13 | 17 | - resets : Must contain an entry for each entry in reset-names. |
| @@ -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 | + }; | |
| @@ -9,9 +9,13 @@ Required properties: · 8 unmodified lines | ||
| 9 | 9 | - reg: |
| 10 | 10 | * for "mrvl,pxav2-mmc" and "mrvl,pxav3-mmc", one register area for |
| 11 | 11 | the SDHCI registers. |
| 12 | − * for "marvell,armada-380-sdhci", two register areas. The first one | |
| 13 | − for the SDHCI registers themselves, and the second one for the | |
| 14 | − AXI/Mbus bridge registers of the SDHCI unit. | |
| 12 | + | |
| 13 | + * for "marvell,armada-380-sdhci", three register areas. The first | |
| 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 | 19 | - clocks: Array of clocks required for SDHCI; requires at least one for |
| 16 | 20 | I/O clock. |
| 17 | 21 | - clock-names: Array of names corresponding to clocks property; shall be |
| @@ -35,7 +39,10 @@ sdhci@d4280800 { · 17 unmodified lines | ||
| 35 | 39 | |
| 36 | 40 | sdhci@d8000 { |
| 37 | 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 | 46 | interrupts = <0 25 0x4>; |
| 40 | 47 | clocks = <&gateclk 17>; |
| 41 | 48 | clock-names = "io"; |
| @@ -10,8 +10,8 @@ Absolute maximum transfer rate is 200MB/s · 9 unmodified lines | ||
| 10 | 10 | Required properties: |
| 11 | 11 | - compatible : "allwinner,sun4i-a10-mmc" or "allwinner,sun5i-a13-mmc" |
| 12 | 12 | - reg : mmc controller base registers |
| 13 | − - clocks : a list with 2 phandle + clock specifier pairs | |
| 14 | − - clock-names : must contain "ahb" and "mmc" | |
| 13 | + - clocks : a list with 4 phandle + clock specifier pairs | |
| 14 | + - clock-names : must contain "ahb", "mmc", "output" and "sample" | |
| 15 | 15 | - interrupts : mmc controller interrupt |
| 16 | 16 | |
| 17 | 17 | Optional properties: |
| @@ -25,8 +25,8 @@ Examples: · 7 unmodified lines | ||
| 25 | 25 | mmc0: mmc@01c0f000 { |
| 26 | 26 | compatible = "allwinner,sun5i-a13-mmc"; |
| 27 | 27 | reg = <0x01c0f000 0x1000>; |
| 28 | − clocks = <&ahb_gates 8>, <&mmc0_clk>; | |
| 29 | − clock-names = "ahb", "mod"; | |
| 28 | + clocks = <&ahb_gates 8>, <&mmc0_clk>, <&mmc0_output_clk>, <&mmc0_sample_clk>; | |
| 29 | + clock-names = "ahb", "mod", "output", "sample"; | |
| 30 | 30 | interrupts = <0 32 4>; |
| 31 | 31 | status = "disabled"; |
| 32 | 32 | }; |
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | Atmel NAND flash |
| 2 | 2 | |
| 3 | 3 | Required properties: |
| 4 | −- compatible : "atmel,at91rm9200-nand". | |
| 4 | +- compatible : should be "atmel,at91rm9200-nand" or "atmel,sama5d4-nand". | |
| 5 | 5 | - reg : should specify localbus address and size used for the chip, |
| 6 | 6 | and hardware ECC controller if available. |
| 7 | 7 | If the hardware ECC is PMECC, it should contain address and size for |
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | * Freescale Quad Serial Peripheral Interface(QuadSPI) |
| 2 | 2 | |
| 3 | 3 | Required properties: |
| 4 | − - compatible : Should be "fsl,vf610-qspi" | |
| 4 | + - compatible : Should be "fsl,vf610-qspi" or "fsl,imx6sx-qspi" | |
| 5 | 5 | - reg : the first contains the register location and length, |
| 6 | 6 | the second contains the memory mapping address and length |
| 7 | 7 | - reg-names: Should contain the reg names "QuadSPI" and "QuadSPI-memory" |
| @@ -9,7 +9,7 @@ Required properties: · 8 unmodified lines | ||
| 9 | 9 | Optional properties: |
| 10 | 10 | - bank-width : Width (in bytes) of the device. If not present, the width |
| 11 | 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 | 13 | - timings: array of 6 bytes for NAND timings. The meanings of these bytes |
| 14 | 14 | are: |
| 15 | 15 | byte 0 TCLR : CLE to RE delay in number of AHB clock cycles, only 4 bits |
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | * Freescale General-Purpose Media Interface (GPMI) |
| 2 | 2 | |
| 3 | 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 | 6 | Required properties: |
| 7 | 7 | - compatible : should be "fsl,<chip>-gpmi-nand" |
| @@ -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 | + }; | |
| @@ -36,6 +36,11 @@ are defined: · 35 unmodified lines | ||
| 36 | 36 | - vendor-id : Contains the flash chip's vendor id (1 byte). |
| 37 | 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 | 44 | The device tree may optionally contain sub-nodes describing partitions of the |
| 40 | 45 | address space. See partition.txt for more detail. |
| 41 | 46 | |
| @@ -7,17 +7,38 @@ Required properties: · 6 unmodified lines | ||
| 7 | 7 | - SerDes Rx/Tx registers |
| 8 | 8 | - SerDes integration registers (1/2) |
| 9 | 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 | 14 | Optional properties: |
| 12 | 15 | - amd,speed-set: Speed capabilities of the device |
| 13 | 16 | 0 - 1GbE and 10GbE (default) |
| 14 | 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 | 31 | Example: |
| 17 | 32 | xgbe_phy@e1240800 { |
| 18 | 33 | compatible = "amd,xgbe-phy-seattle-v1a", "ethernet-phy-ieee802.3-c45"; |
| 19 | 34 | reg = <0 0xe1240800 0 0x00400>, |
| 20 | 35 | <0 0xe1250000 0 0x00060>, |
| 21 | 36 | <0 0xe1250080 0 0x00004>; |
| 37 | + interrupt-parent = <&gic>; | |
| 38 | + interrupts = <0 323 4>; | |
| 22 | 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 | }; |
| @@ -3,7 +3,7 @@ · 2 unmodified lines | ||
| 3 | 3 | Required properties: |
| 4 | 4 | - compatible: should be one of "brcm,systemport-v1.00" or "brcm,systemport" |
| 5 | 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 | 7 | interrupts, and the second cell should be for the transmit queues. An |
| 8 | 8 | optional third interrupt cell for Wake-on-LAN can be specified |
| 9 | 9 | - local-mac-address: Ethernet MAC address (48 bits) of this adapter |
| @@ -11,6 +11,8 @@ Required properties: · 10 unmodified lines | ||
| 11 | 11 | Optional properties: |
| 12 | 12 | - davicom,no-eeprom : Configuration EEPROM is not available |
| 13 | 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 | 17 | Example: |
| 16 | 18 | |
| @@ -21,4 +23,6 @@ Example: · 4 unmodified lines | ||
| 21 | 23 | interrupts = <7 4>; |
| 22 | 24 | local-mac-address = [00 00 de ad be ef]; |
| 23 | 25 | davicom,no-eeprom; |
| 26 | + reset-gpios = <&gpf 12 GPIO_ACTIVE_LOW>; | |
| 27 | + vcc-supply = <ð0_power>; | |
| 24 | 28 | }; |
| @@ -22,6 +22,8 @@ Optional properties: · 21 unmodified lines | ||
| 22 | 22 | - fsl,num-rx-queues : The property is valid for enet-avb IP, which supports |
| 23 | 23 | hw multi queues. Should specify the rx queue number, otherwise set rx queue |
| 24 | 24 | number to 1. |
| 25 | +- fsl,magic-packet : If present, indicates that the hardware supports waking | |
| 26 | + up via magic packet. | |
| 25 | 27 | |
| 26 | 28 | Optional subnodes: |
| 27 | 29 | - mdio : specifies the mdio bus in the FEC, used as a container for phy nodes |
| @@ -8,7 +8,16 @@ of how to define a PHY. · 7 unmodified lines | ||
| 8 | 8 | Required properties: |
| 9 | 9 | - reg : Offset and length of the register set for the device |
| 10 | 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 | 22 | Example: |
| 14 | 23 | |
| @@ -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 | + }; | |
| @@ -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 | +}; | |
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | * STMicroelectronics SAS. ST21NFCA NFC Controller |
| 2 | 2 | |
| 3 | 3 | Required properties: |
| 4 | −- compatible: Should be "st,st21nfca_i2c". | |
| 4 | +- compatible: Should be "st,st21nfca-i2c". | |
| 5 | 5 | - clock-frequency: I²C work frequency. |
| 6 | 6 | - reg: address on the bus |
| 7 | 7 | - interrupt-parent: phandle for the interrupt gpio controller |
| @@ -11,6 +11,10 @@ Required properties: · 3 unmodified lines | ||
| 11 | 11 | Optional SoC Specific Properties: |
| 12 | 12 | - pinctrl-names: Contains only one value - "default". |
| 13 | 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 | 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): · 3 unmodified lines | ||
| 20 | 24 | |
| 21 | 25 | st21nfca: st21nfca@1 { |
| 22 | 26 | |
| 23 | − compatible = "st,st21nfca_i2c"; | |
| 27 | + compatible = "st,st21nfca-i2c"; | |
| 24 | 28 | |
| 25 | 29 | reg = <0x01>; |
| 26 | 30 | clock-frequency = <400000>; |
| @@ -29,5 +33,8 @@ Example (for ARM-based BeagleBoard xM with ST21NFCA on I2C2): · 2 unmodified lines | ||
| 29 | 33 | interrupts = <2 IRQ_TYPE_LEVEL_LOW>; |
| 30 | 34 | |
| 31 | 35 | enable-gpios = <&gpio5 29 GPIO_ACTIVE_HIGH>; |
| 36 | + | |
| 37 | + ese-present; | |
| 38 | + uicc-present; | |
| 32 | 39 | }; |
| 33 | 40 | }; |
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | * STMicroelectronics SAS. ST21NFCB NFC Controller |
| 2 | 2 | |
| 3 | 3 | Required properties: |
| 4 | −- compatible: Should be "st,st21nfcb_i2c". | |
| 4 | +- compatible: Should be "st,st21nfcb-i2c". | |
| 5 | 5 | - clock-frequency: I²C work frequency. |
| 6 | 6 | - reg: address on the bus |
| 7 | 7 | - interrupt-parent: phandle for the interrupt gpio controller |
| @@ -20,7 +20,7 @@ Example (for ARM-based BeagleBoard xM with ST21NFCB on I2C2): · 12 unmodified lines | ||
| 20 | 20 | |
| 21 | 21 | st21nfcb: st21nfcb@8 { |
| 22 | 22 | |
| 23 | − compatible = "st,st21nfcb_i2c"; | |
| 23 | + compatible = "st,st21nfcb-i2c"; | |
| 24 | 24 | |
| 25 | 25 | reg = <0x08>; |
| 26 | 26 | clock-frequency = <400000>; |
| @@ -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 | +}; | |
| @@ -9,14 +9,10 @@ The device node has following properties. · 8 unmodified lines | ||
| 9 | 9 | Required properties: |
| 10 | 10 | - compatible : Can be "st,stih415-dwmac", "st,stih416-dwmac", |
| 11 | 11 | "st,stih407-dwmac", "st,stid127-dwmac". |
| 12 | − - reg : Offset of the glue configuration register map in system | |
| 13 | − configuration regmap pointed by st,syscon property and size. | |
| 14 | − - st,syscon : Should be phandle to system configuration node which | |
| 15 | − encompases this glue registers. | |
| 12 | + - st,syscon : Should be phandle/offset pair. The phandle to the syscon node which | |
| 13 | + encompases the glue register, and the offset of the control register. | |
| 16 | 14 | - st,gmac_en: this is to enable the gmac into a dedicated sysctl control |
| 17 | 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 | 16 | - pinctrl-0: pin-control for all the MII mode supported. |
| 21 | 17 | |
| 22 | 18 | Optional properties: |
| @@ -40,10 +36,10 @@ ethernet0: dwmac@9630000 { · 17 unmodified lines | ||
| 40 | 36 | device_type = "network"; |
| 41 | 37 | status = "disabled"; |
| 42 | 38 | compatible = "st,stih407-dwmac", "snps,dwmac", "snps,dwmac-3.710"; |
| 43 | − reg = <0x9630000 0x8000>, <0x80 0x4>; | |
| 44 | − reg-names = "stmmaceth", "sti-ethconf"; | |
| 39 | + reg = <0x9630000 0x8000>; | |
| 40 | + reg-names = "stmmaceth"; | |
| 45 | 41 | |
| 46 | − st,syscon = <&syscfg_sbc_reg>; | |
| 42 | + st,syscon = <&syscfg_sbc_reg 0x80>; | |
| 47 | 43 | st,gmac_en; |
| 48 | 44 | resets = <&softreset STIH407_ETH1_SOFTRESET>; |
| 49 | 45 | reset-names = "stmmaceth"; |
| @@ -43,6 +43,7 @@ Optional properties: · 42 unmodified lines | ||
| 43 | 43 | available this clock is used for programming the Timestamp Addend Register. |
| 44 | 44 | If not passed then the system clock will be used and this is fine on some |
| 45 | 45 | platforms. |
| 46 | +- snps,burst_len: The AXI burst lenth value of the AXI BUS MODE register. | |
| 46 | 47 | |
| 47 | 48 | Examples: |
| 48 | 49 | |
| @@ -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 | +}; | |
| @@ -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. | |
| @@ -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. | |
| @@ -1,10 +1,10 @@ | ||
| 1 | 1 | NVIDIA Tegra PCIe controller |
| 2 | 2 | |
| 3 | 3 | Required properties: |
| 4 | −- compatible: Must be one of: | |
| 5 | − - "nvidia,tegra20-pcie" | |
| 6 | − - "nvidia,tegra30-pcie" | |
| 7 | − - "nvidia,tegra124-pcie" | |
| 4 | +- compatible: For Tegra20, must contain "nvidia,tegra20-pcie". For Tegra30, | |
| 5 | + "nvidia,tegra30-pcie". For Tegra124, must contain "nvidia,tegra124-pcie". | |
| 6 | + Otherwise, must contain "nvidia,<chip>-pcie", plus one of the above, where | |
| 7 | + <chip> is tegra132 or tegra210. | |
| 8 | 8 | - device_type: Must be "pci" |
| 9 | 9 | - reg: A list of physical base address and length for each set of controller |
| 10 | 10 | registers. Must contain an entry for each entry in the reg-names property. |
| @@ -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 | +}; | |
| @@ -26,6 +26,7 @@ Required properties (port (child) node): · 25 unmodified lines | ||
| 26 | 26 | filled in "reg". It can also contain the offset of the system configuration |
| 27 | 27 | registers used as glue-logic to setup the device for SATA/PCIe or USB3 |
| 28 | 28 | devices. |
| 29 | +- st,syscfg : Offset of the parent configuration register. | |
| 29 | 30 | - resets : phandle to the parent reset controller. |
| 30 | 31 | - reset-names : Associated name must be "miphy-sw-rst". |
| 31 | 32 | |
| @@ -54,18 +55,12 @@ example: · 22 unmodified lines | ||
| 54 | 55 | phy_port0: port@9b22000 { |
| 55 | 56 | reg = <0x9b22000 0xff>, |
| 56 | 57 | <0x9b09000 0xff>, |
| 57 | − <0x9b04000 0xff>, | |
| 58 | − <0x114 0x4>, /* sysctrl MiPHY cntrl */ | |
| 59 | − <0x818 0x4>, /* sysctrl MiPHY status*/ | |
| 60 | − <0xe0 0x4>, /* sysctrl PCIe */ | |
| 61 | − <0xec 0x4>; /* sysctrl SATA */ | |
| 58 | + <0x9b04000 0xff>; | |
| 62 | 59 | reg-names = "sata-up", |
| 63 | 60 | "pcie-up", |
| 64 | − "pipew", | |
| 65 | − "miphy-ctrl-glue", | |
| 66 | − "miphy-status-glue", | |
| 67 | − "pcie-glue", | |
| 68 | − "sata-glue"; | |
| 61 | + "pipew"; | |
| 62 | + | |
| 63 | + st,syscfg = <0x114 0x818 0xe0 0xec>; | |
| 69 | 64 | #phy-cells = <1>; |
| 70 | 65 | st,osc-rdy; |
| 71 | 66 | reset-names = "miphy-sw-rst"; |
| @@ -75,18 +70,13 @@ example: · 3 unmodified lines | ||
| 75 | 70 | phy_port1: port@9b2a000 { |
| 76 | 71 | reg = <0x9b2a000 0xff>, |
| 77 | 72 | <0x9b19000 0xff>, |
| 78 | − <0x9b14000 0xff>, | |
| 79 | − <0x118 0x4>, | |
| 80 | − <0x81c 0x4>, | |
| 81 | − <0xe4 0x4>, | |
| 82 | − <0xf0 0x4>; | |
| 73 | + <0x9b14000 0xff>; | |
| 83 | 74 | reg-names = "sata-up", |
| 84 | 75 | "pcie-up", |
| 85 | − "pipew", | |
| 86 | − "miphy-ctrl-glue", | |
| 87 | − "miphy-status-glue", | |
| 88 | − "pcie-glue", | |
| 89 | − "sata-glue"; | |
| 76 | + "pipew"; | |
| 77 | + | |
| 78 | + st,syscfg = <0x118 0x81c 0xe4 0xf0>; | |
| 79 | + | |
| 90 | 80 | #phy-cells = <1>; |
| 91 | 81 | st,osc-force-ext; |
| 92 | 82 | reset-names = "miphy-sw-rst"; |
| @@ -95,13 +85,12 @@ example: · 2 unmodified lines | ||
| 95 | 85 | |
| 96 | 86 | phy_port2: port@8f95000 { |
| 97 | 87 | reg = <0x8f95000 0xff>, |
| 98 | − <0x8f90000 0xff>, | |
| 99 | − <0x11c 0x4>, | |
| 100 | − <0x820 0x4>; | |
| 88 | + <0x8f90000 0xff>; | |
| 101 | 89 | reg-names = "pipew", |
| 102 | − "usb3-up", | |
| 103 | − "miphy-ctrl-glue", | |
| 104 | − "miphy-status-glue"; | |
| 90 | + "usb3-up"; | |
| 91 | + | |
| 92 | + st,syscfg = <0x11c 0x820>; | |
| 93 | + | |
| 105 | 94 | #phy-cells = <1>; |
| 106 | 95 | reset-names = "miphy-sw-rst"; |
| 107 | 96 | resets = <&softreset STIH407_MIPHY2_SOFTRESET>; |
| @@ -125,4 +114,4 @@ example: · 17 unmodified lines | ||
| 125 | 114 | |
| 126 | 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 | |
| @@ -6,8 +6,10 @@ for SATA and PCIe. · 5 unmodified lines | ||
| 6 | 6 | |
| 7 | 7 | Required properties (controller (parent) node): |
| 8 | 8 | - compatible : Should be "st,miphy365x-phy" |
| 9 | −- st,syscfg : Should be a phandle of the system configuration register group | |
| 10 | − which contain the SATA, PCIe mode setting bits | |
| 9 | +- st,syscfg : Phandle / integer array property. Phandle of sysconfig group | |
| 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 | 14 | Required nodes : A sub-node is required for each channel the controller |
| 13 | 15 | provides. Address range information including the usual |
| @@ -26,7 +28,6 @@ Required properties (port (child) node): · 12 unmodified lines | ||
| 26 | 28 | registers filled in "reg": |
| 27 | 29 | - sata: For SATA devices |
| 28 | 30 | - pcie: For PCIe devices |
| 29 | − - syscfg: To specify the syscfg based config register | |
| 30 | 31 | |
| 31 | 32 | Optional properties (port (child) node): |
| 32 | 33 | - st,sata-gen : Generation of locally attached SATA IP. Expected values |
| @@ -39,20 +40,20 @@ Example: · 6 unmodified lines | ||
| 39 | 40 | |
| 40 | 41 | miphy365x_phy: miphy365x@fe382000 { |
| 41 | 42 | compatible = "st,miphy365x-phy"; |
| 42 | − st,syscfg = <&syscfg_rear>; | |
| 43 | + st,syscfg = <&syscfg_rear 0x824 0x828>; | |
| 43 | 44 | #address-cells = <1>; |
| 44 | 45 | #size-cells = <1>; |
| 45 | 46 | ranges; |
| 46 | 47 | |
| 47 | 48 | phy_port0: port@fe382000 { |
| 48 | − reg = <0xfe382000 0x100>, <0xfe394000 0x100>, <0x824 0x4>; | |
| 49 | − reg-names = "sata", "pcie", "syscfg"; | |
| 49 | + reg = <0xfe382000 0x100>, <0xfe394000 0x100>; | |
| 50 | + reg-names = "sata", "pcie"; | |
| 50 | 51 | #phy-cells = <1>; |
| 51 | 52 | st,sata-gen = <3>; |
| 52 | 53 | }; |
| 53 | 54 | |
| 54 | 55 | phy_port1: port@fe38a000 { |
| 55 | − reg = <0xfe38a000 0x100>, <0xfe804000 0x100>, <0x828 0x4>;; | |
| 56 | + reg = <0xfe38a000 0x100>, <0xfe804000 0x100>;; | |
| 56 | 57 | reg-names = "sata", "pcie", "syscfg"; |
| 57 | 58 | #phy-cells = <1>; |
| 58 | 59 | st,pcie-tx-pol-inv; |
| @@ -5,10 +5,7 @@ host controllers (when controlling usb2/1.1 devices) available on STiH407 SoC fa · 4 unmodified lines | ||
| 5 | 5 | |
| 6 | 6 | Required properties: |
| 7 | 7 | - compatible : should be "st,stih407-usb2-phy" |
| 8 | −- reg : contain the offset and length of the system configuration registers | |
| 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 | |
| 8 | +- st,syscfg : phandle of sysconfig bank plus integer array containing phyparam and phyctrl register offsets | |
| 12 | 9 | - resets : list of phandle and reset specifier pairs. There should be two entries, one |
| 13 | 10 | for the whole phy and one for the port |
| 14 | 11 | - reset-names : list of reset signal names. Should be "global" and "port" |
| @@ -19,11 +16,8 @@ Example: · 4 unmodified lines | ||
| 19 | 16 | |
| 20 | 17 | usb2_picophy0: usbpicophy@f8 { |
| 21 | 18 | compatible = "st,stih407-usb2-phy"; |
| 22 | − reg = <0xf8 0x04>, /* syscfg 5062 */ | |
| 23 | − <0xf4 0x04>; /* syscfg 5061 */ | |
| 24 | − reg-names = "param", "ctrl"; | |
| 25 | 19 | #phy-cells = <0>; |
| 26 | − st,syscfg = <&syscfg_core>; | |
| 20 | + st,syscfg = <&syscfg_core 0x100 0xf4>; | |
| 27 | 21 | resets = <&softreset STIH407_PICOPHY_SOFTRESET>, |
| 28 | 22 | <&picophyreset STIH407_PICOPHY0_RESET>; |
| 29 | 23 | reset-names = "global", "port"; |
| @@ -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 | +}; | |
| @@ -3,8 +3,8 @@ Samsung S5P/EXYNOS SoC series MIPI CSIS/DSIM DPHY · 2 unmodified lines | ||
| 3 | 3 | |
| 4 | 4 | Required properties: |
| 5 | 5 | - compatible : should be "samsung,s5pv210-mipi-video-phy"; |
| 6 | −- reg : offset and length of the MIPI DPHY register set; | |
| 7 | 6 | - #phy-cells : from the generic phy bindings, must be 1; |
| 7 | +- syscon - phandle to the PMU system controller; | |
| 8 | 8 | |
| 9 | 9 | For "samsung,s5pv210-mipi-video-phy" compatible PHYs the second cell in |
| 10 | 10 | the PHY specifier identifies the PHY and its meaning is as follows: |
| @@ -11,6 +11,7 @@ Required properties: · 10 unmodified lines | ||
| 11 | 11 | "allwinner,sun5i-a10s-pinctrl" |
| 12 | 12 | "allwinner,sun5i-a13-pinctrl" |
| 13 | 13 | "allwinner,sun6i-a31-pinctrl" |
| 14 | + "allwinner,sun6i-a31s-pinctrl" | |
| 14 | 15 | "allwinner,sun6i-a31-r-pinctrl" |
| 15 | 16 | "allwinner,sun7i-a20-pinctrl" |
| 16 | 17 | "allwinner,sun8i-a23-pinctrl" |
| @@ -6,7 +6,8 @@ nvidia,tegra30-pinmux.txt. In fact, this document assumes that binding as · 5 unmodified lines | ||
| 6 | 6 | a baseline, and only documents the differences between the two bindings. |
| 7 | 7 | |
| 8 | 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 | 11 | - reg: Should contain a list of base address and size pairs for: |
| 11 | 12 | -- first entry - the drive strength and pad control registers. |
| 12 | 13 | -- second entry - the pinmux registers |
| @@ -13,7 +13,9 @@ how to describe and reference PHYs in device trees. · 12 unmodified lines | ||
| 13 | 13 | |
| 14 | 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 | 19 | - reg: Physical base address and length of the controller's registers. |
| 18 | 20 | - resets: Must contain an entry for each entry in reset-names. |
| 19 | 21 | See ../reset/reset.txt for details. |
| @@ -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 | + }; | |
| @@ -1,7 +1,7 @@ | ||
| 1 | 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, | |
| 4 | −SH73A0, R8A73A4 and R8A7740 it also acts as a GPIO controller. | |
| 3 | +The Pin Function Controller (PFC) is a Pin Mux/Config controller. On SH73A0, | |
| 4 | +R8A73A4 and R8A7740 it also acts as a GPIO controller. | |
| 5 | 5 | |
| 6 | 6 | |
| 7 | 7 | Pin Control |
| @@ -10,13 +10,13 @@ Pin Control · 2 unmodified lines | ||
| 10 | 10 | Required Properties: |
| 11 | 11 | |
| 12 | 12 | - compatible: should be one of the following. |
| 13 | + - "renesas,pfc-emev2": for EMEV2 (EMMA Mobile EV2) compatible pin-controller. | |
| 13 | 14 | - "renesas,pfc-r8a73a4": for R8A73A4 (R-Mobile APE6) compatible pin-controller. |
| 14 | 15 | - "renesas,pfc-r8a7740": for R8A7740 (R-Mobile A1) compatible pin-controller. |
| 15 | 16 | - "renesas,pfc-r8a7778": for R8A7778 (R-Mobile M1) compatible pin-controller. |
| 16 | 17 | - "renesas,pfc-r8a7779": for R8A7779 (R-Car H1) compatible pin-controller. |
| 17 | 18 | - "renesas,pfc-r8a7790": for R8A7790 (R-Car H2) compatible pin-controller. |
| 18 | 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 | 20 | - "renesas,pfc-sh73a0": for SH73A0 (SH-Mobile AG5) compatible pin-controller. |
| 21 | 21 | |
| 22 | 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. · 52 unmodified lines | ||
| 75 | 75 | GPIO |
| 76 | 76 | ---- |
| 77 | 77 | |
| 78 | −On SH7372, SH73A0, R8A73A4 and R8A7740 the PFC node is also a GPIO controller | |
| 79 | −node. | |
| 78 | +On SH73A0, R8A73A4 and R8A7740 the PFC node is also a GPIO controller node. | |
| 80 | 79 | |
| 81 | 80 | Required Properties: |
| 82 | 81 | |
| @@ -171,6 +171,18 @@ Aliases: · 170 unmodified lines | ||
| 171 | 171 | All the pin controller nodes should be represented in the aliases node using |
| 172 | 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 | 186 | Example: A pin-controller node with pin banks: |
| 175 | 187 | |
| 176 | 188 | pinctrl_0: pinctrl@11400000 { |
| @@ -16,17 +16,22 @@ mux function to select on those pin(s)/group(s), and various pin configuration · 15 unmodified lines | ||
| 16 | 16 | parameters, such as input, output, pull up, pull down... |
| 17 | 17 | |
| 18 | 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: | |
| 22 | −- ste,pins : An array of strings. Each string contains the name of a pin or | |
| 23 | − group. | |
| 24 | − | |
| 25 | −Optional subnode-properties: | |
| 26 | −- ste,function: A string containing the name of the function to mux to the | |
| 23 | +Required pin multiplexing subnode properties: | |
| 24 | +- function: A string containing the name of the function to mux to the | |
| 27 | 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 | 36 | - ste,input : <0/1/2> |
| 32 | 37 | 0: input with no pull |
| @@ -97,32 +102,32 @@ Example board file extract: · 64 unmodified lines | ||
| 97 | 102 | uart0 { |
| 98 | 103 | uart0_default_mux: uart0_mux { |
| 99 | 104 | u0_default_mux { |
| 100 | − ste,function = "u0"; | |
| 101 | − ste,pins = "u0_a_1"; | |
| 105 | + function = "u0"; | |
| 106 | + pins = "u0_a_1"; | |
| 102 | 107 | }; |
| 103 | 108 | }; |
| 104 | 109 | uart0_default_mode: uart0_default { |
| 105 | 110 | uart0_default_cfg1 { |
| 106 | − ste,pins = "GPIO0", "GPIO2"; | |
| 111 | + pins = "GPIO0", "GPIO2"; | |
| 107 | 112 | ste,input = <1>; |
| 108 | 113 | }; |
| 109 | 114 | |
| 110 | 115 | uart0_default_cfg2 { |
| 111 | − ste,pins = "GPIO1", "GPIO3"; | |
| 116 | + pins = "GPIO1", "GPIO3"; | |
| 112 | 117 | ste,output = <1>; |
| 113 | 118 | }; |
| 114 | 119 | }; |
| 115 | 120 | uart0_sleep_mode: uart0_sleep { |
| 116 | 121 | uart0_sleep_cfg1 { |
| 117 | − ste,pins = "GPIO0", "GPIO2"; | |
| 122 | + pins = "GPIO0", "GPIO2"; | |
| 118 | 123 | ste,config = <&slpm_in_wkup_pdis>; |
| 119 | 124 | }; |
| 120 | 125 | uart0_sleep_cfg2 { |
| 121 | − ste,pins = "GPIO1"; | |
| 126 | + pins = "GPIO1"; | |
| 122 | 127 | ste,config = <&slpm_out_hi_wkup_pdis>; |
| 123 | 128 | }; |
| 124 | 129 | uart0_sleep_cfg3 { |
| 125 | − ste,pins = "GPIO3"; | |
| 130 | + pins = "GPIO3"; | |
| 126 | 131 | ste,config = <&slpm_out_wkup_pdis>; |
| 127 | 132 | }; |
| 128 | 133 | }; |
| @@ -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 | + }; | |
| @@ -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 | + }; | |
| @@ -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 | + }; | |
| @@ -1,20 +1,23 @@ | ||
| 1 | 1 | Binding for the LTC2952 PowerPath controller |
| 2 | 2 | |
| 3 | 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. | |
| 5 | −If the Linux systems decides to shut down it powers off the platform via the | |
| 6 | −kill signal. | |
| 4 | +been sent, the chip's watchdog has to be reset to gracefully shut down. | |
| 5 | +A full powerdown can be triggered via the kill signal. | |
| 7 | 6 | |
| 8 | 7 | Required properties: |
| 9 | 8 | |
| 10 | 9 | - compatible: Must contain: "lltc,ltc2952" |
| 11 | −- trigger-gpios: phandle + gpio-specifier for the GPIO connected to the | |
| 12 | − chip's trigger line | |
| 13 | 10 | - watchdog-gpios: phandle + gpio-specifier for the GPIO connected to the |
| 14 | 11 | chip's watchdog line |
| 15 | 12 | - kill-gpios: phandle + gpio-specifier for the GPIO connected to the |
| 16 | 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 | 21 | Example: |
| 19 | 22 | |
| 20 | 23 | ltc2952 { |
| @@ -37,7 +37,7 @@ Required properties: · 36 unmodified lines | ||
| 37 | 37 | |
| 38 | 38 | |
| 39 | 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 | 41 | to report their voltage. The IO Voltage Domain for any non-specified |
| 42 | 42 | supplies will be not be touched. |
| 43 | 43 | |
| @@ -7,6 +7,7 @@ CONTENTS · 6 unmodified lines | ||
| 7 | 7 | - FMan MURAM Node |
| 8 | 8 | - FMan dTSEC/XGEC/mEMAC Node |
| 9 | 9 | - FMan IEEE 1588 Node |
| 10 | + - FMan MDIO Node | |
| 10 | 11 | - Example |
| 11 | 12 | |
| 12 | 13 | ============================================================================= |
| @@ -356,6 +357,69 @@ ptp-timer@fe000 { · 343 unmodified lines | ||
| 356 | 357 | reg = <0xfe000 0x1000>; |
| 357 | 358 | }; |
| 358 | 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 | + | |
| 359 | 423 | ============================================================================= |
| 360 | 424 | Example |
| 361 | 425 | |
| @@ -531,4 +595,10 @@ fman@400000 { · 169 unmodified lines | ||
| 531 | 595 | compatible = "fsl,fman-ptp-timer"; |
| 532 | 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 | }; |
| @@ -16,20 +16,28 @@ Example: · 15 unmodified lines | ||
| 16 | 16 | "fsl,pq2-localbus"; |
| 17 | 17 | #address-cells = <2>; |
| 18 | 18 | #size-cells = <1>; |
| 19 | − reg = <f0010100 40>; | |
| 19 | + reg = <0xf0010100 0x40>; | |
| 20 | 20 | |
| 21 | − ranges = <0 0 fe000000 02000000 | |
| 22 | − 1 0 f4500000 00008000>; | |
| 21 | + ranges = <0x0 0x0 0xfe000000 0x02000000 | |
| 22 | + 0x1 0x0 0xf4500000 0x00008000 | |
| 23 | + 0x2 0x0 0xfd810000 0x00010000>; | |
| 23 | 24 | |
| 24 | 25 | flash@0,0 { |
| 25 | 26 | compatible = "jedec-flash"; |
| 26 | − reg = <0 0 2000000>; | |
| 27 | + reg = <0x0 0x0 0x2000000>; | |
| 27 | 28 | bank-width = <4>; |
| 28 | 29 | device-width = <1>; |
| 29 | 30 | }; |
| 30 | 31 | |
| 31 | 32 | board-control@1,0 { |
| 32 | − reg = <1 0 20>; | |
| 33 | + reg = <0x1 0x0 0x20>; | |
| 33 | 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 | }; |
| @@ -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 | + }; | |
| @@ -1,9 +1,10 @@ | ||
| 1 | 1 | Tegra SoC PWFM controller |
| 2 | 2 | |
| 3 | 3 | Required properties: |
| 4 | −- compatible: should be one of: | |
| 5 | − - "nvidia,tegra20-pwm" | |
| 6 | − - "nvidia,tegra30-pwm" | |
| 4 | +- compatible: For Tegra20, must contain "nvidia,tegra20-pwm". For Tegra30, | |
| 5 | + must contain "nvidia,tegra30-pwm". Otherwise, must contain | |
| 6 | + "nvidia,<chip>-pwm", plus one of the above, where <chip> is tegra114, | |
| 7 | + tegra124, tegra132, or tegra210. | |
| 7 | 8 | - reg: physical base address and length of the controller's registers |
| 8 | 9 | - #pwm-cells: should be 2. See pwm.txt in this directory for a description of |
| 9 | 10 | the cells format. |
| @@ -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 | + }; | |
| @@ -11,6 +11,7 @@ Required properties: · 10 unmodified lines | ||
| 11 | 11 | BUCKA and BUCKB. |
| 12 | 12 | |
| 13 | 13 | Optional properties: |
| 14 | +- enable-gpios: platform gpio for control of BUCKA/BUCKB. | |
| 14 | 15 | - Any optional property defined in regulator.txt |
| 15 | 16 | |
| 16 | 17 | Example 1) DA9211 |
| @@ -27,6 +28,7 @@ Example 1) DA9211 · 10 unmodified lines | ||
| 27 | 28 | regulator-max-microvolt = <1570000>; |
| 28 | 29 | regulator-min-microamp = <2000000>; |
| 29 | 30 | regulator-max-microamp = <5000000>; |
| 31 | + enable-gpios = <&gpio 27 0>; | |
| 30 | 32 | }; |
| 31 | 33 | BUCKB { |
| 32 | 34 | regulator-name = "VBUCKB"; |
| @@ -34,11 +36,12 @@ Example 1) DA9211 · 1 unmodified line | ||
| 34 | 36 | regulator-max-microvolt = <1570000>; |
| 35 | 37 | regulator-min-microamp = <2000000>; |
| 36 | 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 | 45 | pmic: da9213@68 { |
| 43 | 46 | compatible = "dlg,da9213"; |
| 44 | 47 | reg = <0x68>; |
| @@ -51,6 +54,7 @@ Example 2) DA92113 · 6 unmodified lines | ||
| 51 | 54 | regulator-max-microvolt = <1570000>; |
| 52 | 55 | regulator-min-microamp = <3000000>; |
| 53 | 56 | regulator-max-microamp = <6000000>; |
| 57 | + enable-gpios = <&gpio 27 0>; | |
| 54 | 58 | }; |
| 55 | 59 | BUCKB { |
| 56 | 60 | regulator-name = "VBUCKB"; |
| @@ -58,6 +62,7 @@ Example 2) DA92113 · 1 unmodified line | ||
| 58 | 62 | regulator-max-microvolt = <1570000>; |
| 59 | 63 | regulator-min-microamp = <3000000>; |
| 60 | 64 | regulator-max-microamp = <6000000>; |
| 65 | + enable-gpios = <&gpio 17 0>; | |
| 61 | 66 | }; |
| 62 | 67 | }; |
| 63 | 68 | }; |
| @@ -2,7 +2,7 @@ Intersil ISL9305/ISL9305H voltage regulator · 1 unmodified line | ||
| 2 | 2 | |
| 3 | 3 | Required properties: |
| 4 | 4 | |
| 5 | −- compatible: "isl,isl9305" or "isl,isl9305h" | |
| 5 | +- compatible: "isil,isl9305" or "isil,isl9305h" | |
| 6 | 6 | - reg: I2C slave address, usually 0x68. |
| 7 | 7 | - regulators: A node that houses a sub-node for each regulator within the |
| 8 | 8 | device. Each sub-node is identified using the node's name, with valid |
| @@ -19,7 +19,7 @@ Optional properties: · 10 unmodified lines | ||
| 19 | 19 | Example |
| 20 | 20 | |
| 21 | 21 | pmic: isl9305@68 { |
| 22 | − compatible = "isl,isl9305"; | |
| 22 | + compatible = "isil,isl9305"; | |
| 23 | 23 | reg = <0x68>; |
| 24 | 24 | |
| 25 | 25 | VINDCD1-supply = <&system_power>; |
| @@ -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 | + }; | |
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | PFUZE100 family of regulators |
| 2 | 2 | |
| 3 | 3 | Required properties: |
| 4 | −- compatible: "fsl,pfuze100" or "fsl,pfuze200" | |
| 4 | +- compatible: "fsl,pfuze100", "fsl,pfuze200", "fsl,pfuze3000" | |
| 5 | 5 | - reg: I2C slave address |
| 6 | 6 | |
| 7 | 7 | Required child node: |
| @@ -14,6 +14,8 @@ Required child node: · 6 unmodified lines | ||
| 14 | 14 | sw1ab,sw1c,sw2,sw3a,sw3b,sw4,swbst,vsnvs,vrefddr,vgen1~vgen6 |
| 15 | 15 | --PFUZE200 |
| 16 | 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 | 20 | Each regulator is defined using the standard binding for regulators. |
| 19 | 21 | |
| @@ -205,3 +207,93 @@ Example 2: PFUZE200 · 185 unmodified lines | ||
| 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 | + }; | |
| @@ -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 | +}; | |
| @@ -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 | + }; | |
| @@ -6,7 +6,9 @@ state. · 5 unmodified lines | ||
| 6 | 6 | |
| 7 | 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 | 12 | - reg : Specifies base physical address and size of the registers. |
| 11 | 13 | - interrupts : A single interrupt specifier. |
| 12 | 14 | - clocks : Must contain one entry, for the module clock. |
| @@ -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 | +}; | |
| @@ -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 | +}; | |
| @@ -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 | + }; | |
| @@ -2,9 +2,13 @@ · 1 unmodified line | ||
| 2 | 2 | |
| 3 | 3 | Required properties: |
| 4 | 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 | 8 | * "mediatek,mt6589-uart" for MT6589 compatible UARTS |
| 6 | 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 | 13 | - reg: The base address of the UART register bank. |
| 10 | 14 | |
| @@ -8,7 +8,10 @@ Required properties: · 7 unmodified lines | ||
| 8 | 8 | - "ns16550" |
| 9 | 9 | - "ns16750" |
| 10 | 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 | 15 | - "nxp,lpc3220-uart" |
| 13 | 16 | - "ralink,rt2880-uart" |
| 14 | 17 | - "ibm,qpace-nwp-serial" |
| @@ -16,6 +19,7 @@ Required properties: · 1 unmodified line | ||
| 16 | 19 | - "altr,16550-FIFO64" |
| 17 | 20 | - "altr,16550-FIFO128" |
| 18 | 21 | - "fsl,16550-FIFO64" |
| 22 | + - "fsl,ns16550" | |
| 19 | 23 | - "serial" if the port type is unknown. |
| 20 | 24 | - reg : offset and length of the register set for the device. |
| 21 | 25 | - interrupts : should contain uart interrupt. |
| @@ -40,6 +44,17 @@ Optional properties: · 18 unmodified lines | ||
| 40 | 44 | driver is allowed to detect support for the capability even without this |
| 41 | 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 | 58 | Example: |
| 44 | 59 | |
| 45 | 60 | uart@80230000 { |
| @@ -2,7 +2,7 @@ · 1 unmodified line | ||
| 2 | 2 | |
| 3 | 3 | Required properties: |
| 4 | 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 | 6 | uart located in BT module and used for BT. |
| 7 | 7 | - reg : Offset and length of the register set for the device |
| 8 | 8 | - interrupts : Should contain uart interrupt |
| @@ -37,7 +37,7 @@ usp@b0090000 { · 28 unmodified lines | ||
| 37 | 37 | for uart use in BT module, |
| 38 | 38 | uart6: uart@11000000 { |
| 39 | 39 | cell-index = <6>; |
| 40 | − compatible = "sirf,marco-bt-uart", "sirf,marco-uart"; | |
| 40 | + compatible = "sirf,atlas7-bt-uart", "sirf,atlas7-uart"; | |
| 41 | 41 | reg = <0x11000000 0x1000>; |
| 42 | 42 | interrupts = <0 100 0>; |
| 43 | 43 | clocks = <&clks 138>, <&clks 140>, <&clks 141>; |
| @@ -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. | |
| @@ -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 | + }; | |
| @@ -36,6 +36,11 @@ are located at offsets 0xbf8 and 0xbfc · 35 unmodified lines | ||
| 36 | 36 | Value type: <prop-encoded-array> |
| 37 | 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 | 44 | - fsl,liodn |
| 40 | 45 | Usage: See pamu.txt |
| 41 | 46 | Value type: <prop-encoded-array> |
| @@ -96,7 +101,7 @@ The example below shows a BMan FBPR dynamic allocation memory node · 54 unmodified lines | ||
| 96 | 101 | |
| 97 | 102 | bman_fbpr: bman-fbpr { |
| 98 | 103 | compatible = "fsl,bman-fbpr"; |
| 99 | − alloc-ranges = <0 0 0xf 0xffffffff>; | |
| 104 | + alloc-ranges = <0 0 0x10 0>; | |
| 100 | 105 | size = <0 0x1000000>; |
| 101 | 106 | alignment = <0 0x1000000>; |
| 102 | 107 | }; |
| @@ -104,6 +109,10 @@ The example below shows a BMan FBPR dynamic allocation memory node · 1 unmodified line | ||
| 104 | 109 | |
| 105 | 110 | The example below shows a (P4080) BMan CCSR-space node |
| 106 | 111 | |
| 112 | + bportals: bman-portals@ff4000000 { | |
| 113 | + ... | |
| 114 | + }; | |
| 115 | + | |
| 107 | 116 | crypto@300000 { |
| 108 | 117 | ... |
| 109 | 118 | fsl,bman = <&bman, 2>; |
| @@ -115,6 +124,7 @@ The example below shows a (P4080) BMan CCSR-space node · 5 unmodified lines | ||
| 115 | 124 | reg = <0x31a000 0x1000>; |
| 116 | 125 | interrupts = <16 2 1 2>; |
| 117 | 126 | fsl,liodn = <0x17>; |
| 127 | + fsl,bman-portals = <&bportals>; | |
| 118 | 128 | memory-region = <&bman_fbpr>; |
| 119 | 129 | }; |
| 120 | 130 | |
| @@ -38,6 +38,11 @@ are located at offsets 0xbf8 and 0xbfc · 37 unmodified lines | ||
| 38 | 38 | Value type: <prop-encoded-array> |
| 39 | 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 | 46 | - fsl,liodn |
| 42 | 47 | Usage: See pamu.txt |
| 43 | 48 | Value type: <prop-encoded-array> |
| @@ -113,13 +118,13 @@ The example below shows a QMan FQD and a PFDR dynamic allocation memory nodes · 69 unmodified lines | ||
| 113 | 118 | |
| 114 | 119 | qman_fqd: qman-fqd { |
| 115 | 120 | compatible = "fsl,qman-fqd"; |
| 116 | − alloc-ranges = <0 0 0xf 0xffffffff>; | |
| 121 | + alloc-ranges = <0 0 0x10 0>; | |
| 117 | 122 | size = <0 0x400000>; |
| 118 | 123 | alignment = <0 0x400000>; |
| 119 | 124 | }; |
| 120 | 125 | qman_pfdr: qman-pfdr { |
| 121 | 126 | compatible = "fsl,qman-pfdr"; |
| 122 | − alloc-ranges = <0 0 0xf 0xffffffff>; | |
| 127 | + alloc-ranges = <0 0 0x10 0>; | |
| 123 | 128 | size = <0 0x2000000>; |
| 124 | 129 | alignment = <0 0x2000000>; |
| 125 | 130 | }; |
| @@ -127,6 +132,10 @@ The example below shows a QMan FQD and a PFDR dynamic allocation memory nodes · 1 unmodified line | ||
| 127 | 132 | |
| 128 | 133 | The example below shows a (P4080) QMan CCSR-space node |
| 129 | 134 | |
| 135 | + qportals: qman-portals@ff4200000 { | |
| 136 | + ... | |
| 137 | + }; | |
| 138 | + | |
| 130 | 139 | clockgen: global-utilities@e1000 { |
| 131 | 140 | ... |
| 132 | 141 | sysclk: sysclk { |
| @@ -154,6 +163,7 @@ The example below shows a (P4080) QMan CCSR-space node · 21 unmodified lines | ||
| 154 | 163 | reg = <0x318000 0x1000>; |
| 155 | 164 | interrupts = <16 2 1 3> |
| 156 | 165 | fsl,liodn = <0x16>; |
| 166 | + fsl,qman-portals = <&qportals>; | |
| 157 | 167 | memory-region = <&qman_fqd &qman_pfdr>; |
| 158 | 168 | clocks = <&platform_pll 1>; |
| 159 | 169 | }; |
| @@ -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 | +}; | |
| @@ -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 | + }; | |
| @@ -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 | + }; | |
| @@ -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 | +}; | |
| @@ -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 | +}; | |
| @@ -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 | +}; | |
| @@ -1,7 +1,10 @@ | ||
| 1 | 1 | NVIDIA Tegra30 AHUB (Audio Hub) |
| 2 | 2 | |
| 3 | 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 | 8 | - reg : Should contain the register physical address and length for each of |
| 6 | 9 | the AHUB's register blocks. |
| 7 | 10 | - Tegra30 requires 2 entries, for the APBIF and AHUB/AUDIO register blocks. |
| @@ -1,7 +1,9 @@ | ||
| 1 | 1 | NVIDIA Tegra30 HDA controller |
| 2 | 2 | |
| 3 | 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 | 7 | - reg : Should contain the HDA registers location and length. |
| 6 | 8 | - interrupts : The interrupt from the HDA controller. |
| 7 | 9 | - clocks : Must contain an entry for each required entry in clock-names. |
| @@ -1,7 +1,10 @@ | ||
| 1 | 1 | NVIDIA Tegra30 I2S controller |
| 2 | 2 | |
| 3 | 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 | 8 | - reg : Should contain I2S registers location and length |
| 6 | 9 | - clocks : Must contain one entry, for the module clock. |
| 7 | 10 | See ../clocks/clock-bindings.txt for details. |
| @@ -5,7 +5,8 @@ on the board). · 4 unmodified lines | ||
| 5 | 5 | |
| 6 | 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 | 11 | - reg : the I2C address of the device for I2C, the chip select |
| 11 | 12 | number for SPI. |
| @@ -16,9 +17,16 @@ Required properties: · 4 unmodified lines | ||
| 16 | 17 | Optional properties: |
| 17 | 18 | |
| 18 | 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 | 31 | pcm5122: pcm5122@4c { |
| 24 | 32 | compatible = "ti,pcm5122"; |
| @@ -28,3 +36,17 @@ Example: · 3 unmodified lines | ||
| 28 | 36 | DVDD-supply = <®_1v8>; |
| 29 | 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 | + }; | |
| @@ -33,6 +33,25 @@ Required SoC Specific Properties: · 32 unmodified lines | ||
| 33 | 33 | "iis" is the i2s bus clock and i2s_opclk0, i2s_opclk1 are sources of the root |
| 34 | 34 | clk. i2s0 has internal mux to select the source of root clk and i2s1 and i2s2 |
| 35 | 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 | 56 | Optional SoC Specific Properties: |
| 38 | 57 | |
| @@ -41,6 +60,7 @@ Optional SoC Specific Properties: · 2 unmodified lines | ||
| 41 | 60 | - pinctrl-0: Should specify pin control groups used for this controller. |
| 42 | 61 | - pinctrl-names: Should contain only one value - "default". |
| 43 | 62 | |
| 63 | + | |
| 44 | 64 | Example: |
| 45 | 65 | |
| 46 | 66 | i2s0: i2s@03830000 { |
| @@ -54,6 +74,8 @@ i2s0: i2s@03830000 { · 7 unmodified lines | ||
| 54 | 74 | <&clock_audss EXYNOS_I2S_BUS>, |
| 55 | 75 | <&clock_audss EXYNOS_SCLK_I2S>; |
| 56 | 76 | clock-names = "iis", "i2s_opclk0", "i2s_opclk1"; |
| 77 | + #clock-cells; | |
| 78 | + clock-output-names = "i2s_cdclk0"; | |
| 57 | 79 | samsung,idma-addr = <0x03000000>; |
| 58 | 80 | pinctrl-names = "default"; |
| 59 | 81 | pinctrl-0 = <&i2s0_bus>; |
| @@ -75,6 +75,11 @@ Optional CPU/CODEC subnodes properties: · 74 unmodified lines | ||
| 75 | 75 | it can be specified via "clocks" if system has |
| 76 | 76 | clock node (= common clock), or "system-clock-frequency" |
| 77 | 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 | 84 | Example 1 - single DAI link: |
| 80 | 85 | |
| @@ -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 | +}; | |
| @@ -9,6 +9,7 @@ Required properties: · 8 unmodified lines | ||
| 9 | 9 | "ti,tlv320aic33" - TLV320AIC33 |
| 10 | 10 | "ti,tlv320aic3007" - TLV320AIC3007 |
| 11 | 11 | "ti,tlv320aic3106" - TLV320AIC3106 |
| 12 | + "ti,tlv320aic3104" - TLV320AIC3104 | |
| 12 | 13 | |
| 13 | 14 | |
| 14 | 15 | - reg - <int> - I2C slave address |
| @@ -18,6 +19,7 @@ Optional properties: · 3 unmodified lines | ||
| 18 | 19 | |
| 19 | 20 | - gpio-reset - gpio pin number used for codec reset |
| 20 | 21 | - ai3x-gpio-func - <array of 2 int> - AIC3X_GPIO1 & AIC3X_GPIO2 Functionality |
| 22 | + - Not supported on tlv320aic3104 | |
| 21 | 23 | - ai3x-micbias-vg - MicBias Voltage required. |
| 22 | 24 | 1 - MICBIAS output is powered to 2.0V, |
| 23 | 25 | 2 - MICBIAS output is powered to 2.5V, |
| @@ -36,7 +38,13 @@ CODEC output pins: · 12 unmodified lines | ||
| 36 | 38 | * HPLCOM |
| 37 | 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 | 48 | * MIC3L |
| 41 | 49 | * MIC3R |
| 42 | 50 | * LINE1L |
| @@ -13,6 +13,11 @@ Required properties: · 12 unmodified lines | ||
| 13 | 13 | - interrupt-parent: The parent interrupt controller |
| 14 | 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 | 22 | Examples: |
| 18 | 23 | |
| @@ -3,7 +3,7 @@ WM8904 audio CODEC · 2 unmodified lines | ||
| 3 | 3 | This device supports I2C only. |
| 4 | 4 | |
| 5 | 5 | Required properties: |
| 6 | − - compatible: "wlf,wm8904" | |
| 6 | + - compatible: "wlf,wm8904" or "wlf,wm8912" | |
| 7 | 7 | - reg: the I2C address of the device. |
| 8 | 8 | - clock-names: "mclk" |
| 9 | 9 | - clocks: reference to |
| @@ -1,7 +1,9 @@ | ||
| 1 | 1 | NVIDIA Tegra114 SPI controller. |
| 2 | 2 | |
| 3 | 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 | 7 | - reg: Should contain SPI registers location and length. |
| 6 | 8 | - interrupts: Should contain SPI interrupts. |
| 7 | 9 | - clock-names : Must include the following entries: |
| @@ -30,6 +30,22 @@ Optional properties: · 29 unmodified lines | ||
| 30 | 30 | specifiers, one for transmission, and one for |
| 31 | 31 | reception. |
| 32 | 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 | 50 | Optional properties, deprecated for soctype-specific bindings: |
| 35 | 51 | - renesas,tx-fifo-size : Overrides the default tx fifo size given in words |
| @@ -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 | +}; | |
| @@ -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 | + }; | |
| @@ -12,9 +12,9 @@ Optional properties: · 11 unmodified lines | ||
| 12 | 12 | property is not present, then the touchscreen is |
| 13 | 13 | disabled. 5 wires is valid for i.MX28 SoC only. |
| 14 | 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 | 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 | 18 | 2 kHz and its default is 2 (= 1 ms) |
| 19 | 19 | - fsl,settling: delay between plate switch to next sample. Allowed value is |
| 20 | 20 | 1 ... 2047. It counts at 2 kHz and its default is |
| @@ -15,6 +15,29 @@ I. For patch submitters · 14 unmodified lines | ||
| 15 | 15 | 3) The Documentation/ portion of the patch should come in the series before |
| 16 | 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 | 41 | II. For kernel maintainers |
| 19 | 42 | |
| 20 | 43 | 1) If you aren't comfortable reviewing a given binding, reply to it and ask |
| @@ -12,6 +12,7 @@ · 11 unmodified lines | ||
| 12 | 12 | "samsung,exynos5420-tmu-ext-triminfo" for TMU channels 2, 3 and 4 |
| 13 | 13 | Exynos5420 (Must pass triminfo base and triminfo clock) |
| 14 | 14 | "samsung,exynos5440-tmu" |
| 15 | + "samsung,exynos7-tmu" | |
| 15 | 16 | - interrupt-parent : The phandle for the interrupt controller |
| 16 | 17 | - reg : Address range of the thermal registers. For soc's which has multiple |
| 17 | 18 | instances of TMU and some registers are shared across all TMU's like |
| @@ -32,13 +33,28 @@ · 14 unmodified lines | ||
| 32 | 33 | - clocks : The main clocks for TMU device |
| 33 | 34 | -- 1. operational clock for TMU channel |
| 34 | 35 | -- 2. optional clock to access the shared registers of TMU channel |
| 36 | + -- 3. optional special clock for functional operation | |
| 35 | 37 | - clock-names : Thermal system clock name |
| 36 | 38 | -- "tmu_apbif" operational clock for current TMU channel |
| 37 | 39 | -- "tmu_triminfo_apbif" clock to access the shared triminfo register |
| 38 | 40 | for current TMU channel |
| 41 | + -- "tmu_sclk" clock for functional operation of the current TMU | |
| 42 | + channel | |
| 39 | 43 | - vtmu-supply: This entry is optional and provides the regulator node supplying |
| 40 | 44 | voltage to TMU. If needed this entry can be placed inside |
| 41 | 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 | 59 | Example 1): |
| 44 | 60 | |
| @@ -51,6 +67,7 @@ Example 1): · 6 unmodified lines | ||
| 51 | 67 | clock-names = "tmu_apbif"; |
| 52 | 68 | status = "disabled"; |
| 53 | 69 | vtmu-supply = <&tmu_regulator_node>; |
| 70 | + #include "exynos4412-tmu-sensor-conf.dtsi" | |
| 54 | 71 | }; |
| 55 | 72 | |
| 56 | 73 | Example 2): |
| @@ -61,6 +78,7 @@ Example 2): · 4 unmodified lines | ||
| 61 | 78 | interrupts = <0 58 0>; |
| 62 | 79 | clocks = <&clock 21>; |
| 63 | 80 | clock-names = "tmu_apbif"; |
| 81 | + #include "exynos5440-tmu-sensor-conf.dtsi" | |
| 64 | 82 | }; |
| 65 | 83 | |
| 66 | 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") · 3 unmodified lines | ||
| 70 | 88 | interrupts = <0 184 0>; |
| 71 | 89 | clocks = <&clock 318>, <&clock 318>; |
| 72 | 90 | clock-names = "tmu_apbif", "tmu_triminfo_apbif"; |
| 91 | + #include "exynos4412-tmu-sensor-conf.dtsi" | |
| 73 | 92 | }; |
| 74 | 93 | |
| 75 | 94 | tmu_cpu3: tmu@1006c000 { |
| @@ -78,6 +97,7 @@ Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register") · 2 unmodified lines | ||
| 78 | 97 | interrupts = <0 185 0>; |
| 79 | 98 | clocks = <&clock 318>, <&clock 319>; |
| 80 | 99 | clock-names = "tmu_apbif", "tmu_triminfo_apbif"; |
| 100 | + #include "exynos4412-tmu-sensor-conf.dtsi" | |
| 81 | 101 | }; |
| 82 | 102 | |
| 83 | 103 | tmu_gpu: tmu@100a0000 { |
| @@ -86,6 +106,7 @@ Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register") · 2 unmodified lines | ||
| 86 | 106 | interrupts = <0 215 0>; |
| 87 | 107 | clocks = <&clock 319>, <&clock 318>; |
| 88 | 108 | clock-names = "tmu_apbif", "tmu_triminfo_apbif"; |
| 109 | + #include "exynos4412-tmu-sensor-conf.dtsi" | |
| 89 | 110 | }; |
| 90 | 111 | |
| 91 | 112 | Note: For multi-instance tmu each instance should have an alias correctly |
| @@ -7,7 +7,9 @@ notifications. It is also used to manage emergency shutdown in an · 6 unmodified lines | ||
| 7 | 7 | overheating situation. |
| 8 | 8 | |
| 9 | 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 | 13 | - reg : Should contain 1 entry: |
| 12 | 14 | - SOCTHERM register set |
| 13 | 15 | - interrupts : Defines the interrupt used by SOCTHERM |
| @@ -251,24 +251,24 @@ ocp { · 250 unmodified lines | ||
| 251 | 251 | }; |
| 252 | 252 | |
| 253 | 253 | thermal-zones { |
| 254 | − cpu-thermal: cpu-thermal { | |
| 254 | + cpu_thermal: cpu-thermal { | |
| 255 | 255 | polling-delay-passive = <250>; /* milliseconds */ |
| 256 | 256 | polling-delay = <1000>; /* milliseconds */ |
| 257 | 257 | |
| 258 | 258 | thermal-sensors = <&bandgap0>; |
| 259 | 259 | |
| 260 | 260 | trips { |
| 261 | − cpu-alert0: cpu-alert { | |
| 261 | + cpu_alert0: cpu-alert0 { | |
| 262 | 262 | temperature = <90000>; /* millicelsius */ |
| 263 | 263 | hysteresis = <2000>; /* millicelsius */ |
| 264 | 264 | type = "active"; |
| 265 | 265 | }; |
| 266 | − cpu-alert1: cpu-alert { | |
| 266 | + cpu_alert1: cpu-alert1 { | |
| 267 | 267 | temperature = <100000>; /* millicelsius */ |
| 268 | 268 | hysteresis = <2000>; /* millicelsius */ |
| 269 | 269 | type = "passive"; |
| 270 | 270 | }; |
| 271 | − cpu-crit: cpu-crit { | |
| 271 | + cpu_crit: cpu-crit { | |
| 272 | 272 | temperature = <125000>; /* millicelsius */ |
| 273 | 273 | hysteresis = <2000>; /* millicelsius */ |
| 274 | 274 | type = "critical"; |
| @@ -277,17 +277,17 @@ thermal-zones { · 2 unmodified lines | ||
| 277 | 277 | |
| 278 | 278 | cooling-maps { |
| 279 | 279 | map0 { |
| 280 | − trip = <&cpu-alert0>; | |
| 281 | − cooling-device = <&fan0 THERMAL_NO_LIMITS 4>; | |
| 280 | + trip = <&cpu_alert0>; | |
| 281 | + cooling-device = <&fan0 THERMAL_NO_LIMIT 4>; | |
| 282 | 282 | }; |
| 283 | 283 | map1 { |
| 284 | − trip = <&cpu-alert1>; | |
| 285 | − cooling-device = <&fan0 5 THERMAL_NO_LIMITS>; | |
| 284 | + trip = <&cpu_alert1>; | |
| 285 | + cooling-device = <&fan0 5 THERMAL_NO_LIMIT>; | |
| 286 | 286 | }; |
| 287 | 287 | map2 { |
| 288 | − trip = <&cpu-alert1>; | |
| 288 | + trip = <&cpu_alert1>; | |
| 289 | 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 · 4 unmodified lines | ||
| 298 | 298 | device (fan0) is controlled via I2C bus 1, at address 0x48, and has ten |
| 299 | 299 | different cooling states 0-9. It is used to remove the heat out of |
| 300 | 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 | 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 | 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 | 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 | 308 | is not reliable anymore. |
| 309 | 309 | |
| 310 | 310 | (b) - IC with several internal sensors |
| @@ -329,7 +329,7 @@ ocp { · 18 unmodified lines | ||
| 329 | 329 | }; |
| 330 | 330 | |
| 331 | 331 | thermal-zones { |
| 332 | − cpu-thermal: cpu-thermal { | |
| 332 | + cpu_thermal: cpu-thermal { | |
| 333 | 333 | polling-delay-passive = <250>; /* milliseconds */ |
| 334 | 334 | polling-delay = <1000>; /* milliseconds */ |
| 335 | 335 | |
| @@ -338,12 +338,12 @@ thermal-zones { · 2 unmodified lines | ||
| 338 | 338 | |
| 339 | 339 | trips { |
| 340 | 340 | /* each zone within the SoC may have its own trips */ |
| 341 | − cpu-alert: cpu-alert { | |
| 341 | + cpu_alert: cpu-alert { | |
| 342 | 342 | temperature = <100000>; /* millicelsius */ |
| 343 | 343 | hysteresis = <2000>; /* millicelsius */ |
| 344 | 344 | type = "passive"; |
| 345 | 345 | }; |
| 346 | − cpu-crit: cpu-crit { | |
| 346 | + cpu_crit: cpu-crit { | |
| 347 | 347 | temperature = <125000>; /* millicelsius */ |
| 348 | 348 | hysteresis = <2000>; /* millicelsius */ |
| 349 | 349 | type = "critical"; |
| @@ -356,7 +356,7 @@ thermal-zones { · 6 unmodified lines | ||
| 356 | 356 | }; |
| 357 | 357 | }; |
| 358 | 358 | |
| 359 | − gpu-thermal: gpu-thermal { | |
| 359 | + gpu_thermal: gpu-thermal { | |
| 360 | 360 | polling-delay-passive = <120>; /* milliseconds */ |
| 361 | 361 | polling-delay = <1000>; /* milliseconds */ |
| 362 | 362 | |
| @@ -365,12 +365,12 @@ thermal-zones { · 2 unmodified lines | ||
| 365 | 365 | |
| 366 | 366 | trips { |
| 367 | 367 | /* each zone within the SoC may have its own trips */ |
| 368 | − gpu-alert: gpu-alert { | |
| 368 | + gpu_alert: gpu-alert { | |
| 369 | 369 | temperature = <90000>; /* millicelsius */ |
| 370 | 370 | hysteresis = <2000>; /* millicelsius */ |
| 371 | 371 | type = "passive"; |
| 372 | 372 | }; |
| 373 | − gpu-crit: gpu-crit { | |
| 373 | + gpu_crit: gpu-crit { | |
| 374 | 374 | temperature = <105000>; /* millicelsius */ |
| 375 | 375 | hysteresis = <2000>; /* millicelsius */ |
| 376 | 376 | type = "critical"; |
| @@ -383,7 +383,7 @@ thermal-zones { · 6 unmodified lines | ||
| 383 | 383 | }; |
| 384 | 384 | }; |
| 385 | 385 | |
| 386 | − dsp-thermal: dsp-thermal { | |
| 386 | + dsp_thermal: dsp-thermal { | |
| 387 | 387 | polling-delay-passive = <50>; /* milliseconds */ |
| 388 | 388 | polling-delay = <1000>; /* milliseconds */ |
| 389 | 389 | |
| @@ -392,12 +392,12 @@ thermal-zones { · 2 unmodified lines | ||
| 392 | 392 | |
| 393 | 393 | trips { |
| 394 | 394 | /* each zone within the SoC may have its own trips */ |
| 395 | − dsp-alert: gpu-alert { | |
| 395 | + dsp_alert: dsp-alert { | |
| 396 | 396 | temperature = <90000>; /* millicelsius */ |
| 397 | 397 | hysteresis = <2000>; /* millicelsius */ |
| 398 | 398 | type = "passive"; |
| 399 | 399 | }; |
| 400 | − dsp-crit: gpu-crit { | |
| 400 | + dsp_crit: gpu-crit { | |
| 401 | 401 | temperature = <135000>; /* millicelsius */ |
| 402 | 402 | hysteresis = <2000>; /* millicelsius */ |
| 403 | 403 | type = "critical"; |
| @@ -457,7 +457,7 @@ ocp { · 53 unmodified lines | ||
| 457 | 457 | }; |
| 458 | 458 | |
| 459 | 459 | thermal-zones { |
| 460 | − cpu-thermal: cpu-thermal { | |
| 460 | + cpu_thermal: cpu-thermal { | |
| 461 | 461 | polling-delay-passive = <250>; /* milliseconds */ |
| 462 | 462 | polling-delay = <1000>; /* milliseconds */ |
| 463 | 463 | |
| @@ -508,7 +508,7 @@ with many sensors and many cooling devices. · 44 unmodified lines | ||
| 508 | 508 | /* |
| 509 | 509 | * An IC with several temperature sensor. |
| 510 | 510 | */ |
| 511 | − adc-dummy: sensor@0x50 { | |
| 511 | + adc_dummy: sensor@0x50 { | |
| 512 | 512 | ... |
| 513 | 513 | #thermal-sensor-cells = <1>; /* sensor internal ID */ |
| 514 | 514 | }; |
| @@ -520,7 +520,7 @@ thermal-zones { · 5 unmodified lines | ||
| 520 | 520 | polling-delay = <2500>; /* milliseconds */ |
| 521 | 521 | |
| 522 | 522 | /* sensor ID */ |
| 523 | − thermal-sensors = <&adc-dummy 4>; | |
| 523 | + thermal-sensors = <&adc_dummy 4>; | |
| 524 | 524 | |
| 525 | 525 | trips { |
| 526 | 526 | ... |
| @@ -531,14 +531,14 @@ thermal-zones { · 4 unmodified lines | ||
| 531 | 531 | }; |
| 532 | 532 | }; |
| 533 | 533 | |
| 534 | − board-thermal: board-thermal { | |
| 534 | + board_thermal: board-thermal { | |
| 535 | 535 | polling-delay-passive = <1000>; /* milliseconds */ |
| 536 | 536 | polling-delay = <2500>; /* milliseconds */ |
| 537 | 537 | |
| 538 | 538 | /* sensor ID */ |
| 539 | − thermal-sensors = <&adc-dummy 0>, /* pcb top edge */ | |
| 540 | − <&adc-dummy 1>, /* lcd */ | |
| 541 | − <&adc-dymmy 2>; /* back cover */ | |
| 539 | + thermal-sensors = <&adc_dummy 0>, /* pcb top edge */ | |
| 540 | + <&adc_dummy 1>, /* lcd */ | |
| 541 | + <&adc_dummy 2>; /* back cover */ | |
| 542 | 542 | /* |
| 543 | 543 | * An array of coefficients describing the sensor |
| 544 | 544 | * linear relation. E.g.: |
| @@ -548,22 +548,22 @@ thermal-zones { · 3 unmodified lines | ||
| 548 | 548 | |
| 549 | 549 | trips { |
| 550 | 550 | /* Trips are based on resulting linear equation */ |
| 551 | − cpu-trip: cpu-trip { | |
| 551 | + cpu_trip: cpu-trip { | |
| 552 | 552 | temperature = <60000>; /* millicelsius */ |
| 553 | 553 | hysteresis = <2000>; /* millicelsius */ |
| 554 | 554 | type = "passive"; |
| 555 | 555 | }; |
| 556 | − gpu-trip: gpu-trip { | |
| 556 | + gpu_trip: gpu-trip { | |
| 557 | 557 | temperature = <55000>; /* millicelsius */ |
| 558 | 558 | hysteresis = <2000>; /* millicelsius */ |
| 559 | 559 | type = "passive"; |
| 560 | 560 | } |
| 561 | − lcd-trip: lcp-trip { | |
| 561 | + lcd_trip: lcp-trip { | |
| 562 | 562 | temperature = <53000>; /* millicelsius */ |
| 563 | 563 | hysteresis = <2000>; /* millicelsius */ |
| 564 | 564 | type = "passive"; |
| 565 | 565 | }; |
| 566 | − crit-trip: crit-trip { | |
| 566 | + crit_trip: crit-trip { | |
| 567 | 567 | temperature = <68000>; /* millicelsius */ |
| 568 | 568 | hysteresis = <2000>; /* millicelsius */ |
| 569 | 569 | type = "critical"; |
| @@ -572,17 +572,17 @@ thermal-zones { · 2 unmodified lines | ||
| 572 | 572 | |
| 573 | 573 | cooling-maps { |
| 574 | 574 | map0 { |
| 575 | − trip = <&cpu-trip>; | |
| 575 | + trip = <&cpu_trip>; | |
| 576 | 576 | cooling-device = <&cpu0 0 2>; |
| 577 | 577 | contribution = <55>; |
| 578 | 578 | }; |
| 579 | 579 | map1 { |
| 580 | − trip = <&gpu-trip>; | |
| 580 | + trip = <&gpu_trip>; | |
| 581 | 581 | cooling-device = <&gpu0 0 2>; |
| 582 | 582 | contribution = <20>; |
| 583 | 583 | }; |
| 584 | 584 | map2 { |
| 585 | − trip = <&lcd-trip>; | |
| 585 | + trip = <&lcd_trip>; | |
| 586 | 586 | cooling-device = <&lcd0 5 10>; |
| 587 | 587 | contribution = <15>; |
| 588 | 588 | }; |
| @@ -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 | + }; | |
| @@ -6,7 +6,9 @@ trigger a legacy watchdog reset. · 5 unmodified lines | ||
| 6 | 6 | |
| 7 | 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 | 12 | - reg : Specifies base physical address and size of the registers. |
| 11 | 13 | - interrupts : A list of 6 interrupts; one per each of timer channels 1 |
| 12 | 14 | through 5, and one for the shared interrupt for the remaining channels. |
| @@ -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 | + }; | |
| @@ -1,4 +1,4 @@ | ||
| 1 | −* OF selftest platform device | |
| 1 | +1) OF selftest platform device | |
| 2 | 2 | |
| 3 | 3 | ** selftest |
| 4 | 4 | |
| @@ -12,3 +12,60 @@ Example: · 7 unmodified lines | ||
| 12 | 12 | compatible = "selftest"; |
| 13 | 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 | + }; | |
| @@ -33,9 +33,17 @@ usb1: ehci@00800000 { · 32 unmodified lines | ||
| 33 | 33 | AT91 USB device controller |
| 34 | 34 | |
| 35 | 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 | 41 | - reg: Address and length of the register set for the device |
| 38 | 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 | 48 | Optional properties: |
| 41 | 49 | - atmel,vbus-gpio: If present, specifies a gpio that needs to be |
| @@ -51,7 +59,10 @@ usb1: gadget@fffa4000 { · 9 unmodified lines | ||
| 51 | 59 | Atmel High-Speed USB device controller |
| 52 | 60 | |
| 53 | 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 | 66 | - reg: Address and length of the register set for the device |
| 56 | 67 | - interrupts: Should contain usba interrupt |
| 57 | 68 | - ep childnode: To specify the number of endpoints and their properties. |
| @@ -20,6 +20,10 @@ Optional properties: · 19 unmodified lines | ||
| 20 | 20 | Refer to phy/phy-bindings.txt for generic phy consumer properties |
| 21 | 21 | - dr_mode: shall be one of "host", "peripheral" and "otg" |
| 22 | 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 | 28 | Example: |
| 25 | 29 | |
| @@ -6,7 +6,10 @@ Practice : Universal Serial Bus" with the following modifications · 5 unmodified lines | ||
| 6 | 6 | and additions : |
| 7 | 7 | |
| 8 | 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 | 13 | - nvidia,phy : phandle of the PHY that the controller is connected to. |
| 11 | 14 | - clocks : Must contain one entry, for the module clock. |
| 12 | 15 | See ../clocks/clock-bindings.txt for details. |
| @@ -3,7 +3,10 @@ Tegra SOC USB PHY · 2 unmodified lines | ||
| 3 | 3 | The device node for Tegra SOC USB PHY: |
| 4 | 4 | |
| 5 | 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 | 10 | - reg : Defines the following set of registers, in the order listed: |
| 8 | 11 | - The PHY's own register set. |
| 9 | 12 | Always present. |
| @@ -14,6 +14,8 @@ Optional properties: · 13 unmodified lines | ||
| 14 | 14 | function should be enabled |
| 15 | 15 | - phys: phandle + phy specifier pair |
| 16 | 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 | 20 | Example: |
| 19 | 21 | usbhs: usb@e6590000 { |
| @@ -12,6 +12,7 @@ Optional properties: · 11 unmodified lines | ||
| 12 | 12 | - big-endian-regs : boolean, set this for hcds with big-endian registers |
| 13 | 13 | - big-endian-desc : boolean, set this for hcds with big-endian descriptors |
| 14 | 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 | 16 | - clocks : a list of phandle + clock specifier pairs |
| 16 | 17 | - phys : phandle + phy specifier pair |
| 17 | 18 | - phy-names : "usb" |
| @@ -13,10 +13,15 @@ Optional properties: · 12 unmodified lines | ||
| 13 | 13 | - clock-frequency: the clock frequency (in Hz) that the PHY clock must |
| 14 | 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 | 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 | 25 | Example: |
| 21 | 26 | |
| 22 | 27 | hsusb1_phy { |
| @@ -26,8 +31,11 @@ Example: · 3 unmodified lines | ||
| 26 | 31 | clock-names = "main_clk"; |
| 27 | 32 | vcc-supply = <&hsusb1_vcc_regulator>; |
| 28 | 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 | 38 | hsusb1_phy is a NOP USB PHY device that gets its clock from an oscillator |
| 32 | 39 | and expects that clock to be configured to 19.2MHz by the NOP PHY driver. |
| 33 | 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. | |
| @@ -4,12 +4,15 @@ This isn't an exhaustive list, but you should add new prefixes to it before · 3 unmodified lines | ||
| 4 | 4 | using them to avoid name-space collisions. |
| 5 | 5 | |
| 6 | 6 | abilis Abilis Systems |
| 7 | +abcn Abracon Corporation | |
| 7 | 8 | active-semi Active-Semi International Inc |
| 8 | 9 | ad Avionic Design GmbH |
| 9 | 10 | adapteva Adapteva, Inc. |
| 11 | +adh AD Holdings Plc. | |
| 10 | 12 | adi Analog Devices, Inc. |
| 11 | 13 | aeroflexgaisler Aeroflex Gaisler AB |
| 12 | 14 | allwinner Allwinner Technology Co., Ltd. |
| 15 | +alphascale AlphaScale Integrated Circuits Systems, Inc. | |
| 13 | 16 | altr Altera Corp. |
| 14 | 17 | amcc Applied Micro Circuits Corporation (APM, formally AMCC) |
| 15 | 18 | amd Advanced Micro Devices (AMD), Inc. |
| @@ -23,6 +26,7 @@ asahi-kasei Asahi Kasei Corp. · 7 unmodified lines | ||
| 23 | 26 | atmel Atmel Corporation |
| 24 | 27 | auo AU Optronics Corporation |
| 25 | 28 | avago Avago Technologies |
| 29 | +avic Shanghai AVIC Optoelectronics Co., Ltd. | |
| 26 | 30 | bosch Bosch Sensortec GmbH |
| 27 | 31 | brcm Broadcom Corporation |
| 28 | 32 | buffalo Buffalo, Inc. |
| @@ -31,11 +35,15 @@ capella Capella Microsystems, Inc · 2 unmodified lines | ||
| 31 | 35 | cavium Cavium, Inc. |
| 32 | 36 | cdns Cadence Design Systems Inc. |
| 33 | 37 | chipidea Chipidea, Inc |
| 38 | +chipspark ChipSPARK | |
| 34 | 39 | chrp Common Hardware Reference Platform |
| 35 | 40 | chunghwa Chunghwa Picture Tubes Ltd. |
| 36 | 41 | cirrus Cirrus Logic, Inc. |
| 42 | +cloudengines Cloud Engines, Inc. | |
| 37 | 43 | cnm Chips&Media, Inc. |
| 44 | +cnxt Conexant Systems, Inc. | |
| 38 | 45 | cortina Cortina Systems, Inc. |
| 46 | +cosmic Cosmic Circuits | |
| 39 | 47 | crystalfontz Crystalfontz America, Inc. |
| 40 | 48 | dallas Maxim Integrated Products (formerly Dallas Semiconductor) |
| 41 | 49 | davicom DAVICOM Semiconductor, Inc. |
| @@ -54,14 +62,18 @@ epcos EPCOS AG · 12 unmodified lines | ||
| 54 | 62 | epfl Ecole Polytechnique Fédérale de Lausanne |
| 55 | 63 | epson Seiko Epson Corp. |
| 56 | 64 | est ESTeem Wireless Modems |
| 65 | +ettus NI Ettus Research | |
| 57 | 66 | eukrea Eukréa Electromatique |
| 58 | 67 | everest Everest Semiconductor Co. Ltd. |
| 68 | +everspin Everspin Technologies, Inc. | |
| 59 | 69 | excito Excito |
| 60 | 70 | fcs Fairchild Semiconductor |
| 71 | +firefly Firefly | |
| 61 | 72 | fsl Freescale Semiconductor |
| 62 | 73 | GEFanuc GE Fanuc Intelligent Platforms Embedded Systems, Inc. |
| 63 | 74 | gef GE Fanuc Intelligent Platforms Embedded Systems, Inc. |
| 64 | 75 | geniatech Geniatech, Inc. |
| 76 | +giantplus Giantplus Technology Co., Ltd. | |
| 65 | 77 | globalscale Globalscale Technologies, Inc. |
| 66 | 78 | gmt Global Mixed-mode Technology, Inc. |
| 67 | 79 | google Google, Inc. |
| @@ -69,6 +81,7 @@ gumstix Gumstix, Inc. · 1 unmodified line | ||
| 69 | 81 | gw Gateworks Corporation |
| 70 | 82 | hannstar HannStar Display Corporation |
| 71 | 83 | haoyu Haoyu Microelectronic Co. Ltd. |
| 84 | +himax Himax Technologies, Inc. | |
| 72 | 85 | hisilicon Hisilicon Limited. |
| 73 | 86 | hit Hitachi Ltd. |
| 74 | 87 | honeywell Honeywell |
| @@ -82,8 +95,7 @@ innolux Innolux Corporation · 7 unmodified lines | ||
| 82 | 95 | intel Intel Corporation |
| 83 | 96 | intercontrol Inter Control Group |
| 84 | 97 | isee ISEE 2007 S.L. |
| 85 | −isil Intersil (deprecated, use isl) | |
| 86 | −isl Intersil | |
| 98 | +isil Intersil | |
| 87 | 99 | karo Ka-Ro electronics GmbH |
| 88 | 100 | keymile Keymile GmbH |
| 89 | 101 | lacie LaCie |
| @@ -118,7 +130,9 @@ nvidia NVIDIA · 28 unmodified lines | ||
| 118 | 130 | nxp NXP Semiconductors |
| 119 | 131 | onnn ON Semiconductor Corp. |
| 120 | 132 | opencores OpenCores.org |
| 133 | +ovti OmniVision Technologies | |
| 121 | 134 | panasonic Panasonic Corporation |
| 135 | +parade Parade Technologies Inc. | |
| 122 | 136 | pericom Pericom Technology Inc. |
| 123 | 137 | phytec PHYTEC Messtechnik GmbH |
| 124 | 138 | picochip Picochip Ltd |
| @@ -142,8 +156,10 @@ sandisk Sandisk Corporation · 17 unmodified lines | ||
| 142 | 156 | sbs Smart Battery System |
| 143 | 157 | schindler Schindler |
| 144 | 158 | seagate Seagate Technology PLC |
| 159 | +semtech Semtech Corporation | |
| 145 | 160 | sil Silicon Image |
| 146 | 161 | silabs Silicon Laboratories |
| 162 | +siliconmitus Silicon Mitus, Inc. | |
| 147 | 163 | simtek |
| 148 | 164 | sii Seiko Instruments, Inc. |
| 149 | 165 | silergy Silergy Corp. |
| @@ -154,6 +170,7 @@ snps Synopsys, Inc. · 4 unmodified lines | ||
| 154 | 170 | solidrun SolidRun |
| 155 | 171 | sony Sony Corporation |
| 156 | 172 | spansion Spansion Inc. |
| 173 | +sprd Spreadtrum Communications Inc. | |
| 157 | 174 | st STMicroelectronics |
| 158 | 175 | ste ST-Ericsson |
| 159 | 176 | stericsson ST-Ericsson |
| @@ -165,6 +182,7 @@ tlm Trusted Logic Mobility · 5 unmodified lines | ||
| 165 | 182 | toradex Toradex AG |
| 166 | 183 | toshiba Toshiba Corporation |
| 167 | 184 | toumaz Toumaz |
| 185 | +truly Truly Semiconductors Limited | |
| 168 | 186 | usi Universal Scientific Industrial Co., Ltd. |
| 169 | 187 | v3 V3 Semiconductor |
| 170 | 188 | variscite Variscite Ltd. |
| @@ -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 | + }; | |
| @@ -3,8 +3,8 @@ ptn3460 bridge bindings · 2 unmodified lines | ||
| 3 | 3 | Required properties: |
| 4 | 4 | - compatible: "nxp,ptn3460" |
| 5 | 5 | - reg: i2c address of the bridge |
| 6 | − - powerdown-gpio: OF device-tree gpio specification | |
| 7 | − - reset-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 for RST_N pin. | |
| 8 | 8 | - edid-emulation: The EDID emulation entry to use |
| 9 | 9 | +-------+------------+------------------+ |
| 10 | 10 | | Value | Resolution | Description | |
| @@ -17,6 +17,11 @@ Required properties: · 6 unmodified lines | ||
| 17 | 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 | 25 | Example: |
| 21 | 26 | lvds-bridge@20 { |
| 22 | 27 | compatible = "nxp,ptn3460"; |
| @@ -24,4 +29,11 @@ Example: · 1 unmodified line | ||
| 24 | 29 | powerdown-gpio = <&gpy2 5 1 0 0>; |
| 25 | 30 | reset-gpio = <&gpx1 5 1 0 0>; |
| 26 | 31 | edid-emulation = <5>; |
| 32 | + ports { | |
| 33 | + port@0 { | |
| 34 | + bridge_out: endpoint { | |
| 35 | + remote-endpoint = <&panel_in>; | |
| 36 | + }; | |
| 37 | + }; | |
| 38 | + }; | |
| 27 | 39 | }; |
| @@ -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 | +}; | |
| @@ -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 | + }; | |
| @@ -66,6 +66,10 @@ Optional properties for dp-controller: · 65 unmodified lines | ||
| 66 | 66 | Hotplug detect GPIO. |
| 67 | 67 | Indicates which GPIO should be used for hotplug |
| 68 | 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 | 74 | Example: |
| 71 | 75 | |
| @@ -105,4 +109,12 @@ Board Specific portion: · 33 unmodified lines | ||
| 105 | 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 | }; |
| @@ -21,7 +21,7 @@ Required properties: · 20 unmodified lines | ||
| 21 | 21 | according to DSI host bindings (see MIPI DSI bindings [1]) |
| 22 | 22 | |
| 23 | 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 | 26 | Child nodes: |
| 27 | 27 | Should contain DSI peripheral nodes (see MIPI DSI bindings [1]). |
| @@ -53,7 +53,7 @@ Example: · 25 unmodified lines | ||
| 53 | 53 | phy-names = "dsim"; |
| 54 | 54 | vddcore-supply = <&vusb_reg>; |
| 55 | 55 | vddio-supply = <&vmipi_reg>; |
| 56 | − samsung,power-domain = <&pd_lcd0>; | |
| 56 | + power-domains = <&pd_lcd0>; | |
| 57 | 57 | #address-cells = <1>; |
| 58 | 58 | #size-cells = <0>; |
| 59 | 59 | samsung,pll-clock-frequency = <24000000>; |
| @@ -15,6 +15,7 @@ Required properties: · 14 unmodified lines | ||
| 15 | 15 | a) mixer: Gate of Mixer IP bus clock. |
| 16 | 16 | b) sclk_hdmi: HDMI Special clock, one of the two possible inputs of |
| 17 | 17 | mixer mux. |
| 18 | + c) hdmi: Gate of HDMI IP bus clock, needed together with sclk_hdmi. | |
| 18 | 19 | |
| 19 | 20 | Example: |
| 20 | 21 | |
| @@ -26,6 +26,10 @@ Required Properties: · 25 unmodified lines | ||
| 26 | 26 | per LVDS encoder. The functional clocks must be named "du.x" with "x" |
| 27 | 27 | being the channel numerical index. The LVDS clocks must be named |
| 28 | 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 | 34 | Required nodes: |
| 31 | 35 | |
| @@ -38,7 +38,7 @@ Required properties: · 37 unmodified lines | ||
| 38 | 38 | property. Must contain "sclk_fimd" and "fimd". |
| 39 | 39 | |
| 40 | 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 | 42 | - samsung,invert-vden: video enable signal is inverted |
| 43 | 43 | - samsung,invert-vclk: video clock signal is inverted |
| 44 | 44 | - display-timings: timing settings for FIMD, as described in document [1]. |
| @@ -97,7 +97,7 @@ SoC specific DT entry: · 52 unmodified lines | ||
| 97 | 97 | interrupts = <11 0>, <11 1>, <11 2>; |
| 98 | 98 | clocks = <&clock 140>, <&clock 283>; |
| 99 | 99 | clock-names = "sclk_fimd", "fimd"; |
| 100 | − samsung,power-domain = <&pd_lcd0>; | |
| 100 | + power-domains = <&pd_lcd0>; | |
| 101 | 101 | status = "disabled"; |
| 102 | 102 | }; |
| 103 | 103 | |
| @@ -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) | |
| @@ -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 | + | |
| @@ -13,6 +13,11 @@ Required Properties: · 12 unmodified lines | ||
| 13 | 13 | by the GPIO flags. |
| 14 | 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 | 21 | Example: |
| 17 | 22 | watchdog: watchdog { |
| 18 | 23 | /* ADM706 */ |
| @@ -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 | +}; | |
| @@ -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 | +}; | |
| @@ -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 | +}; | |
| @@ -10,7 +10,7 @@ How overlays work · 9 unmodified lines | ||
| 10 | 10 | ----------------- |
| 11 | 11 | |
| 12 | 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 | 14 | is reflecting the changes. |
| 15 | 15 | Since the kernel mainly deals with devices, any new device node that result |
| 16 | 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 · 63 unmodified lines | ||
| 80 | 80 | }; |
| 81 | 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 | 84 | so a bar platform device will be registered and if a matching device driver |
| 85 | 85 | is loaded the device will be created as expected. |
| 86 | 86 | |
| @@ -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. | |
| @@ -113,6 +113,31 @@ need to initialize a few fields in there: · 112 unmodified lines | ||
| 113 | 113 | * channels: should be initialized as a list using the |
| 114 | 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 | 141 | * dev: should hold the pointer to the struct device associated |
| 117 | 142 | to your current driver instance. |
| 118 | 143 | |
| @@ -274,48 +299,36 @@ supported. · 155 unmodified lines | ||
| 274 | 299 | account the current period. |
| 275 | 300 | - This function can be called in an interrupt context. |
| 276 | 301 | |
| 277 | − * device_control | |
| 278 | − - Used by client drivers to control and configure the channel it | |
| 279 | − has a handle on. | |
| 280 | − - Called with a command and an argument | |
| 281 | − + The command is one of the values listed by the enum | |
| 282 | − dma_ctrl_cmd. The valid commands are: | |
| 283 | − + DMA_PAUSE | |
| 284 | − + Pauses a transfer on the channel | |
| 285 | − + This command should operate synchronously on the channel, | |
| 286 | − pausing right away the work of the given channel | |
| 287 | − + DMA_RESUME | |
| 288 | − + Restarts a transfer on the channel | |
| 289 | − + This command should operate synchronously on the channel, | |
| 290 | − resuming right away the work of the given channel | |
| 291 | − + DMA_TERMINATE_ALL | |
| 292 | − + Aborts all the pending and ongoing transfers on the | |
| 293 | − channel | |
| 294 | − + This command should operate synchronously on the channel, | |
| 295 | − terminating right away all the channels | |
| 296 | − + DMA_SLAVE_CONFIG | |
| 297 | − + Reconfigures the channel with passed configuration | |
| 298 | − + This command should NOT perform synchronously, or on any | |
| 299 | − currently queued transfers, but only on subsequent ones | |
| 300 | − + In this case, the function will receive a | |
| 301 | − dma_slave_config structure pointer as an argument, that | |
| 302 | − will detail which configuration to use. | |
| 303 | − + Even though that structure contains a direction field, | |
| 304 | − this field is deprecated in favor of the direction | |
| 305 | − argument given to the prep_* functions | |
| 306 | − + FSLDMA_EXTERNAL_START | |
| 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. | |
| 302 | + * device_config | |
| 303 | + - Reconfigures the channel with the configuration given as | |
| 304 | + argument | |
| 305 | + - This command should NOT perform synchronously, or on any | |
| 306 | + currently queued transfers, but only on subsequent ones | |
| 307 | + - In this case, the function will receive a dma_slave_config | |
| 308 | + structure pointer as an argument, that will detail which | |
| 309 | + configuration to use. | |
| 310 | + - Even though that structure contains a direction field, this | |
| 311 | + field is deprecated in favor of the direction argument given to | |
| 312 | + the prep_* functions | |
| 313 | + - This call is mandatory for slave operations only. This should NOT be | |
| 314 | + set or expected to be set for memcpy operations. | |
| 315 | + If a driver support both, it should use this call for slave | |
| 316 | + operations only and not for memcpy ones. | |
| 317 | + | |
| 318 | + * device_pause | |
| 319 | + - Pauses a transfer on the channel | |
| 320 | + - This command should operate synchronously on the channel, | |
| 321 | + pausing right away the work of the given channel | |
| 322 | + | |
| 323 | + * device_resume | |
| 324 | + - Resumes a transfer on the channel | |
| 325 | + - This command should operate synchronously on the channel, | |
| 326 | + pausing right away the work of the given channel | |
| 327 | + | |
| 328 | + * device_terminate_all | |
| 329 | + - Aborts all the pending and ongoing transfers on the channel | |
| 330 | + - This command should operate synchronously on the channel, | |
| 331 | + terminating right away all the channels | |
| 319 | 332 | |
| 320 | 333 | Misc notes (stuff that should be documented, but don't really know |
| 321 | 334 | where to put them) |
| @@ -45,7 +45,7 @@ them are inherently bus-specific. Drivers typically declare an array · 44 unmodified lines | ||
| 45 | 45 | of device IDs of devices they support that reside in a bus-specific |
| 46 | 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 | 49 | determine if a particular driver supports a particular device by |
| 50 | 50 | comparing the device IDs the driver supports with the device ID of a |
| 51 | 51 | particular device, without sacrificing bus-specific functionality or |
| @@ -258,6 +258,8 @@ IIO · 257 unmodified lines | ||
| 258 | 258 | devm_iio_device_free() |
| 259 | 259 | devm_iio_device_register() |
| 260 | 260 | devm_iio_device_unregister() |
| 261 | + devm_iio_kfifo_allocate() | |
| 262 | + devm_iio_kfifo_free() | |
| 261 | 263 | devm_iio_trigger_alloc() |
| 262 | 264 | devm_iio_trigger_free() |
| 263 | 265 | |
| @@ -34,6 +34,9 @@ configfs/ · 33 unmodified lines | ||
| 34 | 34 | - directory containing configfs documentation and example code. |
| 35 | 35 | cramfs.txt |
| 36 | 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 | 40 | debugfs.txt |
| 38 | 41 | - info on the debugfs filesystem. |
| 39 | 42 | devpts.txt |
| @@ -154,5 +157,3 @@ xfs-self-describing-metadata.txt · 114 unmodified lines | ||
| 154 | 157 | - info on XFS Self Describing Metadata. |
| 155 | 158 | xfs.txt |
| 156 | 159 | - info and mount options for the XFS filesystem. |
| 157 | −xip.txt | |
| 158 | − - info on execute-in-place for file mappings. | |
| @@ -164,8 +164,6 @@ the block device inode. See there for more details. · 163 unmodified lines | ||
| 164 | 164 | |
| 165 | 165 | --------------------------- file_system_type --------------------------- |
| 166 | 166 | prototypes: |
| 167 | − int (*get_sb) (struct file_system_type *, int, | |
| 168 | − const char *, void *, struct vfsmount *); | |
| 169 | 167 | struct dentry *(*mount) (struct file_system_type *, int, |
| 170 | 168 | const char *, void *); |
| 171 | 169 | void (*kill_sb) (struct super_block *); |
| @@ -199,8 +197,6 @@ prototypes: · 27 unmodified lines | ||
| 199 | 197 | int (*releasepage) (struct page *, int); |
| 200 | 198 | void (*freepage)(struct page *); |
| 201 | 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 | 200 | int (*migratepage)(struct address_space *, struct page *, struct page *); |
| 205 | 201 | int (*launder_page)(struct page *); |
| 206 | 202 | int (*is_partially_uptodate)(struct page *, unsigned long, unsigned long); |
| @@ -225,7 +221,6 @@ invalidatepage: yes · 18 unmodified lines | ||
| 225 | 221 | releasepage: yes |
| 226 | 222 | freepage: yes |
| 227 | 223 | direct_IO: |
| 228 | −get_xip_mem: maybe | |
| 229 | 224 | migratepage: yes (both) |
| 230 | 225 | launder_page: yes |
| 231 | 226 | is_partially_uptodate: yes |
| @@ -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(). | |
| @@ -20,6 +20,9 @@ minixdf Makes `df' act like Minix. · 19 unmodified lines | ||
| 20 | 20 | check=none, nocheck (*) Don't do extra checking of bitmaps on mount |
| 21 | 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 | 26 | debug Extra debugging information is sent to the |
| 24 | 27 | kernel syslog. Useful for developers. |
| 25 | 28 | |
| @@ -56,8 +59,6 @@ noacl Don't support POSIX ACLs. · 30 unmodified lines | ||
| 56 | 59 | |
| 57 | 60 | nobh Do not attach buffer_heads to file pagecache. |
| 58 | 61 | |
| 59 | −xip Use execute in place (no caching) if possible | |
| 60 | − | |
| 61 | 62 | grpquota,noquota,quota,usrquota Quota options are silently ignored by ext2. |
| 62 | 63 | |
| 63 | 64 | |
| @@ -386,6 +386,10 @@ max_dir_size_kb=n This limits the size of directories so that any · 385 unmodified lines | ||
| 386 | 386 | i_version Enable 64-bit inode version support. This option is |
| 387 | 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 | 393 | Data Mode |
| 390 | 394 | ========= |
| 391 | 395 | There are 3 different data modes: |
| @@ -106,6 +106,8 @@ background_gc=%s Turn on/off cleaning operations, namely garbage · 105 unmodified lines | ||
| 106 | 106 | Default value for this option is on. So garbage |
| 107 | 107 | collection is on by default. |
| 108 | 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 | 111 | discard Issue discard/TRIM commands when a segment is cleaned. |
| 110 | 112 | no_heap Disable heap-style segment allocation which finds free |
| 111 | 113 | segments for data from the beginning of main area, while |
| @@ -197,6 +199,10 @@ Files in /sys/fs/f2fs/<devname> · 85 unmodified lines | ||
| 197 | 199 | checkpoint is triggered, and issued during the |
| 198 | 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 | 206 | ipu_policy This parameter controls the policy of in-place |
| 201 | 207 | updates in f2fs. There are five policies: |
| 202 | 208 | 0x01: F2FS_IPU_FORCE, 0x02: F2FS_IPU_SSR, |
| @@ -196,7 +196,8 @@ struct fiemap_extent_info { · 195 unmodified lines | ||
| 196 | 196 | }; |
| 197 | 197 | |
| 198 | 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 | 203 | Flag checking should be done at the beginning of the ->fiemap callback via the |
| @@ -4,201 +4,10 @@ · 3 unmodified lines | ||
| 4 | 4 | |
| 5 | 5 | |
| 6 | 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 | − | |
| 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 | |
| 10 | +(i) Rationale | |
| 202 | 11 | |
| 203 | 12 | Q: What is the design decision behind not tying the watch to the open fd of |
| 204 | 13 | the watched object? |
| @@ -24,11 +24,6 @@ focuses on the mandatory-to-implement NFSv4.1 Sessions, providing · 23 unmodified lines | ||
| 24 | 24 | "exactly once" semantics and better control and throttling of the |
| 25 | 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 | 27 | The table below, taken from the NFSv4.1 document, lists |
| 33 | 28 | the operations that are mandatory to implement (REQ), optional |
| 34 | 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: · 8 unmodified lines | ||
| 43 | 38 | The following abbreviations indicate the linux server implementation status. |
| 44 | 39 | I Implemented NFSv4.1 operations. |
| 45 | 40 | NS Not Supported. |
| 46 | − NS* unimplemented optional feature. | |
| 47 | − P pNFS features implemented out of tree. | |
| 48 | − PNS pNFS features that are not supported yet (out of tree). | |
| 41 | + NS* Unimplemented optional feature. | |
| 49 | 42 | |
| 50 | 43 | Operations |
| 51 | 44 | |
| @@ -70,13 +63,13 @@ I | DESTROY_SESSION | REQ | | Section 18.37 | · 18 unmodified lines | ||
| 70 | 63 | I | EXCHANGE_ID | REQ | | Section 18.35 | |
| 71 | 64 | I | FREE_STATEID | REQ | | Section 18.38 | |
| 72 | 65 | | GETATTR | REQ | | Section 18.7 | |
| 73 | −P | GETDEVICEINFO | OPT | pNFS (REQ) | Section 18.40 | | |
| 74 | −P | GETDEVICELIST | OPT | pNFS (OPT) | Section 18.41 | | |
| 66 | +I | GETDEVICEINFO | OPT | pNFS (REQ) | Section 18.40 | | |
| 67 | +NS*| GETDEVICELIST | OPT | pNFS (OPT) | Section 18.41 | | |
| 75 | 68 | | GETFH | REQ | | Section 18.8 | |
| 76 | 69 | NS*| GET_DIR_DELEGATION | OPT | DDELG (REQ) | Section 18.39 | |
| 77 | −P | LAYOUTCOMMIT | OPT | pNFS (REQ) | Section 18.42 | | |
| 78 | −P | LAYOUTGET | OPT | pNFS (REQ) | Section 18.43 | | |
| 79 | −P | LAYOUTRETURN | OPT | pNFS (REQ) | Section 18.44 | | |
| 70 | +I | LAYOUTCOMMIT | OPT | pNFS (REQ) | Section 18.42 | | |
| 71 | +I | LAYOUTGET | OPT | pNFS (REQ) | Section 18.43 | | |
| 72 | +I | LAYOUTRETURN | OPT | pNFS (REQ) | Section 18.44 | | |
| 80 | 73 | | LINK | OPT | | Section 18.9 | |
| 81 | 74 | | LOCK | REQ | | Section 18.10 | |
| 82 | 75 | | LOCKT | REQ | | Section 18.11 | |
| @@ -122,9 +115,9 @@ Callback Operations · 39 unmodified lines | ||
| 122 | 115 | | | MNI | or OPT) | | |
| 123 | 116 | +-------------------------+-----------+-------------+---------------+ |
| 124 | 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 | 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 | 121 | NS*| CB_NOTIFY_LOCK | OPT | | Section 20.11 | |
| 129 | 122 | NS*| CB_PUSH_DELEG | OPT | FDELG (OPT) | Section 20.5 | |
| 130 | 123 | | CB_RECALL | OPT | FDELG, | Section 20.2 | |
| @@ -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 | |
| @@ -57,15 +57,16 @@ bit is set, preventing any new lsegs from being added. · 56 unmodified lines | ||
| 57 | 57 | layout drivers |
| 58 | 58 | -------------- |
| 59 | 59 | |
| 60 | −PNFS utilizes what is called layout drivers. The STD defines 3 basic | |
| 61 | −layout types: "files" "objects" and "blocks". For each of these types | |
| 62 | −there is a layout-driver with a common function-vectors table which | |
| 63 | −are called by the nfs-client pnfs-core to implement the different layout | |
| 64 | −types. | |
| 60 | +PNFS utilizes what is called layout drivers. The STD defines 4 basic | |
| 61 | +layout types: "files", "objects", "blocks", and "flexfiles". For each | |
| 62 | +of these types there is a layout-driver with a common function-vectors | |
| 63 | +table which are called by the nfs-client pnfs-core to implement the | |
| 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 | 67 | Objects-layout-deriver code is in: fs/nfs/objlayout/.. directory |
| 68 | 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 | 71 | objects-layout setup |
| 71 | 72 | -------------------- |
| @@ -100,3 +100,7 @@ coherency=full (*) Disallow concurrent O_DIRECT writes, cluster inode · 99 unmodified lines | ||
| 100 | 100 | coherency=buffered Allow concurrent O_DIRECT writes without EX lock among |
| 101 | 101 | nodes, which gains high performance at risk of getting |
| 102 | 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. | |
| @@ -159,6 +159,22 @@ overlay filesystem (though an operation on the name of the file such as · 158 unmodified lines | ||
| 159 | 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 | 178 | Non-standard behavior |
| 163 | 179 | --------------------- |
| 164 | 180 | |
| @@ -196,3 +212,15 @@ Changes to the underlying filesystems while part of a mounted overlay · 31 unmodified lines | ||
| 196 | 212 | filesystem are not allowed. If the underlying filesystem is changed, |
| 197 | 213 | the behavior of the overlay is undefined, though it will not result in |
| 198 | 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 | |
| @@ -28,7 +28,7 @@ Table of Contents · 27 unmodified lines | ||
| 28 | 28 | 1.6 Parallel port info in /proc/parport |
| 29 | 29 | 1.7 TTY info in /proc/tty |
| 30 | 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 | 33 | 2 Modifying System Parameters |
| 34 | 34 | |
| @@ -42,6 +42,7 @@ Table of Contents · 7 unmodified lines | ||
| 42 | 42 | 3.6 /proc/<pid>/comm & /proc/<pid>/task/<tid>/comm |
| 43 | 43 | 3.7 /proc/<pid>/task/<tid>/children - Information about task children |
| 44 | 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 | 47 | 4 Configuring procfs |
| 47 | 48 | 4.1 Mount options |
| @@ -144,6 +145,8 @@ Table 1-1: Process specific entries in /proc · 96 unmodified lines | ||
| 144 | 145 | stack Report full stack trace, enable via CONFIG_STACKTRACE |
| 145 | 146 | smaps a extension based on maps, showing the memory consumption of |
| 146 | 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 | 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 · 338 unmodified lines | ||
| 488 | 491 | To clear the soft-dirty bit |
| 489 | 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 | 498 | Any other value written to /proc/PID/clear_refs will have no effect. |
| 492 | 499 | |
| 493 | 500 | The /proc/pid/pagemap gives the PFN, which can be used to find the pageflags |
| 494 | 501 | using /proc/kpageflags and number of times a page is mapped using |
| 495 | 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 | 535 | 1.2 Kernel data |
| 498 | 536 | --------------- |
| 499 | 537 | |
| @@ -1763,6 +1801,28 @@ pair provide additional information particular to the objects they represent. · 1263 unmodified lines | ||
| 1763 | 1801 | with TIMER_ABSTIME option which will be shown in 'settime flags', but 'it_value' |
| 1764 | 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 | 1827 | Configuring procfs |
| 1768 | 1828 | ------------------------------------------------------------------------------ |
| @@ -194,16 +194,16 @@ which is in the string esc will be represented in octal form in the output. · 193 unmodified lines | ||
| 194 | 194 | |
| 195 | 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); | |
| 198 | − int seq_path_root(struct seq_file *m, struct path *path, | |
| 199 | − struct path *root, char *esc) | |
| 197 | + int seq_path(struct seq_file *m, const struct path *path, | |
| 198 | + const 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 | 202 | Here, path indicates the file of interest, and esc is a set of characters |
| 202 | 203 | which should be escaped in the output. A call to seq_path() will output |
| 203 | 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 | −turns out that path cannot be reached from root, the value of root will be | |
| 206 | −changed in seq_file_root() to a root which *does* work. | |
| 205 | +root is desired, it can be used with seq_path_root(). If it turns out that | |
| 206 | +path cannot be reached from root, seq_path_root() returns SEQ_SKIP. | |
| 207 | 207 | |
| 208 | 208 | A function producing complicated output may want to check |
| 209 | 209 | bool seq_has_overflowed(struct seq_file *m); |
| @@ -591,8 +591,6 @@ struct address_space_operations { · 590 unmodified lines | ||
| 591 | 591 | int (*releasepage) (struct page *, int); |
| 592 | 592 | void (*freepage)(struct page *); |
| 593 | 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 | 594 | /* migrate the contents of a page to the specified target */ |
| 597 | 595 | int (*migratepage) (struct page *, struct page *); |
| 598 | 596 | int (*launder_page) (struct page *); |
| @@ -748,11 +746,6 @@ struct address_space_operations { · 149 unmodified lines | ||
| 748 | 746 | and transfer data directly between the storage and the |
| 749 | 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 | 749 | migrate_page: This is used to compact the physical memory usage. |
| 757 | 750 | If the VM wants to relocate a page (maybe off a memory card |
| 758 | 751 | that is signalling imminent failure) it will pass a new page |
| @@ -287,9 +287,9 @@ The following sysctls are available for the XFS filesystem: · 286 unmodified lines | ||
| 287 | 287 | XFS_ERRLEVEL_LOW: 1 |
| 288 | 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 | 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 | 294 | XFS_NO_PTAG 0 |
| 295 | 295 | XFS_PTAG_IFLUSH 0x00000001 |
| @@ -299,6 +299,7 @@ The following sysctls are available for the XFS filesystem: · 3 unmodified lines | ||
| 299 | 299 | XFS_PTAG_SHUTDOWN_CORRUPT 0x00000010 |
| 300 | 300 | XFS_PTAG_SHUTDOWN_IOERROR 0x00000020 |
| 301 | 301 | XFS_PTAG_SHUTDOWN_LOGERROR 0x00000040 |
| 302 | + XFS_PTAG_FSBLOCK_ZERO 0x00000080 | |
| 302 | 303 | |
| 303 | 304 | This option is intended for debugging only. |
| 304 | 305 | |
| @@ -348,16 +349,13 @@ The following sysctls are available for the XFS filesystem: · 43 unmodified lines | ||
| 348 | 349 | Deprecated Sysctls |
| 349 | 350 | ================== |
| 350 | 351 | |
| 351 | − fs.xfs.xfsbufd_centisecs (Min: 50 Default: 100 Max: 3000) | |
| 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. | |
| 352 | +None at present. | |
| 355 | 353 | |
| 356 | − Due for removal in 3.14. | |
| 357 | 354 | |
| 358 | − fs.xfs.age_buffer_centisecs (Min: 100 Default: 1500 Max: 720000) | |
| 359 | − Dirty metadata is now tracked by the log subsystem and | |
| 360 | − flushing is driven by log space and idling demands. The | |
| 361 | − xfsbufd no longer exists, so this syctl does nothing. | |
| 355 | +Removed Sysctls | |
| 356 | +=============== | |
| 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 | |
| @@ -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. | |
| @@ -98,7 +98,7 @@ rt_mutex_start_proxy_lock() and rt_mutex_finish_proxy_lock(), which · 97 unmodified lines | ||
| 98 | 98 | allow the requeue code to acquire an uncontended rt_mutex on behalf |
| 99 | 99 | of the waiter and to enqueue the waiter on a contended rt_mutex. |
| 100 | 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 | 103 | FUTEX_WAIT_REQUEUE_PI is called by the waiter (pthread_cond_wait() |
| 104 | 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 · 2 unmodified lines | ||
| 107 | 107 | futex_lock_pi(), with some extra logic to check for the additional |
| 108 | 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 | 111 | (pthread_cond_broadcast() and pthread_cond_signal()) to requeue and |
| 112 | 112 | possibly wake the waiting tasks. Internally, this system call is |
| 113 | 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 · 6 unmodified lines | ||
| 120 | 120 | the lock can be acquired at this stage as well, if so, the next |
| 121 | 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 | 124 | their sum is all that really matters. futex_requeue() will wake or |
| 125 | 125 | requeue up to nr_wake + nr_requeue tasks. It will wake only as many |
| 126 | 126 | tasks as it can acquire the lock for, which in the majority of cases |
| 127 | 127 | should be 0 as good programming practice dictates that the caller of |
| 128 | 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 | 130 | nr_wake=1. nr_requeue should be INT_MAX for broadcast and 0 for |
| 131 | 131 | signal. |
| @@ -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. | |
| @@ -31,7 +31,7 @@ through gpiod_get(). For example: · 30 unmodified lines | ||
| 31 | 31 | <&gpio 16 GPIO_ACTIVE_HIGH>, /* green */ |
| 32 | 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 | 37 | This property will make GPIOs 15, 16 and 17 available to the driver under the |
| @@ -26,6 +26,12 @@ Supported chips: · 25 unmodified lines | ||
| 26 | 26 | Datasheet: Publicly available at the Texas Instruments website |
| 27 | 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 | 35 | Author: Lothar Felten <l-felten@ti.com> |
| 30 | 36 | |
| 31 | 37 | Description |
| @@ -41,9 +47,18 @@ interface. The INA220 monitors both shunt drop and supply voltage. · 9 unmodified lines | ||
| 41 | 47 | The INA226 is a current shunt and power monitor with an I2C interface. |
| 42 | 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 | |
| 45 | −interface. The INA230 monitors both a shunt voltage drop and bus supply voltage. | |
| 50 | +INA230 and INA231 are high or low side current shunt and power monitors | |
| 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. | |
| 48 | −Please refer to the Documentation/devicetree/bindings/i2c/ina2xx.txt for bindings | |
| 54 | +The shunt value in micro-ohms can be set via platform data or device tree at | |
| 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 | 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. | |
| @@ -12,7 +12,7 @@ FUNCTIONALITY CONSTANTS · 11 unmodified lines | ||
| 12 | 12 | ----------------------- |
| 13 | 13 | |
| 14 | 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 | 17 | I2C_FUNC_I2C Plain i2c-level commands (Pure SMBus |
| 18 | 18 | adapters typically can not do these) |
| @@ -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. | |
| @@ -3,8 +3,8 @@ ALPS Touchpad Protocol · 2 unmodified lines | ||
| 3 | 3 | |
| 4 | 4 | Introduction |
| 5 | 5 | ------------ |
| 6 | −Currently the ALPS touchpad driver supports five protocol versions in use by | |
| 7 | −ALPS touchpads, called versions 1, 2, 3, 4 and 5. | |
| 6 | +Currently the ALPS touchpad driver supports seven protocol versions in use by | |
| 7 | +ALPS touchpads, called versions 1, 2, 3, 4, 5, 6 and 7. | |
| 8 | 8 | |
| 9 | 9 | Since roughly mid-2010 several new ALPS touchpads have been released and |
| 10 | 10 | integrated into a variety of laptops and netbooks. These new touchpads |
| @@ -240,3 +240,67 @@ For mt, the format is: · 229 unmodified lines | ||
| 240 | 240 | byte 3: 0 x23 x22 x21 x20 x19 x18 x17 |
| 241 | 241 | byte 4: 0 x9 x8 x7 x6 x5 x4 x3 |
| 242 | 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 ... | |
| @@ -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. | |
| @@ -524,15 +524,16 @@ more details, with real examples. · 523 unmodified lines | ||
| 524 | 524 | Example: |
| 525 | 525 | #arch/x86/Makefile |
| 526 | 526 | cflags-y += $(shell \ |
| 527 | − if [ $(call cc-version) -ge 0300 ] ; then \ | |
| 527 | + if [ $(cc-version) -ge 0300 ] ; then \ | |
| 528 | 528 | echo "-mregparm=3"; fi ;) |
| 529 | 529 | |
| 530 | 530 | In the above example, -mregparm=3 is only used for gcc version greater |
| 531 | 531 | than or equal to gcc 3.0. |
| 532 | 532 | |
| 533 | 533 | cc-ifversion |
| 534 | − cc-ifversion tests the version of $(CC) and equals last argument if | |
| 535 | − version expression is true. | |
| 534 | + cc-ifversion tests the version of $(CC) and equals the fourth parameter | |
| 535 | + if version expression is true, or the fifth (if given) if the version | |
| 536 | + expression is false. | |
| 536 | 537 | |
| 537 | 538 | Example: |
| 538 | 539 | #fs/reiserfs/Makefile |
| @@ -552,7 +553,7 @@ more details, with real examples. · 13 unmodified lines | ||
| 552 | 553 | |
| 553 | 554 | Example: |
| 554 | 555 | #arch/powerpc/Makefile |
| 555 | − $(Q)if test "$(call cc-fullversion)" = "040200" ; then \ | |
| 556 | + $(Q)if test "$(cc-fullversion)" = "040200" ; then \ | |
| 556 | 557 | echo -n '*** GCC-4.2.0 cannot compile the 64-bit powerpc ' ; \ |
| 557 | 558 | false ; \ |
| 558 | 559 | fi |
| @@ -751,12 +752,12 @@ generated by kbuild are deleted all over the kernel src tree when · 192 unmodified lines | ||
| 751 | 752 | Additional files can be specified in kbuild makefiles by use of $(clean-files). |
| 752 | 753 | |
| 753 | 754 | Example: |
| 754 | − #drivers/pci/Makefile | |
| 755 | − clean-files := devlist.h classlist.h | |
| 755 | + #lib/Makefile | |
| 756 | + clean-files := crc32table.h | |
| 756 | 757 | |
| 757 | 758 | When executing "make clean", the two files "devlist.h classlist.h" will be |
| 758 | 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 | 762 | To delete a directory hierarchy use: |
| 762 | 763 | |
| @@ -764,9 +765,8 @@ To delete a directory hierarchy use: · 1 unmodified line | ||
| 764 | 765 | #scripts/package/Makefile |
| 765 | 766 | clean-dirs := $(objtree)/debian/ |
| 766 | 767 | |
| 767 | −This will delete the directory debian, including all subdirectories. | |
| 768 | −Kbuild will assume the directories to be in the same relative path as the | |
| 769 | −Makefile if no absolute path is specified (path does not start with '/'). | |
| 768 | +This will delete the directory debian in the toplevel directory, including all | |
| 769 | +subdirectories. | |
| 770 | 770 | |
| 771 | 771 | To exclude certain files from make clean, use the $(no-clean-files) variable. |
| 772 | 772 | This is only a special case used in the top level Kbuild file: |
| @@ -970,6 +970,18 @@ bytes respectively. Such letter suffixes can also be entirely omitted. · 969 unmodified lines | ||
| 970 | 970 | |
| 971 | 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 | 985 | earlyprintk= [X86,SH,BLACKFIN,ARM,M68k] |
| 974 | 986 | earlyprintk=vga |
| 975 | 987 | earlyprintk=efi |
| @@ -1470,6 +1482,9 @@ bytes respectively. Such letter suffixes can also be entirely omitted. · 494 unmodified lines | ||
| 1470 | 1482 | no_hwp |
| 1471 | 1483 | Do not enable hardware P state control (HWP) |
| 1472 | 1484 | if available. |
| 1485 | + hwp_only | |
| 1486 | + Only load intel_pstate on systems which support | |
| 1487 | + hardware P state control (HWP) if available. | |
| 1473 | 1488 | |
| 1474 | 1489 | intremap= [X86-64, Intel-IOMMU] |
| 1475 | 1490 | on enable Interrupt Remapping (default) |
| @@ -1494,6 +1509,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted. · 18 unmodified lines | ||
| 1494 | 1509 | forcesac |
| 1495 | 1510 | soft |
| 1496 | 1511 | pt [x86, IA-64] |
| 1512 | + nobypass [PPC/POWERNV] | |
| 1513 | + Disable IOMMU bypass, using IOMMU for PCI devices. | |
| 1497 | 1514 | |
| 1498 | 1515 | |
| 1499 | 1516 | io7= [HW] IO7 for Marvel based alpha systems |
| @@ -3207,6 +3224,18 @@ bytes respectively. Such letter suffixes can also be entirely omitted. · 1707 unmodified lines | ||
| 3207 | 3224 | |
| 3208 | 3225 | retain_initrd [RAM] Keep initrd memory after extraction |
| 3209 | 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 | + | |
| 3210 | 3239 | rhash_entries= [KNL,NET] |
| 3211 | 3240 | Set number of hash buckets for route cache |
| 3212 | 3241 | |
| @@ -702,7 +702,8 @@ a virtual address that is no longer valid (module init sections, module · 701 unmodified lines | ||
| 702 | 702 | virtual addresses that correspond to modules that've been unloaded), |
| 703 | 703 | such probes are marked with [GONE]. If the probe is temporarily disabled, |
| 704 | 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 | 708 | /sys/kernel/debug/kprobes/enabled: Turn kprobes ON/OFF forcibly. |
| 708 | 709 | |
| @@ -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 | |
| @@ -34,7 +34,7 @@ The validator tracks lock-class usage history into 4n + 1 separate state bits: · 33 unmodified lines | ||
| 34 | 34 | - 'ever held with STATE enabled' |
| 35 | 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 | 38 | - hardirq |
| 39 | 39 | - softirq |
| 40 | 40 | - reclaim_fs |
| @@ -121,6 +121,11 @@ show the header with column descriptions. Lines 05-18 and 20-31 show the actual · 120 unmodified lines | ||
| 121 | 121 | statistics. These statistics come in two parts; the actual stats separated by a |
| 122 | 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 | 129 | The first lock (05-18) is a read/write lock, and shows two lines above the |
| 125 | 130 | short separator. The contention points don't match the column descriptors, |
| 126 | 131 | they have two: contentions and [<IP>] symbol. The second set of contention |
| @@ -269,6 +269,50 @@ And there are a number of things that _must_ or _must_not_ be assumed: · 268 unmodified lines | ||
| 269 | 269 | STORE *(A + 4) = Y; STORE *A = X; |
| 270 | 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 | 318 | WHAT ARE MEMORY BARRIERS? |
| @@ -750,7 +794,7 @@ In summary: · 475 unmodified lines | ||
| 750 | 794 | However, they do -not- guarantee any other sort of ordering: |
| 751 | 795 | Not prior loads against later loads, nor prior stores against |
| 752 | 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 | 798 | later loads, smp_mb(). |
| 755 | 799 | |
| 756 | 800 | (*) If both legs of the "if" statement begin with identical stores |
| @@ -1,9 +1,10 @@ | ||
| 1 | 1 | Intel(R) Management Engine (ME) Client bus API |
| 2 | −=============================================== | |
| 2 | +============================================== | |
| 3 | 3 | |
| 4 | 4 | |
| 5 | 5 | Rationale |
| 6 | 6 | ========= |
| 7 | + | |
| 7 | 8 | MEI misc character device is useful for dedicated applications to send and receive |
| 8 | 9 | data to the many FW appliance found in Intel's ME from the user space. |
| 9 | 10 | However for some of the ME functionalities it make sense to leverage existing software |
| @@ -17,7 +18,8 @@ the existing code. · 7 unmodified lines | ||
| 17 | 18 | |
| 18 | 19 | |
| 19 | 20 | MEI CL bus API |
| 20 | −=========== | |
| 21 | +============== | |
| 22 | + | |
| 21 | 23 | A driver implementation for an MEI Client is very similar to existing bus |
| 22 | 24 | based device drivers. The driver registers itself as an MEI CL bus driver through |
| 23 | 25 | the mei_cl_driver structure: |
| @@ -55,6 +57,7 @@ received buffers. · 31 unmodified lines | ||
| 55 | 57 | |
| 56 | 58 | Example |
| 57 | 59 | ======= |
| 60 | + | |
| 58 | 61 | As a theoretical example let's pretend the ME comes with a "contact" NFC IP. |
| 59 | 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[] = { · 8 unmodified lines | ||
| 69 | 72 | MODULE_DEVICE_TABLE(mei_cl, contact_mei_cl_tbl); |
| 70 | 73 | |
| 71 | 74 | static struct mei_cl_driver contact_driver = { |
| 72 | − .id_table = contact_mei_tbl, | |
| 73 | − .name = CONTACT_DRIVER_NAME, | |
| 75 | + .id_table = contact_mei_tbl, | |
| 76 | + .name = CONTACT_DRIVER_NAME, | |
| 74 | 77 | |
| 75 | − .probe = contact_probe, | |
| 76 | − .remove = contact_remove, | |
| 78 | + .probe = contact_probe, | |
| 79 | + .remove = contact_remove, | |
| 77 | 80 | }; |
| 78 | 81 | |
| 79 | 82 | static int contact_init(void) |
| @@ -109,7 +112,7 @@ int contact_probe(struct mei_cl_device *dev, struct mei_cl_device_id *id) · 29 unmodified lines | ||
| 109 | 112 | mei_cl_register_event_cb(dev, contact_event_cb, contact); |
| 110 | 113 | |
| 111 | 114 | return 0; |
| 112 | − } | |
| 115 | +} | |
| 113 | 116 | |
| 114 | 117 | In the probe routine the driver first enable the MEI device and then registers |
| 115 | 118 | an ME bus event handler which is as close as it can get to registering a |
| @@ -1,8 +1,8 @@ | ||
| 1 | 1 | Intel(R) Management Engine Interface (Intel(R) MEI) |
| 2 | −======================= | |
| 2 | +=================================================== | |
| 3 | 3 | |
| 4 | 4 | Introduction |
| 5 | −======================= | |
| 5 | +============ | |
| 6 | 6 | |
| 7 | 7 | The Intel Management Engine (Intel ME) is an isolated and protected computing |
| 8 | 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 · 10 unmodified lines | ||
| 19 | 19 | header and payload up to 512 bytes. |
| 20 | 20 | |
| 21 | 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 | 23 | the Intel ME. |
| 24 | 24 | |
| 25 | 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. · 18 unmodified lines | ||
| 44 | 44 | For more information about Intel AMT: |
| 45 | 45 | http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide |
| 46 | 46 | |
| 47 | + | |
| 47 | 48 | Intel MEI Driver |
| 48 | −======================= | |
| 49 | +================ | |
| 49 | 50 | |
| 50 | 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: · 39 unmodified lines | ||
| 91 | 92 | [...] |
| 92 | 93 | close(fd); |
| 93 | 94 | |
| 94 | −IOCTL: | |
| 95 | −====== | |
| 95 | + | |
| 96 | +IOCTL | |
| 97 | +===== | |
| 98 | + | |
| 96 | 99 | The Intel MEI Driver supports the following IOCTL command: |
| 97 | 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: · 23 unmodified lines | ||
| 122 | 125 | data that can be sent or received. (e.g. if MTU=2K, can send |
| 123 | 126 | requests up to bytes 2k and received responses up to 2k bytes). |
| 124 | 127 | |
| 125 | −Intel ME Applications: | |
| 126 | −============== | |
| 127 | − | |
| 128 | −1) Intel Local Management Service (Intel LMS) | |
| 129 | − | |
| 130 | − Applications running locally on the platform communicate with Intel AMT Release | |
| 131 | − 2.0 and later releases in the same way that network applications do via SOAP | |
| 132 | − over HTTP (deprecated starting with Release 6.0) or with WS-Management over | |
| 133 | − SOAP over HTTP. This means that some Intel AMT features can be accessed from a | |
| 134 | − local application using the same network interface as a remote application | |
| 135 | − communicating with Intel AMT over the network. | |
| 136 | − | |
| 137 | − When a local application sends a message addressed to the local Intel AMT host | |
| 138 | − name, the Intel LMS, which listens for traffic directed to the host name, | |
| 139 | − intercepts the message and routes it to the Intel MEI. | |
| 140 | − For more information: | |
| 141 | − http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide | |
| 142 | − Under "About Intel AMT" => "Local Access" | |
| 143 | − | |
| 144 | − For downloading Intel LMS: | |
| 145 | − http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/ | |
| 146 | − | |
| 147 | − The Intel LMS opens a connection using the Intel MEI driver to the Intel LMS | |
| 148 | − firmware feature using a defined UUID and then communicates with the feature | |
| 149 | − using a protocol called Intel AMT Port Forwarding Protocol(Intel APF protocol). | |
| 150 | − The protocol is used to maintain multiple sessions with Intel AMT from a | |
| 151 | − single application. | |
| 152 | − | |
| 153 | − See the protocol specification in the Intel AMT Software Development Kit(SDK) | |
| 154 | − http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide | |
| 155 | − Under "SDK Resources" => "Intel(R) vPro(TM) Gateway(MPS)" | |
| 156 | − => "Information for Intel(R) vPro(TM) Gateway Developers" | |
| 157 | − => "Description of the Intel AMT Port Forwarding (APF)Protocol" | |
| 158 | − | |
| 159 | − 2) Intel AMT Remote configuration using a Local Agent | |
| 160 | − A Local Agent enables IT personnel to configure Intel AMT out-of-the-box | |
| 161 | − without requiring installing additional data to enable setup. The remote | |
| 162 | − configuration process may involve an ISV-developed remote configuration | |
| 163 | − agent that runs on the host. | |
| 164 | − For more information: | |
| 165 | − http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide | |
| 166 | − Under "Setup and Configuration of Intel AMT" => | |
| 167 | − "SDK Tools Supporting Setup and Configuration" => | |
| 168 | − "Using the Local Agent Sample" | |
| 169 | − | |
| 170 | − An open source Intel AMT configuration utility, implementing a local agent | |
| 171 | − that accesses the Intel MEI driver, can be found here: | |
| 172 | − http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/ | |
| 173 | − | |
| 174 | − | |
| 175 | −Intel AMT OS Health Watchdog: | |
| 176 | −============================= | |
| 128 | + | |
| 129 | +Intel ME Applications | |
| 130 | +===================== | |
| 131 | + | |
| 132 | + 1) Intel Local Management Service (Intel LMS) | |
| 133 | + | |
| 134 | + Applications running locally on the platform communicate with Intel AMT Release | |
| 135 | + 2.0 and later releases in the same way that network applications do via SOAP | |
| 136 | + over HTTP (deprecated starting with Release 6.0) or with WS-Management over | |
| 137 | + SOAP over HTTP. This means that some Intel AMT features can be accessed from a | |
| 138 | + local application using the same network interface as a remote application | |
| 139 | + communicating with Intel AMT over the network. | |
| 140 | + | |
| 141 | + When a local application sends a message addressed to the local Intel AMT host | |
| 142 | + name, the Intel LMS, which listens for traffic directed to the host name, | |
| 143 | + intercepts the message and routes it to the Intel MEI. | |
| 144 | + For more information: | |
| 145 | + http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide | |
| 146 | + Under "About Intel AMT" => "Local Access" | |
| 147 | + | |
| 148 | + For downloading Intel LMS: | |
| 149 | + http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/ | |
| 150 | + | |
| 151 | + The Intel LMS opens a connection using the Intel MEI driver to the Intel LMS | |
| 152 | + firmware feature using a defined UUID and then communicates with the feature | |
| 153 | + using a protocol called Intel AMT Port Forwarding Protocol (Intel APF protocol). | |
| 154 | + The protocol is used to maintain multiple sessions with Intel AMT from a | |
| 155 | + single application. | |
| 156 | + | |
| 157 | + See the protocol specification in the Intel AMT Software Development Kit (SDK) | |
| 158 | + http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide | |
| 159 | + Under "SDK Resources" => "Intel(R) vPro(TM) Gateway (MPS)" | |
| 160 | + => "Information for Intel(R) vPro(TM) Gateway Developers" | |
| 161 | + => "Description of the Intel AMT Port Forwarding (APF) Protocol" | |
| 162 | + | |
| 163 | + 2) Intel AMT Remote configuration using a Local Agent | |
| 164 | + | |
| 165 | + A Local Agent enables IT personnel to configure Intel AMT out-of-the-box | |
| 166 | + without requiring installing additional data to enable setup. The remote | |
| 167 | + configuration process may involve an ISV-developed remote configuration | |
| 168 | + agent that runs on the host. | |
| 169 | + For more information: | |
| 170 | + http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide | |
| 171 | + Under "Setup and Configuration of Intel AMT" => | |
| 172 | + "SDK Tools Supporting Setup and Configuration" => | |
| 173 | + "Using the Local Agent Sample" | |
| 174 | + | |
| 175 | + An open source Intel AMT configuration utility, implementing a local agent | |
| 176 | + that accesses the Intel MEI driver, can be found here: | |
| 177 | + http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/ | |
| 178 | + | |
| 179 | + | |
| 180 | +Intel AMT OS Health Watchdog | |
| 181 | +============================ | |
| 182 | + | |
| 177 | 183 | The Intel AMT Watchdog is an OS Health (Hang/Crash) watchdog. |
| 178 | 184 | Whenever the OS hangs or crashes, Intel AMT will send an event |
| 179 | 185 | to any subscriber to this event. This mechanism means that |
| @@ -192,8 +198,10 @@ watchdog is 120 seconds. · 12 unmodified lines | ||
| 192 | 198 | If the Intel AMT Watchdog feature does not exist (i.e. the connection failed), |
| 193 | 199 | the Intel MEI driver will disable the sending of heartbeats. |
| 194 | 200 | |
| 195 | −Supported Chipsets: | |
| 201 | + | |
| 202 | +Supported Chipsets | |
| 196 | 203 | ================== |
| 204 | + | |
| 197 | 205 | 7 Series Chipset Family |
| 198 | 206 | 6 Series Chipset Family |
| 199 | 207 | 5 Series Chipset Family |
| @@ -1,7 +1,5 @@ | ||
| 1 | 1 | 00-INDEX |
| 2 | 2 | - this file |
| 3 | −3c505.txt | |
| 4 | − - information on the 3Com EtherLink Plus (3c505) driver. | |
| 5 | 3 | 3c509.txt |
| 6 | 4 | - information on the 3Com Etherlink III Series Ethernet cards. |
| 7 | 5 | 6pack.txt |
| @@ -24,6 +22,8 @@ README.sb1000 · 16 unmodified lines | ||
| 24 | 22 | - info on General Instrument/NextLevel SURFboard1000 cable modem. |
| 25 | 23 | alias.txt |
| 26 | 24 | - info on using alias network devices. |
| 25 | +altera_tse.txt | |
| 26 | + - Altera Triple-Speed Ethernet controller. | |
| 27 | 27 | arcnet-hardware.txt |
| 28 | 28 | - tons of info on ARCnet, hubs, jumper settings for ARCnet cards, etc. |
| 29 | 29 | arcnet.txt |
| @@ -42,6 +42,8 @@ bridge.txt · 12 unmodified lines | ||
| 42 | 42 | - where to get user space programs for ethernet bridging with Linux. |
| 43 | 43 | can.txt |
| 44 | 44 | - documentation on CAN protocol family. |
| 45 | +cdc_mbim.txt | |
| 46 | + - 3G/LTE USB modem (Mobile Broadband Interface Model) | |
| 45 | 47 | cops.txt |
| 46 | 48 | - info on the COPS LocalTalk Linux driver |
| 47 | 49 | cs89x0.txt |
| @@ -54,6 +56,8 @@ cxgb.txt · 6 unmodified lines | ||
| 54 | 56 | - Release Notes for the Chelsio N210 Linux device driver. |
| 55 | 57 | dccp.txt |
| 56 | 58 | - the Datagram Congestion Control Protocol (DCCP) (RFC 4340..42). |
| 59 | +dctcp.txt | |
| 60 | + - DataCenter TCP congestion control | |
| 57 | 61 | de4x5.txt |
| 58 | 62 | - the Digital EtherWORKS DE4?? and DE5?? PCI Ethernet driver |
| 59 | 63 | decnet.txt |
| @@ -234,7 +234,7 @@ solution for a couple of reasons: · 233 unmodified lines | ||
| 234 | 234 | mechanisms. Inside this filter definition the (interested) type of |
| 235 | 235 | errors may be selected. The reception of error messages is disabled |
| 236 | 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 | 239 | 4. How to use SocketCAN |
| 240 | 240 | ------------------------ |
| @@ -279,8 +279,8 @@ Possible BPF extensions are shown in the following table: · 278 unmodified lines | ||
| 279 | 279 | hatype skb->dev->type |
| 280 | 280 | rxhash skb->hash |
| 281 | 281 | cpu raw_smp_processor_id() |
| 282 | − vlan_tci vlan_tx_tag_get(skb) | |
| 283 | − vlan_pr vlan_tx_tag_present(skb) | |
| 282 | + vlan_tci skb_vlan_tag_get(skb) | |
| 283 | + vlan_pr skb_vlan_tag_present(skb) | |
| 284 | 284 | rand prandom_u32() |
| 285 | 285 | |
| 286 | 286 | These extensions can also be prefixed with '#'. |
| @@ -290,6 +290,28 @@ tcp_frto - INTEGER · 289 unmodified lines | ||
| 290 | 290 | |
| 291 | 291 | By default it's enabled with a non-zero value. 0 disables F-RTO. |
| 292 | 292 | |
| 293 | +tcp_invalid_ratelimit - INTEGER | |
| 294 | + Limit the maximal rate for sending duplicate acknowledgments | |
| 295 | + in response to incoming TCP packets that are for an existing | |
| 296 | + connection but that are invalid due to any of these reasons: | |
| 297 | + | |
| 298 | + (a) out-of-window sequence number, | |
| 299 | + (b) out-of-window acknowledgment number, or | |
| 300 | + (c) PAWS (Protection Against Wrapped Sequence numbers) check failure | |
| 301 | + | |
| 302 | + This can help mitigate simple "ack loop" DoS attacks, wherein | |
| 303 | + a buggy or malicious middlebox or man-in-the-middle can | |
| 304 | + rewrite TCP header fields in manner that causes each endpoint | |
| 305 | + to think that the other is sending invalid TCP segments, thus | |
| 306 | + causing each side to send an unterminating stream of duplicate | |
| 307 | + acknowledgments for invalid segments. | |
| 308 | + | |
| 309 | + Using 0 disables rate-limiting of dupacks in response to | |
| 310 | + invalid segments; otherwise this value specifies the minimal | |
| 311 | + space between sending such dupacks, in milliseconds. | |
| 312 | + | |
| 313 | + Default: 500 (milliseconds). | |
| 314 | + | |
| 293 | 315 | tcp_keepalive_time - INTEGER |
| 294 | 316 | How often TCP sends out keepalive messages when keepalive is enabled. |
| 295 | 317 | Default: 2hours. |
| @@ -1287,6 +1309,13 @@ accept_ra_rtr_pref - BOOLEAN · 991 unmodified lines | ||
| 1287 | 1309 | Functional default: enabled if accept_ra is enabled. |
| 1288 | 1310 | disabled if accept_ra is disabled. |
| 1289 | 1311 | |
| 1312 | +accept_ra_mtu - BOOLEAN | |
| 1313 | + Apply the MTU value specified in RA option 5 (RFC4861). If | |
| 1314 | + disabled, the MTU specified in the RA will be ignored. | |
| 1315 | + | |
| 1316 | + Functional default: enabled if accept_ra is enabled. | |
| 1317 | + disabled if accept_ra is disabled. | |
| 1318 | + | |
| 1290 | 1319 | accept_redirects - BOOLEAN |
| 1291 | 1320 | Accept Redirects. |
| 1292 | 1321 | |
| @@ -199,16 +199,9 @@ frame header. · 198 unmodified lines | ||
| 199 | 199 | TX limitations |
| 200 | 200 | -------------- |
| 201 | 201 | |
| 202 | −Kernel processing usually involves validation of the message received by | |
| 203 | −user-space, then processing its contents. The kernel must assure that | |
| 204 | −userspace is not able to modify the message contents after they have been | |
| 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. | |
| 202 | +As of Jan 2015 the message is always copied from the ring frame to an | |
| 203 | +allocated buffer due to unresolved security concerns. | |
| 204 | +See commit 4682a0358639b29cf ("netlink: Always copy on mmap TX."). | |
| 212 | 205 | |
| 213 | 206 | Example |
| 214 | 207 | ------- |
| @@ -11,7 +11,8 @@ nf_conntrack_buckets - INTEGER (read-only) · 10 unmodified lines | ||
| 11 | 11 | Size of hash table. If not specified as parameter during module |
| 12 | 12 | loading, the default size is calculated by dividing total memory |
| 13 | 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 | 17 | nf_conntrack_checksum - BOOLEAN |
| 17 | 18 | 0 - disabled |
| @@ -131,6 +131,19 @@ performs best-effort detection of overlapping wildcarded flows and may reject · 130 unmodified lines | ||
| 131 | 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 | 147 | Basic rule for evolving flow keys |
| 135 | 148 | --------------------------------- |
| 136 | 149 | |
| @@ -162,6 +162,27 @@ SOF_TIMESTAMPING_OPT_CMSG: · 161 unmodified lines | ||
| 162 | 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 | 186 | 1.4 Bytestream Timestamps |
| 166 | 187 | |
| 167 | 188 | The SO_TIMESTAMPING interface supports timestamping of bytes in a |
| @@ -30,6 +30,8 @@ · 29 unmodified lines | ||
| 30 | 30 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. |
| 31 | 31 | */ |
| 32 | 32 | |
| 33 | +#define _GNU_SOURCE | |
| 34 | + | |
| 33 | 35 | #include <arpa/inet.h> |
| 34 | 36 | #include <asm/types.h> |
| 35 | 37 | #include <error.h> |
| @@ -59,14 +61,6 @@ · 23 unmodified lines | ||
| 59 | 61 | #include <time.h> |
| 60 | 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 | 64 | /* command line parameters */ |
| 71 | 65 | static int cfg_proto = SOCK_STREAM; |
| 72 | 66 | static int cfg_ipproto = IPPROTO_TCP; |
| @@ -76,6 +70,7 @@ static int do_ipv6 = 1; · 3 unmodified lines | ||
| 76 | 70 | static int cfg_payload_len = 10; |
| 77 | 71 | static bool cfg_show_payload; |
| 78 | 72 | static bool cfg_do_pktinfo; |
| 73 | +static bool cfg_loop_nodata; | |
| 79 | 74 | static uint16_t dest_port = 9000; |
| 80 | 75 | |
| 81 | 76 | static struct sockaddr_in daddr; |
| @@ -147,6 +142,9 @@ static void print_payload(char *data, int len) · 65 unmodified lines | ||
| 147 | 142 | { |
| 148 | 143 | int i; |
| 149 | 144 | |
| 145 | + if (!len) | |
| 146 | + return; | |
| 147 | + | |
| 150 | 148 | if (len > 70) |
| 151 | 149 | len = 70; |
| 152 | 150 | |
| @@ -183,6 +181,7 @@ static void __recv_errmsg_cmsg(struct msghdr *msg, int payload_len) · 30 unmodified lines | ||
| 183 | 181 | struct sock_extended_err *serr = NULL; |
| 184 | 182 | struct scm_timestamping *tss = NULL; |
| 185 | 183 | struct cmsghdr *cm; |
| 184 | + int batch = 0; | |
| 186 | 185 | |
| 187 | 186 | for (cm = CMSG_FIRSTHDR(msg); |
| 188 | 187 | cm && cm->cmsg_len; |
| @@ -215,10 +214,18 @@ static void __recv_errmsg_cmsg(struct msghdr *msg, int payload_len) · 26 unmodified lines | ||
| 215 | 214 | } else |
| 216 | 215 | fprintf(stderr, "unknown cmsg %d,%d\n", |
| 217 | 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) | |
| 221 | − print_timestamp(tss, serr->ee_info, serr->ee_data, payload_len); | |
| 227 | + if (batch > 1) | |
| 228 | + fprintf(stderr, "batched %d timestamps\n", batch); | |
| 222 | 229 | } |
| 223 | 230 | |
| 224 | 231 | static int recv_errmsg(int fd) |
| @@ -250,7 +257,7 @@ static int recv_errmsg(int fd) · 25 unmodified lines | ||
| 250 | 257 | if (ret == -1 && errno != EAGAIN) |
| 251 | 258 | error(1, errno, "recvmsg"); |
| 252 | 259 | |
| 253 | − if (ret > 0) { | |
| 260 | + if (ret >= 0) { | |
| 254 | 261 | __recv_errmsg_cmsg(&msg, ret); |
| 255 | 262 | if (cfg_show_payload) |
| 256 | 263 | print_payload(data, cfg_payload_len); |
| @@ -315,6 +322,9 @@ static void do_test(int family, unsigned int opt) · 58 unmodified lines | ||
| 315 | 322 | opt |= SOF_TIMESTAMPING_SOFTWARE | |
| 316 | 323 | SOF_TIMESTAMPING_OPT_CMSG | |
| 317 | 324 | SOF_TIMESTAMPING_OPT_ID; |
| 325 | + if (cfg_loop_nodata) | |
| 326 | + opt |= SOF_TIMESTAMPING_OPT_TSONLY; | |
| 327 | + | |
| 318 | 328 | if (setsockopt(fd, SOL_SOCKET, SO_TIMESTAMPING, |
| 319 | 329 | (char *) &opt, sizeof(opt))) |
| 320 | 330 | error(1, 0, "setsockopt timestamping"); |
| @@ -384,6 +394,7 @@ static void __attribute__((noreturn)) usage(const char *filepath) · 63 unmodified lines | ||
| 384 | 394 | " -h: show this message\n" |
| 385 | 395 | " -I: request PKTINFO\n" |
| 386 | 396 | " -l N: send N bytes at a time\n" |
| 397 | + " -n: set no-payload option\n" | |
| 387 | 398 | " -r: use raw\n" |
| 388 | 399 | " -R: use raw (IP_HDRINCL)\n" |
| 389 | 400 | " -p N: connect to port N\n" |
| @@ -398,7 +409,7 @@ static void parse_opt(int argc, char **argv) · 8 unmodified lines | ||
| 398 | 409 | int proto_count = 0; |
| 399 | 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 | 413 | switch (c) { |
| 403 | 414 | case '4': |
| 404 | 415 | do_ipv6 = 0; |
| @@ -409,6 +420,9 @@ static void parse_opt(int argc, char **argv) · 4 unmodified lines | ||
| 409 | 420 | case 'I': |
| 410 | 421 | cfg_do_pktinfo = true; |
| 411 | 422 | break; |
| 423 | + case 'n': | |
| 424 | + cfg_loop_nodata = true; | |
| 425 | + break; | |
| 412 | 426 | case 'r': |
| 413 | 427 | proto_count++; |
| 414 | 428 | cfg_proto = SOCK_RAW; |
| @@ -43,12 +43,12 @@ and it's also much more restricted in the latter case: · 42 unmodified lines | ||
| 43 | 43 | even if this was created by another process. |
| 44 | 44 | |
| 45 | 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 | 47 | appropriate mapping protection capabilities. Ramfs, romfs, cramfs |
| 48 | 48 | and mtd might all permit this. |
| 49 | 49 | |
| 50 | 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 | 52 | appropriate bit of the file will be read into a contiguous bit of |
| 53 | 53 | memory and any extraneous space beyond the EOF will be cleared |
| 54 | 54 | |
| @@ -220,7 +220,7 @@ directly (can't be copied). · 165 unmodified lines | ||
| 220 | 220 | |
| 221 | 221 | The file->f_op->mmap() operation will be called to actually inaugurate the |
| 222 | 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 | 225 | The vm_ops->close() routine will be invoked when the last mapping on a chardev |
| 226 | 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 · 5 unmodified lines | ||
| 232 | 232 | might try directing the call to a secondary driver which turns out not to |
| 233 | 233 | implement it. Such is the case for the framebuffer driver which attempts to |
| 234 | 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 | 236 | copy mapped otherwise. |
| 237 | 237 | |
| 238 | 238 | IMPORTANT NOTE: |
| @@ -270,6 +270,8 @@ characters, each representing a particular tainted value. · 269 unmodified lines | ||
| 270 | 270 | |
| 271 | 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 | 275 | The primary reason for the 'Tainted: ' string is to tell kernel |
| 274 | 276 | debuggers if this is a clean kernel or if anything unusual has |
| 275 | 277 | occurred. Tainting is permanent: even if an offending module is |
| @@ -69,6 +69,10 @@ Reason for this is that the RTC is the only reliably available piece of · 68 unmodified lines | ||
| 69 | 69 | hardware during resume operations where a value can be set that will |
| 70 | 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 | 76 | Consequence is that after a resume (even if it is successful) your system |
| 73 | 77 | clock will have a value corresponding to the magic number instead of the |
| 74 | 78 | correct date/time! It is therefore advisable to use a program like ntp-date |
| @@ -25,6 +25,9 @@ whether they can be changed or not: · 24 unmodified lines | ||
| 25 | 25 | - soft block: writable radio block (need not be readable) that is set by |
| 26 | 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 | 32 | 2. Implementation details |
| 30 | 33 | |
| @@ -1,14 +1,14 @@ | ||
| 1 | − | |
| 2 | − Debugging on Linux for s/390 & z/Architecture | |
| 3 | − by | |
| 4 | − Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com) | |
| 5 | − Copyright (C) 2000-2001 IBM Deutschland Entwicklung GmbH, IBM Corporation | |
| 6 | − Best viewed with fixed width fonts | |
| 1 | + | |
| 2 | + Debugging on Linux for s/390 & z/Architecture | |
| 3 | + by | |
| 4 | + Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com) | |
| 5 | + Copyright (C) 2000-2001 IBM Deutschland Entwicklung GmbH, IBM Corporation | |
| 6 | + Best viewed with fixed width fonts | |
| 7 | 7 | |
| 8 | 8 | Overview of Document: |
| 9 | 9 | ===================== |
| 10 | −This document is intended to give a good overview of how to debug | |
| 11 | −Linux for s/390 & z/Architecture. It isn't intended as a complete reference & not a | |
| 10 | +This document is intended to give a good overview of how to debug Linux for | |
| 11 | +s/390 and z/Architecture. It is not intended as a complete reference and not a | |
| 12 | 12 | tutorial on the fundamentals of C & assembly. It doesn't go into |
| 13 | 13 | 390 IO in any detail. It is intended to complement the documents in the |
| 14 | 14 | reference section below & any other worthwhile references you get. |
| @@ -35,7 +35,6 @@ Examining core dumps · 20 unmodified lines | ||
| 35 | 35 | ldd |
| 36 | 36 | Debugging modules |
| 37 | 37 | The proc file system |
| 38 | −Starting points for debugging scripting languages etc. | |
| 39 | 38 | SysRq |
| 40 | 39 | References |
| 41 | 40 | Special Thanks |
| @@ -44,18 +43,20 @@ Register Set · 2 unmodified lines | ||
| 44 | 43 | ============ |
| 45 | 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. | |
| 48 | − | |
| 49 | −16 Control registers, 32 bit on s/390 64 bit on z/Architecture, ( cr0-cr15 kernel usage only ) used for memory management, | |
| 50 | −interrupt control,debugging control etc. | |
| 51 | − | |
| 52 | −16 Access registers ( ar0-ar15 ) 32 bit on s/390 & z/Architecture | |
| 53 | −not used by normal programs but potentially could | |
| 54 | −be used as temporary storage. Their main purpose is their 1 to 1 | |
| 55 | −association with general purpose registers and are used in | |
| 56 | −the kernel for copying data between kernel & user address spaces. | |
| 57 | −Access register 0 ( & access register 1 on z/Architecture ( needs 64 bit | |
| 58 | −pointer ) ) is currently used by the pthread library as a pointer to | |
| 46 | +16 General propose registers, 32 bit on s/390 and 64 bit on z/Architecture, | |
| 47 | +r0-r15 (or gpr0-gpr15), used for arithmetic and addressing. | |
| 48 | + | |
| 49 | +16 Control registers, 32 bit on s/390 and 64 bit on z/Architecture, cr0-cr15, | |
| 50 | +kernel usage only, used for memory management, interrupt control, debugging | |
| 51 | +control etc. | |
| 52 | + | |
| 53 | +16 Access registers (ar0-ar15), 32 bit on both s/390 and z/Architecture, | |
| 54 | +normally not used by normal programs but potentially could be used as | |
| 55 | +temporary storage. These registers have a 1:1 association with general | |
| 56 | +purpose registers and are designed to be used in the so-called access | |
| 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 | 60 | the current running threads private area. |
| 60 | 61 | |
| 61 | 62 | 16 64 bit floating point registers (fp0-fp15 ) IEEE & HFP floating |
| @@ -90,18 +91,19 @@ s/390 z/Architecture · 28 unmodified lines | ||
| 90 | 91 | |
| 91 | 92 | 6 6 Input/Output interrupt Mask |
| 92 | 93 | |
| 93 | −7 7 External interrupt Mask used primarily for interprocessor signalling & | |
| 94 | − clock interrupts. | |
| 94 | +7 7 External interrupt Mask used primarily for interprocessor | |
| 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 | 100 | 12 12 1 on s/390 0 on z/Architecture |
| 99 | 101 | |
| 100 | 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 | |
| 103 | − time to other LPARS used in CPU idle in the kernel to increase overall | |
| 104 | − usage of processor resources. | |
| 104 | +14 14 Wait State. Set this to 1 to stop the processor except for | |
| 105 | + interrupts and give time to other LPARS. Used in CPU idle in | |
| 106 | + the kernel to increase overall usage of processor resources. | |
| 105 | 107 | |
| 106 | 108 | 15 15 Problem state ( if set to 1 certain instructions are disabled ) |
| 107 | 109 | all linux user programs run with this bit 1 |
| @@ -165,21 +167,23 @@ s/390 z/Architecture · 57 unmodified lines | ||
| 165 | 167 | when loading the address with LPSWE otherwise a |
| 166 | 168 | specification exception occurs, LPSW is fully backward |
| 167 | 169 | compatible. |
| 168 | − | |
| 169 | − | |
| 170 | + | |
| 171 | + | |
| 170 | 172 | Prefix Page(s) |
| 171 | −-------------- | |
| 173 | +-------------- | |
| 172 | 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 | |
| 174 | −with a 1 page on s/390 or 2 pages on z/Architecture in absolute storage by the set | |
| 175 | −prefix instruction in linux'es startup. | |
| 176 | −This page is mapped to a different prefix for each processor in an SMP configuration | |
| 177 | −( assuming the os designer is sane of course :-) ). | |
| 178 | −Bytes 0-512 ( 200 hex ) on s/390 & 0-512,4096-4544,4604-5119 currently on z/Architecture | |
| 179 | −are used by the processor itself for holding such information as exception indications & | |
| 180 | −entry points for exceptions. | |
| 181 | −Bytes after 0xc00 hex are used by linux for per processor globals on s/390 & z/Architecture | |
| 182 | −( there is a gap on z/Architecture too currently between 0xc00 & 1000 which linux uses ). | |
| 175 | +It exists between the real addresses 0-4096 on s/390 and between 0-8192 on | |
| 176 | +z/Architecture and is exchanged with one page on s/390 or two pages on | |
| 177 | +z/Architecture in absolute storage by the set prefix instruction during Linux | |
| 178 | +startup. | |
| 179 | +This page is mapped to a different prefix for each processor in an SMP | |
| 180 | +configuration (assuming the OS designer is sane of course). | |
| 181 | +Bytes 0-512 (200 hex) on s/390 and 0-512, 4096-4544, 4604-5119 currently on | |
| 182 | +z/Architecture are used by the processor itself for holding such information | |
| 183 | +as exception indications and entry points for exceptions. | |
| 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 | 187 | The closest thing to this on traditional architectures is the interrupt |
| 184 | 188 | vector table. This is a good thing & does simplify some of the kernel coding |
| 185 | 189 | however it means that we now cannot catch stray NULL pointers in the |
| @@ -192,26 +196,26 @@ Address Spaces on Intel Linux · 6 unmodified lines | ||
| 192 | 196 | |
| 193 | 197 | The traditional Intel Linux is approximately mapped as follows forgive |
| 194 | 198 | the ascii art. |
| 195 | −0xFFFFFFFF 4GB Himem ***************** | |
| 196 | − * * | |
| 197 | − * Kernel Space * | |
| 198 | − * * | |
| 199 | − ***************** **************** | |
| 200 | −User Space Himem (typically 0xC0000000 3GB )* User Stack * * * | |
| 201 | − ***************** * * | |
| 202 | − * Shared Libs * * Next Process * | |
| 203 | − ***************** * to * | |
| 204 | − * * <== * Run * <== | |
| 205 | − * User Program * * * | |
| 206 | − * Data BSS * * * | |
| 207 | − * Text * * * | |
| 208 | − * Sections * * * | |
| 209 | −0x00000000 ***************** **************** | |
| 210 | − | |
| 211 | −Now it is easy to see that on Intel it is quite easy to recognise a kernel address | |
| 212 | −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 | |
| 214 | −processor ( if an smp box ). | |
| 199 | +0xFFFFFFFF 4GB Himem ***************** | |
| 200 | + * * | |
| 201 | + * Kernel Space * | |
| 202 | + * * | |
| 203 | + ***************** **************** | |
| 204 | +User Space Himem * User Stack * * * | |
| 205 | +(typically 0xC0000000 3GB ) ***************** * * | |
| 206 | + * Shared Libs * * Next Process * | |
| 207 | + ***************** * to * | |
| 208 | + * * <== * Run * <== | |
| 209 | + * User Program * * * | |
| 210 | + * Data BSS * * * | |
| 211 | + * Text * * * | |
| 212 | + * Sections * * * | |
| 213 | +0x00000000 ***************** **************** | |
| 214 | + | |
| 215 | +Now it is easy to see that on Intel it is quite easy to recognise a kernel | |
| 216 | +address as being one greater than user space himem (in this case 0xC0000000), | |
| 217 | +and addresses of less than this are the ones in the current running program on | |
| 218 | +this processor (if an smp box). | |
| 215 | 219 | If using the virtual machine ( VM ) as a debugger it is quite difficult to |
| 216 | 220 | know which user process is running as the address space you are looking at |
| 217 | 221 | could be from any process in the run queue. |
| @@ -247,8 +251,8 @@ Our addressing scheme is basically as follows: · 29 unmodified lines | ||
| 247 | 251 | Himem 0x7fffffff 2GB on s/390 ***************** **************** |
| 248 | 252 | currently 0x3ffffffffff (2^42)-1 * User Stack * * * |
| 249 | 253 | on z/Architecture. ***************** * * |
| 250 | − * Shared Libs * * * | |
| 251 | − ***************** * * | |
| 254 | + * Shared Libs * * * | |
| 255 | + ***************** * * | |
| 252 | 256 | * * * Kernel * |
| 253 | 257 | * User Program * * * |
| 254 | 258 | * Data BSS * * * |
| @@ -301,10 +305,10 @@ Virtual Addresses on s/390 & z/Architecture · 46 unmodified lines | ||
| 301 | 305 | =========================================== |
| 302 | 306 | |
| 303 | 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 ) | |
| 305 | −being bits 1-11. | |
| 306 | −The PX ( page index, corresponding to the page table entry (pte) in linux terminology ) | |
| 307 | −being bits 12-19. | |
| 308 | +The SX (segment index, roughly corresponding to the PGD & PMD in Linux | |
| 309 | +terminology) being bits 1-11. | |
| 310 | +The PX (page index, corresponding to the page table entry (pte) in Linux | |
| 311 | +terminology) being bits 12-19. | |
| 308 | 312 | The remaining bits BX (the byte index are the offset in the page ) |
| 309 | 313 | i.e. bits 20 to 31. |
| 310 | 314 | |
| @@ -368,9 +372,9 @@ each processor as follows. · 57 unmodified lines | ||
| 368 | 372 | * ( 8K ) * |
| 369 | 373 | 16K aligned ************************ |
| 370 | 374 | |
| 371 | −What this means is that we don't need to dedicate any register or global variable | |
| 372 | −to point to the current running process & can retrieve it with the following | |
| 373 | −very simple construct for s/390 & one very similar for z/Architecture. | |
| 375 | +What this means is that we don't need to dedicate any register or global | |
| 376 | +variable to point to the current running process & can retrieve it with the | |
| 377 | +following very simple construct for s/390 & one very similar for z/Architecture. | |
| 374 | 378 | |
| 375 | 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 & · 26 unmodified lines | ||
| 403 | 407 | limited knowledge of one assembly language. |
| 404 | 408 | |
| 405 | 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 | |
| 407 | −to maintain compatibility with older linkage formats. | |
| 410 | +s/390 and z/Architecture stack layouts as the z/Architecture stack layout | |
| 411 | +didn't have to maintain compatibility with older linkage formats. | |
| 408 | 412 | |
| 409 | 413 | Glossary: |
| 410 | 414 | --------- |
| @@ -440,7 +444,7 @@ The code generated by the compiler to return to the caller. · 29 unmodified lines | ||
| 440 | 444 | |
| 441 | 445 | frameless-function |
| 442 | 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 | 448 | given to it by the caller. |
| 445 | 449 | A frameless function never: |
| 446 | 450 | 1) Sets up a back chain. |
| @@ -588,8 +592,8 @@ A sample program with comments. · 141 unmodified lines | ||
| 588 | 592 | |
| 589 | 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 | |
| 592 | −( :-( ). | |
| 595 | +1) It didn't need to set up a pointer to the constant pool gpr13 as it is not | |
| 596 | +used ( :-( ). | |
| 593 | 597 | 2) This is a frameless function & no stack is bought. |
| 594 | 598 | 3) The compiler was clever enough to recognise that it could return the |
| 595 | 599 | value in r2 as well as use it for the passed in parameter ( :-) ). |
| @@ -743,35 +747,34 @@ Debugging under VM · 147 unmodified lines | ||
| 743 | 747 | Notes |
| 744 | 748 | ----- |
| 745 | 749 | Addresses & values in the VM debugger are always hex never decimal |
| 746 | −Address ranges are of the format <HexValue1>-<HexValue2> or <HexValue1>.<HexValue2> | |
| 747 | −e.g. The address range 0x2000 to 0x3000 can be described as 2000-3000 or 2000.1000 | |
| 750 | +Address ranges are of the format <HexValue1>-<HexValue2> or | |
| 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 | 755 | The VM Debugger is case insensitive. |
| 750 | 756 | |
| 751 | −VM's strengths are usually other debuggers weaknesses you can get at any resource | |
| 752 | −no matter how sensitive e.g. memory management resources,change address translation | |
| 753 | −in the PSW. For kernel hacking you will reap dividends if you get good at it. | |
| 754 | − | |
| 755 | −The VM Debugger displays operators but not operands, probably because some | |
| 756 | −of it was written when memory was expensive & the programmer was probably proud that | |
| 757 | −it fitted into 2k of memory & the programmers & didn't want to shock hardcore VM'ers by | |
| 758 | −changing the interface :-), also the debugger displays useful information on the same line & | |
| 759 | −the author of the code probably felt that it was a good idea not to go over | |
| 760 | −the 80 columns on the screen. | |
| 761 | − | |
| 762 | −As some of you are probably in a panic now this isn't as unintuitive as it may seem | |
| 763 | −as the 390 instructions are easy to decode mentally & you can make a good guess at a lot | |
| 764 | −of them as all the operands are nibble ( half byte aligned ) & if you have an objdump listing | |
| 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. | |
| 757 | +VM's strengths are usually other debuggers weaknesses you can get at any | |
| 758 | +resource no matter how sensitive e.g. memory management resources, change | |
| 759 | +address translation in the PSW. For kernel hacking you will reap dividends if | |
| 760 | +you get good at it. | |
| 761 | + | |
| 762 | +The VM Debugger displays operators but not operands, and also the debugger | |
| 763 | +displays useful information on the same line as the author of the code probably | |
| 764 | +felt that it was a good idea not to go over the 80 columns on the screen. | |
| 765 | +This isn't as unintuitive as it may seem as the s/390 instructions are easy to | |
| 766 | +decode mentally and you can make a good guess at a lot of them as all the | |
| 767 | +operands are nibble (half byte aligned). | |
| 768 | +So if you have an objdump listing by hand, it is quite easy to follow, and if | |
| 769 | +you don't have an objdump listing keep a copy of the s/390 Reference Summary | |
| 770 | +or alternatively the s/390 principles of operation next to you. | |
| 768 | 771 | e.g. even I can guess that |
| 769 | 772 | 0001AFF8' LR 180F CC 0 |
| 770 | 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 | |
| 773 | −bits in the instruction ( not that this info is really useful except if you are trying to | |
| 774 | −make sense of a hexdump of code ). | |
| 775 | +Also it is very easy to tell the length of a 390 instruction from the 2 most | |
| 776 | +significant bits in the instruction (not that this info is really useful except | |
| 777 | +if you are trying to make sense of a hexdump of code). | |
| 775 | 778 | Here is a table |
| 776 | 779 | Bits Instruction Length |
| 777 | 780 | ------------------------------------------ |
| @@ -780,9 +783,6 @@ Bits Instruction Length · 2 unmodified lines | ||
| 780 | 783 | 10 4 Bytes |
| 781 | 784 | 11 6 Bytes |
| 782 | 785 | |
| 783 | − | |
| 784 | − | |
| 785 | − | |
| 786 | 786 | The debugger also displays other useful info on the same line such as the |
| 787 | 787 | addresses being operated on destination addresses of branches & condition codes. |
| 788 | 788 | e.g. |
| @@ -853,8 +853,8 @@ Displaying & modifying Registers · 64 unmodified lines | ||
| 853 | 853 | -------------------------------- |
| 854 | 854 | D G will display all the gprs |
| 855 | 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 | |
| 857 | −as these are still 32 bit. | |
| 856 | +content in VM on z/Architecture. Obviously this isn't required for access | |
| 857 | +registers as these are still 32 bit. | |
| 858 | 858 | e.g. DGG instead of DG |
| 859 | 859 | D X will display all the control registers |
| 860 | 860 | D AR will display all the access registers |
| @@ -870,10 +870,11 @@ Displaying Memory · 9 unmodified lines | ||
| 870 | 870 | ----------------- |
| 871 | 871 | To display memory mapped using the current PSW's mapping try |
| 872 | 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 | 875 | D I<range> will disassemble/display a range of instructions. |
| 875 | 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 | 878 | D R<range> will display real addresses ( without DAT ) but with prefixing. |
| 878 | 879 | There are other complex options to display if you need to get at say home space |
| 879 | 880 | but are in primary space the easiest thing to do is to temporarily |
| @@ -884,8 +885,8 @@ restore it. · 4 unmodified lines | ||
| 884 | 885 | |
| 885 | 886 | Hints |
| 886 | 887 | ----- |
| 887 | −If you want to issue a debugger command without halting your virtual machine with the | |
| 888 | −PA1 key try prefixing the command with #CP e.g. | |
| 888 | +If you want to issue a debugger command without halting your virtual machine | |
| 889 | +with the PA1 key try prefixing the command with #CP e.g. | |
| 889 | 890 | #cp tr i pswa 2000 |
| 890 | 891 | also suffixing most debugger commands with RUN will cause them not |
| 891 | 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. · 11 unmodified lines | ||
| 903 | 904 | script with breakpoints on every kernel procedure, this isn't a good idea |
| 904 | 905 | because there are thousands of these routines & VM can only set 255 breakpoints |
| 905 | 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 | −On linux'es 3270 emulator x3270 there is a very useful option under the file ment | |
| 908 | −Save Screens In File this is very good of keeping a copy of traces. | |
| 907 | +entering the msgs by hand), however, the trick might be useful for a single | |
| 908 | +object file. In the 3270 terminal emulator x3270 there is a very useful option | |
| 909 | +in the file menu called "Save Screen In File" - this is very good for keeping a | |
| 910 | +copy of traces. | |
| 909 | 911 | |
| 910 | 912 | From CMS help <command name> will give you online help on a particular command. |
| 911 | 913 | e.g. |
| @@ -920,7 +922,8 @@ SET PF9 IMM B · 8 unmodified lines | ||
| 920 | 922 | This does a single step in VM on pressing F8. |
| 921 | 923 | SET PF10 ^ |
| 922 | 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 | 927 | SET PF11 ^- |
| 925 | 928 | This types the starting keystrokes for a sysrq see SysRq below. |
| 926 | 929 | SET PF12 RETRIEVE |
| @@ -1014,8 +1017,8 @@ Tracing Program Exceptions · 87 unmodified lines | ||
| 1014 | 1017 | -------------------------- |
| 1015 | 1018 | If you get a crash which says something like |
| 1016 | 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. | |
| 1018 | − | |
| 1020 | +You can restart linux & trace these using the tr prog <range or value> trace | |
| 1021 | +option. | |
| 1019 | 1022 | |
| 1020 | 1023 | |
| 1021 | 1024 | The most common ones you will normally be tracing for is |
| @@ -1057,9 +1060,10 @@ TR GOTO INITIAL · 35 unmodified lines | ||
| 1057 | 1060 | |
| 1058 | 1061 | Tracing linux syscalls under VM |
| 1059 | 1062 | ------------------------------- |
| 1060 | −Syscalls are implemented on Linux for S390 by the Supervisor call instruction (SVC) there 256 | |
| 1061 | −possibilities of these as the instruction is made up of a 0xA opcode & the second byte being | |
| 1062 | −the syscall number. They are traced using the simple command. | |
| 1063 | +Syscalls are implemented on Linux for S390 by the Supervisor call instruction | |
| 1064 | +(SVC). There 256 possibilities of these as the instruction is made up of a 0xA | |
| 1065 | +opcode and the second byte being the syscall number. They are traced using the | |
| 1066 | +simple command: | |
| 1063 | 1067 | TR SVC <Optional value or range> |
| 1064 | 1068 | the syscalls are defined in linux/arch/s390/include/asm/unistd.h |
| 1065 | 1069 | e.g. to trace all file opens just do |
| @@ -1070,12 +1074,12 @@ SMP Specific commands · 4 unmodified lines | ||
| 1070 | 1074 | --------------------- |
| 1071 | 1075 | To find out how many cpus you have |
| 1072 | 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 | |
| 1074 | −Q CPU to change 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 | |
| 1078 | +do Q CPU to change the current cpu VM debugger commands are being directed at do | |
| 1075 | 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. | |
| 1078 | −To issue a command to a particular cpu try cpu <cpu number> e.g. | |
| 1081 | +On a SMP guest issue a command to all CPUs try prefixing the command with cpu | |
| 1082 | +all. To issue a command to a particular cpu try cpu <cpu number> e.g. | |
| 1079 | 1083 | CPU 01 TR I R 2000.3000 |
| 1080 | 1084 | If you are running on a guest with several cpus & you have a IO related problem |
| 1081 | 1085 | & cannot follow the flow of code but you know it isn't smp related. |
| @@ -1101,10 +1105,10 @@ D TX0.100 · 19 unmodified lines | ||
| 1101 | 1105 | |
| 1102 | 1106 | Alternatively |
| 1103 | 1107 | ============= |
| 1104 | −Under older VM debuggers ( I love EBDIC too ) you can use this little program I wrote which | |
| 1105 | −will convert a command line of hex digits to ascii text which can be compiled under linux & | |
| 1106 | −you can copy the hex digits from your x3270 terminal to your xterm if you are debugging | |
| 1107 | −from a linuxbox. | |
| 1108 | +Under older VM debuggers (I love EBDIC too) you can use following little | |
| 1109 | +program which converts a command line of hex digits to ascii text. It can be | |
| 1110 | +compiled under linux and you can copy the hex digits from your x3270 terminal | |
| 1111 | +to your xterm if you are debugging from a linuxbox. | |
| 1108 | 1112 | |
| 1109 | 1113 | This is quite useful when looking at a parameter passed in as a text string |
| 1110 | 1114 | under VM ( unless you are good at decoding ASCII in your head ). |
| @@ -1114,14 +1118,14 @@ TR SVC 5 · 3 unmodified lines | ||
| 1114 | 1118 | We have stopped at a breakpoint |
| 1115 | 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 | |
| 1118 | −( for the layout of the prefix area consult P18 of the s/390 390 Reference Summary | |
| 1119 | −if you have it available ). | |
| 1121 | +D 20.8 to check the SVC old psw in the prefix area and see was it from userspace | |
| 1122 | +(for the layout of the prefix area consult the "Fixed Storage Locations" | |
| 1123 | +chapter of the s/390 Reference Summary if you have it available). | |
| 1120 | 1124 | V00000020 070C2000 800151B2 |
| 1121 | 1125 | The problem state bit wasn't set & it's also too early in the boot sequence |
| 1122 | 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 | |
| 1124 | −gpr2. | |
| 1127 | +psw to user space addressing so we could get at the first parameter of the open | |
| 1128 | +in gpr2. | |
| 1125 | 1129 | Next do a |
| 1126 | 1130 | D G2 |
| 1127 | 1131 | GPR 2 = 00014CB4 |
| @@ -1208,9 +1212,9 @@ Here are the tricks I use 9 out of 10 times it works pretty well, · 80 unmodified lines | ||
| 1208 | 1212 | |
| 1209 | 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 | |
| 1212 | −if you reach the NULL pointer at the end of the back chain you should be | |
| 1213 | −able to sniff further back if you follow the following tricks. | |
| 1215 | +This can happen when an exception happens in the kernel and the kernel is | |
| 1216 | +entered twice. If you reach the NULL pointer at the end of the back chain you | |
| 1217 | +should be able to sniff further back if you follow the following tricks. | |
| 1214 | 1218 | 1) A kernel address should be easy to recognise since it is in |
| 1215 | 1219 | primary space & the problem state bit isn't set & also |
| 1216 | 1220 | The Hi bit of the address is set. |
| @@ -1260,8 +1264,8 @@ V000FFFD0 00010400 80010802 8001085A 000FFFA0 · 43 unmodified lines | ||
| 1260 | 1264 | |
| 1261 | 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 | |
| 1264 | −for the sake of optimisation don't set up a backchain. | |
| 1267 | +as the 04B52002 looks suspiciously like rubbish it is fair to assume that the | |
| 1268 | +kernel entry routines for the sake of optimisation don't set up a backchain. | |
| 1265 | 1269 | |
| 1266 | 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. · 21 unmodified lines | ||
| 1289 | 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 | |
| 1293 | −while & I'm no expert. Instead I'll give a 390 IO architecture summary for Dummies if you have | |
| 1294 | −the s/390 principles of operation available read this instead. If nothing else you may find a few | |
| 1295 | −useful keywords in here & be able to use them on a web search engine like altavista to find | |
| 1296 | −more useful information. | |
| 1296 | +I am not going to give a course in 390 IO architecture as this would take me | |
| 1297 | +quite a while and I'm no expert. Instead I'll give a 390 IO architecture | |
| 1298 | +summary for Dummies. If you have the s/390 principles of operation available | |
| 1299 | +read this instead. If nothing else you may find a few useful keywords in here | |
| 1300 | +and be able to use them on a web search engine to find more useful information. | |
| 1297 | 1301 | |
| 1298 | 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, | |
| 1300 | −also S390 can support up to 65536 devices while a high end PC based system might be choking | |
| 1301 | −with around 64. Here is some of the common IO terminology | |
| 1303 | +fibre optics and devices such as tapes and disks can be shared between several | |
| 1304 | +mainframes. Also S390 can support up to 65536 devices while a high end PC based | |
| 1305 | +system might be choking with around 64. | |
| 1302 | 1306 | |
| 1303 | −Subchannel: | |
| 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. | |
| 1307 | +Here is some of the common IO terminology: | |
| 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 | 1324 | Device Number: |
| 1317 | −This number remains static & Is closely tied to the hardware, there are 65536 of these | |
| 1318 | −also they are made up of a CHPID ( Channel Path ID, the most significant 8 bits ) | |
| 1319 | −& another lsb 8 bits. These remain static even if more devices are inserted or removed | |
| 1320 | −from the hardware, there is a 1 to 1 mapping between Subchannels & Device Numbers provided | |
| 1321 | −devices aren't inserted or removed. | |
| 1325 | +This number remains static and is closely tied to the hardware. There are 65536 | |
| 1326 | +of these, made up of a CHPID (Channel Path ID, the most significant 8 bits) and | |
| 1327 | +another lsb 8 bits. These remain static even if more devices are inserted or | |
| 1328 | +removed from the hardware. There is a 1 to 1 mapping between subchannels and | |
| 1329 | +device numbers, provided devices aren't inserted or removed. | |
| 1322 | 1330 | |
| 1323 | 1331 | Channel Control Words: |
| 1324 | −CCWS are linked lists of instructions initially pointed to by an operation request block (ORB), | |
| 1325 | −which is initially given to Start Subchannel (SSCH) command along with the subchannel number | |
| 1326 | −for the IO subsystem to process while the CPU continues executing normal code. | |
| 1327 | −These come in two flavours, Format 0 ( 24 bit for backward ) | |
| 1328 | −compatibility & Format 1 ( 31 bit ). These are typically used to issue read & write | |
| 1329 | −( & many other instructions ) they consist of a length field & an absolute address field. | |
| 1330 | −For each IO typically get 1 or 2 interrupts one for channel end ( primary status ) when the | |
| 1331 | −channel is idle & the second for device end ( secondary status ) sometimes you get both | |
| 1332 | −concurrently, you check how the IO went on by issuing a TEST SUBCHANNEL at each interrupt, | |
| 1333 | −from which you receive an Interruption response block (IRB). If you get channel & device end | |
| 1334 | −status in the IRB without channel checks etc. your IO probably went okay. If you didn't you | |
| 1335 | −probably need a doctor to examine the IRB & extended status word etc. | |
| 1332 | +CCWs are linked lists of instructions initially pointed to by an operation | |
| 1333 | +request block (ORB), which is initially given to Start Subchannel (SSCH) | |
| 1334 | +command along with the subchannel number for the IO subsystem to process | |
| 1335 | +while the CPU continues executing normal code. | |
| 1336 | +CCWs come in two flavours, Format 0 (24 bit for backward compatibility) and | |
| 1337 | +Format 1 (31 bit). These are typically used to issue read and write (and many | |
| 1338 | +other) instructions. They consist of a length field and an absolute address | |
| 1339 | +field. | |
| 1340 | +Each IO typically gets 1 or 2 interrupts, one for channel end (primary status) | |
| 1341 | +when the channel is idle, and the second for device end (secondary status). | |
| 1342 | +Sometimes you get both concurrently. You check how the IO went on by issuing a | |
| 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 | 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 | |
| 1338 | −be presented in the Extended status word in the IRB if not you have to issue a | |
| 1339 | −subsequent SENSE CCW command after the test subchannel. | |
| 1348 | +concurrent sense. This means that if an error occurs Extended sense information | |
| 1349 | +will be presented in the Extended status word in the IRB. If not you have to | |
| 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 | |
| 1343 | −systems it isn't recommended except for checking special cases ( i.e. non looping checks for | |
| 1344 | −pending IO etc. ). | |
| 1353 | +TPI (Test pending interrupt) can also be used for polled IO, but in | |
| 1354 | +multitasking multiprocessor systems it isn't recommended except for | |
| 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 | |
| 1347 | −of a subchannel ( e.g. channel paths ). | |
| 1357 | +Store Subchannel and Modify Subchannel can be used to examine and modify | |
| 1358 | +operating characteristics of a subchannel (e.g. channel paths). | |
| 1348 | 1359 | |
| 1349 | 1360 | Other IO related Terms: |
| 1350 | 1361 | Sysplex: S390's Clustering Technology |
| 1351 | −QDIO: S390's new high speed IO architecture to support devices such as gigabit ethernet, | |
| 1352 | −this architecture is also designed to be forward compatible with up & coming 64 bit machines. | |
| 1362 | +QDIO: S390's new high speed IO architecture to support devices such as gigabit | |
| 1363 | +ethernet, this architecture is also designed to be forward compatible with | |
| 1364 | +upcoming 64 bit machines. | |
| 1353 | 1365 | |
| 1354 | 1366 | |
| 1355 | 1367 | General Concepts |
| @@ -1406,37 +1418,40 @@ sometimes called Bus-and Tag & sometimes Original Equipment Manufacturers · 50 unmodified lines | ||
| 1406 | 1418 | Interface (OEMI). |
| 1407 | 1419 | |
| 1408 | 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 | |
| 1410 | −sharing between several slow devices or burst mode & monopolize the channel for the | |
| 1411 | −whole burst. Up to 256 devices can be addressed on one of these cables. These cables are | |
| 1412 | −about one inch in diameter. The maximum unextended length supported by these cables is | |
| 1413 | −125 Meters but this can be extended up to 2km with a fibre optic channel extended | |
| 1414 | −such as a 3044. The maximum burst speed supported is 4.5 megabytes per second however | |
| 1415 | −some really old processors support only transfer rates of 3.0, 2.0 & 1.0 MB/sec. | |
| 1421 | +and control lines on the "Tag" cable. These can operate in byte multiplex mode | |
| 1422 | +for sharing between several slow devices or burst mode and monopolize the | |
| 1423 | +channel for the whole burst. Up to 256 devices can be addressed on one of these | |
| 1424 | +cables. These cables are about one inch in diameter. The maximum unextended | |
| 1425 | +length supported by these cables is 125 Meters but this can be extended up to | |
| 1426 | +2km with a fibre optic channel extended such as a 3044. The maximum burst speed | |
| 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 | 1429 | One of these paths can be daisy chained to up to 8 control units. |
| 1417 | 1430 | |
| 1418 | 1431 | |
| 1419 | 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 | |
| 1421 | −for communication at a signaling rate of up to 200 megabits/sec. As 10bits are transferred | |
| 1422 | −for every 8 bits info this drops to 160 megabits/sec & to 18.6 Megabytes/sec once | |
| 1423 | −control info & CRC are added. ESCON only operates in burst mode. | |
| 1433 | +Was introduced by IBM in 1990. Has 2 fibre optic cables and uses either leds or | |
| 1434 | +lasers for communication at a signaling rate of up to 200 megabits/sec. As | |
| 1435 | +10bits are transferred for every 8 bits info this drops to 160 megabits/sec | |
| 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 | |
| 1426 | −known as XDF ( extended distance facility ). This can be further extended by using an | |
| 1427 | −ESCON director which triples the above mentioned ranges. Unlike Bus & Tag as ESCON is | |
| 1428 | −serial it uses a packet switching architecture the standard Bus & Tag control protocol | |
| 1429 | −is however present within the packets. Up to 256 devices can be attached to each control | |
| 1430 | −unit that uses one of these interfaces. | |
| 1439 | +ESCONs typical max cable length is 3km for the led version and 20km for the | |
| 1440 | +laser version known as XDF (extended distance facility). This can be further | |
| 1441 | +extended by using an ESCON director which triples the above mentioned ranges. | |
| 1442 | +Unlike Bus & Tag as ESCON is serial it uses a packet switching architecture, | |
| 1443 | +the standard Bus & Tag control protocol is however present within the packets. | |
| 1444 | +Up to 256 devices can be attached to each control unit that uses one of these | |
| 1445 | +interfaces. | |
| 1431 | 1446 | |
| 1432 | 1447 | Common 390 Devices include: |
| 1433 | 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 | 1450 | DASD's direct access storage devices ( otherwise known as hard disks ). |
| 1436 | 1451 | Tape Drives. |
| 1437 | 1452 | CTC ( Channel to Channel Adapters ), |
| 1438 | 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 | 1457 | Debugging IO on s/390 & z/Architecture under VM |
| @@ -1475,9 +1490,9 @@ or the halt subchannels · 32 unmodified lines | ||
| 1475 | 1490 | or TR HSCH 7C08-7C09 |
| 1476 | 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 | |
| 1479 | −VM guest so he can ftp the logfile back to his own machine.I'll do a small bit of this & give you | |
| 1480 | − a look at the output. | |
| 1493 | +A good trick is tracing all the IO's and CCWS and spooling them into the reader | |
| 1494 | +of another VM guest so he can ftp the logfile back to his own machine. I'll do | |
| 1495 | +a small bit of this and give you a look at the output. | |
| 1481 | 1496 | |
| 1482 | 1497 | 1) Spool stdout to VM reader |
| 1483 | 1498 | SP PRT TO (another vm guest ) or * for the local vm guest |
| @@ -1593,8 +1608,8 @@ undisplay : undo's display's · 109 unmodified lines | ||
| 1593 | 1608 | |
| 1594 | 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 | |
| 1597 | −stacktrace by hand below ). | |
| 1611 | +info stack: shows stack back trace (if this doesn't work too well, I'll show | |
| 1612 | +you the stacktrace by hand below). | |
| 1598 | 1613 | |
| 1599 | 1614 | info locals: displays local variables. |
| 1600 | 1615 | |
| @@ -1619,7 +1634,8 @@ next: like step except this will not step into subroutines · 18 unmodified lines | ||
| 1619 | 1634 | stepi: steps a single machine code instruction. |
| 1620 | 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 | 1640 | finish: will run until exit of the current routine |
| 1625 | 1641 | |
| @@ -1721,7 +1737,8 @@ e.g. · 95 unmodified lines | ||
| 1721 | 1737 | outputs: |
| 1722 | 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 | 1742 | (gdb) call fflush(stdout) |
| 1726 | 1743 | hello world$2 = 0 |
| 1727 | 1744 | As an aside the debugger also calls malloc & free under the hood |
| @@ -1804,26 +1821,17 @@ man gdb or info gdb. · 76 unmodified lines | ||
| 1804 | 1821 | core dumps |
| 1805 | 1822 | ---------- |
| 1806 | 1823 | What a core dump ?, |
| 1807 | −A core dump is a file generated by the kernel ( if allowed ) which contains the registers, | |
| 1808 | −& 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 | |
| 1810 | −program as if it just crashed on your system, it is usually called core & created in the | |
| 1811 | −current working directory. | |
| 1812 | −This is very useful in that a customer can mail a core dump to a technical support department | |
| 1813 | −& the technical support department can reconstruct what happened. | |
| 1814 | −Provided they have an identical copy of this program with debugging symbols compiled in & | |
| 1815 | −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. | |
| 1817 | − | |
| 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 | − | |
| 1824 | +A core dump is a file generated by the kernel (if allowed) which contains the | |
| 1825 | +registers and all active pages of the program which has crashed. | |
| 1826 | +From this file gdb will allow you to look at the registers, stack trace and | |
| 1827 | +memory of the program as if it just crashed on your system. It is usually | |
| 1828 | +called core and created in the current working directory. | |
| 1829 | +This is very useful in that a customer can mail a core dump to a technical | |
| 1830 | +support department and the technical support department can reconstruct what | |
| 1831 | +happened. Provided they have an identical copy of this program with debugging | |
| 1832 | +symbols compiled in and the source base of this build is available. | |
| 1833 | +In short it is far more useful than something like a crash log could ever hope | |
| 1834 | +to be. | |
| 1827 | 1835 | |
| 1828 | 1836 | Why have I never seen one ?. |
| 1829 | 1837 | Probably because you haven't used the command |
| @@ -1868,7 +1876,7 @@ Breakpoint 2 at 0x4d87a4: file top.c, line 2609. · 38 unmodified lines | ||
| 1868 | 1876 | #3 0x5167e6 in readline_internal_char () at readline.c:454 |
| 1869 | 1877 | #4 0x5168ee in readline_internal_charloop () at readline.c:507 |
| 1870 | 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 | 1880 | at readline.c:349 |
| 1873 | 1881 | #7 0x4d7a8a in command_line_input (prompt=0x564420 "(gdb) ", repeat=1, |
| 1874 | 1882 | annotation_suffix=0x4d6b44 "prompt") at top.c:2091 |
| @@ -1929,8 +1937,8 @@ cat /proc/sys/net/ipv4/ip_forward · 54 unmodified lines | ||
| 1929 | 1937 | On my machine now outputs |
| 1930 | 1938 | 1 |
| 1931 | 1939 | IP forwarding is on. |
| 1932 | −There is a lot of useful info in here best found by going in & having a look around, | |
| 1933 | −so I'll take you through some entries I consider important. | |
| 1940 | +There is a lot of useful info in here best found by going in and having a look | |
| 1941 | +around, so I'll take you through some entries I consider important. | |
| 1934 | 1942 | |
| 1935 | 1943 | All the processes running on the machine have their own entry defined by |
| 1936 | 1944 | /proc/<pid> |
| @@ -2060,7 +2068,8 @@ if the device doesn't say up · 123 unmodified lines | ||
| 2060 | 2068 | try |
| 2061 | 2069 | /etc/rc.d/init.d/network start |
| 2062 | 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 | 2073 | Now ping the device from a machine in the same subnet. |
| 2065 | 2074 | if the RX packets count & TX packets counts don't increment you probably |
| 2066 | 2075 | have problems. |
| @@ -2086,34 +2095,6 @@ of the device. · 19 unmodified lines | ||
| 2086 | 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 | 2098 | SysRq |
| 2118 | 2099 | ===== |
| 2119 | 2100 | This is now supported by linux for s/390 & z/Architecture. |
| @@ -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. | |
| @@ -323,8 +323,6 @@ about the status of the key service: · 322 unmodified lines | ||
| 323 | 323 | U Under construction by callback to userspace |
| 324 | 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 | 327 | (*) /proc/key-users |
| 330 | 328 | |
| @@ -32,18 +32,42 @@ Procedure for submitting patches to the -stable tree: · 31 unmodified lines | ||
| 32 | 32 | - If the patch covers files in net/ or drivers/net please follow netdev stable |
| 33 | 33 | submission guidelines as described in |
| 34 | 34 | Documentation/networking/netdev-FAQ.txt |
| 35 | − - Send the patch, after verifying that it follows the above rules, to | |
| 36 | − stable@vger.kernel.org. You must note the upstream commit ID in the | |
| 37 | − changelog of your submission, as well as the kernel version you wish | |
| 38 | − it to be applied to. | |
| 39 | − - To have the patch automatically included in the stable tree, add the tag | |
| 35 | + - Security patches should not be handled (solely) by the -stable review | |
| 36 | + process but should follow the procedures in Documentation/SecurityBugs. | |
| 37 | + | |
| 38 | +For all other submissions, choose one of the following procedures: | |
| 39 | + | |
| 40 | + --- Option 1 --- | |
| 41 | + | |
| 42 | + To have the patch automatically included in the stable tree, add the tag | |
| 40 | 43 | Cc: stable@vger.kernel.org |
| 41 | 44 | in the sign-off area. Once the patch is merged it will be applied to |
| 42 | 45 | the stable tree without anything else needing to be done by the author |
| 43 | 46 | or subsystem maintainer. |
| 44 | − - If the patch requires other patches as prerequisites which can be | |
| 45 | − cherry-picked, then this can be specified in the following format in | |
| 46 | − the sign-off area: | |
| 47 | + | |
| 48 | + --- Option 2 --- | |
| 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 | 72 | Cc: <stable@vger.kernel.org> # 3.3.x: a1f84a3: sched: Check for idle |
| 49 | 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: · 7 unmodified lines | ||
| 57 | 81 | git cherry-pick fd21073 |
| 58 | 82 | git cherry-pick <this commit> |
| 59 | 83 | |
| 84 | +Following the submission: | |
| 85 | + | |
| 60 | 86 | - The sender will receive an ACK when the patch has been accepted into the |
| 61 | 87 | queue, or a NAK if the patch is rejected. This response might take a few |
| 62 | 88 | days, according to the developer's schedules. |
| 63 | 89 | - If accepted, the patch will be added to the -stable queue, for review by |
| 64 | 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 | 93 | Review cycle: |
| @@ -843,6 +843,7 @@ can be ORed together: · 842 unmodified lines | ||
| 843 | 843 | 8192 - An unsigned module has been loaded in a kernel supporting module |
| 844 | 844 | signature. |
| 845 | 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 | |
| @@ -97,6 +97,14 @@ rmem_max · 96 unmodified lines | ||
| 97 | 97 | |
| 98 | 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 | 108 | wmem_default |
| 101 | 109 | ------------ |
| 102 | 110 | |
| @@ -555,12 +555,12 @@ this is causing problems for your system/application. · 554 unmodified lines | ||
| 555 | 555 | |
| 556 | 556 | oom_dump_tasks |
| 557 | 557 | |
| 558 | −Enables a system-wide task dump (excluding kernel threads) to be | |
| 559 | −produced when the kernel performs an OOM-killing and includes such | |
| 560 | −information as pid, uid, tgid, vm size, rss, nr_ptes, swapents, | |
| 561 | −oom_score_adj score, and name. This is helpful to determine why the | |
| 562 | −OOM killer was invoked, to identify the rogue task that caused it, | |
| 563 | −and to determine why the OOM killer chose the task it did to kill. | |
| 558 | +Enables a system-wide task dump (excluding kernel threads) to be produced | |
| 559 | +when the kernel performs an OOM-killing and includes such information as | |
| 560 | +pid, uid, tgid, vm size, rss, nr_ptes, nr_pmds, swapents, oom_score_adj | |
| 561 | +score, and name. This is helpful to determine why the OOM killer was | |
| 562 | +invoked, to identify the rogue task that caused it, and to determine why | |
| 563 | +the OOM killer chose the task it did to kill. | |
| 564 | 564 | |
| 565 | 565 | If this is set to zero, this information is suppressed. On very |
| 566 | 566 | large systems with thousands of tasks it may not be feasible to dump |
| @@ -728,7 +728,7 @@ The default value is 60. · 161 unmodified lines | ||
| 728 | 728 | |
| 729 | 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 | 732 | min(3% of current process size, user_reserve_kbytes) of free memory. |
| 733 | 733 | This is intended to prevent a user from starting a single memory hogging |
| 734 | 734 | process, such that they cannot recover (kill the hog). |
| @@ -46,7 +46,7 @@ At typical coresight system would look like this: · 45 unmodified lines | ||
| 46 | 46 | | | . | ! | | . | ! | ! . | | SWD/ |
| 47 | 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: · 26 unmodified lines | ||
| 79 | 79 | To trace port TPIU= Trace Port Interface Unit |
| 80 | 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 | 83 | all trace data are carried out-of-band on the ATB bus. The CTM provides |
| 84 | 84 | a way to aggregate and distribute signals between CoreSight components. |
| 85 | 85 | |
| @@ -1740,7 +1740,7 @@ no pid · 1739 unmodified lines | ||
| 1740 | 1740 | yum-updatesd-3111 [003] 1637.254683: lock_hrtimer_base <-hrtimer_try_to_cancel |
| 1741 | 1741 | yum-updatesd-3111 [003] 1637.254685: fget_light <-do_sys_poll |
| 1742 | 1742 | yum-updatesd-3111 [003] 1637.254686: pipe_poll <-do_sys_poll |
| 1743 | −# echo -1 > set_ftrace_pid | |
| 1743 | +# echo > set_ftrace_pid | |
| 1744 | 1744 | # cat trace |head |
| 1745 | 1745 | # tracer: function |
| 1746 | 1746 | # |
| @@ -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 | |
| @@ -236,8 +236,12 @@ I: If#= 0 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=serial · 235 unmodified lines | ||
| 236 | 236 | E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms |
| 237 | 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 | |
| 240 | −configure it to recognize the gadget serial device, like this: | |
| 239 | +You must load the usbserial driver and explicitly set its parameters | |
| 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 | 246 | modprobe usbserial vendor=0x0525 product=0xA4A6 |
| 243 | 247 | |
| @@ -72,7 +72,7 @@ to listen on a single bus, otherwise, to listen on all buses, type: · 71 unmodified lines | ||
| 72 | 72 | |
| 73 | 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 | 76 | redirected to a desirable location. This is preferred, because it is going |
| 77 | 77 | to be quite long. |
| 78 | 78 | |
| @@ -231,7 +231,7 @@ number. Number zero (/dev/usbmon0) is special and means "all buses". · 152 unmodified lines | ||
| 231 | 231 | Note that specific naming policy is set by your Linux distribution. |
| 232 | 232 | |
| 233 | 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 | 235 | keyboard traffic. |
| 236 | 236 | |
| 237 | 237 | The following ioctl calls are available, with MON_IOC_MAGIC 0x92: |
| @@ -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 | − | |
| @@ -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 | − | |
| @@ -793,8 +793,10 @@ video_register_device_no_warn() instead. · 792 unmodified lines | ||
| 793 | 793 | |
| 794 | 794 | Whenever a device node is created some attributes are also created for you. |
| 795 | 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 | |
| 797 | −is the 'name' field of the video_device struct. | |
| 796 | +video0 and you will see 'name', 'debug' and 'index' attributes. The 'name' | |
| 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 | 801 | The 'index' attribute is the index of the device node: for each call to |
| 800 | 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 · 15 unmodified lines | ||
| 816 | 818 | be called if the registration failed, nor should you ever attempt to |
| 817 | 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 | 841 | video_device cleanup |
| 821 | 842 | -------------------- |
| @@ -42,7 +42,6 @@ · 41 unmodified lines | ||
| 42 | 42 | MODULE_DESCRIPTION("V4L2 PCI Skeleton Driver"); |
| 43 | 43 | MODULE_AUTHOR("Hans Verkuil"); |
| 44 | 44 | MODULE_LICENSE("GPL v2"); |
| 45 | −MODULE_DEVICE_TABLE(pci, skeleton_pci_tbl); | |
| 46 | 45 | |
| 47 | 46 | /** |
| 48 | 47 | * struct skeleton - All internal data for one instance of device |
| @@ -95,6 +94,7 @@ static const struct pci_device_id skeleton_pci_tbl[] = { · 46 unmodified lines | ||
| 95 | 94 | /* { PCI_DEVICE(PCI_VENDOR_ID_, PCI_DEVICE_ID_) }, */ |
| 96 | 95 | { 0, } |
| 97 | 96 | }; |
| 97 | +MODULE_DEVICE_TABLE(pci, skeleton_pci_tbl); | |
| 98 | 98 | |
| 99 | 99 | /* |
| 100 | 100 | * HDTV: this structure has the capabilities of the HDTV receiver. |
| @@ -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 | |
| @@ -2,6 +2,9 @@ Virtualization support in the Linux kernel. · 1 unmodified line | ||
| 2 | 2 | |
| 3 | 3 | 00-INDEX |
| 4 | 4 | - this file. |
| 5 | + | |
| 6 | +paravirt_ops.txt | |
| 7 | + - Describes the Linux kernel pv_ops to support different hypervisors | |
| 5 | 8 | kvm/ |
| 6 | 9 | - Kernel Virtual Machine. See also http://linux-kvm.org |
| 7 | 10 | uml/ |
| @@ -612,11 +612,14 @@ Type: vm ioctl · 611 unmodified lines | ||
| 612 | 612 | Parameters: none |
| 613 | 613 | Returns: 0 on success, -1 on error |
| 614 | 614 | |
| 615 | −Creates an interrupt controller model in the kernel. On x86, creates a virtual | |
| 616 | −ioapic, a virtual PIC (two PICs, nested), and sets up future vcpus to have a | |
| 617 | −local APIC. IRQ routing for GSIs 0-15 is set to both PIC and IOAPIC; GSI 16-23 | |
| 618 | −only go to the IOAPIC. On ARM/arm64, a GIC is | |
| 619 | −created. On s390, a dummy irq routing table is created. | |
| 615 | +Creates an interrupt controller model in the kernel. | |
| 616 | +On x86, creates a virtual ioapic, a virtual PIC (two PICs, nested), and sets up | |
| 617 | +future vcpus to have a local APIC. IRQ routing for GSIs 0-15 is set to both | |
| 618 | +PIC and IOAPIC; GSI 16-23 only go to the IOAPIC. | |
| 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 | 624 | Note that on s390 the KVM_CAP_S390_IRQCHIP vm capability needs to be enabled |
| 622 | 625 | before KVM_CREATE_IRQCHIP can be used. |
| @@ -2312,7 +2315,7 @@ struct kvm_s390_interrupt { · 1689 unmodified lines | ||
| 2312 | 2315 | |
| 2313 | 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 | 2319 | KVM_S390_PROGRAM_INT (vcpu) - program check; code in parm |
| 2317 | 2320 | KVM_S390_SIGP_SET_PREFIX (vcpu) - sigp set prefix; prefix address in parm |
| 2318 | 2321 | KVM_S390_RESTART (vcpu) - restart |
| @@ -3225,3 +3228,23 @@ userspace from doing that. · 906 unmodified lines | ||
| 3225 | 3228 | If the hcall number specified is not one that has an in-kernel |
| 3226 | 3229 | implementation, the KVM_ENABLE_CAP ioctl will fail with an EINVAL |
| 3227 | 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). | |
| @@ -3,22 +3,42 @@ ARM Virtual Generic Interrupt Controller (VGIC) · 2 unmodified lines | ||
| 3 | 3 | |
| 4 | 4 | Device types supported: |
| 5 | 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 | 8 | Only one VGIC instance may be instantiated through either this API or the |
| 8 | 9 | legacy KVM_CREATE_IRQCHIP api. The created VGIC will act as the VM interrupt |
| 9 | 10 | controller, requiring emulated user-space devices to inject interrupts to the |
| 10 | 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 | 17 | Groups: |
| 13 | 18 | KVM_DEV_ARM_VGIC_GRP_ADDR |
| 14 | 19 | Attributes: |
| 15 | 20 | KVM_VGIC_V2_ADDR_TYPE_DIST (rw, 64-bit) |
| 16 | 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 | 25 | KVM_VGIC_V2_ADDR_TYPE_CPU (rw, 64-bit) |
| 20 | 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 | 43 | KVM_DEV_ARM_VGIC_GRP_DIST_REGS |
| 24 | 44 | Attributes: |
| @@ -36,6 +56,7 @@ Groups: · 11 unmodified lines | ||
| 36 | 56 | the register. |
| 37 | 57 | Limitations: |
| 38 | 58 | - Priorities are not implemented, and registers are RAZ/WI |
| 59 | + - Currently only implemented for KVM_DEV_TYPE_ARM_VGIC_V2. | |
| 39 | 60 | Errors: |
| 40 | 61 | -ENODEV: Getting or setting this register is not yet supported |
| 41 | 62 | -EBUSY: One or more VCPUs are running |
| @@ -68,6 +89,7 @@ Groups: · 26 unmodified lines | ||
| 68 | 89 | |
| 69 | 90 | Limitations: |
| 70 | 91 | - Priorities are not implemented, and registers are RAZ/WI |
| 92 | + - Currently only implemented for KVM_DEV_TYPE_ARM_VGIC_V2. | |
| 71 | 93 | Errors: |
| 72 | 94 | -ENODEV: Getting or setting this register is not yet supported |
| 73 | 95 | -EBUSY: One or more VCPUs are running |
| @@ -81,3 +103,14 @@ Groups: · 7 unmodified lines | ||
| 81 | 103 | -EINVAL: Value set is out of the expected range |
| 82 | 104 | -EBUSY: Value has already be set, or GIC has already been initialized |
| 83 | 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 | |
| @@ -24,3 +24,62 @@ Returns: 0 · 23 unmodified lines | ||
| 24 | 24 | |
| 25 | 25 | Clear the CMMA status for all guest pages, so any pages the guest marked |
| 26 | 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 | |
| @@ -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. | |
| @@ -85,7 +85,7 @@ lock the page to ensure serial behavior. · 84 unmodified lines | ||
| 85 | 85 | CLEANCACHE PERFORMANCE METRICS |
| 86 | 86 | |
| 87 | 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 | 89 | can be measured (across all filesystems) with: |
| 90 | 90 | |
| 91 | 91 | succ_gets - number of gets that were successful |
| @@ -62,6 +62,8 @@ There are three components to pagemap: · 61 unmodified lines | ||
| 62 | 62 | 20. NOPAGE |
| 63 | 63 | 21. KSM |
| 64 | 64 | 22. THP |
| 65 | + 23. BALLOON | |
| 66 | + 24. ZERO_PAGE | |
| 65 | 67 | |
| 66 | 68 | Short descriptions to the page flags: |
| 67 | 69 | |
| @@ -102,6 +104,12 @@ Short descriptions to the page flags: · 34 unmodified lines | ||
| 102 | 104 | 22. THP |
| 103 | 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 | 113 | [IO related page flags] |
| 106 | 114 | 1. ERROR IO error occurred |
| 107 | 115 | 3. UPTODATE page has up-to-date data |
| @@ -18,10 +18,9 @@ on 32-bit systems to map files bigger than can linearly fit into 32-bit · 17 unmodified lines | ||
| 18 | 18 | virtual address space. This use-case is not critical anymore since 64-bit |
| 19 | 19 | systems are widely available. |
| 20 | 20 | |
| 21 | −The plan is to deprecate the syscall and replace it with an emulation. | |
| 22 | −The emulation will create new VMAs instead of nonlinear mappings. It's | |
| 23 | −going to work slower for rare users of remap_file_pages() but ABI is | |
| 24 | −preserved. | |
| 21 | +The syscall is deprecated and replaced it with an emulation now. The | |
| 22 | +emulation creates new VMAs instead of nonlinear mappings. It's going to | |
| 23 | +work slower for rare users of remap_file_pages() but ABI is preserved. | |
| 25 | 24 | |
| 26 | 25 | One side effect of emulation (apart from performance) is that user can hit |
| 27 | 26 | vm.max_map_count limit more easily due to additional VMAs. See comment for |
| @@ -12,6 +12,8 @@ ffffc90000000000 - ffffe8ffffffffff (=45 bits) vmalloc/ioremap space · 11 unmodified lines | ||
| 12 | 12 | ffffe90000000000 - ffffe9ffffffffff (=40 bits) hole |
| 13 | 13 | ffffea0000000000 - ffffeaffffffffff (=40 bits) virtual memory map (1TB) |
| 14 | 14 | ... unused hole ... |
| 15 | +ffffec0000000000 - fffffc0000000000 (=44 bits) kasan shadow memory (16TB) | |
| 16 | +... unused hole ... | |
| 15 | 17 | ffffff0000000000 - ffffff7fffffffff (=39 bits) %esp fixup stacks |
| 16 | 18 | ... unused hole ... |
| 17 | 19 | ffffffff80000000 - ffffffffa0000000 (=512 MB) kernel text mapping, from phys 0 |
| @@ -3,7 +3,7 @@ protocol of kernel. These should be filled by bootloader or 16-bit · 2 unmodified lines | ||
| 3 | 3 | real-mode setup code of the kernel. References/settings to it mainly |
| 4 | 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 | 9 | Offset Proto Name Meaning |
| @@ -5,24 +5,23 @@ · 4 unmodified lines | ||
| 5 | 5 | # 2) Generate asm-offsets.h (may need bounds.h) |
| 6 | 6 | # 3) Check for missing system calls |
| 7 | 7 | |
| 8 | −##### | |
| 9 | −# 1) Generate bounds.h | |
| 10 | − | |
| 11 | −bounds-file := include/generated/bounds.h | |
| 12 | − | |
| 13 | −always := $(bounds-file) | |
| 14 | −targets := $(bounds-file) kernel/bounds.s | |
| 8 | +# Default sed regexp - multiline due to syntax constraints | |
| 9 | +define sed-y | |
| 10 | + "/^->/{s:->#\(.*\):/* \1 */:; \ | |
| 11 | + s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \ | |
| 12 | + s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \ | |
| 13 | + s:->::; p;}" | |
| 14 | +endef | |
| 15 | 15 | |
| 16 | −quiet_cmd_bounds = GEN $@ | |
| 17 | −define cmd_bounds | |
| 16 | +quiet_cmd_offsets = GEN $@ | |
| 17 | +define cmd_offsets | |
| 18 | 18 | (set -e; \ |
| 19 | − echo "#ifndef __LINUX_BOUNDS_H__"; \ | |
| 20 | − echo "#define __LINUX_BOUNDS_H__"; \ | |
| 19 | + echo "#ifndef $2"; \ | |
| 20 | + echo "#define $2"; \ | |
| 21 | 21 | echo "/*"; \ |
| 22 | 22 | echo " * DO NOT MODIFY."; \ |
| 23 | 23 | echo " *"; \ |
| 24 | 24 | echo " * This file was generated by Kbuild"; \ |
| 25 | − echo " *"; \ | |
| 26 | 25 | echo " */"; \ |
| 27 | 26 | echo ""; \ |
| 28 | 27 | sed -ne $(sed-y) $<; \ |
| @@ -30,6 +29,14 @@ define cmd_bounds · 1 unmodified line | ||
| 30 | 29 | echo "#endif" ) > $@ |
| 31 | 30 | endef |
| 32 | 31 | |
| 32 | +##### | |
| 33 | +# 1) Generate bounds.h | |
| 34 | + | |
| 35 | +bounds-file := include/generated/bounds.h | |
| 36 | + | |
| 37 | +always := $(bounds-file) | |
| 38 | +targets := $(bounds-file) kernel/bounds.s | |
| 39 | + | |
| 33 | 40 | # We use internal kbuild rules to avoid the "is up to date" message from make |
| 34 | 41 | kernel/bounds.s: kernel/bounds.c FORCE |
| 35 | 42 | $(Q)mkdir -p $(dir $@) |
| @@ -37,7 +44,7 @@ kernel/bounds.s: kernel/bounds.c FORCE · 1 unmodified line | ||
| 37 | 44 | |
| 38 | 45 | $(obj)/$(bounds-file): kernel/bounds.s Kbuild |
| 39 | 46 | $(Q)mkdir -p $(dir $@) |
| 40 | − $(call cmd,bounds) | |
| 47 | + $(call cmd,offsets,__LINUX_BOUNDS_H__) | |
| 41 | 48 | |
| 42 | 49 | ##### |
| 43 | 50 | # 2) Generate asm-offsets.h |
| @@ -49,32 +56,6 @@ always += $(offsets-file) · 5 unmodified lines | ||
| 49 | 56 | targets += $(offsets-file) |
| 50 | 57 | targets += arch/$(SRCARCH)/kernel/asm-offsets.s |
| 51 | 58 | |
| 52 | − | |
| 53 | −# Default sed regexp - multiline due to syntax constraints | |
| 54 | −define sed-y | |
| 55 | − "/^->/{s:->#\(.*\):/* \1 */:; \ | |
| 56 | − s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \ | |
| 57 | − s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \ | |
| 58 | − s:->::; p;}" | |
| 59 | −endef | |
| 60 | − | |
| 61 | −quiet_cmd_offsets = GEN $@ | |
| 62 | −define cmd_offsets | |
| 63 | − (set -e; \ | |
| 64 | − echo "#ifndef __ASM_OFFSETS_H__"; \ | |
| 65 | − echo "#define __ASM_OFFSETS_H__"; \ | |
| 66 | − echo "/*"; \ | |
| 67 | − echo " * DO NOT MODIFY."; \ | |
| 68 | − echo " *"; \ | |
| 69 | − echo " * This file was generated by Kbuild"; \ | |
| 70 | − echo " *"; \ | |
| 71 | − echo " */"; \ | |
| 72 | − echo ""; \ | |
| 73 | − sed -ne $(sed-y) $<; \ | |
| 74 | − echo ""; \ | |
| 75 | − echo "#endif" ) > $@ | |
| 76 | −endef | |
| 77 | − | |
| 78 | 59 | # We use internal kbuild rules to avoid the "is up to date" message from make |
| 79 | 60 | arch/$(SRCARCH)/kernel/asm-offsets.s: arch/$(SRCARCH)/kernel/asm-offsets.c \ |
| 80 | 61 | $(obj)/$(bounds-file) FORCE |
| @@ -82,7 +63,7 @@ arch/$(SRCARCH)/kernel/asm-offsets.s: arch/$(SRCARCH)/kernel/asm-offsets.c \ · 1 unmodified line | ||
| 82 | 63 | $(call if_changed_dep,cc_s_c) |
| 83 | 64 | |
| 84 | 65 | $(obj)/$(offsets-file): arch/$(SRCARCH)/kernel/asm-offsets.s Kbuild |
| 85 | − $(call cmd,offsets) | |
| 66 | + $(call cmd,offsets,__ASM_OFFSETS_H__) | |
| 86 | 67 | |
| 87 | 68 | ##### |
| 88 | 69 | # 3) Check for missing system calls |
| @@ -34,7 +34,7 @@ trivial patch so apply some common sense. · 33 unmodified lines | ||
| 34 | 34 | generalized kernel feature ready for next time. |
| 35 | 35 | |
| 36 | 36 | PLEASE check your patch with the automated style checker |
| 37 | − (scripts/checkpatch.pl) to catch trival style violations. | |
| 37 | + (scripts/checkpatch.pl) to catch trivial style violations. | |
| 38 | 38 | See Documentation/CodingStyle for guidance here. |
| 39 | 39 | |
| 40 | 40 | PLEASE CC: the maintainers and mailing lists that are generated |
| @@ -270,12 +270,12 @@ F: drivers/acpi/ · 229 unmodified lines | ||
| 270 | 270 | F: drivers/pnp/pnpacpi/ |
| 271 | 271 | F: include/linux/acpi.h |
| 272 | 272 | F: include/acpi/ |
| 273 | −F: Documentation/acpi | |
| 273 | +F: Documentation/acpi/ | |
| 274 | 274 | F: Documentation/ABI/testing/sysfs-bus-acpi |
| 275 | 275 | F: drivers/pci/*acpi* |
| 276 | 276 | F: drivers/pci/*/*acpi* |
| 277 | 277 | F: drivers/pci/*/*/*acpi* |
| 278 | −F: tools/power/acpi | |
| 278 | +F: tools/power/acpi/ | |
| 279 | 279 | |
| 280 | 280 | ACPI COMPONENT ARCHITECTURE (ACPICA) |
| 281 | 281 | M: Robert Moore <robert.moore@intel.com> |
| @@ -563,6 +563,12 @@ S: Odd Fixes · 281 unmodified lines | ||
| 563 | 563 | L: linux-alpha@vger.kernel.org |
| 564 | 564 | F: arch/alpha/ |
| 565 | 565 | |
| 566 | +ALTERA MAILBOX DRIVER | |
| 567 | +M: Ley Foon Tan <lftan@altera.com> | |
| 568 | +L: nios2-dev@lists.rocketboards.org (moderated for non-subscribers) | |
| 569 | +S: Maintained | |
| 570 | +F: drivers/mailbox/mailbox-altera.c | |
| 571 | + | |
| 566 | 572 | ALTERA TRIPLE SPEED ETHERNET DRIVER |
| 567 | 573 | M: Vince Bridgers <vbridger@opensource.altera.com> |
| 568 | 574 | L: netdev@vger.kernel.org |
| @@ -624,6 +630,8 @@ L: dri-devel@lists.freedesktop.org · 55 unmodified lines | ||
| 624 | 630 | T: git git://people.freedesktop.org/~gabbayo/linux.git |
| 625 | 631 | S: Supported |
| 626 | 632 | F: drivers/gpu/drm/amd/amdkfd/ |
| 633 | +F: drivers/gpu/drm/amd/include/cik_structs.h | |
| 634 | +F: drivers/gpu/drm/amd/include/kgd_kfd_interface.h | |
| 627 | 635 | F: drivers/gpu/drm/radeon/radeon_kfd.c |
| 628 | 636 | F: drivers/gpu/drm/radeon/radeon_kfd.h |
| 629 | 637 | F: include/uapi/linux/kfd_ioctl.h |
| @@ -659,6 +667,13 @@ L: linux-media@vger.kernel.org · 29 unmodified lines | ||
| 659 | 667 | S: Maintained |
| 660 | 668 | F: drivers/media/i2c/ad9389b* |
| 661 | 669 | |
| 670 | +ANALOG DEVICES INC ADV7180 DRIVER | |
| 671 | +M: Lars-Peter Clausen <lars@metafoo.de> | |
| 672 | +L: linux-media@vger.kernel.org | |
| 673 | +W: http://ez.analog.com/community/linux-device-drivers | |
| 674 | +S: Supported | |
| 675 | +F: drivers/media/i2c/adv7180.c | |
| 676 | + | |
| 662 | 677 | ANALOG DEVICES INC ADV7511 DRIVER |
| 663 | 678 | M: Hans Verkuil <hans.verkuil@cisco.com> |
| 664 | 679 | L: linux-media@vger.kernel.org |
| @@ -880,6 +895,7 @@ F: arch/arm/boot/dts/at91*.dts · 215 unmodified lines | ||
| 880 | 895 | F: arch/arm/boot/dts/at91*.dtsi |
| 881 | 896 | F: arch/arm/boot/dts/sama*.dts |
| 882 | 897 | F: arch/arm/boot/dts/sama*.dtsi |
| 898 | +F: arch/arm/include/debug/at91.S | |
| 883 | 899 | |
| 884 | 900 | ARM/ATMEL AT91 Clock Support |
| 885 | 901 | M: Boris Brezillon <boris.brezillon@free-electrons.com> |
| @@ -961,7 +977,7 @@ S: Maintained · 75 unmodified lines | ||
| 961 | 977 | F: arch/arm/mach-prima2/ |
| 962 | 978 | F: drivers/clk/sirf/ |
| 963 | 979 | F: drivers/clocksource/timer-prima2.c |
| 964 | −F: drivers/clocksource/timer-marco.c | |
| 980 | +F: drivers/clocksource/timer-atlas7.c | |
| 965 | 981 | N: [^a-z]sirf |
| 966 | 982 | |
| 967 | 983 | ARM/EBSA110 MACHINE SUPPORT |
| @@ -1160,6 +1176,7 @@ M: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> · 192 unmodified lines | ||
| 1160 | 1176 | L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) |
| 1161 | 1177 | S: Maintained |
| 1162 | 1178 | F: arch/arm/mach-mvebu/ |
| 1179 | +F: drivers/rtc/armada38x-rtc | |
| 1163 | 1180 | |
| 1164 | 1181 | ARM/Marvell Berlin SoC support |
| 1165 | 1182 | M: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> |
| @@ -1293,10 +1310,13 @@ S: Maintained · 127 unmodified lines | ||
| 1293 | 1310 | |
| 1294 | 1311 | ARM/QUALCOMM SUPPORT |
| 1295 | 1312 | M: Kumar Gala <galak@codeaurora.org> |
| 1313 | +M: Andy Gross <agross@codeaurora.org> | |
| 1296 | 1314 | M: David Brown <davidb@codeaurora.org> |
| 1297 | 1315 | L: linux-arm-msm@vger.kernel.org |
| 1316 | +L: linux-soc@vger.kernel.org | |
| 1298 | 1317 | S: Maintained |
| 1299 | 1318 | F: arch/arm/mach-qcom/ |
| 1319 | +F: drivers/soc/qcom/ | |
| 1300 | 1320 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/galak/linux-qcom.git |
| 1301 | 1321 | |
| 1302 | 1322 | ARM/RADISYS ENP2611 MACHINE SUPPORT |
| @@ -1398,7 +1418,6 @@ F: arch/arm/configs/ape6evm_defconfig · 95 unmodified lines | ||
| 1398 | 1418 | F: arch/arm/configs/armadillo800eva_defconfig |
| 1399 | 1419 | F: arch/arm/configs/bockw_defconfig |
| 1400 | 1420 | F: arch/arm/configs/kzm9g_defconfig |
| 1401 | −F: arch/arm/configs/lager_defconfig | |
| 1402 | 1421 | F: arch/arm/configs/mackerel_defconfig |
| 1403 | 1422 | F: arch/arm/configs/marzen_defconfig |
| 1404 | 1423 | F: arch/arm/configs/shmobile_defconfig |
| @@ -1586,12 +1605,14 @@ N: xilinx · 181 unmodified lines | ||
| 1586 | 1605 | F: drivers/clocksource/cadence_ttc_timer.c |
| 1587 | 1606 | F: drivers/i2c/busses/i2c-cadence.c |
| 1588 | 1607 | F: drivers/mmc/host/sdhci-of-arasan.c |
| 1608 | +F: drivers/edac/synopsys_edac.c | |
| 1589 | 1609 | |
| 1590 | 1610 | ARM SMMU DRIVER |
| 1591 | 1611 | M: Will Deacon <will.deacon@arm.com> |
| 1592 | 1612 | L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) |
| 1593 | 1613 | S: Maintained |
| 1594 | 1614 | F: drivers/iommu/arm-smmu.c |
| 1615 | +F: drivers/iommu/io-pgtable-arm.c | |
| 1595 | 1616 | |
| 1596 | 1617 | ARM64 PORT (AARCH64 ARCHITECTURE) |
| 1597 | 1618 | M: Catalin Marinas <catalin.marinas@arm.com> |
| @@ -1660,7 +1681,6 @@ M: Jiri Slaby <jirislaby@gmail.com> · 62 unmodified lines | ||
| 1660 | 1681 | M: Nick Kossifidis <mickflemm@gmail.com> |
| 1661 | 1682 | M: "Luis R. Rodriguez" <mcgrof@do-not-panic.com> |
| 1662 | 1683 | L: linux-wireless@vger.kernel.org |
| 1663 | −L: ath5k-devel@lists.ath5k.org | |
| 1664 | 1684 | W: http://wireless.kernel.org/en/users/Drivers/ath5k |
| 1665 | 1685 | S: Maintained |
| 1666 | 1686 | F: drivers/net/wireless/ath/ath5k/ |
| @@ -2127,7 +2147,7 @@ F: arch/arm/boot/dts/bcm470* · 460 unmodified lines | ||
| 2127 | 2147 | BROADCOM BCM63XX ARM ARCHITECTURE |
| 2128 | 2148 | M: Florian Fainelli <f.fainelli@gmail.com> |
| 2129 | 2149 | L: linux-arm-kernel@lists.infradead.org |
| 2130 | −T: git git://git.github.com/brcm/linux.git | |
| 2150 | +T: git git://github.com/broadcom/arm-bcm63xx.git | |
| 2131 | 2151 | S: Maintained |
| 2132 | 2152 | F: arch/arm/mach-bcm/bcm63xx.c |
| 2133 | 2153 | F: arch/arm/include/debug/bcm63xx.S |
| @@ -2144,6 +2164,7 @@ M: Brian Norris <computersforpeace@gmail.com> · 10 unmodified lines | ||
| 2144 | 2164 | M: Gregory Fong <gregory.0xf0@gmail.com> |
| 2145 | 2165 | M: Florian Fainelli <f.fainelli@gmail.com> |
| 2146 | 2166 | L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) |
| 2167 | +T: git git://github.com/broadcom/stblinux.git | |
| 2147 | 2168 | S: Maintained |
| 2148 | 2169 | F: arch/arm/mach-bcm/*brcmstb* |
| 2149 | 2170 | F: arch/arm/boot/dts/bcm7*.dts* |
| @@ -2153,6 +2174,7 @@ BROADCOM BMIPS MIPS ARCHITECTURE · 3 unmodified lines | ||
| 2153 | 2174 | M: Kevin Cernekee <cernekee@gmail.com> |
| 2154 | 2175 | M: Florian Fainelli <f.fainelli@gmail.com> |
| 2155 | 2176 | L: linux-mips@linux-mips.org |
| 2177 | +T: git git://github.com/broadcom/stblinux.git | |
| 2156 | 2178 | S: Maintained |
| 2157 | 2179 | F: arch/mips/bmips/* |
| 2158 | 2180 | F: arch/mips/include/asm/mach-bmips/* |
| @@ -2195,7 +2217,7 @@ M: Ray Jui <rjui@broadcom.com> · 36 unmodified lines | ||
| 2195 | 2217 | M: Scott Branden <sbranden@broadcom.com> |
| 2196 | 2218 | L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) |
| 2197 | 2219 | L: bcm-kernel-feedback-list@broadcom.com |
| 2198 | −T: git git://git.github.com/brcm/linux.git | |
| 2220 | +T: git git://github.com/broadcom/cygnus-linux.git | |
| 2199 | 2221 | S: Maintained |
| 2200 | 2222 | N: iproc |
| 2201 | 2223 | N: cygnus |
| @@ -2384,6 +2406,12 @@ F: security/capability.c · 182 unmodified lines | ||
| 2384 | 2406 | F: security/commoncap.c |
| 2385 | 2407 | F: kernel/capability.c |
| 2386 | 2408 | |
| 2409 | +CAPELLA MICROSYSTEMS LIGHT SENSOR DRIVER | |
| 2410 | +M: Kevin Tsai <ktsai@capellamicro.com> | |
| 2411 | +S: Maintained | |
| 2412 | +F: drivers/iio/light/cm* | |
| 2413 | +F: Documentation/devicetree/bindings/i2c/trivial-devices.txt | |
| 2414 | + | |
| 2387 | 2415 | CC2520 IEEE-802.15.4 RADIO DRIVER |
| 2388 | 2416 | M: Varka Bhadram <varkabhadram@gmail.com> |
| 2389 | 2417 | L: linux-wpan@vger.kernel.org |
| @@ -2405,7 +2433,8 @@ F: arch/powerpc/oprofile/*cell* · 15 unmodified lines | ||
| 2405 | 2433 | F: arch/powerpc/platforms/cell/ |
| 2406 | 2434 | |
| 2407 | 2435 | CEPH DISTRIBUTED FILE SYSTEM CLIENT |
| 2408 | −M: Sage Weil <sage@inktank.com> | |
| 2436 | +M: Yan, Zheng <zyan@redhat.com> | |
| 2437 | +M: Sage Weil <sage@redhat.com> | |
| 2409 | 2438 | L: ceph-devel@vger.kernel.org |
| 2410 | 2439 | W: http://ceph.com/ |
| 2411 | 2440 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git |
| @@ -2942,6 +2971,12 @@ S: Supported · 530 unmodified lines | ||
| 2942 | 2971 | F: drivers/input/touchscreen/cyttsp* |
| 2943 | 2972 | F: include/linux/input/cyttsp.h |
| 2944 | 2973 | |
| 2974 | +DALLAS/MAXIM DS1685-FAMILY REAL TIME CLOCK | |
| 2975 | +M: Joshua Kinard <kumba@gentoo.org> | |
| 2976 | +S: Maintained | |
| 2977 | +F: drivers/rtc/rtc-ds1685.c | |
| 2978 | +F: include/linux/rtc/ds1685.h | |
| 2979 | + | |
| 2945 | 2980 | DAMA SLAVE for AX.25 |
| 2946 | 2981 | M: Joerg Reuter <jreuter@yaina.de> |
| 2947 | 2982 | W: http://yaina.de/jreuter/ |
| @@ -3018,6 +3053,7 @@ F: drivers/platform/x86/dell-laptop.c · 70 unmodified lines | ||
| 3018 | 3053 | |
| 3019 | 3054 | DELL LAPTOP SMM DRIVER |
| 3020 | 3055 | M: Guenter Roeck <linux@roeck-us.net> |
| 3056 | +S: Maintained | |
| 3021 | 3057 | F: drivers/char/i8k.c |
| 3022 | 3058 | F: include/uapi/linux/i8k.h |
| 3023 | 3059 | |
| @@ -3033,7 +3069,7 @@ S: Maintained · 9 unmodified lines | ||
| 3033 | 3069 | F: drivers/platform/x86/dell-wmi.c |
| 3034 | 3070 | |
| 3035 | 3071 | DESIGNWARE USB2 DRD IP DRIVER |
| 3036 | −M: Paul Zimmerman <paulz@synopsys.com> | |
| 3072 | +M: John Youn <johnyoun@synopsys.com> | |
| 3037 | 3073 | L: linux-usb@vger.kernel.org |
| 3038 | 3074 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git |
| 3039 | 3075 | S: Maintained |
| @@ -3129,6 +3165,12 @@ L: linux-i2c@vger.kernel.org · 89 unmodified lines | ||
| 3129 | 3165 | S: Maintained |
| 3130 | 3166 | F: drivers/i2c/busses/i2c-diolan-u2c.c |
| 3131 | 3167 | |
| 3168 | +DIRECT ACCESS (DAX) | |
| 3169 | +M: Matthew Wilcox <willy@linux.intel.com> | |
| 3170 | +L: linux-fsdevel@vger.kernel.org | |
| 3171 | +S: Supported | |
| 3172 | +F: fs/dax.c | |
| 3173 | + | |
| 3132 | 3174 | DIRECTORY NOTIFICATION (DNOTIFY) |
| 3133 | 3175 | M: Eric Paris <eparis@parisplace.org> |
| 3134 | 3176 | S: Maintained |
| @@ -3213,6 +3255,7 @@ F: Documentation/ · 78 unmodified lines | ||
| 3213 | 3255 | X: Documentation/ABI/ |
| 3214 | 3256 | X: Documentation/devicetree/ |
| 3215 | 3257 | X: Documentation/[a-z][a-z]_[A-Z][A-Z]/ |
| 3258 | +T: git git://git.lwn.net/linux-2.6.git docs-next | |
| 3216 | 3259 | |
| 3217 | 3260 | DOUBLETALK DRIVER |
| 3218 | 3261 | M: "James R. Van Zandt" <jrv@vanzandt.mv.com> |
| @@ -3472,6 +3515,14 @@ M: "Maciej W. Rozycki" <macro@linux-mips.org> · 253 unmodified lines | ||
| 3472 | 3515 | S: Maintained |
| 3473 | 3516 | F: drivers/tty/serial/dz.* |
| 3474 | 3517 | |
| 3518 | +E3X0 POWER BUTTON DRIVER | |
| 3519 | +M: Moritz Fischer <moritz.fischer@ettus.com> | |
| 3520 | +L: usrp-users@lists.ettus.com | |
| 3521 | +W: http://www.ettus.com | |
| 3522 | +S: Supported | |
| 3523 | +F: drivers/input/misc/e3x0-button.c | |
| 3524 | +F: Documentation/devicetree/bindings/input/e3x0-button.txt | |
| 3525 | + | |
| 3475 | 3526 | E4000 MEDIA DRIVER |
| 3476 | 3527 | M: Antti Palosaari <crope@iki.fi> |
| 3477 | 3528 | L: linux-media@vger.kernel.org |
| @@ -3513,6 +3564,8 @@ M: Borislav Petkov <bp@alien8.de> · 35 unmodified lines | ||
| 3513 | 3564 | M: Mauro Carvalho Chehab <mchehab@osg.samsung.com> |
| 3514 | 3565 | L: linux-edac@vger.kernel.org |
| 3515 | 3566 | W: bluesmoke.sourceforge.net |
| 3567 | +T: git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp.git#for-next | |
| 3568 | +T: git://git.kernel.org/pub/linux/kernel/git/mchehab/linux-edac.git#linux_next | |
| 3516 | 3569 | S: Supported |
| 3517 | 3570 | F: Documentation/edac.txt |
| 3518 | 3571 | F: drivers/edac/ |
| @@ -3877,8 +3930,14 @@ S: Supported · 358 unmodified lines | ||
| 3877 | 3930 | F: Documentation/fault-injection/ |
| 3878 | 3931 | F: lib/fault-inject.c |
| 3879 | 3932 | |
| 3933 | +FBTFT Framebuffer drivers | |
| 3934 | +M: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> | |
| 3935 | +M: Noralf Trønnes <noralf@tronnes.org> | |
| 3936 | +S: Maintained | |
| 3937 | +F: drivers/staging/fbtft/ | |
| 3938 | + | |
| 3880 | 3939 | FCOE SUBSYSTEM (libfc, libfcoe, fcoe) |
| 3881 | −M: Robert Love <robert.w.love@intel.com> | |
| 3940 | +M: Vasu Dev <vasu.dev@intel.com> | |
| 3882 | 3941 | L: fcoe-devel@open-fcoe.org |
| 3883 | 3942 | W: www.Open-FCoE.org |
| 3884 | 3943 | S: Supported |
| @@ -4034,6 +4093,12 @@ S: Maintained · 149 unmodified lines | ||
| 4034 | 4093 | F: include/linux/platform_data/video-imxfb.h |
| 4035 | 4094 | F: drivers/video/fbdev/imxfb.c |
| 4036 | 4095 | |
| 4096 | +FREESCALE QUAD SPI DRIVER | |
| 4097 | +M: Han Xu <han.xu@freescale.com> | |
| 4098 | +L: linux-mtd@lists.infradead.org | |
| 4099 | +S: Maintained | |
| 4100 | +F: drivers/mtd/spi-nor/fsl-quadspi.c | |
| 4101 | + | |
| 4037 | 4102 | FREESCALE SOC FS_ENET DRIVER |
| 4038 | 4103 | M: Pantelis Antoniou <pantelis.antoniou@gmail.com> |
| 4039 | 4104 | M: Vitaly Bordug <vbordug@ru.mvista.com> |
| @@ -4174,6 +4239,11 @@ W: http://www.icp-vortex.com/ · 134 unmodified lines | ||
| 4174 | 4239 | S: Supported |
| 4175 | 4240 | F: drivers/scsi/gdt* |
| 4176 | 4241 | |
| 4242 | +GDB KERNEL DEBUGGING HELPER SCRIPTS | |
| 4243 | +M: Jan Kiszka <jan.kiszka@siemens.com> | |
| 4244 | +S: Supported | |
| 4245 | +F: scripts/gdb/ | |
| 4246 | + | |
| 4177 | 4247 | GEMTEK FM RADIO RECEIVER DRIVER |
| 4178 | 4248 | M: Hans Verkuil <hverkuil@xs4all.nl> |
| 4179 | 4249 | L: linux-media@vger.kernel.org |
| @@ -4408,6 +4478,7 @@ F: include/linux/hwmon*.h · 228 unmodified lines | ||
| 4408 | 4478 | HARDWARE RANDOM NUMBER GENERATOR CORE |
| 4409 | 4479 | M: Matt Mackall <mpm@selenic.com> |
| 4410 | 4480 | M: Herbert Xu <herbert@gondor.apana.org.au> |
| 4481 | +L: linux-crypto@vger.kernel.org | |
| 4411 | 4482 | S: Odd fixes |
| 4412 | 4483 | F: Documentation/hw_random.txt |
| 4413 | 4484 | F: drivers/char/hw_random/ |
| @@ -4893,7 +4964,7 @@ F: drivers/ipack/ · 479 unmodified lines | ||
| 4893 | 4964 | |
| 4894 | 4965 | INTEGRITY MEASUREMENT ARCHITECTURE (IMA) |
| 4895 | 4966 | M: Mimi Zohar <zohar@linux.vnet.ibm.com> |
| 4896 | −M: Dmitry Kasatkin <d.kasatkin@samsung.com> | |
| 4967 | +M: Dmitry Kasatkin <dmitry.kasatkin@gmail.com> | |
| 4897 | 4968 | L: linux-ima-devel@lists.sourceforge.net |
| 4898 | 4969 | L: linux-ima-user@lists.sourceforge.net |
| 4899 | 4970 | L: linux-security-module@vger.kernel.org |
| @@ -4953,6 +5024,16 @@ F: Documentation/input/multi-touch-protocol.txt · 53 unmodified lines | ||
| 4953 | 5024 | F: drivers/input/input-mt.c |
| 4954 | 5025 | K: \b(ABS|SYN)_MT_ |
| 4955 | 5026 | |
| 5027 | +INTEL ASoC BDW/HSW DRIVERS | |
| 5028 | +M: Jie Yang <yang.jie@linux.intel.com> | |
| 5029 | +L: alsa-devel@alsa-project.org | |
| 5030 | +S: Supported | |
| 5031 | +F: sound/soc/intel/sst-haswell* | |
| 5032 | +F: sound/soc/intel/sst-dsp* | |
| 5033 | +F: sound/soc/intel/sst-firmware.c | |
| 5034 | +F: sound/soc/intel/broadwell.c | |
| 5035 | +F: sound/soc/intel/haswell.c | |
| 5036 | + | |
| 4956 | 5037 | INTEL C600 SERIES SAS CONTROLLER DRIVER |
| 4957 | 5038 | M: Intel SCU Linux support <intel-linux-scu@intel.com> |
| 4958 | 5039 | M: Artur Paszkiewicz <artur.paszkiewicz@intel.com> |
| @@ -5840,6 +5921,21 @@ F: Documentation/misc-devices/lis3lv02d · 881 unmodified lines | ||
| 5840 | 5921 | F: drivers/misc/lis3lv02d/ |
| 5841 | 5922 | F: drivers/platform/x86/hp_accel.c |
| 5842 | 5923 | |
| 5924 | +LIVE PATCHING | |
| 5925 | +M: Josh Poimboeuf <jpoimboe@redhat.com> | |
| 5926 | +M: Seth Jennings <sjenning@redhat.com> | |
| 5927 | +M: Jiri Kosina <jkosina@suse.cz> | |
| 5928 | +M: Vojtech Pavlik <vojtech@suse.cz> | |
| 5929 | +S: Maintained | |
| 5930 | +F: kernel/livepatch/ | |
| 5931 | +F: include/linux/livepatch.h | |
| 5932 | +F: arch/x86/include/asm/livepatch.h | |
| 5933 | +F: arch/x86/kernel/livepatch.c | |
| 5934 | +F: Documentation/ABI/testing/sysfs-kernel-livepatch | |
| 5935 | +F: samples/livepatch/ | |
| 5936 | +L: live-patching@vger.kernel.org | |
| 5937 | +T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/livepatching.git | |
| 5938 | + | |
| 5843 | 5939 | LLC (802.2) |
| 5844 | 5940 | M: Arnaldo Carvalho de Melo <acme@ghostprotocols.net> |
| 5845 | 5941 | S: Maintained |
| @@ -6138,6 +6234,33 @@ F: Documentation/devicetree/bindings/i2c/max6697.txt · 292 unmodified lines | ||
| 6138 | 6234 | F: drivers/hwmon/max6697.c |
| 6139 | 6235 | F: include/linux/platform_data/max6697.h |
| 6140 | 6236 | |
| 6237 | +MAXIM MUIC CHARGER DRIVERS FOR EXYNOS BASED BOARDS | |
| 6238 | +M: Krzysztof Kozlowski <k.kozlowski@samsung.com> | |
| 6239 | +L: linux-pm@vger.kernel.org | |
| 6240 | +S: Supported | |
| 6241 | +F: drivers/power/max14577_charger.c | |
| 6242 | +F: drivers/power/max77693_charger.c | |
| 6243 | + | |
| 6244 | +MAXIM PMIC AND MUIC DRIVERS FOR EXYNOS BASED BOARDS | |
| 6245 | +M: Chanwoo Choi <cw00.choi@samsung.com> | |
| 6246 | +M: Krzysztof Kozlowski <k.kozlowski@samsung.com> | |
| 6247 | +L: linux-kernel@vger.kernel.org | |
| 6248 | +S: Supported | |
| 6249 | +F: drivers/*/max14577.c | |
| 6250 | +F: drivers/*/max77686.c | |
| 6251 | +F: drivers/*/max77693.c | |
| 6252 | +F: drivers/extcon/extcon-max14577.c | |
| 6253 | +F: drivers/extcon/extcon-max77693.c | |
| 6254 | +F: drivers/rtc/rtc-max77686.c | |
| 6255 | +F: drivers/clk/clk-max77686.c | |
| 6256 | +F: Documentation/devicetree/bindings/mfd/max14577.txt | |
| 6257 | +F: Documentation/devicetree/bindings/mfd/max77686.txt | |
| 6258 | +F: Documentation/devicetree/bindings/mfd/max77693.txt | |
| 6259 | +F: Documentation/devicetree/bindings/clock/maxim,max77686.txt | |
| 6260 | +F: include/linux/mfd/max14577*.h | |
| 6261 | +F: include/linux/mfd/max77686*.h | |
| 6262 | +F: include/linux/mfd/max77693*.h | |
| 6263 | + | |
| 6141 | 6264 | MAXIRADIO FM RADIO RECEIVER DRIVER |
| 6142 | 6265 | M: Hans Verkuil <hverkuil@xs4all.nl> |
| 6143 | 6266 | L: linux-media@vger.kernel.org |
| @@ -6168,14 +6291,6 @@ F: include/uapi/linux/meye.h · 24 unmodified lines | ||
| 6168 | 6291 | F: include/uapi/linux/ivtv* |
| 6169 | 6292 | F: include/uapi/linux/uvcvideo.h |
| 6170 | 6293 | |
| 6171 | −MEDIAVISION PRO MOVIE STUDIO DRIVER | |
| 6172 | −M: Hans Verkuil <hverkuil@xs4all.nl> | |
| 6173 | −L: linux-media@vger.kernel.org | |
| 6174 | −T: git git://linuxtv.org/media_tree.git | |
| 6175 | −W: http://linuxtv.org | |
| 6176 | −S: Odd Fixes | |
| 6177 | −F: drivers/media/parport/pms* | |
| 6178 | − | |
| 6179 | 6294 | MEGARAID SCSI/SAS DRIVERS |
| 6180 | 6295 | M: Kashyap Desai <kashyap.desai@avagotech.com> |
| 6181 | 6296 | M: Sumit Saxena <sumit.saxena@avagotech.com> |
| @@ -6593,9 +6708,10 @@ F: include/uapi/linux/netrom.h · 411 unmodified lines | ||
| 6593 | 6708 | F: net/netrom/ |
| 6594 | 6709 | |
| 6595 | 6710 | NETWORK BLOCK DEVICE (NBD) |
| 6596 | −M: Paul Clements <Paul.Clements@steeleye.com> | |
| 6711 | +M: Markus Pargmann <mpa@pengutronix.de> | |
| 6597 | 6712 | S: Maintained |
| 6598 | 6713 | L: nbd-general@lists.sourceforge.net |
| 6714 | +T: git git://git.pengutronix.de/git/mpa/linux-nbd.git | |
| 6599 | 6715 | F: Documentation/blockdev/nbd.txt |
| 6600 | 6716 | F: drivers/block/nbd.c |
| 6601 | 6717 | F: include/linux/nbd.h |
| @@ -6624,6 +6740,7 @@ F: include/linux/netdevice.h · 22 unmodified lines | ||
| 6624 | 6740 | F: include/uapi/linux/in.h |
| 6625 | 6741 | F: include/uapi/linux/net.h |
| 6626 | 6742 | F: include/uapi/linux/netdevice.h |
| 6743 | +F: include/uapi/linux/net_namespace.h | |
| 6627 | 6744 | F: tools/net/ |
| 6628 | 6745 | F: tools/testing/selftests/net/ |
| 6629 | 6746 | F: lib/random32.c |
| @@ -6728,6 +6845,7 @@ F: Documentation/devicetree/bindings/net/nfc/ · 98 unmodified lines | ||
| 6728 | 6845 | |
| 6729 | 6846 | NFS, SUNRPC, AND LOCKD CLIENTS |
| 6730 | 6847 | M: Trond Myklebust <trond.myklebust@primarydata.com> |
| 6848 | +M: Anna Schumaker <anna.schumaker@netapp.com> | |
| 6731 | 6849 | L: linux-nfs@vger.kernel.org |
| 6732 | 6850 | W: http://client.linux-nfs.org |
| 6733 | 6851 | T: git git://git.linux-nfs.org/projects/trondmy/linux-nfs.git |
| @@ -6770,7 +6888,7 @@ F: drivers/scsi/nsp32* · 36 unmodified lines | ||
| 6770 | 6888 | NIOS2 ARCHITECTURE |
| 6771 | 6889 | M: Ley Foon Tan <lftan@altera.com> |
| 6772 | 6890 | L: nios2-dev@lists.rocketboards.org (moderated for non-subscribers) |
| 6773 | −T: git git://git.rocketboards.org/linux-socfpga.git | |
| 6891 | +T: git git://git.rocketboards.org/linux-socfpga-next.git | |
| 6774 | 6892 | S: Maintained |
| 6775 | 6893 | F: arch/nios2/ |
| 6776 | 6894 | |
| @@ -6943,6 +7061,12 @@ L: linux-omap@vger.kernel.org · 166 unmodified lines | ||
| 6943 | 7061 | S: Maintained |
| 6944 | 7062 | F: arch/arm/mach-omap2/omap_hwmod.* |
| 6945 | 7063 | |
| 7064 | +OMAP HWMOD DATA | |
| 7065 | +M: Paul Walmsley <paul@pwsan.com> | |
| 7066 | +L: linux-omap@vger.kernel.org | |
| 7067 | +S: Maintained | |
| 7068 | +F: arch/arm/mach-omap2/omap_hwmod*data* | |
| 7069 | + | |
| 6946 | 7070 | OMAP HWMOD DATA FOR OMAP4-BASED DEVICES |
| 6947 | 7071 | M: Benoît Cousson <bcousson@baylibre.com> |
| 6948 | 7072 | L: linux-omap@vger.kernel.org |
| @@ -7062,11 +7186,12 @@ F: arch/openrisc/ · 113 unmodified lines | ||
| 7062 | 7186 | |
| 7063 | 7187 | OPENVSWITCH |
| 7064 | 7188 | M: Pravin Shelar <pshelar@nicira.com> |
| 7189 | +L: netdev@vger.kernel.org | |
| 7065 | 7190 | L: dev@openvswitch.org |
| 7066 | 7191 | W: http://openvswitch.org |
| 7067 | −T: git git://git.kernel.org/pub/scm/linux/kernel/git/pshelar/openvswitch.git | |
| 7068 | 7192 | S: Maintained |
| 7069 | 7193 | F: net/openvswitch/ |
| 7194 | +F: include/uapi/linux/openvswitch.h | |
| 7070 | 7195 | |
| 7071 | 7196 | OPL4 DRIVER |
| 7072 | 7197 | M: Clemens Ladisch <clemens@ladisch.de> |
| @@ -7178,7 +7303,7 @@ M: Alok Kataria <akataria@vmware.com> · 105 unmodified lines | ||
| 7178 | 7303 | M: Rusty Russell <rusty@rustcorp.com.au> |
| 7179 | 7304 | L: virtualization@lists.linux-foundation.org |
| 7180 | 7305 | S: Supported |
| 7181 | −F: Documentation/ia64/paravirt_ops.txt | |
| 7306 | +F: Documentation/virtual/paravirt_ops.txt | |
| 7182 | 7307 | F: arch/*/kernel/paravirt* |
| 7183 | 7308 | F: arch/*/include/asm/paravirt.h |
| 7184 | 7309 | |
| @@ -7264,6 +7389,14 @@ F: include/linux/pci* · 79 unmodified lines | ||
| 7264 | 7389 | F: arch/x86/pci/ |
| 7265 | 7390 | F: arch/x86/kernel/quirks.c |
| 7266 | 7391 | |
| 7392 | +PCI DRIVER FOR ARM VERSATILE PLATFORM | |
| 7393 | +M: Rob Herring <robh@kernel.org> | |
| 7394 | +L: linux-pci@vger.kernel.org | |
| 7395 | +L: linux-arm-kernel@lists.infradead.org | |
| 7396 | +S: Maintained | |
| 7397 | +F: Documentation/devicetree/bindings/pci/versatile.txt | |
| 7398 | +F: drivers/pci/host/pci-versatile.c | |
| 7399 | + | |
| 7267 | 7400 | PCI DRIVER FOR APPLIEDMICRO XGENE |
| 7268 | 7401 | M: Tanmay Inamdar <tinamdar@apm.com> |
| 7269 | 7402 | L: linux-pci@vger.kernel.org |
| @@ -7865,17 +7998,9 @@ T: git git://github.com/KrasnikovEugene/wcn36xx.git · 595 unmodified lines | ||
| 7865 | 7998 | S: Supported |
| 7866 | 7999 | F: drivers/net/wireless/ath/wcn36xx/ |
| 7867 | 8000 | |
| 7868 | −QUICKCAM PARALLEL PORT WEBCAMS | |
| 7869 | −M: Hans Verkuil <hverkuil@xs4all.nl> | |
| 7870 | −L: linux-media@vger.kernel.org | |
| 7871 | −T: git git://linuxtv.org/media_tree.git | |
| 7872 | −W: http://linuxtv.org | |
| 7873 | −S: Odd Fixes | |
| 7874 | −F: drivers/media/parport/*-qcam* | |
| 7875 | − | |
| 7876 | 8001 | RADOS BLOCK DEVICE (RBD) |
| 7877 | −M: Yehuda Sadeh <yehuda@inktank.com> | |
| 7878 | −M: Sage Weil <sage@inktank.com> | |
| 8002 | +M: Ilya Dryomov <idryomov@gmail.com> | |
| 8003 | +M: Sage Weil <sage@redhat.com> | |
| 7879 | 8004 | M: Alex Elder <elder@kernel.org> |
| 7880 | 8005 | M: ceph-devel@vger.kernel.org |
| 7881 | 8006 | W: http://ceph.com/ |
| @@ -8061,6 +8186,13 @@ S: Maintained · 179 unmodified lines | ||
| 8061 | 8186 | F: Documentation/rfkill.txt |
| 8062 | 8187 | F: net/rfkill/ |
| 8063 | 8188 | |
| 8189 | +RHASHTABLE | |
| 8190 | +M: Thomas Graf <tgraf@suug.ch> | |
| 8191 | +L: netdev@vger.kernel.org | |
| 8192 | +S: Maintained | |
| 8193 | +F: lib/rhashtable.c | |
| 8194 | +F: include/linux/rhashtable.h | |
| 8195 | + | |
| 8064 | 8196 | RICOH SMARTMEDIA/XD DRIVER |
| 8065 | 8197 | M: Maxim Levitsky <maximlevitsky@gmail.com> |
| 8066 | 8198 | S: Maintained |
| @@ -8372,6 +8504,7 @@ SYNOPSYS DESIGNWARE DMAC DRIVER · 305 unmodified lines | ||
| 8372 | 8504 | M: Viresh Kumar <viresh.linux@gmail.com> |
| 8373 | 8505 | M: Andy Shevchenko <andriy.shevchenko@linux.intel.com> |
| 8374 | 8506 | S: Maintained |
| 8507 | +F: include/linux/dma/dw.h | |
| 8375 | 8508 | F: include/linux/platform_data/dma-dw.h |
| 8376 | 8509 | F: drivers/dma/dw/ |
| 8377 | 8510 | |
| @@ -8403,12 +8536,6 @@ F: kernel/time/clocksource.c · 25 unmodified lines | ||
| 8403 | 8536 | F: kernel/time/time*.c |
| 8404 | 8537 | F: kernel/time/ntp.c |
| 8405 | 8538 | |
| 8406 | −TLG2300 VIDEO4LINUX-2 DRIVER | |
| 8407 | −M: Huang Shijie <shijie8@gmail.com> | |
| 8408 | −M: Hans Verkuil <hverkuil@xs4all.nl> | |
| 8409 | −S: Odd Fixes | |
| 8410 | −F: drivers/media/usb/tlg2300/ | |
| 8411 | − | |
| 8412 | 8539 | SC1200 WDT DRIVER |
| 8413 | 8540 | M: Zwane Mwaikambo <zwanem@gmail.com> |
| 8414 | 8541 | S: Maintained |
| @@ -8440,7 +8567,7 @@ S: Maintained · 25 unmodified lines | ||
| 8440 | 8567 | F: drivers/scsi/sr* |
| 8441 | 8568 | |
| 8442 | 8569 | SCSI RDMA PROTOCOL (SRP) INITIATOR |
| 8443 | −M: Bart Van Assche <bvanassche@acm.org> | |
| 8570 | +M: Bart Van Assche <bart.vanassche@sandisk.com> | |
| 8444 | 8571 | L: linux-rdma@vger.kernel.org |
| 8445 | 8572 | S: Supported |
| 8446 | 8573 | W: http://www.openfabrics.org |
| @@ -8774,6 +8901,15 @@ S: Maintained · 327 unmodified lines | ||
| 8774 | 8901 | F: drivers/media/platform/davinci/ |
| 8775 | 8902 | F: include/media/davinci/ |
| 8776 | 8903 | |
| 8904 | +TI AM437X VPFE DRIVER | |
| 8905 | +M: Lad, Prabhakar <prabhakar.csengg@gmail.com> | |
| 8906 | +L: linux-media@vger.kernel.org | |
| 8907 | +W: http://linuxtv.org/ | |
| 8908 | +Q: http://patchwork.linuxtv.org/project/linux-media/list/ | |
| 8909 | +T: git git://linuxtv.org/mhadli/v4l-dvb-davinci_devices.git | |
| 8910 | +S: Maintained | |
| 8911 | +F: drivers/media/platform/am437x/ | |
| 8912 | + | |
| 8777 | 8913 | SIS 190 ETHERNET DRIVER |
| 8778 | 8914 | M: Francois Romieu <romieu@fr.zoreil.com> |
| 8779 | 8915 | L: netdev@vger.kernel.org |
| @@ -8855,6 +8991,8 @@ F: drivers/media/i2c/smiapp/ · 75 unmodified lines | ||
| 8855 | 8991 | F: include/media/smiapp.h |
| 8856 | 8992 | F: drivers/media/i2c/smiapp-pll.c |
| 8857 | 8993 | F: drivers/media/i2c/smiapp-pll.h |
| 8994 | +F: include/uapi/linux/smiapp.h | |
| 8995 | +F: Documentation/devicetree/bindings/media/i2c/nokia,smia.txt | |
| 8858 | 8996 | |
| 8859 | 8997 | SMM665 HARDWARE MONITOR DRIVER |
| 8860 | 8998 | M: Guenter Roeck <linux@roeck-us.net> |
| @@ -8921,6 +9059,7 @@ SOFTLOGIC 6x10 MPEG CODEC · 60 unmodified lines | ||
| 8921 | 9059 | M: Bluecherry Maintainers <maintainers@bluecherrydvr.com> |
| 8922 | 9060 | M: Andrey Utkin <andrey.utkin@corp.bluecherry.net> |
| 8923 | 9061 | M: Andrey Utkin <andrey.krieger.utkin@gmail.com> |
| 9062 | +M: Ismael Luceno <ismael@iodev.co.uk> | |
| 8924 | 9063 | L: linux-media@vger.kernel.org |
| 8925 | 9064 | S: Supported |
| 8926 | 9065 | F: drivers/media/pci/solo6x10/ |
| @@ -9193,6 +9332,14 @@ L: linux-wireless@vger.kernel.org · 266 unmodified lines | ||
| 9193 | 9332 | S: Maintained |
| 9194 | 9333 | F: drivers/staging/rtl8723au/ |
| 9195 | 9334 | |
| 9335 | +STAGING - SILICON MOTION SM7XX FRAME BUFFER DRIVER | |
| 9336 | +M: Sudip Mukherjee <sudipm.mukherjee@gmail.com> | |
| 9337 | +M: Teddy Wang <teddy.wang@siliconmotion.com> | |
| 9338 | +M: Sudip Mukherjee <sudip@vectorindia.org> | |
| 9339 | +L: linux-fbdev@vger.kernel.org | |
| 9340 | +S: Maintained | |
| 9341 | +F: drivers/staging/sm7xxfb/ | |
| 9342 | + | |
| 9196 | 9343 | STAGING - SLICOSS |
| 9197 | 9344 | M: Lior Dotan <liodot@gmail.com> |
| 9198 | 9345 | M: Christopher Harrer <charrer@alacritech.com> |
| @@ -9233,6 +9380,13 @@ F: arch/m68k/sun3*/ · 34 unmodified lines | ||
| 9233 | 9380 | F: arch/m68k/include/asm/sun3* |
| 9234 | 9381 | F: drivers/net/ethernet/i825xx/sun3* |
| 9235 | 9382 | |
| 9383 | +SUN4I LOW RES ADC ATTACHED TABLET KEYS DRIVER | |
| 9384 | +M: Hans de Goede <hdegoede@redhat.com> | |
| 9385 | +L: linux-input@vger.kernel.org | |
| 9386 | +S: Maintained | |
| 9387 | +F: Documentation/devicetree/bindings/input/sun4i-lradc-keys.txt | |
| 9388 | +F: drivers/input/keyboard/sun4i-lradc-keys.c | |
| 9389 | + | |
| 9236 | 9390 | SUNDANCE NETWORK DRIVER |
| 9237 | 9391 | M: Denis Kirjanov <kda@linux-powerpc.org> |
| 9238 | 9392 | L: netdev@vger.kernel.org |
| @@ -9241,7 +9395,6 @@ F: drivers/net/ethernet/dlink/sundance.c · 2 unmodified lines | ||
| 9241 | 9395 | |
| 9242 | 9396 | SUPERH |
| 9243 | 9397 | L: linux-sh@vger.kernel.org |
| 9244 | −W: http://www.linux-sh.org | |
| 9245 | 9398 | Q: http://patchwork.kernel.org/project/linux-sh/list/ |
| 9246 | 9399 | S: Orphan |
| 9247 | 9400 | F: Documentation/sh/ |
| @@ -9566,6 +9719,11 @@ L: linux-omap@vger.kernel.org · 318 unmodified lines | ||
| 9566 | 9719 | S: Maintained |
| 9567 | 9720 | F: drivers/thermal/ti-soc-thermal/ |
| 9568 | 9721 | |
| 9722 | +TI CDCE706 CLOCK DRIVER | |
| 9723 | +M: Max Filippov <jcmvbkbc@gmail.com> | |
| 9724 | +S: Maintained | |
| 9725 | +F: drivers/clk/clk-cdce706.c | |
| 9726 | + | |
| 9569 | 9727 | TI CLOCK DRIVER |
| 9570 | 9728 | M: Tero Kristo <t-kristo@ti.com> |
| 9571 | 9729 | L: linux-omap@vger.kernel.org |
| @@ -9620,6 +9778,13 @@ F: drivers/power/lp8788-charger.c · 48 unmodified lines | ||
| 9620 | 9778 | F: drivers/regulator/lp8788-*.c |
| 9621 | 9779 | F: include/linux/mfd/lp8788*.h |
| 9622 | 9780 | |
| 9781 | +TI NETCP ETHERNET DRIVER | |
| 9782 | +M: Wingman Kwok <w-kwok2@ti.com> | |
| 9783 | +M: Murali Karicheri <m-karicheri2@ti.com> | |
| 9784 | +L: netdev@vger.kernel.org | |
| 9785 | +S: Maintained | |
| 9786 | +F: drivers/net/ethernet/ti/netcp* | |
| 9787 | + | |
| 9623 | 9788 | TI TWL4030 SERIES SOC CODEC DRIVER |
| 9624 | 9789 | M: Peter Ujfalusi <peter.ujfalusi@ti.com> |
| 9625 | 9790 | L: alsa-devel@alsa-project.org (moderated for non-subscribers) |
| @@ -9647,7 +9812,7 @@ F: net/tipc/ · 21 unmodified lines | ||
| 9647 | 9812 | |
| 9648 | 9813 | TILE ARCHITECTURE |
| 9649 | 9814 | M: Chris Metcalf <cmetcalf@ezchip.com> |
| 9650 | −W: http://www.tilera.com/scm/ | |
| 9815 | +W: http://www.ezchip.com/scm/ | |
| 9651 | 9816 | S: Supported |
| 9652 | 9817 | F: arch/tile/ |
| 9653 | 9818 | F: drivers/char/tile-srom.c |
| @@ -9740,13 +9905,21 @@ F: drivers/media/pci/tw68/ · 86 unmodified lines | ||
| 9740 | 9905 | |
| 9741 | 9906 | TPM DEVICE DRIVER |
| 9742 | 9907 | M: Peter Huewe <peterhuewe@gmx.de> |
| 9743 | −M: Ashley Lai <ashley@ashleylai.com> | |
| 9744 | 9908 | M: Marcel Selhorst <tpmdd@selhorst.net> |
| 9745 | 9909 | W: http://tpmdd.sourceforge.net |
| 9746 | 9910 | L: tpmdd-devel@lists.sourceforge.net (moderated for non-subscribers) |
| 9911 | +Q: git git://github.com/PeterHuewe/linux-tpmdd.git | |
| 9912 | +T: https://github.com/PeterHuewe/linux-tpmdd | |
| 9747 | 9913 | S: Maintained |
| 9748 | 9914 | F: drivers/char/tpm/ |
| 9749 | 9915 | |
| 9916 | +TPM IBM_VTPM DEVICE DRIVER | |
| 9917 | +M: Ashley Lai <ashleydlai@gmail.com> | |
| 9918 | +W: http://tpmdd.sourceforge.net | |
| 9919 | +L: tpmdd-devel@lists.sourceforge.net (moderated for non-subscribers) | |
| 9920 | +S: Maintained | |
| 9921 | +F: drivers/char/tpm/tpm_ibmvtpm* | |
| 9922 | + | |
| 9750 | 9923 | TRACING |
| 9751 | 9924 | M: Steven Rostedt <rostedt@goodmis.org> |
| 9752 | 9925 | M: Ingo Molnar <mingo@redhat.com> |
| @@ -9901,20 +10074,15 @@ F: drivers/scsi/ufs/ · 148 unmodified lines | ||
| 9901 | 10074 | |
| 9902 | 10075 | UNSORTED BLOCK IMAGES (UBI) |
| 9903 | 10076 | M: Artem Bityutskiy <dedekind1@gmail.com> |
| 10077 | +M: Richard Weinberger <richard@nod.at> | |
| 9904 | 10078 | W: http://www.linux-mtd.infradead.org/ |
| 9905 | 10079 | L: linux-mtd@lists.infradead.org |
| 9906 | 10080 | T: git git://git.infradead.org/ubifs-2.6.git |
| 9907 | −S: Maintained | |
| 10081 | +S: Supported | |
| 9908 | 10082 | F: drivers/mtd/ubi/ |
| 9909 | 10083 | F: include/linux/mtd/ubi.h |
| 9910 | 10084 | F: include/uapi/mtd/ubi-user.h |
| 9911 | 10085 | |
| 9912 | −UNSORTED BLOCK IMAGES (UBI) Fastmap | |
| 9913 | −M: Richard Weinberger <richard@nod.at> | |
| 9914 | −L: linux-mtd@lists.infradead.org | |
| 9915 | −S: Maintained | |
| 9916 | −F: drivers/mtd/ubi/fastmap.c | |
| 9917 | − | |
| 9918 | 10086 | USB ACM DRIVER |
| 9919 | 10087 | M: Oliver Neukum <oliver@neukum.org> |
| 9920 | 10088 | L: linux-usb@vger.kernel.org |
| @@ -10604,6 +10772,7 @@ F: drivers/pci/*xen* · 683 unmodified lines | ||
| 10604 | 10772 | |
| 10605 | 10773 | XEN BLOCK SUBSYSTEM |
| 10606 | 10774 | M: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> |
| 10775 | +M: Roger Pau Monné <roger.pau@citrix.com> | |
| 10607 | 10776 | L: xen-devel@lists.xenproject.org (moderated for non-subscribers) |
| 10608 | 10777 | S: Supported |
| 10609 | 10778 | F: drivers/block/xen-blkback/* |
| @@ -10659,6 +10828,7 @@ M: Max Filippov <jcmvbkbc@gmail.com> · 49 unmodified lines | ||
| 10659 | 10828 | L: linux-xtensa@linux-xtensa.org |
| 10660 | 10829 | S: Maintained |
| 10661 | 10830 | F: drivers/spi/spi-xtensa-xtfpga.c |
| 10831 | +F: sound/soc/xtensa/xtfpga-i2s.c | |
| 10662 | 10832 | |
| 10663 | 10833 | YAM DRIVER FOR AX.25 |
| 10664 | 10834 | M: Jean-Paul Roubelat <jpr@f6fbb.org> |
| @@ -1,8 +1,8 @@ | ||
| 1 | −VERSION = 3 | |
| 2 | −PATCHLEVEL = 19 | |
| 1 | +VERSION = 4 | |
| 2 | +PATCHLEVEL = 0 | |
| 3 | 3 | SUBLEVEL = 0 |
| 4 | −EXTRAVERSION = -rc7 | |
| 5 | −NAME = Diseased Newt | |
| 4 | +EXTRAVERSION = -rc1 | |
| 5 | +NAME = Hurr durr I'ma sheep | |
| 6 | 6 | |
| 7 | 7 | # *DOCUMENTATION* |
| 8 | 8 | # To see a list of typical targets execute "make help" |
| @@ -423,7 +423,7 @@ export MAKE AWK GENKSYMS INSTALLKERNEL PERL PYTHON UTS_MACHINE · 414 unmodified lines | ||
| 423 | 423 | export HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS |
| 424 | 424 | |
| 425 | 425 | export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS LDFLAGS |
| 426 | −export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE CFLAGS_GCOV | |
| 426 | +export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE CFLAGS_GCOV CFLAGS_KASAN | |
| 427 | 427 | export KBUILD_AFLAGS AFLAGS_KERNEL AFLAGS_MODULE |
| 428 | 428 | export KBUILD_AFLAGS_MODULE KBUILD_CFLAGS_MODULE KBUILD_LDFLAGS_MODULE |
| 429 | 429 | export KBUILD_AFLAGS_KERNEL KBUILD_CFLAGS_KERNEL |
| @@ -502,7 +502,7 @@ endif · 72 unmodified lines | ||
| 502 | 502 | ifeq ($(KBUILD_EXTMOD),) |
| 503 | 503 | ifneq ($(filter config %config,$(MAKECMDGOALS)),) |
| 504 | 504 | config-targets := 1 |
| 505 | − ifneq ($(filter-out config %config,$(MAKECMDGOALS)),) | |
| 505 | + ifneq ($(words $(MAKECMDGOALS)),1) | |
| 506 | 506 | mixed-targets := 1 |
| 507 | 507 | endif |
| 508 | 508 | endif |
| @@ -726,10 +726,14 @@ KBUILD_CFLAGS += $(call cc-option, -femit-struct-debug-baseonly) \ · 217 unmodified lines | ||
| 726 | 726 | endif |
| 727 | 727 | |
| 728 | 728 | ifdef CONFIG_FUNCTION_TRACER |
| 729 | +ifndef CC_FLAGS_FTRACE | |
| 730 | +CC_FLAGS_FTRACE := -pg | |
| 731 | +endif | |
| 732 | +export CC_FLAGS_FTRACE | |
| 729 | 733 | ifdef CONFIG_HAVE_FENTRY |
| 730 | 734 | CC_USING_FENTRY := $(call cc-option, -mfentry -DCC_USING_FENTRY) |
| 731 | 735 | endif |
| 732 | −KBUILD_CFLAGS += -pg $(CC_USING_FENTRY) | |
| 736 | +KBUILD_CFLAGS += $(CC_FLAGS_FTRACE) $(CC_USING_FENTRY) | |
| 733 | 737 | KBUILD_AFLAGS += $(CC_USING_FENTRY) |
| 734 | 738 | ifdef CONFIG_DYNAMIC_FTRACE |
| 735 | 739 | ifdef CONFIG_HAVE_C_RECORDMCOUNT |
| @@ -777,6 +781,7 @@ ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC)), y) · 41 unmodified lines | ||
| 777 | 781 | KBUILD_CFLAGS += -DCC_HAVE_ASM_GOTO |
| 778 | 782 | endif |
| 779 | 783 | |
| 784 | +include $(srctree)/scripts/Makefile.kasan | |
| 780 | 785 | include $(srctree)/scripts/Makefile.extrawarn |
| 781 | 786 | |
| 782 | 787 | # Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments |
| @@ -921,6 +926,9 @@ ifdef CONFIG_SAMPLES · 138 unmodified lines | ||
| 921 | 926 | endif |
| 922 | 927 | ifdef CONFIG_BUILD_DOCSRC |
| 923 | 928 | $(Q)$(MAKE) $(build)=Documentation |
| 929 | +endif | |
| 930 | +ifdef CONFIG_GDB_SCRIPTS | |
| 931 | + $(Q)ln -fsn `cd $(srctree) && /bin/pwd`/scripts/gdb/vmlinux-gdb.py | |
| 924 | 932 | endif |
| 925 | 933 | +$(call if_changed,link-vmlinux) |
| 926 | 934 | |
| @@ -1172,11 +1180,11 @@ CLEAN_DIRS += $(MODVERDIR) · 245 unmodified lines | ||
| 1172 | 1180 | # Directories & files removed with 'make mrproper' |
| 1173 | 1181 | MRPROPER_DIRS += include/config usr/include include/generated \ |
| 1174 | 1182 | arch/*/include/generated .tmp_objdiff |
| 1175 | −MRPROPER_FILES += .config .config.old .version .old_version $(version_h) \ | |
| 1183 | +MRPROPER_FILES += .config .config.old .version .old_version \ | |
| 1176 | 1184 | Module.symvers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \ |
| 1177 | 1185 | signing_key.priv signing_key.x509 x509.genkey \ |
| 1178 | 1186 | extra_certificates signing_key.x509.keyid \ |
| 1179 | − signing_key.x509.signer | |
| 1187 | + signing_key.x509.signer vmlinux-gdb.py | |
| 1180 | 1188 | |
| 1181 | 1189 | # clean - Delete most, but leave enough to build external modules |
| 1182 | 1190 | # |
| @@ -45,7 +45,7 @@ struct vm_area_struct; · 44 unmodified lines | ||
| 45 | 45 | #define PTRS_PER_PMD (1UL << (PAGE_SHIFT-3)) |
| 46 | 46 | #define PTRS_PER_PGD (1UL << (PAGE_SHIFT-3)) |
| 47 | 47 | #define USER_PTRS_PER_PGD (TASK_SIZE / PGDIR_SIZE) |
| 48 | −#define FIRST_USER_ADDRESS 0 | |
| 48 | +#define FIRST_USER_ADDRESS 0UL | |
| 49 | 49 | |
| 50 | 50 | /* Number of pointers that fit on a page: this will go away. */ |
| 51 | 51 | #define PTRS_PER_PAGE (1UL << (PAGE_SHIFT-3)) |
| @@ -73,7 +73,6 @@ struct vm_area_struct; · 21 unmodified lines | ||
| 73 | 73 | /* .. and these are ours ... */ |
| 74 | 74 | #define _PAGE_DIRTY 0x20000 |
| 75 | 75 | #define _PAGE_ACCESSED 0x40000 |
| 76 | −#define _PAGE_FILE 0x80000 /* set:pagecache, unset:swap */ | |
| 77 | 76 | |
| 78 | 77 | /* |
| 79 | 78 | * NOTE! The "accessed" bit isn't necessarily exact: it can be kept exactly |
| @@ -268,7 +267,6 @@ extern inline void pgd_clear(pgd_t * pgdp) { pgd_val(*pgdp) = 0; } · 188 unmodified lines | ||
| 268 | 267 | extern inline int pte_write(pte_t pte) { return !(pte_val(pte) & _PAGE_FOW); } |
| 269 | 268 | extern inline int pte_dirty(pte_t pte) { return pte_val(pte) & _PAGE_DIRTY; } |
| 270 | 269 | extern inline int pte_young(pte_t pte) { return pte_val(pte) & _PAGE_ACCESSED; } |
| 271 | −extern inline int pte_file(pte_t pte) { return pte_val(pte) & _PAGE_FILE; } | |
| 272 | 270 | extern inline int pte_special(pte_t pte) { return 0; } |
| 273 | 271 | |
| 274 | 272 | extern inline pte_t pte_wrprotect(pte_t pte) { pte_val(pte) |= _PAGE_FOW; return pte; } |
| @@ -345,11 +343,6 @@ extern inline pte_t mk_swap_pte(unsigned long type, unsigned long offset) · 70 unmodified lines | ||
| 345 | 343 | #define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) }) |
| 346 | 344 | #define __swp_entry_to_pte(x) ((pte_t) { (x).val }) |
| 347 | 345 | |
| 348 | −#define pte_to_pgoff(pte) (pte_val(pte) >> 32) | |
| 349 | −#define pgoff_to_pte(off) ((pte_t) { ((off) << 32) | _PAGE_FILE }) | |
| 350 | − | |
| 351 | −#define PTE_FILE_MAX_BITS 32 | |
| 352 | − | |
| 353 | 346 | #ifndef CONFIG_DISCONTIGMEM |
| 354 | 347 | #define kern_addr_valid(addr) (1) |
| 355 | 348 | #endif |
| @@ -27,8 +27,6 @@ struct thread_info { · 26 unmodified lines | ||
| 27 | 27 | int bpt_nsaved; |
| 28 | 28 | unsigned long bpt_addr[2]; /* breakpoint handling */ |
| 29 | 29 | unsigned int bpt_insn[2]; |
| 30 | − | |
| 31 | − struct restart_block restart_block; | |
| 32 | 30 | }; |
| 33 | 31 | |
| 34 | 32 | /* |
| @@ -40,9 +38,6 @@ struct thread_info { · 5 unmodified lines | ||
| 40 | 38 | .exec_domain = &default_exec_domain, \ |
| 41 | 39 | .addr_limit = KERNEL_DS, \ |
| 42 | 40 | .preempt_count = INIT_PREEMPT_COUNT, \ |
| 43 | − .restart_block = { \ | |
| 44 | − .fn = do_no_restart_syscall, \ | |
| 45 | − }, \ | |
| 46 | 41 | } |
| 47 | 42 | |
| 48 | 43 | #define init_thread_info (init_thread_union.thread_info) |
| @@ -27,7 +27,7 @@ · 26 unmodified lines | ||
| 27 | 27 | #define get_ds() (KERNEL_DS) |
| 28 | 28 | #define set_fs(x) (current_thread_info()->addr_limit = (x)) |
| 29 | 29 | |
| 30 | −#define segment_eq(a,b) ((a).seg == (b).seg) | |
| 30 | +#define segment_eq(a, b) ((a).seg == (b).seg) | |
| 31 | 31 | |
| 32 | 32 | /* |
| 33 | 33 | * Is a address valid? This does a straightforward calculation rather |
| @@ -39,13 +39,13 @@ · 5 unmodified lines | ||
| 39 | 39 | * - AND "addr+size" doesn't have any high-bits set |
| 40 | 40 | * - OR we are in kernel mode. |
| 41 | 41 | */ |
| 42 | −#define __access_ok(addr,size,segment) \ | |
| 42 | +#define __access_ok(addr, size, segment) \ | |
| 43 | 43 | (((segment).seg & (addr | size | (addr+size))) == 0) |
| 44 | 44 | |
| 45 | −#define access_ok(type,addr,size) \ | |
| 45 | +#define access_ok(type, addr, size) \ | |
| 46 | 46 | ({ \ |
| 47 | 47 | __chk_user_ptr(addr); \ |
| 48 | − __access_ok(((unsigned long)(addr)),(size),get_fs()); \ | |
| 48 | + __access_ok(((unsigned long)(addr)), (size), get_fs()); \ | |
| 49 | 49 | }) |
| 50 | 50 | |
| 51 | 51 | /* |
| @@ -60,20 +60,20 @@ · 8 unmodified lines | ||
| 60 | 60 | * (a) re-use the arguments for side effects (sizeof/typeof is ok) |
| 61 | 61 | * (b) require any knowledge of processes at this stage |
| 62 | 62 | */ |
| 63 | −#define put_user(x,ptr) \ | |
| 64 | − __put_user_check((__typeof__(*(ptr)))(x),(ptr),sizeof(*(ptr)),get_fs()) | |
| 65 | −#define get_user(x,ptr) \ | |
| 66 | − __get_user_check((x),(ptr),sizeof(*(ptr)),get_fs()) | |
| 63 | +#define put_user(x, ptr) \ | |
| 64 | + __put_user_check((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)), get_fs()) | |
| 65 | +#define get_user(x, ptr) \ | |
| 66 | + __get_user_check((x), (ptr), sizeof(*(ptr)), get_fs()) | |
| 67 | 67 | |
| 68 | 68 | /* |
| 69 | 69 | * The "__xxx" versions do not do address space checking, useful when |
| 70 | 70 | * doing multiple accesses to the same area (the programmer has to do the |
| 71 | 71 | * checks by hand with "access_ok()") |
| 72 | 72 | */ |
| 73 | −#define __put_user(x,ptr) \ | |
| 74 | − __put_user_nocheck((__typeof__(*(ptr)))(x),(ptr),sizeof(*(ptr))) | |
| 75 | −#define __get_user(x,ptr) \ | |
| 76 | − __get_user_nocheck((x),(ptr),sizeof(*(ptr))) | |
| 73 | +#define __put_user(x, ptr) \ | |
| 74 | + __put_user_nocheck((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr))) | |
| 75 | +#define __get_user(x, ptr) \ | |
| 76 | + __get_user_nocheck((x), (ptr), sizeof(*(ptr))) | |
| 77 | 77 | |
| 78 | 78 | /* |
| 79 | 79 | * The "lda %1, 2b-1b(%0)" bits are magic to get the assembler to |
| @@ -84,7 +84,7 @@ · 4 unmodified lines | ||
| 84 | 84 | |
| 85 | 85 | extern void __get_user_unknown(void); |
| 86 | 86 | |
| 87 | −#define __get_user_nocheck(x,ptr,size) \ | |
| 87 | +#define __get_user_nocheck(x, ptr, size) \ | |
| 88 | 88 | ({ \ |
| 89 | 89 | long __gu_err = 0; \ |
| 90 | 90 | unsigned long __gu_val; \ |
| @@ -96,16 +96,16 @@ extern void __get_user_unknown(void); · 5 unmodified lines | ||
| 96 | 96 | case 8: __get_user_64(ptr); break; \ |
| 97 | 97 | default: __get_user_unknown(); break; \ |
| 98 | 98 | } \ |
| 99 | − (x) = (__typeof__(*(ptr))) __gu_val; \ | |
| 99 | + (x) = (__force __typeof__(*(ptr))) __gu_val; \ | |
| 100 | 100 | __gu_err; \ |
| 101 | 101 | }) |
| 102 | 102 | |
| 103 | −#define __get_user_check(x,ptr,size,segment) \ | |
| 103 | +#define __get_user_check(x, ptr, size, segment) \ | |
| 104 | 104 | ({ \ |
| 105 | 105 | long __gu_err = -EFAULT; \ |
| 106 | 106 | unsigned long __gu_val = 0; \ |
| 107 | 107 | const __typeof__(*(ptr)) __user *__gu_addr = (ptr); \ |
| 108 | − if (__access_ok((unsigned long)__gu_addr,size,segment)) { \ | |
| 108 | + if (__access_ok((unsigned long)__gu_addr, size, segment)) { \ | |
| 109 | 109 | __gu_err = 0; \ |
| 110 | 110 | switch (size) { \ |
| 111 | 111 | case 1: __get_user_8(__gu_addr); break; \ |
| @@ -115,7 +115,7 @@ extern void __get_user_unknown(void); · 3 unmodified lines | ||
| 115 | 115 | default: __get_user_unknown(); break; \ |
| 116 | 116 | } \ |
| 117 | 117 | } \ |
| 118 | − (x) = (__typeof__(*(ptr))) __gu_val; \ | |
| 118 | + (x) = (__force __typeof__(*(ptr))) __gu_val; \ | |
| 119 | 119 | __gu_err; \ |
| 120 | 120 | }) |
| 121 | 121 | |
| @@ -201,31 +201,31 @@ struct __large_struct { unsigned long buf[100]; }; · 79 unmodified lines | ||
| 201 | 201 | |
| 202 | 202 | extern void __put_user_unknown(void); |
| 203 | 203 | |
| 204 | −#define __put_user_nocheck(x,ptr,size) \ | |
| 204 | +#define __put_user_nocheck(x, ptr, size) \ | |
| 205 | 205 | ({ \ |
| 206 | 206 | long __pu_err = 0; \ |
| 207 | 207 | __chk_user_ptr(ptr); \ |
| 208 | 208 | switch (size) { \ |
| 209 | − case 1: __put_user_8(x,ptr); break; \ | |
| 210 | − case 2: __put_user_16(x,ptr); break; \ | |
| 211 | − case 4: __put_user_32(x,ptr); break; \ | |
| 212 | − case 8: __put_user_64(x,ptr); break; \ | |
| 209 | + case 1: __put_user_8(x, ptr); break; \ | |
| 210 | + case 2: __put_user_16(x, ptr); break; \ | |
| 211 | + case 4: __put_user_32(x, ptr); break; \ | |
| 212 | + case 8: __put_user_64(x, ptr); break; \ | |
| 213 | 213 | default: __put_user_unknown(); break; \ |
| 214 | 214 | } \ |
| 215 | 215 | __pu_err; \ |
| 216 | 216 | }) |
| 217 | 217 | |
| 218 | −#define __put_user_check(x,ptr,size,segment) \ | |
| 218 | +#define __put_user_check(x, ptr, size, segment) \ | |
| 219 | 219 | ({ \ |
| 220 | 220 | long __pu_err = -EFAULT; \ |
| 221 | 221 | __typeof__(*(ptr)) __user *__pu_addr = (ptr); \ |
| 222 | − if (__access_ok((unsigned long)__pu_addr,size,segment)) { \ | |
| 222 | + if (__access_ok((unsigned long)__pu_addr, size, segment)) { \ | |
| 223 | 223 | __pu_err = 0; \ |
| 224 | 224 | switch (size) { \ |
| 225 | − case 1: __put_user_8(x,__pu_addr); break; \ | |
| 226 | − case 2: __put_user_16(x,__pu_addr); break; \ | |
| 227 | − case 4: __put_user_32(x,__pu_addr); break; \ | |
| 228 | − case 8: __put_user_64(x,__pu_addr); break; \ | |
| 225 | + case 1: __put_user_8(x, __pu_addr); break; \ | |
| 226 | + case 2: __put_user_16(x, __pu_addr); break; \ | |
| 227 | + case 4: __put_user_32(x, __pu_addr); break; \ | |
| 228 | + case 8: __put_user_64(x, __pu_addr); break; \ | |
| 229 | 229 | default: __put_user_unknown(); break; \ |
| 230 | 230 | } \ |
| 231 | 231 | } \ |
| @@ -237,7 +237,7 @@ extern void __put_user_unknown(void); · 5 unmodified lines | ||
| 237 | 237 | * instead of writing: this is because they do not write to |
| 238 | 238 | * any memory gcc knows about, so there are no aliasing issues |
| 239 | 239 | */ |
| 240 | −#define __put_user_64(x,addr) \ | |
| 240 | +#define __put_user_64(x, addr) \ | |
| 241 | 241 | __asm__ __volatile__("1: stq %r2,%1\n" \ |
| 242 | 242 | "2:\n" \ |
| 243 | 243 | ".section __ex_table,\"a\"\n" \ |
| @@ -247,7 +247,7 @@ __asm__ __volatile__("1: stq %r2,%1\n" \ · 3 unmodified lines | ||
| 247 | 247 | : "=r"(__pu_err) \ |
| 248 | 248 | : "m" (__m(addr)), "rJ" (x), "0"(__pu_err)) |
| 249 | 249 | |
| 250 | −#define __put_user_32(x,addr) \ | |
| 250 | +#define __put_user_32(x, addr) \ | |
| 251 | 251 | __asm__ __volatile__("1: stl %r2,%1\n" \ |
| 252 | 252 | "2:\n" \ |
| 253 | 253 | ".section __ex_table,\"a\"\n" \ |
| @@ -260,7 +260,7 @@ __asm__ __volatile__("1: stl %r2,%1\n" \ · 6 unmodified lines | ||
| 260 | 260 | #ifdef __alpha_bwx__ |
| 261 | 261 | /* Those lucky bastards with ev56 and later CPUs can do byte/word moves. */ |
| 262 | 262 | |
| 263 | −#define __put_user_16(x,addr) \ | |
| 263 | +#define __put_user_16(x, addr) \ | |
| 264 | 264 | __asm__ __volatile__("1: stw %r2,%1\n" \ |
| 265 | 265 | "2:\n" \ |
| 266 | 266 | ".section __ex_table,\"a\"\n" \ |
| @@ -270,7 +270,7 @@ __asm__ __volatile__("1: stw %r2,%1\n" \ · 3 unmodified lines | ||
| 270 | 270 | : "=r"(__pu_err) \ |
| 271 | 271 | : "m"(__m(addr)), "rJ"(x), "0"(__pu_err)) |
| 272 | 272 | |
| 273 | −#define __put_user_8(x,addr) \ | |
| 273 | +#define __put_user_8(x, addr) \ | |
| 274 | 274 | __asm__ __volatile__("1: stb %r2,%1\n" \ |
| 275 | 275 | "2:\n" \ |
| 276 | 276 | ".section __ex_table,\"a\"\n" \ |
| @@ -283,7 +283,7 @@ __asm__ __volatile__("1: stb %r2,%1\n" \ · 6 unmodified lines | ||
| 283 | 283 | /* Unfortunately, we can't get an unaligned access trap for the sub-word |
| 284 | 284 | write, so we have to do a general unaligned operation. */ |
| 285 | 285 | |
| 286 | −#define __put_user_16(x,addr) \ | |
| 286 | +#define __put_user_16(x, addr) \ | |
| 287 | 287 | { \ |
| 288 | 288 | long __pu_tmp1, __pu_tmp2, __pu_tmp3, __pu_tmp4; \ |
| 289 | 289 | __asm__ __volatile__( \ |
| @@ -308,13 +308,13 @@ __asm__ __volatile__("1: stb %r2,%1\n" \ · 18 unmodified lines | ||
| 308 | 308 | " .long 4b - .\n" \ |
| 309 | 309 | " lda $31, 5b-4b(%0)\n" \ |
| 310 | 310 | ".previous" \ |
| 311 | − : "=r"(__pu_err), "=&r"(__pu_tmp1), \ | |
| 312 | − "=&r"(__pu_tmp2), "=&r"(__pu_tmp3), \ | |
| 311 | + : "=r"(__pu_err), "=&r"(__pu_tmp1), \ | |
| 312 | + "=&r"(__pu_tmp2), "=&r"(__pu_tmp3), \ | |
| 313 | 313 | "=&r"(__pu_tmp4) \ |
| 314 | 314 | : "r"(addr), "r"((unsigned long)(x)), "0"(__pu_err)); \ |
| 315 | 315 | } |
| 316 | 316 | |
| 317 | −#define __put_user_8(x,addr) \ | |
| 317 | +#define __put_user_8(x, addr) \ | |
| 318 | 318 | { \ |
| 319 | 319 | long __pu_tmp1, __pu_tmp2; \ |
| 320 | 320 | __asm__ __volatile__( \ |
| @@ -330,7 +330,7 @@ __asm__ __volatile__("1: stb %r2,%1\n" \ · 9 unmodified lines | ||
| 330 | 330 | " .long 2b - .\n" \ |
| 331 | 331 | " lda $31, 3b-2b(%0)\n" \ |
| 332 | 332 | ".previous" \ |
| 333 | − : "=r"(__pu_err), \ | |
| 333 | + : "=r"(__pu_err), \ | |
| 334 | 334 | "=&r"(__pu_tmp1), "=&r"(__pu_tmp2) \ |
| 335 | 335 | : "r"((unsigned long)(x)), "r"(addr), "0"(__pu_err)); \ |
| 336 | 336 | } |
| @@ -366,7 +366,7 @@ __copy_tofrom_user_nocheck(void *to, const void *from, long len) · 29 unmodified lines | ||
| 366 | 366 | : "=r" (__cu_len), "=r" (__cu_from), "=r" (__cu_to) |
| 367 | 367 | : __module_address(__copy_user) |
| 368 | 368 | "0" (__cu_len), "1" (__cu_from), "2" (__cu_to) |
| 369 | − : "$1","$2","$3","$4","$5","$28","memory"); | |
| 369 | + : "$1", "$2", "$3", "$4", "$5", "$28", "memory"); | |
| 370 | 370 | |
| 371 | 371 | return __cu_len; |
| 372 | 372 | } |
| @@ -379,15 +379,15 @@ __copy_tofrom_user(void *to, const void *from, long len, const void __user *vali · 6 unmodified lines | ||
| 379 | 379 | return len; |
| 380 | 380 | } |
| 381 | 381 | |
| 382 | −#define __copy_to_user(to,from,n) \ | |
| 382 | +#define __copy_to_user(to, from, n) \ | |
| 383 | 383 | ({ \ |
| 384 | 384 | __chk_user_ptr(to); \ |
| 385 | − __copy_tofrom_user_nocheck((__force void *)(to),(from),(n)); \ | |
| 385 | + __copy_tofrom_user_nocheck((__force void *)(to), (from), (n)); \ | |
| 386 | 386 | }) |
| 387 | −#define __copy_from_user(to,from,n) \ | |
| 387 | +#define __copy_from_user(to, from, n) \ | |
| 388 | 388 | ({ \ |
| 389 | 389 | __chk_user_ptr(from); \ |
| 390 | − __copy_tofrom_user_nocheck((to),(__force void *)(from),(n)); \ | |
| 390 | + __copy_tofrom_user_nocheck((to), (__force void *)(from), (n)); \ | |
| 391 | 391 | }) |
| 392 | 392 | |
| 393 | 393 | #define __copy_to_user_inatomic __copy_to_user |
| @@ -418,7 +418,7 @@ __clear_user(void __user *to, long len) · 24 unmodified lines | ||
| 418 | 418 | : "=r"(__cl_len), "=r"(__cl_to) |
| 419 | 419 | : __module_address(__do_clear_user) |
| 420 | 420 | "0"(__cl_len), "1"(__cl_to) |
| 421 | − : "$1","$2","$3","$4","$5","$28","memory"); | |
| 421 | + : "$1", "$2", "$3", "$4", "$5", "$28", "memory"); | |
| 422 | 422 | return __cl_len; |
| 423 | 423 | } |
| 424 | 424 | |
| @@ -150,7 +150,7 @@ restore_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs) · 149 unmodified lines | ||
| 150 | 150 | struct switch_stack *sw = (struct switch_stack *)regs - 1; |
| 151 | 151 | long i, err = __get_user(regs->pc, &sc->sc_pc); |
| 152 | 152 | |
| 153 | − current_thread_info()->restart_block.fn = do_no_restart_syscall; | |
| 153 | + current->restart_block.fn = do_no_restart_syscall; | |
| 154 | 154 | |
| 155 | 155 | sw->r26 = (unsigned long) ret_from_sys_call; |
| 156 | 156 | |
| @@ -112,7 +112,7 @@ · 111 unmodified lines | ||
| 112 | 112 | chan_allocation_order = <0>; |
| 113 | 113 | chan_priority = <1>; |
| 114 | 114 | block_size = <0x7ff>; |
| 115 | − data_width = <2 0 0 0>; | |
| 115 | + data_width = <2>; | |
| 116 | 116 | clocks = <&ahb_clk>; |
| 117 | 117 | clock-names = "hclk"; |
| 118 | 118 | }; |
| @@ -61,7 +61,6 @@ · 60 unmodified lines | ||
| 61 | 61 | #define _PAGE_WRITE (1<<4) /* Page has user write perm (H) */ |
| 62 | 62 | #define _PAGE_READ (1<<5) /* Page has user read perm (H) */ |
| 63 | 63 | #define _PAGE_MODIFIED (1<<6) /* Page modified (dirty) (S) */ |
| 64 | −#define _PAGE_FILE (1<<7) /* page cache/ swap (S) */ | |
| 65 | 64 | #define _PAGE_GLOBAL (1<<8) /* Page is global (H) */ |
| 66 | 65 | #define _PAGE_PRESENT (1<<10) /* TLB entry is valid (H) */ |
| 67 | 66 | |
| @@ -73,7 +72,6 @@ · 5 unmodified lines | ||
| 73 | 72 | #define _PAGE_READ (1<<3) /* Page has user read perm (H) */ |
| 74 | 73 | #define _PAGE_ACCESSED (1<<4) /* Page is accessed (S) */ |
| 75 | 74 | #define _PAGE_MODIFIED (1<<5) /* Page modified (dirty) (S) */ |
| 76 | −#define _PAGE_FILE (1<<6) /* page cache/ swap (S) */ | |
| 77 | 75 | #define _PAGE_GLOBAL (1<<8) /* Page is global (H) */ |
| 78 | 76 | #define _PAGE_PRESENT (1<<9) /* TLB entry is valid (H) */ |
| 79 | 77 | #define _PAGE_SHARED_CODE (1<<11) /* Shared Code page with cmn vaddr |
| @@ -213,7 +211,7 @@ · 133 unmodified lines | ||
| 213 | 211 | * No special requirements for lowest virtual address we permit any user space |
| 214 | 212 | * mapping to be mapped at. |
| 215 | 213 | */ |
| 216 | −#define FIRST_USER_ADDRESS 0 | |
| 214 | +#define FIRST_USER_ADDRESS 0UL | |
| 217 | 215 | |
| 218 | 216 | |
| 219 | 217 | /**************************************************************** |
| @@ -259,7 +257,8 @@ static inline void pmd_set(pmd_t *pmdp, pte_t *ptep) · 39 unmodified lines | ||
| 259 | 257 | #define pmd_clear(xp) do { pmd_val(*(xp)) = 0; } while (0) |
| 260 | 258 | |
| 261 | 259 | #define pte_page(x) (mem_map + \ |
| 262 | − (unsigned long)(((pte_val(x) - PAGE_OFFSET) >> PAGE_SHIFT))) | |
| 260 | + (unsigned long)(((pte_val(x) - CONFIG_LINUX_LINK_BASE) >> \ | |
| 261 | + PAGE_SHIFT))) | |
| 263 | 262 | |
| 264 | 263 | #define mk_pte(page, pgprot) \ |
| 265 | 264 | ({ \ |
| @@ -268,15 +267,6 @@ static inline void pmd_set(pmd_t *pmdp, pte_t *ptep) · 2 unmodified lines | ||
| 268 | 267 | pte; \ |
| 269 | 268 | }) |
| 270 | 269 | |
| 271 | −/* TBD: Non linear mapping stuff */ | |
| 272 | −static inline int pte_file(pte_t pte) | |
| 273 | −{ | |
| 274 | − return pte_val(pte) & _PAGE_FILE; | |
| 275 | −} | |
| 276 | − | |
| 277 | −#define PTE_FILE_MAX_BITS 30 | |
| 278 | −#define pgoff_to_pte(x) __pte(x) | |
| 279 | −#define pte_to_pgoff(x) (pte_val(x) >> 2) | |
| 280 | 270 | #define pte_pfn(pte) (pte_val(pte) >> PAGE_SHIFT) |
| 281 | 271 | #define pfn_pte(pfn, prot) (__pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot))) |
| 282 | 272 | #define __pte_index(addr) (((addr) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1)) |
| @@ -364,7 +354,7 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, · 81 unmodified lines | ||
| 364 | 354 | |
| 365 | 355 | /* Encode swap {type,off} tuple into PTE |
| 366 | 356 | * We reserve 13 bits for 5-bit @type, keeping bits 12-5 zero, ensuring that |
| 367 | − * both PAGE_FILE and PAGE_PRESENT are zero in a PTE holding swap "identifier" | |
| 357 | + * PAGE_PRESENT is zero in a PTE holding swap "identifier" | |
| 368 | 358 | */ |
| 369 | 359 | #define __swp_entry(type, off) ((swp_entry_t) { \ |
| 370 | 360 | ((type) & 0x1f) | ((off) << 13) }) |
| @@ -56,9 +56,6 @@ unsigned long thread_saved_pc(struct task_struct *t); · 55 unmodified lines | ||
| 56 | 56 | /* Free all resources held by a thread */ |
| 57 | 57 | #define release_thread(thread) do { } while (0) |
| 58 | 58 | |
| 59 | −/* Prepare to copy thread state - unlazy all lazy status */ | |
| 60 | −#define prepare_to_copy(tsk) do { } while (0) | |
| 61 | − | |
| 62 | 59 | /* |
| 63 | 60 | * A lot of busy-wait loops in SMP are based off of non-volatile data otherwise |
| 64 | 61 | * get optimised away by gcc |
| @@ -10,26 +10,13 @@ · 9 unmodified lines | ||
| 10 | 10 | #define _ASM_ARC_SERIAL_H |
| 11 | 11 | |
| 12 | 12 | /* |
| 13 | − * early-8250 requires BASE_BAUD to be defined and includes this header. | |
| 14 | − * We put in a typical value: | |
| 15 | − * (core clk / 16) - i.e. UART samples 16 times per sec. | |
| 16 | − * Athough in multi-platform-image this might not work, specially if the | |
| 17 | − * clk driving the UART is different. | |
| 18 | − * We can't use DeviceTree as this is typically for early serial. | |
| 13 | + * early 8250 (now earlycon) requires BASE_BAUD to be defined in this header. | |
| 14 | + * However to still determine it dynamically (for multi-platform images) | |
| 15 | + * we do this in a helper by parsing the FDT early | |
| 19 | 16 | */ |
| 20 | 17 | |
| 21 | −#include <asm/clk.h> | |
| 18 | +extern unsigned int __init arc_early_base_baud(void); | |
| 22 | 19 | |
| 23 | −#define BASE_BAUD (arc_get_core_freq() / 16) | |
| 24 | − | |
| 25 | −/* | |
| 26 | − * This is definitely going to break early 8250 consoles on multi-platform | |
| 27 | − * images but hey, it won't add any code complexity for a debug feature of | |
| 28 | − * one broken driver. | |
| 29 | − */ | |
| 30 | −#ifdef CONFIG_ARC_PLAT_TB10X | |
| 31 | −#undef BASE_BAUD | |
| 32 | −#define BASE_BAUD (arc_get_core_freq() / 16 / 3) | |
| 33 | −#endif | |
| 20 | +#define BASE_BAUD arc_early_base_baud() | |
| 34 | 21 | |
| 35 | 22 | #endif /* _ASM_ARC_SERIAL_H */ |
| @@ -46,7 +46,6 @@ struct thread_info { · 45 unmodified lines | ||
| 46 | 46 | struct exec_domain *exec_domain;/* execution domain */ |
| 47 | 47 | __u32 cpu; /* current CPU */ |
| 48 | 48 | unsigned long thr_ptr; /* TLS ptr */ |
| 49 | − struct restart_block restart_block; | |
| 50 | 49 | }; |
| 51 | 50 | |
| 52 | 51 | /* |
| @@ -62,9 +61,6 @@ struct thread_info { · 9 unmodified lines | ||
| 62 | 61 | .cpu = 0, \ |
| 63 | 62 | .preempt_count = INIT_PREEMPT_COUNT, \ |
| 64 | 63 | .addr_limit = KERNEL_DS, \ |
| 65 | − .restart_block = { \ | |
| 66 | − .fn = do_no_restart_syscall, \ | |
| 67 | − }, \ | |
| 68 | 64 | } |
| 69 | 65 | |
| 70 | 66 | #define init_thread_info (init_thread_union.thread_info) |
| @@ -17,6 +17,28 @@ · 16 unmodified lines | ||
| 17 | 17 | #include <asm/clk.h> |
| 18 | 18 | #include <asm/mach_desc.h> |
| 19 | 19 | |
| 20 | +#ifdef CONFIG_SERIAL_EARLYCON | |
| 21 | + | |
| 22 | +static unsigned int __initdata arc_base_baud; | |
| 23 | + | |
| 24 | +unsigned int __init arc_early_base_baud(void) | |
| 25 | +{ | |
| 26 | + return arc_base_baud/16; | |
| 27 | +} | |
| 28 | + | |
| 29 | +static void __init arc_set_early_base_baud(unsigned long dt_root) | |
| 30 | +{ | |
| 31 | + unsigned int core_clk = arc_get_core_freq(); | |
| 32 | + | |
| 33 | + if (of_flat_dt_is_compatible(dt_root, "abilis,arc-tb10x")) | |
| 34 | + arc_base_baud = core_clk/3; | |
| 35 | + else | |
| 36 | + arc_base_baud = core_clk; | |
| 37 | +} | |
| 38 | +#else | |
| 39 | +#define arc_set_early_base_baud(dt_root) | |
| 40 | +#endif | |
| 41 | + | |
| 20 | 42 | static const void * __init arch_get_next_mach(const char *const **match) |
| 21 | 43 | { |
| 22 | 44 | static const struct machine_desc *mdesc = __arch_info_begin; |
| @@ -56,5 +78,7 @@ const struct machine_desc * __init setup_machine_fdt(void *dt) · 33 unmodified lines | ||
| 56 | 78 | if (clk) |
| 57 | 79 | arc_set_core_freq(of_read_ulong(clk, len/4)); |
| 58 | 80 | |
| 81 | + arc_set_early_base_baud(dt_root); | |
| 82 | + | |
| 59 | 83 | return mdesc; |
| 60 | 84 | } |
| @@ -736,16 +736,20 @@ ENTRY(ret_from_fork) · 735 unmodified lines | ||
| 736 | 736 | ; put last task in scheduler queue |
| 737 | 737 | bl @schedule_tail |
| 738 | 738 | |
| 739 | − ; If kernel thread, jump to its entry-point | |
| 740 | 739 | ld r9, [sp, PT_status32] |
| 741 | 740 | brne r9, 0, 1f |
| 742 | 741 | |
| 743 | − jl.d [r14] | |
| 744 | − mov r0, r13 ; arg to payload | |
| 742 | + jl.d [r14] ; kernel thread entry point | |
| 743 | + mov r0, r13 ; (see PF_KTHREAD block in copy_thread) | |
| 745 | 744 | |
| 746 | 745 | 1: |
| 747 | − ; special case of kernel_thread entry point returning back due to | |
| 748 | − ; kernel_execve() - pretend return from syscall to ret to userland | |
| 746 | + ; Return to user space | |
| 747 | + ; 1. Any forked task (Reach here via BRne above) | |
| 748 | + ; 2. First ever init task (Reach here via return from JL above) | |
| 749 | + ; This is the historic "kernel_execve" use-case, to return to init | |
| 750 | + ; user mode, in a round about way since that is always done from | |
| 751 | + ; a kernel thread which is executed via JL above but always returns | |
| 752 | + ; out whenever kernel_execve (now inline do_fork()) is involved | |
| 749 | 753 | b ret_from_exception |
| 750 | 754 | END(ret_from_fork) |
| 751 | 755 | |
| @@ -412,6 +412,11 @@ static int show_cpuinfo(struct seq_file *m, void *v) · 411 unmodified lines | ||
| 412 | 412 | char *str; |
| 413 | 413 | int cpu_id = ptr_to_cpu(v); |
| 414 | 414 | |
| 415 | + if (!cpu_online(cpu_id)) { | |
| 416 | + seq_printf(m, "processor [%d]\t: Offline\n", cpu_id); | |
| 417 | + goto done; | |
| 418 | + } | |
| 419 | + | |
| 415 | 420 | str = (char *)__get_free_page(GFP_TEMPORARY); |
| 416 | 421 | if (!str) |
| 417 | 422 | goto done; |
| @@ -429,7 +434,7 @@ static int show_cpuinfo(struct seq_file *m, void *v) · 11 unmodified lines | ||
| 429 | 434 | |
| 430 | 435 | free_page((unsigned long)str); |
| 431 | 436 | done: |
| 432 | − seq_printf(m, "\n\n"); | |
| 437 | + seq_printf(m, "\n"); | |
| 433 | 438 | |
| 434 | 439 | return 0; |
| 435 | 440 | } |
| @@ -104,7 +104,7 @@ SYSCALL_DEFINE0(rt_sigreturn) · 103 unmodified lines | ||
| 104 | 104 | struct pt_regs *regs = current_pt_regs(); |
| 105 | 105 | |
| 106 | 106 | /* Always make any pending restarted system calls return -EINTR */ |
| 107 | − current_thread_info()->restart_block.fn = do_no_restart_syscall; | |
| 107 | + current->restart_block.fn = do_no_restart_syscall; | |
| 108 | 108 | |
| 109 | 109 | /* Since we stacked the signal on a word boundary, |
| 110 | 110 | * then 'sp' should be word aligned here. If it's |
| @@ -221,7 +221,7 @@ static void ipi_send_msg_one(int cpu, enum ipi_msg_type msg) · 220 unmodified lines | ||
| 221 | 221 | * and read back old value |
| 222 | 222 | */ |
| 223 | 223 | do { |
| 224 | − new = old = *ipi_data_ptr; | |
| 224 | + new = old = ACCESS_ONCE(*ipi_data_ptr); | |
| 225 | 225 | new |= 1U << msg; |
| 226 | 226 | } while (cmpxchg(ipi_data_ptr, old, new) != old); |
| 227 | 227 | |
| @@ -29,6 +29,7 @@ config ARM · 28 unmodified lines | ||
| 29 | 29 | select HANDLE_DOMAIN_IRQ |
| 30 | 30 | select HARDIRQS_SW_RESEND |
| 31 | 31 | select HAVE_ARCH_AUDITSYSCALL if (AEABI && !OABI_COMPAT) |
| 32 | + select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6 | |
| 32 | 33 | select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL |
| 33 | 34 | select HAVE_ARCH_KGDB |
| 34 | 35 | select HAVE_ARCH_SECCOMP_FILTER if (AEABI && !OABI_COMPAT) |
| @@ -60,6 +61,7 @@ config ARM · 25 unmodified lines | ||
| 60 | 61 | select HAVE_MEMBLOCK |
| 61 | 62 | select HAVE_MOD_ARCH_SPECIFIC if ARM_UNWIND |
| 62 | 63 | select HAVE_OPROFILE if (HAVE_PERF_EVENTS) |
| 64 | + select HAVE_OPTPROBES if !THUMB2_KERNEL | |
| 63 | 65 | select HAVE_PERF_EVENTS |
| 64 | 66 | select HAVE_PERF_REGS |
| 65 | 67 | select HAVE_PERF_USER_STACK_DUMP |
| @@ -858,6 +860,8 @@ source "arch/arm/mach-cns3xxx/Kconfig" · 792 unmodified lines | ||
| 858 | 860 | |
| 859 | 861 | source "arch/arm/mach-davinci/Kconfig" |
| 860 | 862 | |
| 863 | +source "arch/arm/mach-digicolor/Kconfig" | |
| 864 | + | |
| 861 | 865 | source "arch/arm/mach-dove/Kconfig" |
| 862 | 866 | |
| 863 | 867 | source "arch/arm/mach-ep93xx/Kconfig" |
| @@ -1279,6 +1283,9 @@ config PCI_DOMAINS · 415 unmodified lines | ||
| 1279 | 1283 | bool |
| 1280 | 1284 | depends on PCI |
| 1281 | 1285 | |
| 1286 | +config PCI_DOMAINS_GENERIC | |
| 1287 | + def_bool PCI_DOMAINS | |
| 1288 | + | |
| 1282 | 1289 | config PCI_NANOENGINE |
| 1283 | 1290 | bool "BSE nanoEngine PCI support" |
| 1284 | 1291 | depends on SA1100_NANOENGINE |
| @@ -1488,7 +1495,7 @@ config ARM_PSCI · 203 unmodified lines | ||
| 1488 | 1495 | # selected platforms. |
| 1489 | 1496 | config ARCH_NR_GPIO |
| 1490 | 1497 | int |
| 1491 | − default 1024 if ARCH_SHMOBILE || ARCH_TEGRA | |
| 1498 | + default 1024 if ARCH_SHMOBILE || ARCH_TEGRA || ARCH_ZYNQ | |
| 1492 | 1499 | default 512 if ARCH_EXYNOS || ARCH_KEYSTONE || SOC_OMAP5 || \ |
| 1493 | 1500 | SOC_DRA7XX || ARCH_S3C24XX || ARCH_S3C64XX || ARCH_S5PV210 |
| 1494 | 1501 | default 416 if ARCH_SUNXI |
| @@ -115,16 +115,22 @@ choice · 114 unmodified lines | ||
| 115 | 115 | 0x80024000 | 0xf0024000 | UART9 |
| 116 | 116 | |
| 117 | 117 | config AT91_DEBUG_LL_DBGU0 |
| 118 | − bool "Kernel low-level debugging on rm9200, 9260/9g20, 9261/9g10 and 9rl" | |
| 119 | − depends on HAVE_AT91_DBGU0 | |
| 118 | + bool "Kernel low-level debugging on rm9200, 9260/9g20, 9261/9g10, 9rl, 9x5, 9n12" | |
| 119 | + select DEBUG_AT91_UART | |
| 120 | + depends on ARCH_AT91 | |
| 121 | + depends on SOC_AT91RM9200 || SOC_AT91SAM9 | |
| 120 | 122 | |
| 121 | 123 | config AT91_DEBUG_LL_DBGU1 |
| 122 | − bool "Kernel low-level debugging on 9263 and 9g45" | |
| 123 | − depends on HAVE_AT91_DBGU1 | |
| 124 | + bool "Kernel low-level debugging on 9263, 9g45 and sama5d3" | |
| 125 | + select DEBUG_AT91_UART | |
| 126 | + depends on ARCH_AT91 | |
| 127 | + depends on SOC_AT91SAM9 || SOC_SAMA5 | |
| 124 | 128 | |
| 125 | 129 | config AT91_DEBUG_LL_DBGU2 |
| 126 | 130 | bool "Kernel low-level debugging on sama5d4" |
| 127 | − depends on HAVE_AT91_DBGU2 | |
| 131 | + select DEBUG_AT91_UART | |
| 132 | + depends on ARCH_AT91 | |
| 133 | + depends on SOC_SAMA5 | |
| 128 | 134 | |
| 129 | 135 | config DEBUG_BCM2835 |
| 130 | 136 | bool "Kernel low-level debugging on BCM2835 PL011 UART" |
| @@ -241,6 +247,13 @@ choice · 110 unmodified lines | ||
| 241 | 247 | Say Y here if you want the debug print routines to direct |
| 242 | 248 | their output to the serial port in the DC21285 (Footbridge). |
| 243 | 249 | |
| 250 | + config DEBUG_DIGICOLOR_UA0 | |
| 251 | + bool "Kernel low-level debugging messages via Digicolor UA0" | |
| 252 | + depends on ARCH_DIGICOLOR | |
| 253 | + help | |
| 254 | + Say Y here if you want the debug print routines to direct | |
| 255 | + their output to the UA0 serial port in the CX92755. | |
| 256 | + | |
| 244 | 257 | config DEBUG_FOOTBRIDGE_COM1 |
| 245 | 258 | bool "Kernel low-level debugging messages via footbridge 8250 at PCI COM1" |
| 246 | 259 | depends on FOOTBRIDGE |
| @@ -272,6 +285,14 @@ choice · 25 unmodified lines | ||
| 272 | 285 | Say Y here if you want the debug print routines to direct |
| 273 | 286 | their output to the UART on Highbank based devices. |
| 274 | 287 | |
| 288 | + config DEBUG_HIP01_UART | |
| 289 | + bool "Hisilicon Hip01 Debug UART" | |
| 290 | + depends on ARCH_HIP01 | |
| 291 | + select DEBUG_UART_8250 | |
| 292 | + help | |
| 293 | + Say Y here if you want kernel low-level debugging support | |
| 294 | + on HIP01 UART. | |
| 295 | + | |
| 275 | 296 | config DEBUG_HIP04_UART |
| 276 | 297 | bool "Hisilicon HiP04 Debug UART" |
| 277 | 298 | depends on ARCH_HIP04 |
| @@ -397,6 +418,13 @@ choice · 119 unmodified lines | ||
| 397 | 418 | Say Y here if you want the debug print routines to direct |
| 398 | 419 | their output to UART1 serial port on KEYSTONE2 devices. |
| 399 | 420 | |
| 421 | + config DEBUG_KS8695_UART | |
| 422 | + bool "KS8695 Debug UART" | |
| 423 | + depends on ARCH_KS8695 | |
| 424 | + help | |
| 425 | + Say Y here if you want kernel low-level debugging support | |
| 426 | + on KS8695. | |
| 427 | + | |
| 400 | 428 | config DEBUG_MESON_UARTAO |
| 401 | 429 | bool "Kernel low-level debugging via Meson6 UARTAO" |
| 402 | 430 | depends on ARCH_MESON |
| @@ -427,7 +455,7 @@ choice · 24 unmodified lines | ||
| 427 | 455 | Say Y here if you want the debug print routines to direct |
| 428 | 456 | their output to the serial port on MSM devices. |
| 429 | 457 | |
| 430 | − ARCH DEBUG_UART_PHYS DEBUG_UART_BASE # | |
| 458 | + ARCH DEBUG_UART_PHYS DEBUG_UART_VIRT # | |
| 431 | 459 | MSM7X00A, QSD8X50 0xa9a00000 0xe1000000 UART1 |
| 432 | 460 | MSM7X00A, QSD8X50 0xa9b00000 0xe1000000 UART2 |
| 433 | 461 | MSM7X00A, QSD8X50 0xa9c00000 0xe1000000 UART3 |
| @@ -446,7 +474,8 @@ choice · 12 unmodified lines | ||
| 446 | 474 | Say Y here if you want the debug print routines to direct |
| 447 | 475 | their output to the serial port on Qualcomm devices. |
| 448 | 476 | |
| 449 | − ARCH DEBUG_UART_PHYS DEBUG_UART_BASE | |
| 477 | + ARCH DEBUG_UART_PHYS DEBUG_UART_VIRT | |
| 478 | + APQ8064 0x16640000 0xf0040000 | |
| 450 | 479 | APQ8084 0xf995e000 0xfa75e000 |
| 451 | 480 | MSM8X60 0x19c40000 0xf0040000 |
| 452 | 481 | MSM8960 0x16440000 0xf0040000 |
| @@ -455,13 +484,13 @@ choice · 2 unmodified lines | ||
| 455 | 484 | Please adjust DEBUG_UART_PHYS and DEBUG_UART_BASE configuration |
| 456 | 485 | options based on your needs. |
| 457 | 486 | |
| 458 | − config DEBUG_MVEBU_UART | |
| 459 | − bool "Kernel low-level debugging messages via MVEBU UART (old bootloaders)" | |
| 487 | + config DEBUG_MVEBU_UART0 | |
| 488 | + bool "Kernel low-level debugging messages via MVEBU UART0 (old bootloaders)" | |
| 460 | 489 | depends on ARCH_MVEBU |
| 461 | 490 | select DEBUG_UART_8250 |
| 462 | 491 | help |
| 463 | 492 | Say Y here if you want kernel low-level debugging support |
| 464 | − on MVEBU based platforms. | |
| 493 | + on MVEBU based platforms on UART0. | |
| 465 | 494 | |
| 466 | 495 | This option should be used with the old bootloaders |
| 467 | 496 | that left the internal registers mapped at |
| @@ -474,13 +503,28 @@ choice · 6 unmodified lines | ||
| 474 | 503 | when u-boot hands over to the kernel, the system |
| 475 | 504 | silently crashes, with no serial output at all. |
| 476 | 505 | |
| 477 | − config DEBUG_MVEBU_UART_ALTERNATE | |
| 478 | − bool "Kernel low-level debugging messages via MVEBU UART (new bootloaders)" | |
| 506 | + config DEBUG_MVEBU_UART0_ALTERNATE | |
| 507 | + bool "Kernel low-level debugging messages via MVEBU UART0 (new bootloaders)" | |
| 479 | 508 | depends on ARCH_MVEBU |
| 480 | 509 | select DEBUG_UART_8250 |
| 481 | 510 | help |
| 482 | 511 | Say Y here if you want kernel low-level debugging support |
| 483 | − on MVEBU based platforms. | |
| 512 | + on MVEBU based platforms on UART0. | |
| 513 | + | |
| 514 | + This option should be used with the new bootloaders | |
| 515 | + that remap the internal registers at 0xf1000000. | |
| 516 | + | |
| 517 | + If the wrong DEBUG_MVEBU_UART* option is selected, | |
| 518 | + when u-boot hands over to the kernel, the system | |
| 519 | + silently crashes, with no serial output at all. | |
| 520 | + | |
| 521 | + config DEBUG_MVEBU_UART1_ALTERNATE | |
| 522 | + bool "Kernel low-level debugging messages via MVEBU UART1 (new bootloaders)" | |
| 523 | + depends on ARCH_MVEBU | |
| 524 | + select DEBUG_UART_8250 | |
| 525 | + help | |
| 526 | + Say Y here if you want kernel low-level debugging support | |
| 527 | + on MVEBU based platforms on UART1. | |
| 484 | 528 | |
| 485 | 529 | This option should be used with the new bootloaders |
| 486 | 530 | that remap the internal registers at 0xf1000000. |
| @@ -496,6 +540,13 @@ choice · 9 unmodified lines | ||
| 496 | 540 | Say Y here if you want kernel low-level debugging support |
| 497 | 541 | on Vybrid based platforms. |
| 498 | 542 | |
| 543 | + config DEBUG_NETX_UART | |
| 544 | + bool "Kernel low-level debugging messages via NetX UART" | |
| 545 | + depends on ARCH_NETX | |
| 546 | + help | |
| 547 | + Say Y here if you want kernel low-level debugging support | |
| 548 | + on Hilscher NetX based platforms. | |
| 549 | + | |
| 499 | 550 | config DEBUG_NOMADIK_UART |
| 500 | 551 | bool "Kernel low-level debugging messages via NOMADIK UART" |
| 501 | 552 | depends on ARCH_NOMADIK |
| @@ -520,6 +571,30 @@ choice · 18 unmodified lines | ||
| 520 | 571 | Say Y here if you want kernel low-level debugging support |
| 521 | 572 | on TI-NSPIRE CX models. |
| 522 | 573 | |
| 574 | + config DEBUG_OMAP1UART1 | |
| 575 | + bool "Kernel low-level debugging via OMAP1 UART1" | |
| 576 | + depends on ARCH_OMAP1 | |
| 577 | + select DEBUG_UART_8250 | |
| 578 | + help | |
| 579 | + Say Y here if you want kernel low-level debugging support | |
| 580 | + on OMAP1 based platforms (except OMAP730) on the UART1. | |
| 581 | + | |
| 582 | + config DEBUG_OMAP1UART2 | |
| 583 | + bool "Kernel low-level debugging via OMAP1 UART2" | |
| 584 | + depends on ARCH_OMAP1 | |
| 585 | + select DEBUG_UART_8250 | |
| 586 | + help | |
| 587 | + Say Y here if you want kernel low-level debugging support | |
| 588 | + on OMAP1 based platforms (except OMAP730) on the UART2. | |
| 589 | + | |
| 590 | + config DEBUG_OMAP1UART3 | |
| 591 | + bool "Kernel low-level debugging via OMAP1 UART3" | |
| 592 | + depends on ARCH_OMAP1 | |
| 593 | + select DEBUG_UART_8250 | |
| 594 | + help | |
| 595 | + Say Y here if you want kernel low-level debugging support | |
| 596 | + on OMAP1 based platforms (except OMAP730) on the UART3. | |
| 597 | + | |
| 523 | 598 | config DEBUG_OMAP2UART1 |
| 524 | 599 | bool "OMAP2/3/4 UART1 (omap2/3 sdp boards and some omap3 boards)" |
| 525 | 600 | depends on ARCH_OMAP2PLUS |
| @@ -562,6 +637,30 @@ choice · 36 unmodified lines | ||
| 562 | 637 | depends on ARCH_OMAP2PLUS |
| 563 | 638 | select DEBUG_OMAP2PLUS_UART |
| 564 | 639 | |
| 640 | + config DEBUG_OMAP7XXUART1 | |
| 641 | + bool "Kernel low-level debugging via OMAP730 UART1" | |
| 642 | + depends on ARCH_OMAP730 | |
| 643 | + select DEBUG_UART_8250 | |
| 644 | + help | |
| 645 | + Say Y here if you want kernel low-level debugging support | |
| 646 | + on OMAP730 based platforms on the UART1. | |
| 647 | + | |
| 648 | + config DEBUG_OMAP7XXUART2 | |
| 649 | + bool "Kernel low-level debugging via OMAP730 UART2" | |
| 650 | + depends on ARCH_OMAP730 | |
| 651 | + select DEBUG_UART_8250 | |
| 652 | + help | |
| 653 | + Say Y here if you want kernel low-level debugging support | |
| 654 | + on OMAP730 based platforms on the UART2. | |
| 655 | + | |
| 656 | + config DEBUG_OMAP7XXUART3 | |
| 657 | + bool "Kernel low-level debugging via OMAP730 UART3" | |
| 658 | + depends on ARCH_OMAP730 | |
| 659 | + select DEBUG_UART_8250 | |
| 660 | + help | |
| 661 | + Say Y here if you want kernel low-level debugging support | |
| 662 | + on OMAP730 based platforms on the UART3. | |
| 663 | + | |
| 565 | 664 | config DEBUG_TI81XXUART1 |
| 566 | 665 | bool "Kernel low-level debugging messages via TI81XX UART1 (ti8148evm)" |
| 567 | 666 | depends on ARCH_OMAP2PLUS |
| @@ -916,16 +1015,28 @@ choice · 348 unmodified lines | ||
| 916 | 1015 | config DEBUG_SIRFPRIMA2_UART1 |
| 917 | 1016 | bool "Kernel low-level debugging messages via SiRFprimaII UART1" |
| 918 | 1017 | depends on ARCH_PRIMA2 |
| 1018 | + select DEBUG_SIRFSOC_UART | |
| 919 | 1019 | help |
| 920 | 1020 | Say Y here if you want the debug print routines to direct |
| 921 | 1021 | their output to the uart1 port on SiRFprimaII devices. |
| 922 | 1022 | |
| 923 | − config DEBUG_SIRFMARCO_UART1 | |
| 924 | − bool "Kernel low-level debugging messages via SiRFmarco UART1" | |
| 925 | − depends on ARCH_MARCO | |
| 1023 | + config DEBUG_SIRFATLAS7_UART0 | |
| 1024 | + bool "Kernel low-level debugging messages via SiRFatlas7 UART0" | |
| 1025 | + depends on ARCH_ATLAS7 | |
| 1026 | + select DEBUG_SIRFSOC_UART | |
| 1027 | + help | |
| 1028 | + Say Y here if you want the debug print routines to direct | |
| 1029 | + their output to the uart0 port on SiRFATLAS7 devices.The uart0 | |
| 1030 | + is used on SiRFATLAS7 as a extra debug port.sometimes an extra | |
| 1031 | + debug port can be very useful. | |
| 1032 | + | |
| 1033 | + config DEBUG_SIRFATLAS7_UART1 | |
| 1034 | + bool "Kernel low-level debugging messages via SiRFatlas7 UART1" | |
| 1035 | + depends on ARCH_ATLAS7 | |
| 1036 | + select DEBUG_SIRFSOC_UART | |
| 926 | 1037 | help |
| 927 | 1038 | Say Y here if you want the debug print routines to direct |
| 928 | − their output to the uart1 port on SiRFmarco devices. | |
| 1039 | + their output to the uart1 port on SiRFATLAS7 devices. | |
| 929 | 1040 | |
| 930 | 1041 | config STIH41X_DEBUG_ASC2 |
| 931 | 1042 | bool "Use StiH415/416 ASC2 UART for low-level debug" |
| @@ -973,7 +1084,7 @@ choice · 41 unmodified lines | ||
| 973 | 1084 | for Mediatek mt6589 based platforms on UART0. |
| 974 | 1085 | |
| 975 | 1086 | config DEBUG_MT8127_UART0 |
| 976 | − bool "Mediatek mt8127 UART0" | |
| 1087 | + bool "Mediatek mt8127/mt6592 UART0" | |
| 977 | 1088 | depends on ARCH_MEDIATEK |
| 978 | 1089 | select DEBUG_UART_8250 |
| 979 | 1090 | help |
| @@ -1031,15 +1142,6 @@ choice · 51 unmodified lines | ||
| 1031 | 1142 | This option selects UART0 on VIA/Wondermedia System-on-a-chip |
| 1032 | 1143 | devices, including VT8500, WM8505, WM8650 and WM8850. |
| 1033 | 1144 | |
| 1034 | − config DEBUG_LL_UART_NONE | |
| 1035 | − bool "No low-level debugging UART" | |
| 1036 | − depends on !ARCH_MULTIPLATFORM | |
| 1037 | − help | |
| 1038 | − Say Y here if your platform doesn't provide a UART option | |
| 1039 | − above. This relies on your platform choosing the right UART | |
| 1040 | − definition internally in order for low-level debugging to | |
| 1041 | − work. | |
| 1042 | − | |
| 1043 | 1145 | config DEBUG_ICEDCC |
| 1044 | 1146 | bool "Kernel low-level debugging via EmbeddedICE DCC channel" |
| 1045 | 1147 | help |
| @@ -1109,6 +1211,10 @@ choice · 63 unmodified lines | ||
| 1109 | 1211 | |
| 1110 | 1212 | endchoice |
| 1111 | 1213 | |
| 1214 | +config DEBUG_AT91_UART | |
| 1215 | + bool | |
| 1216 | + depends on ARCH_AT91 | |
| 1217 | + | |
| 1112 | 1218 | config DEBUG_EXYNOS_UART |
| 1113 | 1219 | bool |
| 1114 | 1220 | |
| @@ -1161,10 +1267,15 @@ config DEBUG_STI_UART · 46 unmodified lines | ||
| 1161 | 1267 | bool |
| 1162 | 1268 | depends on ARCH_STI |
| 1163 | 1269 | |
| 1270 | +config DEBUG_SIRFSOC_UART | |
| 1271 | + bool | |
| 1272 | + depends on ARCH_SIRF | |
| 1273 | + | |
| 1164 | 1274 | config DEBUG_LL_INCLUDE |
| 1165 | 1275 | string |
| 1166 | 1276 | default "debug/sa1100.S" if DEBUG_SA1100 |
| 1167 | 1277 | default "debug/8250.S" if DEBUG_LL_UART_8250 || DEBUG_UART_8250 |
| 1278 | + default "debug/at91.S" if DEBUG_AT91_UART | |
| 1168 | 1279 | default "debug/asm9260.S" if DEBUG_ASM9260_UART |
| 1169 | 1280 | default "debug/clps711x.S" if DEBUG_CLPS711X_UART1 || DEBUG_CLPS711X_UART2 |
| 1170 | 1281 | default "debug/meson.S" if DEBUG_MESON_UARTAO |
| @@ -1183,7 +1294,9 @@ config DEBUG_LL_INCLUDE · 12 unmodified lines | ||
| 1183 | 1294 | DEBUG_IMX6Q_UART || \ |
| 1184 | 1295 | DEBUG_IMX6SL_UART || \ |
| 1185 | 1296 | DEBUG_IMX6SX_UART |
| 1297 | + default "debug/ks8695.S" if DEBUG_KS8695_UART | |
| 1186 | 1298 | default "debug/msm.S" if DEBUG_MSM_UART || DEBUG_QCOM_UARTDM |
| 1299 | + default "debug/netx.S" if DEBUG_NETX_UART | |
| 1187 | 1300 | default "debug/omap2plus.S" if DEBUG_OMAP2PLUS_UART |
| 1188 | 1301 | default "debug/renesas-scif.S" if DEBUG_R7S72100_SCIF2 |
| 1189 | 1302 | default "debug/renesas-scif.S" if DEBUG_RCAR_GEN1_SCIF0 |
| @@ -1195,7 +1308,7 @@ config DEBUG_LL_INCLUDE · 5 unmodified lines | ||
| 1195 | 1308 | default "debug/renesas-scif.S" if DEBUG_RMOBILE_SCIFA4 |
| 1196 | 1309 | default "debug/s3c24xx.S" if DEBUG_S3C24XX_UART |
| 1197 | 1310 | default "debug/s5pv210.S" if DEBUG_S5PV210_UART |
| 1198 | − default "debug/sirf.S" if DEBUG_SIRFPRIMA2_UART1 || DEBUG_SIRFMARCO_UART1 | |
| 1311 | + default "debug/sirf.S" if DEBUG_SIRFSOC_UART | |
| 1199 | 1312 | default "debug/sti.S" if DEBUG_STI_UART |
| 1200 | 1313 | default "debug/tegra.S" if DEBUG_TEGRA_UART |
| 1201 | 1314 | default "debug/ux500.S" if DEBUG_UX500_UART |
| @@ -1204,16 +1317,12 @@ config DEBUG_LL_INCLUDE · 2 unmodified lines | ||
| 1204 | 1317 | default "debug/vt8500.S" if DEBUG_VT8500_UART0 |
| 1205 | 1318 | default "debug/zynq.S" if DEBUG_ZYNQ_UART0 || DEBUG_ZYNQ_UART1 |
| 1206 | 1319 | default "debug/bcm63xx.S" if DEBUG_UART_BCM63XX |
| 1320 | + default "debug/digicolor.S" if DEBUG_DIGICOLOR_UA0 | |
| 1207 | 1321 | default "mach/debug-macro.S" |
| 1208 | 1322 | |
| 1209 | 1323 | # Compatibility options for PL01x |
| 1210 | 1324 | config DEBUG_UART_PL01X |
| 1211 | − def_bool ARCH_EP93XX || \ | |
| 1212 | − ARCH_INTEGRATOR || \ | |
| 1213 | − ARCH_SPEAR3XX || \ | |
| 1214 | − ARCH_SPEAR6XX || \ | |
| 1215 | − ARCH_SPEAR13XX || \ | |
| 1216 | − ARCH_VERSATILE | |
| 1325 | + bool | |
| 1217 | 1326 | |
| 1218 | 1327 | # Compatibility options for 8250 |
| 1219 | 1328 | config DEBUG_UART_8250 |
| @@ -1229,6 +1338,7 @@ config DEBUG_UART_BCM63XX · 9 unmodified lines | ||
| 1229 | 1338 | |
| 1230 | 1339 | config DEBUG_UART_PHYS |
| 1231 | 1340 | hex "Physical base address of debug UART" |
| 1341 | + default 0x00100a00 if DEBUG_NETX_UART | |
| 1232 | 1342 | default 0x01c20000 if DEBUG_DAVINCI_DMx_UART0 |
| 1233 | 1343 | default 0x01c28000 if DEBUG_SUNXI_UART0 |
| 1234 | 1344 | default 0x01c28400 if DEBUG_SUNXI_UART1 |
| @@ -1251,7 +1361,10 @@ config DEBUG_UART_PHYS · 16 unmodified lines | ||
| 1251 | 1361 | default 0x11009000 if DEBUG_MT8135_UART3 |
| 1252 | 1362 | default 0x16000000 if ARCH_INTEGRATOR |
| 1253 | 1363 | default 0x18000300 if DEBUG_BCM_5301X |
| 1364 | + default 0x18010000 if DEBUG_SIRFATLAS7_UART0 | |
| 1365 | + default 0x18020000 if DEBUG_SIRFATLAS7_UART1 | |
| 1254 | 1366 | default 0x1c090000 if DEBUG_VEXPRESS_UART0_RS1 |
| 1367 | + default 0x20001000 if DEBUG_HIP01_UART | |
| 1255 | 1368 | default 0x20060000 if DEBUG_RK29_UART0 |
| 1256 | 1369 | default 0x20064000 if DEBUG_RK29_UART1 || DEBUG_RK3X_UART2 |
| 1257 | 1370 | default 0x20068000 if DEBUG_RK29_UART2 || DEBUG_RK3X_UART3 |
| @@ -1269,7 +1382,6 @@ config DEBUG_UART_PHYS · 11 unmodified lines | ||
| 1269 | 1382 | DEBUG_S3C2410_UART2) |
| 1270 | 1383 | default 0x78000000 if DEBUG_CNS3XXX |
| 1271 | 1384 | default 0x7c0003f8 if FOOTBRIDGE |
| 1272 | − default 0x78000000 if DEBUG_CNS3XXX | |
| 1273 | 1385 | default 0x80010000 if DEBUG_ASM9260_UART |
| 1274 | 1386 | default 0x80070000 if DEBUG_IMX23_UART |
| 1275 | 1387 | default 0x80074000 if DEBUG_IMX28_UART |
| @@ -1277,12 +1389,13 @@ config DEBUG_UART_PHYS · 1 unmodified line | ||
| 1277 | 1389 | default 0x808c0000 if ARCH_EP93XX |
| 1278 | 1390 | default 0x90020000 if DEBUG_NSPIRE_CLASSIC_UART || DEBUG_NSPIRE_CX_UART |
| 1279 | 1391 | default 0xa9a00000 if DEBUG_MSM_UART |
| 1392 | + default 0xb0060000 if DEBUG_SIRFPRIMA2_UART1 | |
| 1280 | 1393 | default 0xb0090000 if DEBUG_VEXPRESS_UART0_CRX |
| 1281 | 1394 | default 0xc0013000 if DEBUG_U300_UART |
| 1282 | 1395 | default 0xc8000000 if ARCH_IXP4XX && !CPU_BIG_ENDIAN |
| 1283 | 1396 | default 0xc8000003 if ARCH_IXP4XX && CPU_BIG_ENDIAN |
| 1284 | 1397 | default 0xd0000000 if ARCH_SPEAR3XX || ARCH_SPEAR6XX |
| 1285 | − default 0xd0012000 if DEBUG_MVEBU_UART | |
| 1398 | + default 0xd0012000 if DEBUG_MVEBU_UART0 | |
| 1286 | 1399 | default 0xc81004c0 if DEBUG_MESON_UARTAO |
| 1287 | 1400 | default 0xd4017000 if DEBUG_MMP_UART2 |
| 1288 | 1401 | default 0xd4018000 if DEBUG_MMP_UART3 |
| @@ -1296,7 +1409,8 @@ config DEBUG_UART_PHYS · 7 unmodified lines | ||
| 1296 | 1409 | default 0xe8008000 if DEBUG_R7S72100_SCIF2 |
| 1297 | 1410 | default 0xf0000be0 if ARCH_EBSA110 |
| 1298 | 1411 | default 0xf040ab00 if DEBUG_BRCMSTB_UART |
| 1299 | − default 0xf1012000 if DEBUG_MVEBU_UART_ALTERNATE | |
| 1412 | + default 0xf1012000 if DEBUG_MVEBU_UART0_ALTERNATE | |
| 1413 | + default 0xf1012100 if DEBUG_MVEBU_UART1_ALTERNATE | |
| 1300 | 1414 | default 0xf1012000 if ARCH_DOVE || ARCH_MV78XX0 || \ |
| 1301 | 1415 | ARCH_ORION5X |
| 1302 | 1416 | default 0xf7fc9000 if DEBUG_BERLIN_UART |
| @@ -1310,20 +1424,27 @@ config DEBUG_UART_PHYS · 7 unmodified lines | ||
| 1310 | 1424 | default 0xffe40000 if DEBUG_RCAR_GEN1_SCIF0 |
| 1311 | 1425 | default 0xffe42000 if DEBUG_RCAR_GEN1_SCIF2 |
| 1312 | 1426 | default 0xfff36000 if DEBUG_HIGHBANK_UART |
| 1427 | + default 0xfffb0000 if DEBUG_OMAP1UART1 || DEBUG_OMAP7XXUART1 | |
| 1428 | + default 0xfffb0800 if DEBUG_OMAP1UART2 || DEBUG_OMAP7XXUART2 | |
| 1429 | + default 0xfffb9800 if DEBUG_OMAP1UART3 || DEBUG_OMAP7XXUART3 | |
| 1313 | 1430 | default 0xfffe8600 if DEBUG_UART_BCM63XX |
| 1314 | 1431 | default 0xfffff700 if ARCH_IOP33X |
| 1315 | − depends on DEBUG_LL_UART_8250 || DEBUG_LL_UART_PL01X || \ | |
| 1432 | + depends on ARCH_EP93XX || \ | |
| 1433 | + DEBUG_LL_UART_8250 || DEBUG_LL_UART_PL01X || \ | |
| 1316 | 1434 | DEBUG_LL_UART_EFM32 || \ |
| 1317 | 1435 | DEBUG_UART_8250 || DEBUG_UART_PL01X || DEBUG_MESON_UARTAO || \ |
| 1318 | − DEBUG_MSM_UART || DEBUG_QCOM_UARTDM || DEBUG_R7S72100_SCIF2 || \ | |
| 1436 | + DEBUG_MSM_UART || DEBUG_NETX_UART || \ | |
| 1437 | + DEBUG_QCOM_UARTDM || DEBUG_R7S72100_SCIF2 || \ | |
| 1319 | 1438 | DEBUG_RCAR_GEN1_SCIF0 || DEBUG_RCAR_GEN1_SCIF2 || \ |
| 1320 | 1439 | DEBUG_RCAR_GEN2_SCIF0 || DEBUG_RCAR_GEN2_SCIF2 || \ |
| 1321 | 1440 | DEBUG_RMOBILE_SCIFA0 || DEBUG_RMOBILE_SCIFA1 || \ |
| 1322 | 1441 | DEBUG_RMOBILE_SCIFA4 || DEBUG_S3C24XX_UART || \ |
| 1323 | − DEBUG_UART_BCM63XX || DEBUG_ASM9260_UART | |
| 1442 | + DEBUG_UART_BCM63XX || DEBUG_ASM9260_UART || \ | |
| 1443 | + DEBUG_SIRFSOC_UART || DEBUG_DIGICOLOR_UA0 | |
| 1324 | 1444 | |
| 1325 | 1445 | config DEBUG_UART_VIRT |
| 1326 | 1446 | hex "Virtual base address of debug UART" |
| 1447 | + default 0xe0000a00 if DEBUG_NETX_UART | |
| 1327 | 1448 | default 0xe0010fe0 if ARCH_RPC |
| 1328 | 1449 | default 0xe1000000 if DEBUG_MSM_UART |
| 1329 | 1450 | default 0xf0000be0 if ARCH_EBSA110 |
| @@ -1377,8 +1498,12 @@ config DEBUG_UART_VIRT · 47 unmodified lines | ||
| 1377 | 1498 | default 0xfeb30c00 if DEBUG_KEYSTONE_UART0 |
| 1378 | 1499 | default 0xfeb31000 if DEBUG_KEYSTONE_UART1 |
| 1379 | 1500 | default 0xfec02000 if DEBUG_SOCFPGA_UART |
| 1380 | − default 0xfec12000 if DEBUG_MVEBU_UART || DEBUG_MVEBU_UART_ALTERNATE | |
| 1501 | + default 0xfec12000 if DEBUG_MVEBU_UART0 || DEBUG_MVEBU_UART0_ALTERNATE | |
| 1502 | + default 0xfec12100 if DEBUG_MVEBU_UART1_ALTERNATE | |
| 1503 | + default 0xfec10000 if DEBUG_SIRFATLAS7_UART0 | |
| 1381 | 1504 | default 0xfec20000 if DEBUG_DAVINCI_DMx_UART0 |
| 1505 | + default 0xfec20000 if DEBUG_SIRFATLAS7_UART1 | |
| 1506 | + default 0xfec60000 if DEBUG_SIRFPRIMA2_UART1 | |
| 1382 | 1507 | default 0xfec90000 if DEBUG_RK32_UART2 |
| 1383 | 1508 | default 0xfed0c000 if DEBUG_DAVINCI_DA8XX_UART1 |
| 1384 | 1509 | default 0xfed0d000 if DEBUG_DAVINCI_DA8XX_UART2 |
| @@ -1392,18 +1517,25 @@ config DEBUG_UART_VIRT · 7 unmodified lines | ||
| 1392 | 1517 | default 0xfef00000 if ARCH_IXP4XX && !CPU_BIG_ENDIAN |
| 1393 | 1518 | default 0xfef00003 if ARCH_IXP4XX && CPU_BIG_ENDIAN |
| 1394 | 1519 | default 0xfef36000 if DEBUG_HIGHBANK_UART |
| 1520 | + default 0xfefb0000 if DEBUG_OMAP1UART1 || DEBUG_OMAP7XXUART1 | |
| 1521 | + default 0xfefb0800 if DEBUG_OMAP1UART2 || DEBUG_OMAP7XXUART2 | |
| 1522 | + default 0xfefb9800 if DEBUG_OMAP1UART3 || DEBUG_OMAP7XXUART3 | |
| 1395 | 1523 | default 0xfefff700 if ARCH_IOP33X |
| 1396 | 1524 | default 0xff003000 if DEBUG_U300_UART |
| 1525 | + default 0xffd01000 if DEBUG_HIP01_UART | |
| 1397 | 1526 | default DEBUG_UART_PHYS if !MMU |
| 1398 | 1527 | depends on DEBUG_LL_UART_8250 || DEBUG_LL_UART_PL01X || \ |
| 1399 | 1528 | DEBUG_UART_8250 || DEBUG_UART_PL01X || DEBUG_MESON_UARTAO || \ |
| 1400 | − DEBUG_MSM_UART || DEBUG_QCOM_UARTDM || DEBUG_S3C24XX_UART || \ | |
| 1401 | − DEBUG_UART_BCM63XX || DEBUG_ASM9260_UART | |
| 1529 | + DEBUG_MSM_UART || DEBUG_NETX_UART || \ | |
| 1530 | + DEBUG_QCOM_UARTDM || DEBUG_S3C24XX_UART || \ | |
| 1531 | + DEBUG_UART_BCM63XX || DEBUG_ASM9260_UART || \ | |
| 1532 | + DEBUG_SIRFSOC_UART || DEBUG_DIGICOLOR_UA0 | |
| 1402 | 1533 | |
| 1403 | 1534 | config DEBUG_UART_8250_SHIFT |
| 1404 | 1535 | int "Register offset shift for the 8250 debug UART" |
| 1405 | 1536 | depends on DEBUG_LL_UART_8250 || DEBUG_UART_8250 |
| 1406 | − default 0 if FOOTBRIDGE || ARCH_IOP32X || DEBUG_BCM_5301X | |
| 1537 | + default 0 if FOOTBRIDGE || ARCH_IOP32X || DEBUG_BCM_5301X || \ | |
| 1538 | + DEBUG_OMAP7XXUART1 || DEBUG_OMAP7XXUART2 || DEBUG_OMAP7XXUART3 | |
| 1407 | 1539 | default 2 |
| 1408 | 1540 | |
| 1409 | 1541 | config DEBUG_UART_8250_WORD |
| @@ -266,6 +266,7 @@ core-$(CONFIG_KVM_ARM_HOST) += arch/arm/kvm/ · 265 unmodified lines | ||
| 266 | 266 | |
| 267 | 267 | # If we have a machine-specific directory, then include it in the build. |
| 268 | 268 | core-y += arch/arm/kernel/ arch/arm/mm/ arch/arm/common/ |
| 269 | +core-y += arch/arm/probes/ | |
| 269 | 270 | core-y += arch/arm/net/ |
| 270 | 271 | core-y += arch/arm/crypto/ |
| 271 | 272 | core-y += arch/arm/firmware/ |
| @@ -178,7 +178,7 @@ not_angel: · 177 unmodified lines | ||
| 178 | 178 | |
| 179 | 179 | /* |
| 180 | 180 | * Set up a page table only if it won't overwrite ourself. |
| 181 | − * That means r4 < pc && r4 - 16k page directory > &_end. | |
| 181 | + * That means r4 < pc || r4 - 16k page directory > &_end. | |
| 182 | 182 | * Given that r4 > &_end is most unfrequent, we add a rough |
| 183 | 183 | * additional 1MB of room for a possible appended DTB. |
| 184 | 184 | */ |
| @@ -263,16 +263,37 @@ restart: adr r0, LC0 · 78 unmodified lines | ||
| 263 | 263 | * OK... Let's do some funky business here. |
| 264 | 264 | * If we do have a DTB appended to zImage, and we do have |
| 265 | 265 | * an ATAG list around, we want the later to be translated |
| 266 | − * and folded into the former here. To be on the safe side, | |
| 267 | − * let's temporarily move the stack away into the malloc | |
| 268 | − * area. No GOT fixup has occurred yet, but none of the | |
| 269 | − * code we're about to call uses any global variable. | |
| 266 | + * and folded into the former here. No GOT fixup has occurred | |
| 267 | + * yet, but none of the code we're about to call uses any | |
| 268 | + * global variable. | |
| 270 | 269 | */ |
| 271 | − add sp, sp, #0x10000 | |
| 270 | + | |
| 271 | + /* Get the initial DTB size */ | |
| 272 | + ldr r5, [r6, #4] | |
| 273 | +#ifndef __ARMEB__ | |
| 274 | + /* convert to little endian */ | |
| 275 | + eor r1, r5, r5, ror #16 | |
| 276 | + bic r1, r1, #0x00ff0000 | |
| 277 | + mov r5, r5, ror #8 | |
| 278 | + eor r5, r5, r1, lsr #8 | |
| 279 | +#endif | |
| 280 | + /* 50% DTB growth should be good enough */ | |
| 281 | + add r5, r5, r5, lsr #1 | |
| 282 | + /* preserve 64-bit alignment */ | |
| 283 | + add r5, r5, #7 | |
| 284 | + bic r5, r5, #7 | |
| 285 | + /* clamp to 32KB min and 1MB max */ | |
| 286 | + cmp r5, #(1 << 15) | |
| 287 | + movlo r5, #(1 << 15) | |
| 288 | + cmp r5, #(1 << 20) | |
| 289 | + movhi r5, #(1 << 20) | |
| 290 | + /* temporarily relocate the stack past the DTB work space */ | |
| 291 | + add sp, sp, r5 | |
| 292 | + | |
| 272 | 293 | stmfd sp!, {r0-r3, ip, lr} |
| 273 | 294 | mov r0, r8 |
| 274 | 295 | mov r1, r6 |
| 275 | − sub r2, sp, r6 | |
| 296 | + mov r2, r5 | |
| 276 | 297 | bl atags_to_fdt |
| 277 | 298 | |
| 278 | 299 | /* |
| @@ -285,11 +306,11 @@ restart: adr r0, LC0 · 6 unmodified lines | ||
| 285 | 306 | bic r0, r0, #1 |
| 286 | 307 | add r0, r0, #0x100 |
| 287 | 308 | mov r1, r6 |
| 288 | − sub r2, sp, r6 | |
| 309 | + mov r2, r5 | |
| 289 | 310 | bleq atags_to_fdt |
| 290 | 311 | |
| 291 | 312 | ldmfd sp!, {r0-r3, ip, lr} |
| 292 | − sub sp, sp, #0x10000 | |
| 313 | + sub sp, sp, r5 | |
| 293 | 314 | #endif |
| 294 | 315 | |
| 295 | 316 | mov r8, r6 @ use the appended device tree |
| @@ -306,7 +327,7 @@ restart: adr r0, LC0 · 10 unmodified lines | ||
| 306 | 327 | subs r1, r5, r1 |
| 307 | 328 | addhi r9, r9, r1 |
| 308 | 329 | |
| 309 | − /* Get the dtb's size */ | |
| 330 | + /* Get the current DTB size */ | |
| 310 | 331 | ldr r5, [r6, #4] |
| 311 | 332 | #ifndef __ARMEB__ |
| 312 | 333 | /* convert r5 (dtb size) to little endian */ |
| @@ -1,83 +1,91 @@ | ||
| 1 | 1 | ifeq ($(CONFIG_OF),y) |
| 2 | 2 | |
| 3 | +dtb-$(CONFIG_MACH_ASM9260) += \ | |
| 4 | + alphascale-asm9260-devkit.dtb | |
| 3 | 5 | # Keep at91 dtb files sorted alphabetically for each SoC |
| 4 | −# rm9200 | |
| 5 | −dtb-$(CONFIG_ARCH_AT91) += at91rm9200ek.dtb | |
| 6 | −dtb-$(CONFIG_ARCH_AT91) += mpa1600.dtb | |
| 7 | −# sam9260 | |
| 8 | −dtb-$(CONFIG_ARCH_AT91) += animeo_ip.dtb | |
| 9 | −dtb-$(CONFIG_ARCH_AT91) += at91-qil_a9260.dtb | |
| 10 | −dtb-$(CONFIG_ARCH_AT91) += aks-cdu.dtb | |
| 11 | −dtb-$(CONFIG_ARCH_AT91) += ethernut5.dtb | |
| 12 | −dtb-$(CONFIG_ARCH_AT91) += evk-pro3.dtb | |
| 13 | −dtb-$(CONFIG_ARCH_AT91) += tny_a9260.dtb | |
| 14 | −dtb-$(CONFIG_ARCH_AT91) += usb_a9260.dtb | |
| 15 | −# sam9261 | |
| 16 | −dtb-$(CONFIG_ARCH_AT91) += at91sam9261ek.dtb | |
| 17 | −# sam9263 | |
| 18 | −dtb-$(CONFIG_ARCH_AT91) += at91sam9263ek.dtb | |
| 19 | −dtb-$(CONFIG_ARCH_AT91) += tny_a9263.dtb | |
| 20 | −dtb-$(CONFIG_ARCH_AT91) += usb_a9263.dtb | |
| 21 | −# sam9g20 | |
| 22 | −dtb-$(CONFIG_ARCH_AT91) += at91-foxg20.dtb | |
| 23 | −dtb-$(CONFIG_ARCH_AT91) += at91sam9g20ek.dtb | |
| 24 | −dtb-$(CONFIG_ARCH_AT91) += at91sam9g20ek_2mmc.dtb | |
| 25 | −dtb-$(CONFIG_ARCH_AT91) += kizbox.dtb | |
| 26 | −dtb-$(CONFIG_ARCH_AT91) += tny_a9g20.dtb | |
| 27 | −dtb-$(CONFIG_ARCH_AT91) += usb_a9g20.dtb | |
| 28 | −dtb-$(CONFIG_ARCH_AT91) += usb_a9g20_lpw.dtb | |
| 29 | −# sam9g45 | |
| 30 | −dtb-$(CONFIG_ARCH_AT91) += at91sam9m10g45ek.dtb | |
| 31 | −dtb-$(CONFIG_ARCH_AT91) += pm9g45.dtb | |
| 32 | −# sam9n12 | |
| 33 | −dtb-$(CONFIG_ARCH_AT91) += at91sam9n12ek.dtb | |
| 34 | −# sam9rl | |
| 35 | −dtb-$(CONFIG_ARCH_AT91) += at91sam9rlek.dtb | |
| 36 | −# sam9x5 | |
| 37 | −dtb-$(CONFIG_ARCH_AT91) += at91-ariag25.dtb | |
| 38 | −dtb-$(CONFIG_ARCH_AT91) += at91-cosino_mega2560.dtb | |
| 39 | −dtb-$(CONFIG_ARCH_AT91) += at91sam9g15ek.dtb | |
| 40 | −dtb-$(CONFIG_ARCH_AT91) += at91sam9g25ek.dtb | |
| 41 | −dtb-$(CONFIG_ARCH_AT91) += at91sam9g35ek.dtb | |
| 42 | −dtb-$(CONFIG_ARCH_AT91) += at91sam9x25ek.dtb | |
| 43 | −dtb-$(CONFIG_ARCH_AT91) += at91sam9x35ek.dtb | |
| 44 | −# sama5d3 | |
| 45 | −dtb-$(CONFIG_ARCH_AT91) += at91-sama5d3_xplained.dtb | |
| 46 | −dtb-$(CONFIG_ARCH_AT91) += sama5d31ek.dtb | |
| 47 | −dtb-$(CONFIG_ARCH_AT91) += sama5d33ek.dtb | |
| 48 | −dtb-$(CONFIG_ARCH_AT91) += sama5d34ek.dtb | |
| 49 | −dtb-$(CONFIG_ARCH_AT91) += sama5d35ek.dtb | |
| 50 | −dtb-$(CONFIG_ARCH_AT91) += sama5d36ek.dtb | |
| 51 | −# sama5d4 | |
| 52 | −dtb-$(CONFIG_ARCH_AT91) += at91-sama5d4ek.dtb | |
| 53 | − | |
| 54 | −dtb-$(CONFIG_ARCH_ATLAS6) += atlas6-evb.dtb | |
| 55 | −dtb-$(CONFIG_ARCH_AXXIA) += axm5516-amarillo.dtb | |
| 56 | −dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b.dtb | |
| 57 | −dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b-plus.dtb | |
| 6 | +dtb-$(CONFIG_SOC_SAM_V4_V5) += \ | |
| 7 | + at91rm9200ek.dtb \ | |
| 8 | + mpa1600.dtb \ | |
| 9 | + animeo_ip.dtb \ | |
| 10 | + at91-qil_a9260.dtb \ | |
| 11 | + aks-cdu.dtb \ | |
| 12 | + ethernut5.dtb \ | |
| 13 | + evk-pro3.dtb \ | |
| 14 | + tny_a9260.dtb \ | |
| 15 | + usb_a9260.dtb \ | |
| 16 | + at91sam9261ek.dtb \ | |
| 17 | + at91sam9263ek.dtb \ | |
| 18 | + tny_a9263.dtb \ | |
| 19 | + usb_a9263.dtb \ | |
| 20 | + at91-foxg20.dtb \ | |
| 21 | + at91sam9g20ek.dtb \ | |
| 22 | + at91sam9g20ek_2mmc.dtb \ | |
| 23 | + kizbox.dtb \ | |
| 24 | + tny_a9g20.dtb \ | |
| 25 | + usb_a9g20.dtb \ | |
| 26 | + usb_a9g20_lpw.dtb \ | |
| 27 | + at91sam9m10g45ek.dtb \ | |
| 28 | + pm9g45.dtb \ | |
| 29 | + at91sam9n12ek.dtb \ | |
| 30 | + at91sam9rlek.dtb \ | |
| 31 | + at91-ariag25.dtb \ | |
| 32 | + at91-cosino_mega2560.dtb \ | |
| 33 | + at91sam9g15ek.dtb \ | |
| 34 | + at91sam9g25ek.dtb \ | |
| 35 | + at91sam9g35ek.dtb \ | |
| 36 | + at91sam9x25ek.dtb \ | |
| 37 | + at91sam9x35ek.dtb | |
| 38 | +dtb-$(CONFIG_SOC_SAM_V7) += \ | |
| 39 | + at91-sama5d3_xplained.dtb \ | |
| 40 | + sama5d31ek.dtb \ | |
| 41 | + sama5d33ek.dtb \ | |
| 42 | + sama5d34ek.dtb \ | |
| 43 | + sama5d35ek.dtb \ | |
| 44 | + sama5d36ek.dtb \ | |
| 45 | + at91-sama5d4ek.dtb | |
| 46 | +dtb-$(CONFIG_ARCH_ATLAS6) += \ | |
| 47 | + atlas6-evb.dtb | |
| 48 | +dtb-$(CONFIG_ARCH_ATLAS7) += \ | |
| 49 | + atlas7-evb.dtb | |
| 50 | +dtb-$(CONFIG_ARCH_AXXIA) += \ | |
| 51 | + axm5516-amarillo.dtb | |
| 52 | +dtb-$(CONFIG_ARCH_BCM2835) += \ | |
| 53 | + bcm2835-rpi-b.dtb \ | |
| 54 | + bcm2835-rpi-b-plus.dtb | |
| 58 | 55 | dtb-$(CONFIG_ARCH_BCM_5301X) += \ |
| 59 | 56 | bcm4708-buffalo-wzr-1750dhp.dtb \ |
| 57 | + bcm4708-luxul-xwc-1000.dtb \ | |
| 60 | 58 | bcm4708-netgear-r6250.dtb \ |
| 61 | 59 | bcm4708-netgear-r6300-v2.dtb \ |
| 62 | 60 | bcm47081-asus-rt-n18u.dtb \ |
| 63 | − bcm47081-buffalo-wzr-600dhp2.dtb | |
| 64 | −dtb-$(CONFIG_ARCH_BCM_63XX) += bcm963138dvt.dtb | |
| 65 | −dtb-$(CONFIG_ARCH_BCM_CYGNUS) += bcm911360_entphn.dtb \ | |
| 61 | + bcm47081-buffalo-wzr-600dhp2.dtb \ | |
| 62 | + bcm47081-buffalo-wzr-900dhp.dtb | |
| 63 | +dtb-$(CONFIG_ARCH_BCM_63XX) += \ | |
| 64 | + bcm963138dvt.dtb | |
| 65 | +dtb-$(CONFIG_ARCH_BCM_CYGNUS) += \ | |
| 66 | + bcm911360_entphn.dtb \ | |
| 66 | 67 | bcm911360k.dtb \ |
| 67 | 68 | bcm958300k.dtb |
| 68 | −dtb-$(CONFIG_ARCH_BCM_MOBILE) += bcm28155-ap.dtb \ | |
| 69 | +dtb-$(CONFIG_ARCH_BCM_MOBILE) += \ | |
| 70 | + bcm28155-ap.dtb \ | |
| 69 | 71 | bcm21664-garnet.dtb |
| 70 | 72 | dtb-$(CONFIG_ARCH_BERLIN) += \ |
| 71 | − berlin2-sony-nsz-gs7.dtb \ | |
| 72 | − berlin2cd-google-chromecast.dtb \ | |
| 73 | + berlin2-sony-nsz-gs7.dtb \ | |
| 74 | + berlin2cd-google-chromecast.dtb \ | |
| 73 | 75 | berlin2q-marvell-dmp.dtb |
| 74 | 76 | dtb-$(CONFIG_ARCH_BRCMSTB) += \ |
| 75 | 77 | bcm7445-bcm97445svmb.dtb |
| 76 | −dtb-$(CONFIG_ARCH_DAVINCI) += da850-enbw-cmc.dtb \ | |
| 78 | +dtb-$(CONFIG_ARCH_DAVINCI) += \ | |
| 79 | + da850-enbw-cmc.dtb \ | |
| 77 | 80 | da850-evm.dtb |
| 78 | −dtb-$(CONFIG_ARCH_EFM32) += efm32gg-dk3750.dtb | |
| 79 | −dtb-$(CONFIG_ARCH_EXYNOS) += exynos3250-monk.dtb \ | |
| 80 | − exynos3250-rinato.dtb \ | |
| 81 | +dtb-$(CONFIG_ARCH_DIGICOLOR) += \ | |
| 82 | + cx92755_equinox.dtb | |
| 83 | +dtb-$(CONFIG_ARCH_EFM32) += \ | |
| 84 | + efm32gg-dk3750.dtb | |
| 85 | +dtb-$(CONFIG_ARCH_EXYNOS3) += \ | |
| 86 | + exynos3250-monk.dtb \ | |
| 87 | + exynos3250-rinato.dtb | |
| 88 | +dtb-$(CONFIG_ARCH_EXYNOS4) += \ | |
| 81 | 89 | exynos4210-origen.dtb \ |
| 82 | 90 | exynos4210-smdkv310.dtb \ |
| 83 | 91 | exynos4210-trats.dtb \ |
| @@ -88,7 +96,8 @@ dtb-$(CONFIG_ARCH_EXYNOS) += exynos3250-monk.dtb \ · 4 unmodified lines | ||
| 88 | 96 | exynos4412-origen.dtb \ |
| 89 | 97 | exynos4412-smdk4412.dtb \ |
| 90 | 98 | exynos4412-tiny4412.dtb \ |
| 91 | − exynos4412-trats2.dtb \ | |
| 99 | + exynos4412-trats2.dtb | |
| 100 | +dtb-$(CONFIG_ARCH_EXYNOS5) += \ | |
| 92 | 101 | exynos5250-arndale.dtb \ |
| 93 | 102 | exynos5250-smdk5250.dtb \ |
| 94 | 103 | exynos5250-snow.dtb \ |
| @@ -98,20 +107,31 @@ dtb-$(CONFIG_ARCH_EXYNOS) += exynos3250-monk.dtb \ · 3 unmodified lines | ||
| 98 | 107 | exynos5420-arndale-octa.dtb \ |
| 99 | 108 | exynos5420-peach-pit.dtb \ |
| 100 | 109 | exynos5420-smdk5420.dtb \ |
| 110 | + exynos5422-odroidxu3.dtb \ | |
| 101 | 111 | exynos5440-sd5v1.dtb \ |
| 102 | 112 | exynos5440-ssdk5440.dtb \ |
| 103 | 113 | exynos5800-peach-pi.dtb |
| 104 | −dtb-$(CONFIG_ARCH_HI3xxx) += hi3620-hi4511.dtb | |
| 105 | −dtb-$(CONFIG_ARCH_HIX5HD2) += hisi-x5hd2-dkb.dtb | |
| 106 | −dtb-$(CONFIG_ARCH_HIGHBANK) += highbank.dtb \ | |
| 114 | +dtb-$(CONFIG_ARCH_HI3xxx) += \ | |
| 115 | + hi3620-hi4511.dtb | |
| 116 | +dtb-$(CONFIG_ARCH_HIX5HD2) += \ | |
| 117 | + hisi-x5hd2-dkb.dtb | |
| 118 | +dtb-$(CONFIG_ARCH_HIGHBANK) += \ | |
| 119 | + highbank.dtb \ | |
| 107 | 120 | ecx-2000.dtb |
| 108 | −dtb-$(CONFIG_ARCH_HIP04) += hip04-d01.dtb | |
| 109 | −dtb-$(CONFIG_ARCH_INTEGRATOR) += integratorap.dtb \ | |
| 121 | +dtb-$(CONFIG_ARCH_HIP01) += \ | |
| 122 | + hip01-ca9x2.dtb | |
| 123 | +dtb-$(CONFIG_ARCH_HIP04) += \ | |
| 124 | + hip04-d01.dtb | |
| 125 | +dtb-$(CONFIG_ARCH_INTEGRATOR) += \ | |
| 126 | + integratorap.dtb \ | |
| 110 | 127 | integratorcp.dtb |
| 111 | −dtb-$(CONFIG_ARCH_KEYSTONE) += k2hk-evm.dtb \ | |
| 128 | +dtb-$(CONFIG_ARCH_KEYSTONE) += \ | |
| 129 | + k2hk-evm.dtb \ | |
| 112 | 130 | k2l-evm.dtb \ |
| 113 | 131 | k2e-evm.dtb |
| 114 | −dtb-$(CONFIG_MACH_KIRKWOOD) += kirkwood-b3.dtb \ | |
| 132 | +dtb-$(CONFIG_MACH_KIRKWOOD) += \ | |
| 133 | + kirkwood-b3.dtb \ | |
| 134 | + kirkwood-blackarmor-nas220.dtb \ | |
| 115 | 135 | kirkwood-cloudbox.dtb \ |
| 116 | 136 | kirkwood-d2net.dtb \ |
| 117 | 137 | kirkwood-db-88f6281.dtb \ |
| @@ -160,6 +180,7 @@ dtb-$(CONFIG_MACH_KIRKWOOD) += kirkwood-b3.dtb \ · 42 unmodified lines | ||
| 160 | 180 | kirkwood-openrd-base.dtb \ |
| 161 | 181 | kirkwood-openrd-client.dtb \ |
| 162 | 182 | kirkwood-openrd-ultimate.dtb \ |
| 183 | + kirkwood-pogo_e02.dtb \ | |
| 163 | 184 | kirkwood-rd88f6192.dtb \ |
| 164 | 185 | kirkwood-rd88f6281-z0.dtb \ |
| 165 | 186 | kirkwood-rd88f6281-a.dtb \ |
| @@ -174,37 +195,47 @@ dtb-$(CONFIG_MACH_KIRKWOOD) += kirkwood-b3.dtb \ · 8 unmodified lines | ||
| 174 | 195 | kirkwood-ts219-6282.dtb \ |
| 175 | 196 | kirkwood-ts419-6281.dtb \ |
| 176 | 197 | kirkwood-ts419-6282.dtb |
| 177 | −dtb-$(CONFIG_ARCH_LPC32XX) += ea3250.dtb phy3250.dtb | |
| 178 | −dtb-$(CONFIG_ARCH_MARCO) += marco-evb.dtb | |
| 179 | −dtb-$(CONFIG_MACH_MESON6) += meson6-atv1200.dtb | |
| 180 | −dtb-$(CONFIG_ARCH_MMP) += pxa168-aspenite.dtb \ | |
| 198 | +dtb-$(CONFIG_ARCH_LPC32XX) += \ | |
| 199 | + ea3250.dtb phy3250.dtb | |
| 200 | +dtb-$(CONFIG_MACH_MESON6) += \ | |
| 201 | + meson6-atv1200.dtb | |
| 202 | +dtb-$(CONFIG_ARCH_MMP) += \ | |
| 203 | + pxa168-aspenite.dtb \ | |
| 181 | 204 | pxa910-dkb.dtb \ |
| 182 | 205 | mmp2-brownstone.dtb |
| 183 | −dtb-$(CONFIG_ARCH_MOXART) += moxart-uc7112lx.dtb | |
| 184 | −dtb-$(CONFIG_ARCH_MXC) += \ | |
| 206 | +dtb-$(CONFIG_ARCH_MOXART) += \ | |
| 207 | + moxart-uc7112lx.dtb | |
| 208 | +dtb-$(CONFIG_SOC_IMX1) += \ | |
| 185 | 209 | imx1-ads.dtb \ |
| 186 | − imx1-apf9328.dtb \ | |
| 210 | + imx1-apf9328.dtb | |
| 211 | +dtb-$(CONFIG_SOC_IMX25) += \ | |
| 187 | 212 | imx25-eukrea-mbimxsd25-baseboard.dtb \ |
| 188 | 213 | imx25-eukrea-mbimxsd25-baseboard-cmo-qvga.dtb \ |
| 189 | 214 | imx25-eukrea-mbimxsd25-baseboard-dvi-svga.dtb \ |
| 190 | 215 | imx25-eukrea-mbimxsd25-baseboard-dvi-vga.dtb \ |
| 191 | 216 | imx25-karo-tx25.dtb \ |
| 192 | − imx25-pdk.dtb \ | |
| 217 | + imx25-pdk.dtb | |
| 218 | +dtb-$(CONFIG_SOC_IMX31) += \ | |
| 193 | 219 | imx27-apf27.dtb \ |
| 194 | 220 | imx27-apf27dev.dtb \ |
| 195 | 221 | imx27-eukrea-mbimxsd27-baseboard.dtb \ |
| 196 | 222 | imx27-pdk.dtb \ |
| 197 | 223 | imx27-phytec-phycore-rdk.dtb \ |
| 198 | − imx27-phytec-phycard-s-rdk.dtb \ | |
| 199 | − imx31-bug.dtb \ | |
| 224 | + imx27-phytec-phycard-s-rdk.dtb | |
| 225 | +dtb-$(CONFIG_SOC_IMX31) += \ | |
| 226 | + imx31-bug.dtb | |
| 227 | +dtb-$(CONFIG_SOC_IMX35) += \ | |
| 200 | 228 | imx35-eukrea-mbimxsd35-baseboard.dtb \ |
| 201 | − imx35-pdk.dtb \ | |
| 202 | − imx50-evk.dtb \ | |
| 229 | + imx35-pdk.dtb | |
| 230 | +dtb-$(CONFIG_SOC_IMX50) += \ | |
| 231 | + imx50-evk.dtb | |
| 232 | +dtb-$(CONFIG_SOC_IMX51) += \ | |
| 203 | 233 | imx51-apf51.dtb \ |
| 204 | 234 | imx51-apf51dev.dtb \ |
| 205 | 235 | imx51-babbage.dtb \ |
| 206 | 236 | imx51-digi-connectcore-jsk.dtb \ |
| 207 | − imx51-eukrea-mbimxsd51-baseboard.dtb \ | |
| 237 | + imx51-eukrea-mbimxsd51-baseboard.dtb | |
| 238 | +dtb-$(CONFIG_SOC_IMX53) += \ | |
| 208 | 239 | imx53-ard.dtb \ |
| 209 | 240 | imx53-m53evk.dtb \ |
| 210 | 241 | imx53-mba53.dtb \ |
| @@ -213,7 +244,8 @@ dtb-$(CONFIG_ARCH_MXC) += \ · 2 unmodified lines | ||
| 213 | 244 | imx53-smd.dtb \ |
| 214 | 245 | imx53-tx53-x03x.dtb \ |
| 215 | 246 | imx53-tx53-x13x.dtb \ |
| 216 | − imx53-voipac-bsb.dtb \ | |
| 247 | + imx53-voipac-bsb.dtb | |
| 248 | +dtb-$(CONFIG_SOC_IMX6Q) += \ | |
| 217 | 249 | imx6dl-aristainetos_4.dtb \ |
| 218 | 250 | imx6dl-aristainetos_7.dtb \ |
| 219 | 251 | imx6dl-cubox-i.dtb \ |
| @@ -234,6 +266,7 @@ dtb-$(CONFIG_ARCH_MXC) += \ · 14 unmodified lines | ||
| 234 | 266 | imx6dl-tx6dl-comtft.dtb \ |
| 235 | 267 | imx6dl-tx6u-801x.dtb \ |
| 236 | 268 | imx6dl-tx6u-811x.dtb \ |
| 269 | + imx6dl-udoo.dtb \ | |
| 237 | 270 | imx6dl-wandboard.dtb \ |
| 238 | 271 | imx6dl-wandboard-revb1.dtb \ |
| 239 | 272 | imx6q-arm2.dtb \ |
| @@ -257,23 +290,29 @@ dtb-$(CONFIG_ARCH_MXC) += \ · 17 unmodified lines | ||
| 257 | 290 | imx6q-sabresd.dtb \ |
| 258 | 291 | imx6q-sbc6x.dtb \ |
| 259 | 292 | imx6q-tbs2910.dtb \ |
| 260 | − imx6q-udoo.dtb \ | |
| 261 | − imx6q-wandboard.dtb \ | |
| 262 | − imx6q-wandboard-revb1.dtb \ | |
| 263 | 293 | imx6q-tx6q-1010.dtb \ |
| 264 | 294 | imx6q-tx6q-1010-comtft.dtb \ |
| 265 | 295 | imx6q-tx6q-1020.dtb \ |
| 266 | 296 | imx6q-tx6q-1020-comtft.dtb \ |
| 267 | 297 | imx6q-tx6q-1110.dtb \ |
| 268 | − imx6sl-evk.dtb \ | |
| 269 | − imx6sx-sdb.dtb \ | |
| 298 | + imx6q-udoo.dtb \ | |
| 299 | + imx6q-wandboard.dtb \ | |
| 300 | + imx6q-wandboard-revb1.dtb | |
| 301 | +dtb-$(CONFIG_SOC_IMX6SL) += \ | |
| 302 | + imx6sl-evk.dtb | |
| 303 | +dtb-$(CONFIG_SOC_IMX6SX) += \ | |
| 304 | + imx6sx-sabreauto.dtb \ | |
| 305 | + imx6sx-sdb.dtb | |
| 306 | +dtb-$(CONFIG_SOC_LS1021A) += \ | |
| 270 | 307 | ls1021a-qds.dtb \ |
| 271 | − ls1021a-twr.dtb \ | |
| 308 | + ls1021a-twr.dtb | |
| 309 | +dtb-$(CONFIG_SOC_VF610) += \ | |
| 272 | 310 | vf500-colibri-eval-v3.dtb \ |
| 273 | 311 | vf610-colibri-eval-v3.dtb \ |
| 274 | 312 | vf610-cosmic.dtb \ |
| 275 | 313 | vf610-twr.dtb |
| 276 | −dtb-$(CONFIG_ARCH_MXS) += imx23-evk.dtb \ | |
| 314 | +dtb-$(CONFIG_ARCH_MXS) += \ | |
| 315 | + imx23-evk.dtb \ | |
| 277 | 316 | imx23-olinuxino.dtb \ |
| 278 | 317 | imx23-stmp378x_devb.dtb \ |
| 279 | 318 | imx28-apf28.dtb \ |
| @@ -294,17 +333,21 @@ dtb-$(CONFIG_ARCH_MXS) += imx23-evk.dtb \ · 14 unmodified lines | ||
| 294 | 333 | imx28-m28evk.dtb \ |
| 295 | 334 | imx28-sps1.dtb \ |
| 296 | 335 | imx28-tx28.dtb |
| 297 | −dtb-$(CONFIG_ARCH_NOMADIK) += ste-nomadik-s8815.dtb \ | |
| 336 | +dtb-$(CONFIG_ARCH_NOMADIK) += \ | |
| 337 | + ste-nomadik-s8815.dtb \ | |
| 298 | 338 | ste-nomadik-nhk15.dtb |
| 299 | −dtb-$(CONFIG_ARCH_NSPIRE) += nspire-cx.dtb \ | |
| 339 | +dtb-$(CONFIG_ARCH_NSPIRE) += \ | |
| 340 | + nspire-cx.dtb \ | |
| 300 | 341 | nspire-tp.dtb \ |
| 301 | 342 | nspire-clp.dtb |
| 302 | −dtb-$(CONFIG_ARCH_OMAP2) += omap2420-h4.dtb \ | |
| 343 | +dtb-$(CONFIG_ARCH_OMAP2) += \ | |
| 344 | + omap2420-h4.dtb \ | |
| 303 | 345 | omap2420-n800.dtb \ |
| 304 | 346 | omap2420-n810.dtb \ |
| 305 | 347 | omap2420-n810-wimax.dtb \ |
| 306 | 348 | omap2430-sdp.dtb |
| 307 | −dtb-$(CONFIG_ARCH_OMAP3) += am3517-craneboard.dtb \ | |
| 349 | +dtb-$(CONFIG_ARCH_OMAP3) += \ | |
| 350 | + am3517-craneboard.dtb \ | |
| 308 | 351 | am3517-evm.dtb \ |
| 309 | 352 | am3517_mt_ventoux.dtb \ |
| 310 | 353 | omap3430-sdp.dtb \ |
| @@ -348,7 +391,10 @@ dtb-$(CONFIG_ARCH_OMAP3) += am3517-craneboard.dtb \ · 37 unmodified lines | ||
| 348 | 391 | omap3-sbc-t3730.dtb \ |
| 349 | 392 | omap3-thunder.dtb \ |
| 350 | 393 | omap3-zoom3.dtb |
| 351 | −dtb-$(CONFIG_SOC_AM33XX) += am335x-base0033.dtb \ | |
| 394 | +dtb-$(CONFIG_SOC_TI81XX) += \ | |
| 395 | + dm8168-evm.dtb | |
| 396 | +dtb-$(CONFIG_SOC_AM33XX) += \ | |
| 397 | + am335x-base0033.dtb \ | |
| 352 | 398 | am335x-bone.dtb \ |
| 353 | 399 | am335x-boneblack.dtb \ |
| 354 | 400 | am335x-evm.dtb \ |
| @@ -356,7 +402,8 @@ dtb-$(CONFIG_SOC_AM33XX) += am335x-base0033.dtb \ · 1 unmodified line | ||
| 356 | 402 | am335x-nano.dtb \ |
| 357 | 403 | am335x-pepper.dtb \ |
| 358 | 404 | am335x-lxm.dtb |
| 359 | −dtb-$(CONFIG_ARCH_OMAP4) += omap4-duovero-parlor.dtb \ | |
| 405 | +dtb-$(CONFIG_ARCH_OMAP4) += \ | |
| 406 | + omap4-duovero-parlor.dtb \ | |
| 360 | 407 | omap4-panda.dtb \ |
| 361 | 408 | omap4-panda-a4.dtb \ |
| 362 | 409 | omap4-panda-es.dtb \ |
| @@ -364,20 +411,26 @@ dtb-$(CONFIG_ARCH_OMAP4) += omap4-duovero-parlor.dtb \ · 1 unmodified line | ||
| 364 | 411 | omap4-sdp-es23plus.dtb \ |
| 365 | 412 | omap4-var-dvk-om44.dtb \ |
| 366 | 413 | omap4-var-stk-om44.dtb |
| 367 | −dtb-$(CONFIG_SOC_AM43XX) += am43x-epos-evm.dtb \ | |
| 414 | +dtb-$(CONFIG_SOC_AM43XX) += \ | |
| 415 | + am43x-epos-evm.dtb \ | |
| 368 | 416 | am437x-sk-evm.dtb \ |
| 417 | + am437x-idk-evm.dtb \ | |
| 369 | 418 | am437x-gp-evm.dtb |
| 370 | −dtb-$(CONFIG_SOC_OMAP5) += omap5-cm-t54.dtb \ | |
| 419 | +dtb-$(CONFIG_SOC_OMAP5) += \ | |
| 420 | + omap5-cm-t54.dtb \ | |
| 371 | 421 | omap5-sbc-t54.dtb \ |
| 372 | 422 | omap5-uevm.dtb |
| 373 | −dtb-$(CONFIG_SOC_DRA7XX) += dra7-evm.dtb \ | |
| 423 | +dtb-$(CONFIG_SOC_DRA7XX) += \ | |
| 424 | + dra7-evm.dtb \ | |
| 374 | 425 | am57xx-beagle-x15.dtb \ |
| 375 | 426 | dra72-evm.dtb |
| 376 | −dtb-$(CONFIG_ARCH_ORION5X) += orion5x-lacie-d2-network.dtb \ | |
| 427 | +dtb-$(CONFIG_ARCH_ORION5X) += \ | |
| 428 | + orion5x-lacie-d2-network.dtb \ | |
| 377 | 429 | orion5x-lacie-ethernet-disk-mini-v2.dtb \ |
| 378 | 430 | orion5x-maxtor-shared-storage-2.dtb \ |
| 379 | 431 | orion5x-rd88f5182-nas.dtb |
| 380 | −dtb-$(CONFIG_ARCH_PRIMA2) += prima2-evb.dtb | |
| 432 | +dtb-$(CONFIG_ARCH_PRIMA2) += \ | |
| 433 | + prima2-evb.dtb | |
| 381 | 434 | dtb-$(CONFIG_ARCH_QCOM) += \ |
| 382 | 435 | qcom-apq8064-cm-qs600.dtb \ |
| 383 | 436 | qcom-apq8064-ifc6410.dtb \ |
| @@ -388,17 +441,24 @@ dtb-$(CONFIG_ARCH_QCOM) += \ · 4 unmodified lines | ||
| 388 | 441 | qcom-msm8660-surf.dtb \ |
| 389 | 442 | qcom-msm8960-cdp.dtb \ |
| 390 | 443 | qcom-msm8974-sony-xperia-honami.dtb |
| 391 | −dtb-$(CONFIG_ARCH_REALVIEW) += arm-realview-pb1176.dtb | |
| 444 | +dtb-$(CONFIG_ARCH_REALVIEW) += \ | |
| 445 | + arm-realview-pb1176.dtb | |
| 392 | 446 | dtb-$(CONFIG_ARCH_ROCKCHIP) += \ |
| 393 | 447 | rk3066a-bqcurie2.dtb \ |
| 394 | 448 | rk3066a-marsboard.dtb \ |
| 449 | + rk3066a-rayeager.dtb \ | |
| 395 | 450 | rk3188-radxarock.dtb \ |
| 396 | 451 | rk3288-evb-act8846.dtb \ |
| 397 | − rk3288-evb-rk808.dtb | |
| 398 | −dtb-$(CONFIG_ARCH_S3C24XX) += s3c2416-smdk2416.dtb | |
| 399 | −dtb-$(CONFIG_ARCH_S3C64XX) += s3c6410-mini6410.dtb \ | |
| 452 | + rk3288-evb-rk808.dtb \ | |
| 453 | + rk3288-firefly-beta.dtb \ | |
| 454 | + rk3288-firefly.dtb | |
| 455 | +dtb-$(CONFIG_ARCH_S3C24XX) += \ | |
| 456 | + s3c2416-smdk2416.dtb | |
| 457 | +dtb-$(CONFIG_ARCH_S3C64XX) += \ | |
| 458 | + s3c6410-mini6410.dtb \ | |
| 400 | 459 | s3c6410-smdk6410.dtb |
| 401 | −dtb-$(CONFIG_ARCH_S5PV210) += s5pv210-aquila.dtb \ | |
| 460 | +dtb-$(CONFIG_ARCH_S5PV210) += \ | |
| 461 | + s5pv210-aquila.dtb \ | |
| 402 | 462 | s5pv210-goni.dtb \ |
| 403 | 463 | s5pv210-smdkc110.dtb \ |
| 404 | 464 | s5pv210-smdkv210.dtb \ |
| @@ -410,48 +470,61 @@ dtb-$(CONFIG_ARCH_SHMOBILE_LEGACY) += \ · 5 unmodified lines | ||
| 410 | 470 | r8a7778-bockw.dtb \ |
| 411 | 471 | r8a7778-bockw-reference.dtb \ |
| 412 | 472 | r8a7779-marzen.dtb \ |
| 413 | − r8a7790-lager.dtb \ | |
| 414 | 473 | sh7372-mackerel.dtb \ |
| 415 | 474 | sh73a0-kzm9g.dtb \ |
| 416 | 475 | sh73a0-kzm9g-reference.dtb |
| 417 | −dtb-$(CONFIG_ARCH_SHMOBILE_MULTI) += emev2-kzm9d.dtb \ | |
| 476 | +dtb-$(CONFIG_ARCH_SHMOBILE_MULTI) += \ | |
| 477 | + emev2-kzm9d.dtb \ | |
| 418 | 478 | r7s72100-genmai.dtb \ |
| 479 | + r8a73a4-ape6evm.dtb \ | |
| 419 | 480 | r8a7740-armadillo800eva.dtb \ |
| 420 | 481 | r8a7779-marzen.dtb \ |
| 421 | 482 | r8a7790-lager.dtb \ |
| 422 | 483 | r8a7791-henninger.dtb \ |
| 423 | 484 | r8a7791-koelsch.dtb \ |
| 424 | 485 | r8a7794-alt.dtb |
| 425 | −dtb-$(CONFIG_ARCH_SOCFPGA) += socfpga_arria5_socdk.dtb \ | |
| 486 | +dtb-$(CONFIG_ARCH_SOCFPGA) += \ | |
| 487 | + socfpga_arria5_socdk.dtb \ | |
| 426 | 488 | socfpga_arria10_socdk.dtb \ |
| 427 | 489 | socfpga_cyclone5_socdk.dtb \ |
| 428 | 490 | socfpga_cyclone5_sockit.dtb \ |
| 429 | 491 | socfpga_cyclone5_socrates.dtb \ |
| 430 | 492 | socfpga_vt.dtb |
| 431 | −dtb-$(CONFIG_ARCH_SPEAR13XX) += spear1310-evb.dtb \ | |
| 493 | +dtb-$(CONFIG_ARCH_SPEAR13XX) += \ | |
| 494 | + spear1310-evb.dtb \ | |
| 432 | 495 | spear1340-evb.dtb |
| 433 | −dtb-$(CONFIG_ARCH_SPEAR3XX)+= spear300-evb.dtb \ | |
| 496 | +dtb-$(CONFIG_ARCH_SPEAR3XX) += \ | |
| 497 | + spear300-evb.dtb \ | |
| 434 | 498 | spear310-evb.dtb \ |
| 435 | 499 | spear320-evb.dtb \ |
| 436 | 500 | spear320-hmi.dtb |
| 437 | −dtb-$(CONFIG_ARCH_SPEAR6XX)+= spear600-evb.dtb | |
| 438 | −dtb-$(CONFIG_ARCH_STI)+= stih407-b2120.dtb \ | |
| 501 | +dtb-$(CONFIG_ARCH_SPEAR6XX) += \ | |
| 502 | + spear600-evb.dtb | |
| 503 | +dtb-$(CONFIG_ARCH_STI) += \ | |
| 504 | + stih407-b2120.dtb \ | |
| 439 | 505 | stih410-b2120.dtb \ |
| 440 | 506 | stih415-b2000.dtb \ |
| 441 | 507 | stih415-b2020.dtb \ |
| 442 | 508 | stih416-b2000.dtb \ |
| 443 | 509 | stih416-b2020.dtb \ |
| 444 | − stih416-b2020e.dtb | |
| 510 | + stih416-b2020e.dtb \ | |
| 511 | + stih418-b2199.dtb | |
| 445 | 512 | dtb-$(CONFIG_MACH_SUN4I) += \ |
| 446 | 513 | sun4i-a10-a1000.dtb \ |
| 447 | 514 | sun4i-a10-ba10-tvbox.dtb \ |
| 515 | + sun4i-a10-chuwi-v7-cw0825.dtb \ | |
| 448 | 516 | sun4i-a10-cubieboard.dtb \ |
| 517 | + sun4i-a10-marsboard.dtb \ | |
| 449 | 518 | sun4i-a10-mini-xplus.dtb \ |
| 519 | + sun4i-a10-mk802.dtb \ | |
| 520 | + sun4i-a10-mk802ii.dtb \ | |
| 450 | 521 | sun4i-a10-hackberry.dtb \ |
| 522 | + sun4i-a10-hyundai-a7hd.dtb \ | |
| 451 | 523 | sun4i-a10-inet97fv2.dtb \ |
| 452 | 524 | sun4i-a10-olinuxino-lime.dtb \ |
| 453 | 525 | sun4i-a10-pcduino.dtb |
| 454 | 526 | dtb-$(CONFIG_MACH_SUN5I) += \ |
| 527 | + sun5i-a10s-mk802.dtb \ | |
| 455 | 528 | sun5i-a10s-olinuxino-micro.dtb \ |
| 456 | 529 | sun5i-a10s-r7-tv-dongle.dtb \ |
| 457 | 530 | sun5i-a13-hsg-h702.dtb \ |
| @@ -461,9 +534,11 @@ dtb-$(CONFIG_MACH_SUN6I) += \ · 3 unmodified lines | ||
| 461 | 534 | sun6i-a31-app4-evb1.dtb \ |
| 462 | 535 | sun6i-a31-colombus.dtb \ |
| 463 | 536 | sun6i-a31-hummingbird.dtb \ |
| 464 | − sun6i-a31-m9.dtb | |
| 537 | + sun6i-a31-m9.dtb \ | |
| 538 | + sun6i-a31s-cs908.dtb | |
| 465 | 539 | dtb-$(CONFIG_MACH_SUN7I) += \ |
| 466 | 540 | sun7i-a20-bananapi.dtb \ |
| 541 | + sun7i-a20-bananapro.dtb \ | |
| 467 | 542 | sun7i-a20-cubieboard2.dtb \ |
| 468 | 543 | sun7i-a20-cubietruck.dtb \ |
| 469 | 544 | sun7i-a20-hummingbird.dtb \ |
| @@ -474,10 +549,12 @@ dtb-$(CONFIG_MACH_SUN7I) += \ · 4 unmodified lines | ||
| 474 | 549 | sun7i-a20-olinuxino-micro.dtb \ |
| 475 | 550 | sun7i-a20-pcduino3.dtb |
| 476 | 551 | dtb-$(CONFIG_MACH_SUN8I) += \ |
| 477 | − sun8i-a23-ippo-q8h-v5.dtb | |
| 552 | + sun8i-a23-ippo-q8h-v5.dtb \ | |
| 553 | + sun8i-a23-ippo-q8h-v1.2.dtb | |
| 478 | 554 | dtb-$(CONFIG_MACH_SUN9I) += \ |
| 479 | 555 | sun9i-a80-optimus.dtb |
| 480 | −dtb-$(CONFIG_ARCH_TEGRA) += tegra20-harmony.dtb \ | |
| 556 | +dtb-$(CONFIG_ARCH_TEGRA_2x_SOC) += \ | |
| 557 | + tegra20-harmony.dtb \ | |
| 481 | 558 | tegra20-iris-512.dtb \ |
| 482 | 559 | tegra20-medcom-wide.dtb \ |
| 483 | 560 | tegra20-paz00.dtb \ |
| @@ -486,34 +563,43 @@ dtb-$(CONFIG_ARCH_TEGRA) += tegra20-harmony.dtb \ · 2 unmodified lines | ||
| 486 | 563 | tegra20-tec.dtb \ |
| 487 | 564 | tegra20-trimslice.dtb \ |
| 488 | 565 | tegra20-ventana.dtb \ |
| 489 | − tegra20-whistler.dtb \ | |
| 566 | + tegra20-whistler.dtb | |
| 567 | +dtb-$(CONFIG_ARCH_TEGRA_3x_SOC) += \ | |
| 490 | 568 | tegra30-apalis-eval.dtb \ |
| 491 | 569 | tegra30-beaver.dtb \ |
| 492 | 570 | tegra30-cardhu-a02.dtb \ |
| 493 | 571 | tegra30-cardhu-a04.dtb \ |
| 494 | − tegra30-colibri-eval-v3.dtb \ | |
| 572 | + tegra30-colibri-eval-v3.dtb | |
| 573 | +dtb-$(CONFIG_ARCH_TEGRA_114_SOC) += \ | |
| 495 | 574 | tegra114-dalmore.dtb \ |
| 496 | 575 | tegra114-roth.dtb \ |
| 497 | − tegra114-tn7.dtb \ | |
| 576 | + tegra114-tn7.dtb | |
| 577 | +dtb-$(CONFIG_ARCH_TEGRA_124_SOC) += \ | |
| 498 | 578 | tegra124-jetson-tk1.dtb \ |
| 499 | 579 | tegra124-nyan-big.dtb \ |
| 500 | 580 | tegra124-venice2.dtb |
| 501 | −dtb-$(CONFIG_ARCH_U300) += ste-u300.dtb | |
| 502 | −dtb-$(CONFIG_ARCH_U8500) += ste-snowball.dtb \ | |
| 581 | +dtb-$(CONFIG_ARCH_U300) += \ | |
| 582 | + ste-u300.dtb | |
| 583 | +dtb-$(CONFIG_ARCH_U8500) += \ | |
| 584 | + ste-snowball.dtb \ | |
| 503 | 585 | ste-hrefprev60-stuib.dtb \ |
| 504 | 586 | ste-hrefprev60-tvk.dtb \ |
| 505 | 587 | ste-hrefv60plus-stuib.dtb \ |
| 506 | 588 | ste-hrefv60plus-tvk.dtb \ |
| 507 | 589 | ste-ccu8540.dtb \ |
| 508 | 590 | ste-ccu9540.dtb |
| 509 | −dtb-$(CONFIG_ARCH_VERSATILE) += versatile-ab.dtb \ | |
| 591 | +dtb-$(CONFIG_ARCH_VERSATILE) += \ | |
| 592 | + versatile-ab.dtb \ | |
| 510 | 593 | versatile-pb.dtb |
| 511 | −dtb-$(CONFIG_ARCH_VEXPRESS) += vexpress-v2p-ca5s.dtb \ | |
| 594 | +dtb-$(CONFIG_ARCH_VEXPRESS) += \ | |
| 595 | + vexpress-v2p-ca5s.dtb \ | |
| 512 | 596 | vexpress-v2p-ca9.dtb \ |
| 513 | 597 | vexpress-v2p-ca15-tc1.dtb \ |
| 514 | 598 | vexpress-v2p-ca15_a7.dtb |
| 515 | −dtb-$(CONFIG_ARCH_VIRT) += xenvm-4.2.dtb | |
| 516 | −dtb-$(CONFIG_ARCH_VT8500) += vt8500-bv07.dtb \ | |
| 599 | +dtb-$(CONFIG_ARCH_VIRT) += \ | |
| 600 | + xenvm-4.2.dtb | |
| 601 | +dtb-$(CONFIG_ARCH_VT8500) += \ | |
| 602 | + vt8500-bv07.dtb \ | |
| 517 | 603 | wm8505-ref.dtb \ |
| 518 | 604 | wm8650-mid.dtb \ |
| 519 | 605 | wm8750-apc8750.dtb \ |
| @@ -534,8 +620,10 @@ dtb-$(CONFIG_MACH_ARMADA_370) += \ · 14 unmodified lines | ||
| 534 | 620 | dtb-$(CONFIG_MACH_ARMADA_375) += \ |
| 535 | 621 | armada-375-db.dtb |
| 536 | 622 | dtb-$(CONFIG_MACH_ARMADA_38X) += \ |
| 537 | − armada-385-db.dtb \ | |
| 538 | − armada-385-rd.dtb | |
| 623 | + armada-385-db-ap.dtb \ | |
| 624 | + armada-388-db.dtb \ | |
| 625 | + armada-388-gp.dtb \ | |
| 626 | + armada-388-rd.dtb | |
| 539 | 627 | dtb-$(CONFIG_MACH_ARMADA_XP) += \ |
| 540 | 628 | armada-xp-axpwifiap.dtb \ |
| 541 | 629 | armada-xp-db.dtb \ |
| @@ -545,17 +633,18 @@ dtb-$(CONFIG_MACH_ARMADA_XP) += \ · 3 unmodified lines | ||
| 545 | 633 | armada-xp-netgear-rn2120.dtb \ |
| 546 | 634 | armada-xp-openblocks-ax3-4.dtb \ |
| 547 | 635 | armada-xp-synology-ds414.dtb |
| 548 | −dtb-$(CONFIG_MACH_DOVE) += dove-cm-a510.dtb \ | |
| 636 | +dtb-$(CONFIG_MACH_DOVE) += \ | |
| 637 | + dove-cm-a510.dtb \ | |
| 549 | 638 | dove-cubox.dtb \ |
| 550 | 639 | dove-cubox-es.dtb \ |
| 551 | 640 | dove-d2plug.dtb \ |
| 552 | 641 | dove-d3plug.dtb \ |
| 553 | 642 | dove-dove-db.dtb |
| 554 | −dtb-$(CONFIG_ARCH_MEDIATEK) += mt6589-aquaris5.dtb \ | |
| 643 | +dtb-$(CONFIG_ARCH_MEDIATEK) += \ | |
| 644 | + mt6589-aquaris5.dtb \ | |
| 555 | 645 | mt6592-evb.dtb \ |
| 556 | 646 | mt8127-moose.dtb \ |
| 557 | 647 | mt8135-evbp1.dtb |
| 558 | − | |
| 559 | 648 | endif |
| 560 | 649 | |
| 561 | 650 | always := $(dtb-y) |
| @@ -0,0 +1,13 @@ | ||
| 1 | +/* | |
| 2 | + * Copyright 2014 Oleksij Rempel <linux@rempel-privat.de> | |
| 3 | + * | |
| 4 | + * Licensed under the X11 license or the GPL v2 (or later) | |
| 5 | + */ | |
| 6 | + | |
| 7 | +/dts-v1/; | |
| 8 | +#include "alphascale-asm9260.dtsi" | |
| 9 | + | |
| 10 | +/ { | |
| 11 | + model = "Alphascale asm9260 Development Kit"; | |
| 12 | + compatible = "alphascale,asm9260devkit", "alphascale,asm9260"; | |
| 13 | +}; | |
| @@ -0,0 +1,63 @@ | ||
| 1 | +/* | |
| 2 | + * Copyright 2014 Oleksij Rempel <linux@rempel-privat.de> | |
| 3 | + * | |
| 4 | + * Licensed under the X11 license or the GPL v2 (or later) | |
| 5 | + */ | |
| 6 | + | |
| 7 | +#include "skeleton.dtsi" | |
| 8 | +#include <dt-bindings/clock/alphascale,asm9260.h> | |
| 9 | + | |
| 10 | +/ { | |
| 11 | + interrupt-parent = <&icoll>; | |
| 12 | + | |
| 13 | + memory { | |
| 14 | + device_type = "memory"; | |
| 15 | + reg = <0x20000000 0x2000000>; | |
| 16 | + }; | |
| 17 | + | |
| 18 | + cpus { | |
| 19 | + #address-cells = <0>; | |
| 20 | + #size-cells = <0>; | |
| 21 | + | |
| 22 | + cpu { | |
| 23 | + compatible = "arm,arm926ej-s"; | |
| 24 | + device_type = "cpu"; | |
| 25 | + clocks = <&acc CLKID_SYS_CPU>; | |
| 26 | + }; | |
| 27 | + }; | |
| 28 | + | |
| 29 | + osc24m: oscillator { | |
| 30 | + compatible = "fixed-clock"; | |
| 31 | + #clock-cells = <0>; | |
| 32 | + clock-frequency = <24000000>; | |
| 33 | + clock-accuracy = <30000>; | |
| 34 | + }; | |
| 35 | + | |
| 36 | + soc { | |
| 37 | + #address-cells = <1>; | |
| 38 | + #size-cells = <1>; | |
| 39 | + compatible = "simple-bus"; | |
| 40 | + ranges; | |
| 41 | + | |
| 42 | + acc: clock-controller@80040000 { | |
| 43 | + compatible = "alphascale,asm9260-clock-controller"; | |
| 44 | + #clock-cells = <1>; | |
| 45 | + clocks = <&osc24m>; | |
| 46 | + reg = <0x80040000 0x204>; | |
| 47 | + }; | |
| 48 | + | |
| 49 | + icoll: interrupt-controller@80054000 { | |
| 50 | + compatible = "alphascale,asm9260-icoll"; | |
| 51 | + interrupt-controller; | |
| 52 | + #interrupt-cells = <1>; | |
| 53 | + reg = <0x80054000 0x200>; | |
| 54 | + }; | |
| 55 | + | |
| 56 | + timer0: timer@80088000 { | |
| 57 | + compatible = "alphascale,asm9260-timer"; | |
| 58 | + reg = <0x80088000 0x4000>; | |
| 59 | + clocks = <&acc CLKID_AHB_TIMER0>; | |
| 60 | + interrupts = <29>; | |
| 61 | + }; | |
| 62 | + }; | |
| 63 | +}; | |
| @@ -648,6 +648,7 @@ · 647 unmodified lines | ||
| 648 | 648 | ti,x-plate-resistance = <200>; |
| 649 | 649 | ti,coordinate-readouts = <5>; |
| 650 | 650 | ti,wire-config = <0x00 0x11 0x22 0x33>; |
| 651 | + ti,charge-delay = <0x400>; | |
| 651 | 652 | }; |
| 652 | 653 | |
| 653 | 654 | adc { |
| @@ -31,6 +31,7 @@ · 30 unmodified lines | ||
| 31 | 31 | status = "disabled"; |
| 32 | 32 | reg = <0x5c000000 0x30000>; |
| 33 | 33 | interrupts = <67 68 69 70>; |
| 34 | + syscon = <&omap3_scm_general>; | |
| 34 | 35 | ti,davinci-ctrl-reg-offset = <0x10000>; |
| 35 | 36 | ti,davinci-ctrl-mod-reg-offset = <0>; |
| 36 | 37 | ti,davinci-ctrl-ram-offset = <0x20000>; |
| @@ -948,6 +948,22 @@ · 947 unmodified lines | ||
| 948 | 948 | interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>; |
| 949 | 949 | status = "disabled"; |
| 950 | 950 | }; |
| 951 | + | |
| 952 | + vpfe0: vpfe@48326000 { | |
| 953 | + compatible = "ti,am437x-vpfe"; | |
| 954 | + reg = <0x48326000 0x2000>; | |
| 955 | + interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>; | |
| 956 | + ti,hwmods = "vpfe0"; | |
| 957 | + status = "disabled"; | |
| 958 | + }; | |
| 959 | + | |
| 960 | + vpfe1: vpfe@48328000 { | |
| 961 | + compatible = "ti,am437x-vpfe"; | |
| 962 | + reg = <0x48328000 0x2000>; | |
| 963 | + interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>; | |
| 964 | + ti,hwmods = "vpfe1"; | |
| 965 | + status = "disabled"; | |
| 966 | + }; | |
| 951 | 967 | }; |
| 952 | 968 | }; |
| 953 | 969 | |
| @@ -268,6 +268,78 @@ · 267 unmodified lines | ||
| 268 | 268 | 0x184 (PIN_INPUT_PULLUP | MUX_MODE2) /* uart1_txd.d_can1_rx */ |
| 269 | 269 | >; |
| 270 | 270 | }; |
| 271 | + | |
| 272 | + vpfe0_pins_default: vpfe0_pins_default { | |
| 273 | + pinctrl-single,pins = < | |
| 274 | + 0x1B0 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam0_hd mode 0*/ | |
| 275 | + 0x1B4 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam0_vd mode 0*/ | |
| 276 | + 0x1C0 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam0_pclk mode 0*/ | |
| 277 | + 0x1C4 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam0_data8 mode 0*/ | |
| 278 | + 0x1C8 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam0_data9 mode 0*/ | |
| 279 | + 0x208 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam0_data0 mode 0*/ | |
| 280 | + 0x20C (PIN_INPUT_PULLUP | MUX_MODE0) /* cam0_data1 mode 0*/ | |
| 281 | + 0x210 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam0_data2 mode 0*/ | |
| 282 | + 0x214 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam0_data3 mode 0*/ | |
| 283 | + 0x218 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam0_data4 mode 0*/ | |
| 284 | + 0x21C (PIN_INPUT_PULLUP | MUX_MODE0) /* cam0_data5 mode 0*/ | |
| 285 | + 0x220 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam0_data6 mode 0*/ | |
| 286 | + 0x224 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam0_data7 mode 0*/ | |
| 287 | + >; | |
| 288 | + }; | |
| 289 | + | |
| 290 | + vpfe0_pins_sleep: vpfe0_pins_sleep { | |
| 291 | + pinctrl-single,pins = < | |
| 292 | + 0x1B0 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) /* cam0_hd mode 0*/ | |
| 293 | + 0x1B4 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) /* cam0_vd mode 0*/ | |
| 294 | + 0x1C0 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) /* cam0_pclk mode 0*/ | |
| 295 | + 0x1C4 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) /* cam0_data8 mode 0*/ | |
| 296 | + 0x1C8 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) /* cam0_data9 mode 0*/ | |
| 297 | + 0x208 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) /* cam0_data0 mode 0*/ | |
| 298 | + 0x20C (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) /* cam0_data1 mode 0*/ | |
| 299 | + 0x210 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) /* cam0_data2 mode 0*/ | |
| 300 | + 0x214 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) /* cam0_data3 mode 0*/ | |
| 301 | + 0x218 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) /* cam0_data4 mode 0*/ | |
| 302 | + 0x21C (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) /* cam0_data5 mode 0*/ | |
| 303 | + 0x220 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) /* cam0_data6 mode 0*/ | |
| 304 | + 0x224 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) /* cam0_data7 mode 0*/ | |
| 305 | + >; | |
| 306 | + }; | |
| 307 | + | |
| 308 | + vpfe1_pins_default: vpfe1_pins_default { | |
| 309 | + pinctrl-single,pins = < | |
| 310 | + 0x1CC (PIN_INPUT_PULLUP | MUX_MODE0) /* cam1_data9 mode 0*/ | |
| 311 | + 0x1D0 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam1_data8 mode 0*/ | |
| 312 | + 0x1D4 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam1_hd mode 0*/ | |
| 313 | + 0x1D8 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam1_vd mode 0*/ | |
| 314 | + 0x1DC (PIN_INPUT_PULLUP | MUX_MODE0) /* cam1_pclk mode 0*/ | |
| 315 | + 0x1E8 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam1_data0 mode 0*/ | |
| 316 | + 0x1EC (PIN_INPUT_PULLUP | MUX_MODE0) /* cam1_data1 mode 0*/ | |
| 317 | + 0x1F0 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam1_data2 mode 0*/ | |
| 318 | + 0x1F4 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam1_data3 mode 0*/ | |
| 319 | + 0x1F8 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam1_data4 mode 0*/ | |
| 320 | + 0x1FC (PIN_INPUT_PULLUP | MUX_MODE0) /* cam1_data5 mode 0*/ | |
| 321 | + 0x200 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam1_data6 mode 0*/ | |
| 322 | + 0x204 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam1_data7 mode 0*/ | |
| 323 | + >; | |
| 324 | + }; | |
| 325 | + | |
| 326 | + vpfe1_pins_sleep: vpfe1_pins_sleep { | |
| 327 | + pinctrl-single,pins = < | |
| 328 | + 0x1CC (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) /* cam1_data9 mode 0*/ | |
| 329 | + 0x1D0 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) /* cam1_data8 mode 0*/ | |
| 330 | + 0x1D4 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) /* cam1_hd mode 0*/ | |
| 331 | + 0x1D8 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) /* cam1_vd mode 0*/ | |
| 332 | + 0x1DC (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) /* cam1_pclk mode 0*/ | |
| 333 | + 0x1E8 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) /* cam1_data0 mode 0*/ | |
| 334 | + 0x1EC (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) /* cam1_data1 mode 0*/ | |
| 335 | + 0x1F0 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) /* cam1_data2 mode 0*/ | |
| 336 | + 0x1F4 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) /* cam1_data3 mode 0*/ | |
| 337 | + 0x1F8 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) /* cam1_data4 mode 0*/ | |
| 338 | + 0x1FC (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) /* cam1_data5 mode 0*/ | |
| 339 | + 0x200 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) /* cam1_data6 mode 0*/ | |
| 340 | + 0x204 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) /* cam1_data7 mode 0*/ | |
| 341 | + >; | |
| 342 | + }; | |
| 271 | 343 | }; |
| 272 | 344 | |
| 273 | 345 | &i2c0 { |
| @@ -545,3 +617,37 @@ · 271 unmodified lines | ||
| 545 | 617 | pinctrl-0 = <&dcan1_default>; |
| 546 | 618 | status = "okay"; |
| 547 | 619 | }; |
| 620 | + | |
| 621 | +&vpfe0 { | |
| 622 | + status = "okay"; | |
| 623 | + pinctrl-names = "default", "sleep"; | |
| 624 | + pinctrl-0 = <&vpfe0_pins_default>; | |
| 625 | + pinctrl-1 = <&vpfe0_pins_sleep>; | |
| 626 | + | |
| 627 | + port { | |
| 628 | + vpfe0_ep: endpoint { | |
| 629 | + /* remote-endpoint = <&sensor>; add once we have it */ | |
| 630 | + ti,am437x-vpfe-interface = <0>; | |
| 631 | + bus-width = <8>; | |
| 632 | + hsync-active = <0>; | |
| 633 | + vsync-active = <0>; | |
| 634 | + }; | |
| 635 | + }; | |
| 636 | +}; | |
| 637 | + | |
| 638 | +&vpfe1 { | |
| 639 | + status = "okay"; | |
| 640 | + pinctrl-names = "default", "sleep"; | |
| 641 | + pinctrl-0 = <&vpfe1_pins_default>; | |
| 642 | + pinctrl-1 = <&vpfe1_pins_sleep>; | |
| 643 | + | |
| 644 | + port { | |
| 645 | + vpfe1_ep: endpoint { | |
| 646 | + /* remote-endpoint = <&sensor>; add once we have it */ | |
| 647 | + ti,am437x-vpfe-interface = <0>; | |
| 648 | + bus-width = <8>; | |
| 649 | + hsync-active = <0>; | |
| 650 | + vsync-active = <0>; | |
| 651 | + }; | |
| 652 | + }; | |
| 653 | +}; | |
| @@ -0,0 +1,405 @@ | ||
| 1 | +/* | |
| 2 | + * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/ | |
| 3 | + * | |
| 4 | + * This program is free software; you can redistribute it and/or modify | |
| 5 | + * it under the terms of the GNU General Public License version 2 as | |
| 6 | + * published by the Free Software Foundation. | |
| 7 | + */ | |
| 8 | + | |
| 9 | +/dts-v1/; | |
| 10 | + | |
| 11 | +#include "am4372.dtsi" | |
| 12 | +#include <dt-bindings/pinctrl/am43xx.h> | |
| 13 | +#include <dt-bindings/pwm/pwm.h> | |
| 14 | +#include <dt-bindings/gpio/gpio.h> | |
| 15 | +#include <dt-bindings/input/input.h> | |
| 16 | + | |
| 17 | +/ { | |
| 18 | + model = "TI AM437x Industrial Development Kit"; | |
| 19 | + compatible = "ti,am437x-idk-evm","ti,am4372","ti,am43"; | |
| 20 | + | |
| 21 | + v24_0d: fixed-regulator-v24_0d { | |
| 22 | + compatible = "regulator-fixed"; | |
| 23 | + regulator-name = "V24_0D"; | |
| 24 | + regulator-min-microvolt = <24000000>; | |
| 25 | + regulator-max-microvolt = <24000000>; | |
| 26 | + regulator-always-on; | |
| 27 | + regulator-boot-on; | |
| 28 | + }; | |
| 29 | + | |
| 30 | + v3_3d: fixed-regulator-v3_3d { | |
| 31 | + compatible = "regulator-fixed"; | |
| 32 | + regulator-name = "V3_3D"; | |
| 33 | + regulator-min-microvolt = <3300000>; | |
| 34 | + regulator-max-microvolt = <3300000>; | |
| 35 | + regulator-always-on; | |
| 36 | + regulator-boot-on; | |
| 37 | + vin-supply = <&v24_0d>; | |
| 38 | + }; | |
| 39 | + | |
| 40 | + vdd_corereg: fixed-regulator-vdd_corereg { | |
| 41 | + compatible = "regulator-fixed"; | |
| 42 | + regulator-name = "VDD_COREREG"; | |
| 43 | + regulator-min-microvolt = <1100000>; | |
| 44 | + regulator-max-microvolt = <1100000>; | |
| 45 | + regulator-always-on; | |
| 46 | + regulator-boot-on; | |
| 47 | + vin-supply = <&v24_0d>; | |
| 48 | + }; | |
| 49 | + | |
| 50 | + vdd_core: fixed-regulator-vdd_core { | |
| 51 | + compatible = "regulator-fixed"; | |
| 52 | + regulator-name = "VDD_CORE"; | |
| 53 | + regulator-min-microvolt = <1100000>; | |
| 54 | + regulator-max-microvolt = <1100000>; | |
| 55 | + regulator-always-on; | |
| 56 | + regulator-boot-on; | |
| 57 | + vin-supply = <&vdd_corereg>; | |
| 58 | + }; | |
| 59 | + | |
| 60 | + v1_8dreg: fixed-regulator-v1_8dreg{ | |
| 61 | + compatible = "regulator-fixed"; | |
| 62 | + regulator-name = "V1_8DREG"; | |
| 63 | + regulator-min-microvolt = <1800000>; | |
| 64 | + regulator-max-microvolt = <1800000>; | |
| 65 | + regulator-always-on; | |
| 66 | + regulator-boot-on; | |
| 67 | + vin-supply = <&v24_0d>; | |
| 68 | + }; | |
| 69 | + | |
| 70 | + v1_8d: fixed-regulator-v1_8d{ | |
| 71 | + compatible = "regulator-fixed"; | |
| 72 | + regulator-name = "V1_8D"; | |
| 73 | + regulator-min-microvolt = <1800000>; | |
| 74 | + regulator-max-microvolt = <1800000>; | |
| 75 | + regulator-always-on; | |
| 76 | + regulator-boot-on; | |
| 77 | + vin-supply = <&v1_8dreg>; | |
| 78 | + }; | |
| 79 | + | |
| 80 | + v1_5dreg: fixed-regulator-v1_5dreg{ | |
| 81 | + compatible = "regulator-fixed"; | |
| 82 | + regulator-name = "V1_5DREG"; | |
| 83 | + regulator-min-microvolt = <1500000>; | |
| 84 | + regulator-max-microvolt = <1500000>; | |
| 85 | + regulator-always-on; | |
| 86 | + regulator-boot-on; | |
| 87 | + vin-supply = <&v24_0d>; | |
| 88 | + }; | |
| 89 | + | |
| 90 | + v1_5d: fixed-regulator-v1_5d{ | |
| 91 | + compatible = "regulator-fixed"; | |
| 92 | + regulator-name = "V1_5D"; | |
| 93 | + regulator-min-microvolt = <1500000>; | |
| 94 | + regulator-max-microvolt = <1500000>; | |
| 95 | + regulator-always-on; | |
| 96 | + regulator-boot-on; | |
| 97 | + vin-supply = <&v1_5dreg>; | |
| 98 | + }; | |
| 99 | + | |
| 100 | + gpio_keys: gpio_keys { | |
| 101 | + compatible = "gpio-keys"; | |
| 102 | + pinctrl-names = "default"; | |
| 103 | + pinctrl-0 = <&gpio_keys_pins_default>; | |
| 104 | + #address-cells = <1>; | |
| 105 | + #size-cells = <0>; | |
| 106 | + | |
| 107 | + switch@0 { | |
| 108 | + label = "power-button"; | |
| 109 | + linux,code = <KEY_POWER>; | |
| 110 | + gpios = <&gpio4 2 GPIO_ACTIVE_LOW>; | |
| 111 | + }; | |
| 112 | + }; | |
| 113 | +}; | |
| 114 | + | |
| 115 | +&am43xx_pinmux { | |
| 116 | + gpio_keys_pins_default: gpio_keys_pins_default { | |
| 117 | + pinctrl-single,pins = < | |
| 118 | + 0x1b8 (PIN_INPUT | MUX_MODE7) /* cam0_field.gpio4_2 */ | |
| 119 | + >; | |
| 120 | + }; | |
| 121 | + | |
| 122 | + i2c0_pins_default: i2c0_pins_default { | |
| 123 | + pinctrl-single,pins = < | |
| 124 | + 0x188 (PIN_INPUT | SLEWCTRL_FAST | MUX_MODE0) /* i2c0_sda.i2c0_sda */ | |
| 125 | + 0x18c (PIN_INPUT | SLEWCTRL_FAST | MUX_MODE0) /* i2c0_scl.i2c0_scl */ | |
| 126 | + >; | |
| 127 | + }; | |
| 128 | + | |
| 129 | + i2c0_pins_sleep: i2c0_pins_sleep { | |
| 130 | + pinctrl-single,pins = < | |
| 131 | + 0x188 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 132 | + 0x18c (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 133 | + >; | |
| 134 | + }; | |
| 135 | + | |
| 136 | + i2c1_pins_default: i2c1_pins_default { | |
| 137 | + pinctrl-single,pins = < | |
| 138 | + 0x15c (PIN_INPUT | SLEWCTRL_FAST | MUX_MODE2) /* spi0_cs0.i2c1_scl */ | |
| 139 | + 0x158 (PIN_INPUT | SLEWCTRL_FAST | MUX_MODE2) /* spi0_d1.i2c1_sda */ | |
| 140 | + >; | |
| 141 | + }; | |
| 142 | + | |
| 143 | + i2c1_pins_sleep: i2c1_pins_sleep { | |
| 144 | + pinctrl-single,pins = < | |
| 145 | + 0x15c (PIN_INPUT_PULLDOWN | MUX_MODE7) /* spi0_cs0.i2c1_scl */ | |
| 146 | + 0x158 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* spi0_d1.i2c1_sda */ | |
| 147 | + >; | |
| 148 | + }; | |
| 149 | + | |
| 150 | + mmc1_pins_default: pinmux_mmc1_pins_default { | |
| 151 | + pinctrl-single,pins = < | |
| 152 | + 0x100 (PIN_INPUT | MUX_MODE0) /* mmc0_clk.mmc0_clk */ | |
| 153 | + 0x104 (PIN_INPUT | MUX_MODE0) /* mmc0_cmd.mmc0_cmd */ | |
| 154 | + 0x1f0 (PIN_INPUT | MUX_MODE0) /* mmc0_dat3.mmc0_dat3 */ | |
| 155 | + 0x1f4 (PIN_INPUT | MUX_MODE0) /* mmc0_dat2.mmc0_dat2 */ | |
| 156 | + 0x1f8 (PIN_INPUT | MUX_MODE0) /* mmc0_dat1.mmc0_dat1 */ | |
| 157 | + 0x1fc (PIN_INPUT | MUX_MODE0) /* mmc0_dat0.mmc0_dat0 */ | |
| 158 | + 0x160 (PIN_INPUT | MUX_MODE7) /* spi0_cs1.gpio0_6 */ | |
| 159 | + >; | |
| 160 | + }; | |
| 161 | + | |
| 162 | + mmc1_pins_sleep: pinmux_mmc1_pins_sleep { | |
| 163 | + pinctrl-single,pins = < | |
| 164 | + 0x100 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 165 | + 0x104 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 166 | + 0x1f0 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 167 | + 0x1f4 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 168 | + 0x1f8 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 169 | + 0x1fc (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 170 | + 0x160 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 171 | + >; | |
| 172 | + }; | |
| 173 | + | |
| 174 | + ecap0_pins_default: backlight_pins_default { | |
| 175 | + pinctrl-single,pins = < | |
| 176 | + 0x164 (PIN_OUTPUT | MUX_MODE0) /* ecap0_in_pwm0_out.ecap0_in_pwm0_out */ | |
| 177 | + >; | |
| 178 | + }; | |
| 179 | + | |
| 180 | + cpsw_default: cpsw_default { | |
| 181 | + pinctrl-single,pins = < | |
| 182 | + 0x12c (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txclk.rgmii1_tclk */ | |
| 183 | + 0x114 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txen.rgmii1_tctl */ | |
| 184 | + 0x128 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd0.rgmii1_td0 */ | |
| 185 | + 0x124 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd1.rgmii1_td1 */ | |
| 186 | + 0x120 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd0.rgmii1_td2 */ | |
| 187 | + 0x11c (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd1.rgmii1_td3 */ | |
| 188 | + 0x130 (PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxclk.rmii1_rclk */ | |
| 189 | + 0x118 (PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxdv.rgmii1_rctl */ | |
| 190 | + 0x140 (PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxd0.rgmii1_rd0 */ | |
| 191 | + 0x13c (PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxd1.rgmii1_rd1 */ | |
| 192 | + 0x138 (PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxd0.rgmii1_rd2 */ | |
| 193 | + 0x134 (PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxd1.rgmii1_rd3 */ | |
| 194 | + >; | |
| 195 | + }; | |
| 196 | + | |
| 197 | + cpsw_sleep: cpsw_sleep { | |
| 198 | + pinctrl-single,pins = < | |
| 199 | + 0x12c (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 200 | + 0x114 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 201 | + 0x128 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 202 | + 0x124 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 203 | + 0x120 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 204 | + 0x11c (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 205 | + 0x130 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 206 | + 0x118 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 207 | + 0x140 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 208 | + 0x13c (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 209 | + 0x138 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 210 | + 0x134 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 211 | + >; | |
| 212 | + }; | |
| 213 | + | |
| 214 | + davinci_mdio_default: davinci_mdio_default { | |
| 215 | + pinctrl-single,pins = < | |
| 216 | + /* MDIO */ | |
| 217 | + 0x148 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0) /* mdio_data.mdio_data */ | |
| 218 | + 0x14c (PIN_OUTPUT_PULLUP | MUX_MODE0) /* mdio_clk.mdio_clk */ | |
| 219 | + >; | |
| 220 | + }; | |
| 221 | + | |
| 222 | + davinci_mdio_sleep: davinci_mdio_sleep { | |
| 223 | + pinctrl-single,pins = < | |
| 224 | + /* MDIO reset value */ | |
| 225 | + 0x148 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 226 | + 0x14c (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 227 | + >; | |
| 228 | + }; | |
| 229 | + | |
| 230 | + qspi_pins_default: qspi_pins_default { | |
| 231 | + pinctrl-single,pins = < | |
| 232 | + 0x7c (PIN_OUTPUT_PULLUP | MUX_MODE3) /* gpmc_csn0.qspi_csn */ | |
| 233 | + 0x88 (PIN_OUTPUT | MUX_MODE2) /* gpmc_csn3.qspi_clk */ | |
| 234 | + 0x90 (PIN_INPUT_PULLUP | MUX_MODE3) /* gpmc_advn_ale.qspi_d0 */ | |
| 235 | + 0x94 (PIN_INPUT_PULLUP | MUX_MODE3) /* gpmc_oen_ren.qspi_d1 */ | |
| 236 | + 0x98 (PIN_INPUT_PULLUP | MUX_MODE3) /* gpmc_wen.qspi_d2 */ | |
| 237 | + 0x9c (PIN_INPUT_PULLUP | MUX_MODE3) /* gpmc_be0n_cle.qspi_d3 */ | |
| 238 | + >; | |
| 239 | + }; | |
| 240 | + | |
| 241 | + qspi_pins_sleep: qspi_pins_sleep{ | |
| 242 | + pinctrl-single,pins = < | |
| 243 | + 0x7c (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 244 | + 0x88 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 245 | + 0x90 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 246 | + 0x94 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 247 | + 0x98 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 248 | + 0x9c (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
| 249 | + >; | |
| 250 | + }; | |
| 251 | +}; | |
| 252 | + | |
| 253 | +&i2c0 { | |
| 254 | + status = "okay"; | |
| 255 | + pinctrl-names = "default", "sleep"; | |
| 256 | + pinctrl-0 = <&i2c0_pins_default>; | |
| 257 | + pinctrl-1 = <&i2c0_pins_default>; | |
| 258 | + clock-frequency = <400000>; | |
| 259 | + | |
| 260 | + at24@50 { | |
| 261 | + compatible = "at24,24c256"; | |
| 262 | + pagesize = <64>; | |
| 263 | + reg = <0x50>; | |
| 264 | + }; | |
| 265 | +}; | |
| 266 | + | |
| 267 | +&i2c1 { | |
| 268 | + status = "okay"; | |
| 269 | + pinctrl-names = "default", "sleep"; | |
| 270 | + pinctrl-0 = <&i2c1_pins_default>; | |
| 271 | + pinctrl-1 = <&i2c1_pins_default>; | |
| 272 | + clock-frequency = <400000>; | |
| 273 | + | |
| 274 | + tps: tps62362@60 { | |
| 275 | + compatible = "ti,tps62362"; | |
| 276 | + regulator-name = "VDD_MPU"; | |
| 277 | + regulator-min-microvolt = <950000>; | |
| 278 | + regulator-max-microvolt = <1330000>; | |
| 279 | + regulator-boot-on; | |
| 280 | + regulator-always-on; | |
| 281 | + ti,vsel0-state-high; | |
| 282 | + ti,vsel1-state-high; | |
| 283 | + vin-supply = <&v3_3d>; | |
| 284 | + }; | |
| 285 | +}; | |
| 286 | + | |
| 287 | +&epwmss0 { | |
| 288 | + status = "okay"; | |
| 289 | +}; | |
| 290 | + | |
| 291 | +&ecap0 { | |
| 292 | + status = "okay"; | |
| 293 | + pinctrl-names = "default"; | |
| 294 | + pinctrl-0 = <&ecap0_pins_default>; | |
| 295 | +}; | |
| 296 | + | |
| 297 | +&gpio0 { | |
| 298 | + status = "okay"; | |
| 299 | +}; | |
| 300 | + | |
| 301 | +&gpio1 { | |
| 302 | + status = "okay"; | |
| 303 | +}; | |
| 304 | + | |
| 305 | +&gpio4 { | |
| 306 | + status = "okay"; | |
| 307 | +}; | |
| 308 | + | |
| 309 | +&gpio5 { | |
| 310 | + status = "okay"; | |
| 311 | +}; | |
| 312 | + | |
| 313 | +&mmc1 { | |
| 314 | + status = "okay"; | |
| 315 | + pinctrl-names = "default", "sleep"; | |
| 316 | + pinctrl-0 = <&mmc1_pins_default>; | |
| 317 | + pinctrl-1 = <&mmc1_pins_sleep>; | |
| 318 | + vmmc-supply = <&v3_3d>; | |
| 319 | + bus-width = <4>; | |
| 320 | + cd-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>; | |
| 321 | +}; | |
| 322 | + | |
| 323 | +&qspi { | |
| 324 | + status = "okay"; | |
| 325 | + pinctrl-names = "default", "sleep"; | |
| 326 | + pinctrl-0 = <&qspi_pins_default>; | |
| 327 | + pinctrl-1 = <&qspi_pins_sleep>; | |
| 328 | + | |
| 329 | + spi-max-frequency = <48000000>; | |
| 330 | + m25p80@0 { | |
| 331 | + compatible = "mx66l51235l"; | |
| 332 | + spi-max-frequency = <48000000>; | |
| 333 | + reg = <0>; | |
| 334 | + spi-cpol; | |
| 335 | + spi-cpha; | |
| 336 | + spi-tx-bus-width = <1>; | |
| 337 | + spi-rx-bus-width = <4>; | |
| 338 | + #address-cells = <1>; | |
| 339 | + #size-cells = <1>; | |
| 340 | + | |
| 341 | + /* | |
| 342 | + * MTD partition table. The ROM checks the first 512KiB for a | |
| 343 | + * valid file to boot(XIP). | |
| 344 | + */ | |
| 345 | + partition@0 { | |
| 346 | + label = "QSPI.U_BOOT"; | |
| 347 | + reg = <0x00000000 0x000080000>; | |
| 348 | + }; | |
| 349 | + partition@1 { | |
| 350 | + label = "QSPI.U_BOOT.backup"; | |
| 351 | + reg = <0x00080000 0x00080000>; | |
| 352 | + }; | |
| 353 | + partition@2 { | |
| 354 | + label = "QSPI.U-BOOT-SPL_OS"; | |
| 355 | + reg = <0x00100000 0x00010000>; | |
| 356 | + }; | |
| 357 | + partition@3 { | |
| 358 | + label = "QSPI.U_BOOT_ENV"; | |
| 359 | + reg = <0x00110000 0x00010000>; | |
| 360 | + }; | |
| 361 | + partition@4 { | |
| 362 | + label = "QSPI.U-BOOT-ENV.backup"; | |
| 363 | + reg = <0x00120000 0x00010000>; | |
| 364 | + }; | |
| 365 | + partition@5 { | |
| 366 | + label = "QSPI.KERNEL"; | |
| 367 | + reg = <0x00130000 0x0800000>; | |
| 368 | + }; | |
| 369 | + partition@6 { | |
| 370 | + label = "QSPI.FILESYSTEM"; | |
| 371 | + reg = <0x00930000 0x36D0000>; | |
| 372 | + }; | |
| 373 | + }; | |
| 374 | +}; | |
| 375 | + | |
| 376 | +&mac { | |
| 377 | + pinctrl-names = "default", "sleep"; | |
| 378 | + pinctrl-0 = <&cpsw_default>; | |
| 379 | + pinctrl-1 = <&cpsw_sleep>; | |
| 380 | + status = "okay"; | |
| 381 | +}; | |
| 382 | + | |
| 383 | +&davinci_mdio { | |
| 384 | + pinctrl-names = "default", "sleep"; | |
| 385 | + pinctrl-0 = <&davinci_mdio_default>; | |
| 386 | + pinctrl-1 = <&davinci_mdio_sleep>; | |
| 387 | + status = "okay"; | |
| 388 | +}; | |
| 389 | + | |
| 390 | +&cpsw_emac0 { | |
| 391 | + phy_id = <&davinci_mdio>, <0>; | |
| 392 | + phy-mode = "rgmii"; | |
| 393 | +}; | |
| 394 | + | |
| 395 | +&rtc { | |
| 396 | + status = "okay"; | |
| 397 | +}; | |
| 398 | + | |
| 399 | +&wdt { | |
| 400 | + status = "okay"; | |
| 401 | +}; | |
| 402 | + | |
| 403 | +&cpu { | |
| 404 | + cpu0-supply = <&tps>; | |
| 405 | +}; | |
| @@ -153,20 +153,26 @@ · 152 unmodified lines | ||
| 153 | 153 | |
| 154 | 154 | i2c0_pins: i2c0_pins { |
| 155 | 155 | pinctrl-single,pins = < |
| 156 | − 0x188 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0) /* i2c0_sda.i2c0_sda */ | |
| 157 | − 0x18c (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0) /* i2c0_scl.i2c0_scl */ | |
| 156 | + 0x188 (PIN_INPUT | SLEWCTRL_FAST | MUX_MODE0) /* i2c0_sda.i2c0_sda */ | |
| 157 | + 0x18c (PIN_INPUT | SLEWCTRL_FAST | MUX_MODE0) /* i2c0_scl.i2c0_scl */ | |
| 158 | 158 | >; |
| 159 | 159 | }; |
| 160 | 160 | |
| 161 | 161 | i2c1_pins: i2c1_pins { |
| 162 | 162 | pinctrl-single,pins = < |
| 163 | − 0x15c (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE2) /* spi0_cs0.i2c1_scl */ | |
| 164 | − 0x158 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE2) /* spi0_d1.i2c1_sda */ | |
| 163 | + 0x15c (PIN_INPUT | SLEWCTRL_FAST | MUX_MODE2) /* spi0_cs0.i2c1_scl */ | |
| 164 | + 0x158 (PIN_INPUT | SLEWCTRL_FAST | MUX_MODE2) /* spi0_d1.i2c1_sda */ | |
| 165 | 165 | >; |
| 166 | 166 | }; |
| 167 | 167 | |
| 168 | 168 | mmc1_pins: pinmux_mmc1_pins { |
| 169 | 169 | pinctrl-single,pins = < |
| 170 | + 0x0f0 (PIN_INPUT | MUX_MODE0) /* mmc0_dat3.mmc0_dat3 */ | |
| 171 | + 0x0f4 (PIN_INPUT | MUX_MODE0) /* mmc0_dat2.mmc0_dat2 */ | |
| 172 | + 0x0f8 (PIN_INPUT | MUX_MODE0) /* mmc0_dat1.mmc0_dat1 */ | |
| 173 | + 0x0fc (PIN_INPUT | MUX_MODE0) /* mmc0_dat0.mmc0_dat0 */ | |
| 174 | + 0x100 (PIN_INPUT | MUX_MODE0) /* mmc0_clk.mmc0_clk */ | |
| 175 | + 0x104 (PIN_INPUT | MUX_MODE0) /* mmc0_cmd.mmc0_cmd */ | |
| 170 | 176 | 0x160 (PIN_INPUT | MUX_MODE7) /* spi0_cs1.gpio0_6 */ |
| 171 | 177 | >; |
| 172 | 178 | }; |
| @@ -184,35 +190,75 @@ · 11 unmodified lines | ||
| 184 | 190 | >; |
| 185 | 191 | }; |
| 186 | 192 | |
| 193 | + vpfe0_pins_default: vpfe0_pins_default { | |
| 194 | + pinctrl-single,pins = < | |
| 195 | + 0x1b0 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam0_hd mode 0*/ | |
| 196 | + 0x1b4 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam0_vd mode 0*/ | |
| 197 | + 0x1b8 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam0_field mode 0*/ | |
| 198 | + 0x1bc (PIN_INPUT_PULLUP | MUX_MODE0) /* cam0_wen mode 0*/ | |
| 199 | + 0x1c0 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam0_pclk mode 0*/ | |
| 200 | + 0x1c4 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam0_data8 mode 0*/ | |
| 201 | + 0x1c8 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam0_data9 mode 0*/ | |
| 202 | + 0x208 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam0_data0 mode 0*/ | |
| 203 | + 0x20c (PIN_INPUT_PULLUP | MUX_MODE0) /* cam0_data1 mode 0*/ | |
| 204 | + 0x210 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam0_data2 mode 0*/ | |
| 205 | + 0x214 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam0_data3 mode 0*/ | |
| 206 | + 0x218 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam0_data4 mode 0*/ | |
| 207 | + 0x21c (PIN_INPUT_PULLUP | MUX_MODE0) /* cam0_data5 mode 0*/ | |
| 208 | + 0x220 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam0_data6 mode 0*/ | |
| 209 | + 0x224 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam0_data7 mode 0*/ | |
| 210 | + >; | |
| 211 | + }; | |
| 212 | + | |
| 213 | + vpfe0_pins_sleep: vpfe0_pins_sleep { | |
| 214 | + pinctrl-single,pins = < | |
| 215 | + 0x1b0 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | |
| 216 | + 0x1b4 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | |
| 217 | + 0x1b8 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | |
| 218 | + 0x1bc (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | |
| 219 | + 0x1c0 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | |
| 220 | + 0x1c4 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | |
| 221 | + 0x1c8 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | |
| 222 | + 0x208 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | |
| 223 | + 0x20c (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | |
| 224 | + 0x210 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | |
| 225 | + 0x214 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | |
| 226 | + 0x218 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | |
| 227 | + 0x21c (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | |
| 228 | + 0x220 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | |
| 229 | + 0x224 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | |
| 230 | + >; | |
| 231 | + }; | |
| 232 | + | |
| 187 | 233 | cpsw_default: cpsw_default { |
| 188 | 234 | pinctrl-single,pins = < |
| 189 | 235 | /* Slave 1 */ |
| 190 | − 0x12c (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txclk.rmii1_tclk */ | |
| 191 | − 0x114 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txen.rgmii1_tctl */ | |
| 192 | − 0x128 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd0.rgmii1_td0 */ | |
| 193 | − 0x124 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd1.rgmii1_td1 */ | |
| 194 | − 0x120 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd0.rgmii1_td2 */ | |
| 195 | − 0x11c (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd1.rgmii1_td3 */ | |
| 196 | − 0x130 (PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxclk.rmii1_rclk */ | |
| 197 | − 0x118 (PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxdv.rgmii1_rctl */ | |
| 198 | − 0x140 (PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxd0.rgmii1_rd0 */ | |
| 199 | − 0x13c (PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxd1.rgmii1_rd1 */ | |
| 200 | − 0x138 (PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxd0.rgmii1_rd2 */ | |
| 201 | − 0x134 (PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxd1.rgmii1_rd3 */ | |
| 236 | + 0x12c (PIN_OUTPUT | MUX_MODE2) /* mii1_txclk.rmii1_tclk */ | |
| 237 | + 0x114 (PIN_OUTPUT | MUX_MODE2) /* mii1_txen.rgmii1_tctl */ | |
| 238 | + 0x128 (PIN_OUTPUT | MUX_MODE2) /* mii1_txd0.rgmii1_td0 */ | |
| 239 | + 0x124 (PIN_OUTPUT | MUX_MODE2) /* mii1_txd1.rgmii1_td1 */ | |
| 240 | + 0x120 (PIN_OUTPUT | MUX_MODE2) /* mii1_txd0.rgmii1_td2 */ | |
| 241 | + 0x11c (PIN_OUTPUT | MUX_MODE2) /* mii1_txd1.rgmii1_td3 */ | |
| 242 | + 0x130 (PIN_INPUT | MUX_MODE2) /* mii1_rxclk.rmii1_rclk */ | |
| 243 | + 0x118 (PIN_INPUT | MUX_MODE2) /* mii1_rxdv.rgmii1_rctl */ | |
| 244 | + 0x140 (PIN_INPUT | MUX_MODE2) /* mii1_rxd0.rgmii1_rd0 */ | |
| 245 | + 0x13c (PIN_INPUT | MUX_MODE2) /* mii1_rxd1.rgmii1_rd1 */ | |
| 246 | + 0x138 (PIN_INPUT | MUX_MODE2) /* mii1_rxd0.rgmii1_rd2 */ | |
| 247 | + 0x134 (PIN_INPUT | MUX_MODE2) /* mii1_rxd1.rgmii1_rd3 */ | |
| 202 | 248 | |
| 203 | 249 | /* Slave 2 */ |
| 204 | − 0x58 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* gpmc_a6.rgmii2_tclk */ | |
| 205 | − 0x40 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* gpmc_a0.rgmii2_tctl */ | |
| 206 | − 0x54 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* gpmc_a5.rgmii2_td0 */ | |
| 207 | − 0x50 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* gpmc_a4.rgmii2_td1 */ | |
| 208 | − 0x4c (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* gpmc_a3.rgmii2_td2 */ | |
| 209 | − 0x48 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* gpmc_a2.rgmii2_td3 */ | |
| 210 | − 0x5c (PIN_INPUT_PULLDOWN | MUX_MODE2) /* gpmc_a7.rgmii2_rclk */ | |
| 211 | − 0x44 (PIN_INPUT_PULLDOWN | MUX_MODE2) /* gpmc_a1.rgmii2_rtcl */ | |
| 212 | − 0x6c (PIN_INPUT_PULLDOWN | MUX_MODE2) /* gpmc_a11.rgmii2_rd0 */ | |
| 213 | − 0x68 (PIN_INPUT_PULLDOWN | MUX_MODE2) /* gpmc_a10.rgmii2_rd1 */ | |
| 214 | − 0x64 (PIN_INPUT_PULLDOWN | MUX_MODE2) /* gpmc_a9.rgmii2_rd2 */ | |
| 215 | − 0x60 (PIN_INPUT_PULLDOWN | MUX_MODE2) /* gpmc_a8.rgmii2_rd3 */ | |
| 250 | + 0x58 (PIN_OUTPUT | MUX_MODE2) /* gpmc_a6.rgmii2_tclk */ | |
| 251 | + 0x40 (PIN_OUTPUT | MUX_MODE2) /* gpmc_a0.rgmii2_tctl */ | |
| 252 | + 0x54 (PIN_OUTPUT | MUX_MODE2) /* gpmc_a5.rgmii2_td0 */ | |
| 253 | + 0x50 (PIN_OUTPUT | MUX_MODE2) /* gpmc_a4.rgmii2_td1 */ | |
| 254 | + 0x4c (PIN_OUTPUT | MUX_MODE2) /* gpmc_a3.rgmii2_td2 */ | |
| 255 | + 0x48 (PIN_OUTPUT | MUX_MODE2) /* gpmc_a2.rgmii2_td3 */ | |
| 256 | + 0x5c (PIN_INPUT | MUX_MODE2) /* gpmc_a7.rgmii2_rclk */ | |
| 257 | + 0x44 (PIN_INPUT | MUX_MODE2) /* gpmc_a1.rgmii2_rtcl */ | |
| 258 | + 0x6c (PIN_INPUT | MUX_MODE2) /* gpmc_a11.rgmii2_rd0 */ | |
| 259 | + 0x68 (PIN_INPUT | MUX_MODE2) /* gpmc_a10.rgmii2_rd1 */ | |
| 260 | + 0x64 (PIN_INPUT | MUX_MODE2) /* gpmc_a9.rgmii2_rd2 */ | |
| 261 | + 0x60 (PIN_INPUT | MUX_MODE2) /* gpmc_a8.rgmii2_rd3 */ | |
| 216 | 262 | >; |
| 217 | 263 | }; |
| 218 | 264 | |
| @@ -251,8 +297,8 @@ · 32 unmodified lines | ||
| 251 | 297 | davinci_mdio_default: davinci_mdio_default { |
| 252 | 298 | pinctrl-single,pins = < |
| 253 | 299 | /* MDIO */ |
| 254 | − 0x148 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0) /* mdio_data.mdio_data */ | |
| 255 | − 0x14c (PIN_OUTPUT_PULLUP | MUX_MODE0) /* mdio_clk.mdio_clk */ | |
| 300 | + 0x148 (PIN_INPUT | SLEWCTRL_FAST | MUX_MODE0) /* mdio_data.mdio_data */ | |
| 301 | + 0x14c (PIN_OUTPUT | MUX_MODE0) /* mdio_clk.mdio_clk */ | |
| 256 | 302 | >; |
| 257 | 303 | }; |
| 258 | 304 | |
| @@ -266,46 +312,46 @@ · 7 unmodified lines | ||
| 266 | 312 | |
| 267 | 313 | dss_pins: dss_pins { |
| 268 | 314 | pinctrl-single,pins = < |
| 269 | − 0x020 (PIN_OUTPUT_PULLUP | MUX_MODE1) /* gpmc ad 8 -> DSS DATA 23 */ | |
| 270 | − 0x024 (PIN_OUTPUT_PULLUP | MUX_MODE1) | |
| 271 | − 0x028 (PIN_OUTPUT_PULLUP | MUX_MODE1) | |
| 272 | − 0x02c (PIN_OUTPUT_PULLUP | MUX_MODE1) | |
| 273 | − 0x030 (PIN_OUTPUT_PULLUP | MUX_MODE1) | |
| 274 | − 0x034 (PIN_OUTPUT_PULLUP | MUX_MODE1) | |
| 275 | − 0x038 (PIN_OUTPUT_PULLUP | MUX_MODE1) | |
| 276 | − 0x03c (PIN_OUTPUT_PULLUP | MUX_MODE1) /* gpmc ad 15 -> DSS DATA 16 */ | |
| 277 | − 0x0a0 (PIN_OUTPUT_PULLUP | MUX_MODE0) /* DSS DATA 0 */ | |
| 278 | − 0x0a4 (PIN_OUTPUT_PULLUP | MUX_MODE0) | |
| 279 | − 0x0a8 (PIN_OUTPUT_PULLUP | MUX_MODE0) | |
| 280 | − 0x0ac (PIN_OUTPUT_PULLUP | MUX_MODE0) | |
| 281 | − 0x0b0 (PIN_OUTPUT_PULLUP | MUX_MODE0) | |
| 282 | − 0x0b4 (PIN_OUTPUT_PULLUP | MUX_MODE0) | |
| 283 | − 0x0b8 (PIN_OUTPUT_PULLUP | MUX_MODE0) | |
| 284 | − 0x0bc (PIN_OUTPUT_PULLUP | MUX_MODE0) | |
| 285 | − 0x0c0 (PIN_OUTPUT_PULLUP | MUX_MODE0) | |
| 286 | − 0x0c4 (PIN_OUTPUT_PULLUP | MUX_MODE0) | |
| 287 | − 0x0c8 (PIN_OUTPUT_PULLUP | MUX_MODE0) | |
| 288 | − 0x0cc (PIN_OUTPUT_PULLUP | MUX_MODE0) | |
| 289 | − 0x0d0 (PIN_OUTPUT_PULLUP | MUX_MODE0) | |
| 290 | − 0x0d4 (PIN_OUTPUT_PULLUP | MUX_MODE0) | |
| 291 | − 0x0d8 (PIN_OUTPUT_PULLUP | MUX_MODE0) | |
| 292 | − 0x0dc (PIN_OUTPUT_PULLUP | MUX_MODE0) /* DSS DATA 15 */ | |
| 293 | − 0x0e0 (PIN_OUTPUT_PULLUP | MUX_MODE0) /* DSS VSYNC */ | |
| 294 | − 0x0e4 (PIN_OUTPUT_PULLUP | MUX_MODE0) /* DSS HSYNC */ | |
| 295 | − 0x0e8 (PIN_OUTPUT_PULLUP | MUX_MODE0) /* DSS PCLK */ | |
| 296 | − 0x0ec (PIN_OUTPUT_PULLUP | MUX_MODE0) /* DSS AC BIAS EN */ | |
| 315 | + 0x020 (PIN_OUTPUT | MUX_MODE1) /* gpmc ad 8 -> DSS DATA 23 */ | |
| 316 | + 0x024 (PIN_OUTPUT | MUX_MODE1) | |
| 317 | + 0x028 (PIN_OUTPUT | MUX_MODE1) | |
| 318 | + 0x02c (PIN_OUTPUT | MUX_MODE1) | |
| 319 | + 0x030 (PIN_OUTPUT | MUX_MODE1) | |
| 320 | + 0x034 (PIN_OUTPUT | MUX_MODE1) | |
| 321 | + 0x038 (PIN_OUTPUT | MUX_MODE1) | |
| 322 | + 0x03c (PIN_OUTPUT | MUX_MODE1) /* gpmc ad 15 -> DSS DATA 16 */ | |
| 323 | + 0x0a0 (PIN_OUTPUT | MUX_MODE0) /* DSS DATA 0 */ | |
| 324 | + 0x0a4 (PIN_OUTPUT | MUX_MODE0) | |
| 325 | + 0x0a8 (PIN_OUTPUT | MUX_MODE0) | |
| 326 | + 0x0ac (PIN_OUTPUT | MUX_MODE0) | |
| 327 | + 0x0b0 (PIN_OUTPUT | MUX_MODE0) | |
| 328 | + 0x0b4 (PIN_OUTPUT | MUX_MODE0) | |
| 329 | + 0x0b8 (PIN_OUTPUT | MUX_MODE0) | |
| 330 | + 0x0bc (PIN_OUTPUT | MUX_MODE0) | |
| 331 | + 0x0c0 (PIN_OUTPUT | MUX_MODE0) | |
| 332 | + 0x0c4 (PIN_OUTPUT | MUX_MODE0) | |
| 333 | + 0x0c8 (PIN_OUTPUT | MUX_MODE0) | |
| 334 | + 0x0cc (PIN_OUTPUT | MUX_MODE0) | |
| 335 | + 0x0d0 (PIN_OUTPUT | MUX_MODE0) | |
| 336 | + 0x0d4 (PIN_OUTPUT | MUX_MODE0) | |
| 337 | + 0x0d8 (PIN_OUTPUT | MUX_MODE0) | |
| 338 | + 0x0dc (PIN_OUTPUT | MUX_MODE0) /* DSS DATA 15 */ | |
| 339 | + 0x0e0 (PIN_OUTPUT | MUX_MODE0) /* DSS VSYNC */ | |
| 340 | + 0x0e4 (PIN_OUTPUT | MUX_MODE0) /* DSS HSYNC */ | |
| 341 | + 0x0e8 (PIN_OUTPUT | MUX_MODE0) /* DSS PCLK */ | |
| 342 | + 0x0ec (PIN_OUTPUT | MUX_MODE0) /* DSS AC BIAS EN */ | |
| 297 | 343 | |
| 298 | 344 | >; |
| 299 | 345 | }; |
| 300 | 346 | |
| 301 | 347 | qspi_pins: qspi_pins { |
| 302 | 348 | pinctrl-single,pins = < |
| 303 | − 0x7c (PIN_OUTPUT_PULLUP | MUX_MODE3) /* gpmc_csn0.qspi_csn */ | |
| 304 | − 0x88 (PIN_OUTPUT | MUX_MODE2) /* gpmc_csn3.qspi_clk */ | |
| 305 | − 0x90 (PIN_INPUT_PULLUP | MUX_MODE3) /* gpmc_advn_ale.qspi_d0 */ | |
| 306 | − 0x94 (PIN_INPUT_PULLUP | MUX_MODE3) /* gpmc_oen_ren.qspi_d1 */ | |
| 307 | − 0x98 (PIN_INPUT_PULLUP | MUX_MODE3) /* gpmc_wen.qspi_d2 */ | |
| 308 | − 0x9c (PIN_INPUT_PULLUP | MUX_MODE3) /* gpmc_be0n_cle.qspi_d3 */ | |
| 349 | + 0x7c (PIN_OUTPUT | MUX_MODE3) /* gpmc_csn0.qspi_csn */ | |
| 350 | + 0x88 (PIN_OUTPUT | MUX_MODE2) /* gpmc_csn3.qspi_clk */ | |
| 351 | + 0x90 (PIN_INPUT | MUX_MODE3) /* gpmc_advn_ale.qspi_d0 */ | |
| 352 | + 0x94 (PIN_INPUT | MUX_MODE3) /* gpmc_oen_ren.qspi_d1 */ | |
| 353 | + 0x98 (PIN_INPUT | MUX_MODE3) /* gpmc_wen.qspi_d2 */ | |
| 354 | + 0x9c (PIN_INPUT | MUX_MODE3) /* gpmc_be0n_cle.qspi_d3 */ | |
| 309 | 355 | >; |
| 310 | 356 | }; |
| 311 | 357 | |
| @@ -323,6 +369,18 @@ · 11 unmodified lines | ||
| 323 | 369 | 0x1c (PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* gpcm_ad7.gpio1_7 */ |
| 324 | 370 | >; |
| 325 | 371 | }; |
| 372 | + | |
| 373 | + usb1_pins: usb1_pins { | |
| 374 | + pinctrl-single,pins = < | |
| 375 | + 0x2c0 (PIN_OUTPUT | MUX_MODE0) /* usb0_drvvbus.usb0_drvvbus */ | |
| 376 | + >; | |
| 377 | + }; | |
| 378 | + | |
| 379 | + usb2_pins: usb2_pins { | |
| 380 | + pinctrl-single,pins = < | |
| 381 | + 0x2c4 (PIN_OUTPUT | MUX_MODE0) /* usb0_drvvbus.usb0_drvvbus */ | |
| 382 | + >; | |
| 383 | + }; | |
| 326 | 384 | }; |
| 327 | 385 | |
| 328 | 386 | &i2c0 { |
| @@ -386,6 +444,11 @@ · 57 unmodified lines | ||
| 386 | 444 | regulator-always-on; |
| 387 | 445 | }; |
| 388 | 446 | |
| 447 | + power-button { | |
| 448 | + compatible = "ti,tps65218-pwrbutton"; | |
| 449 | + status = "okay"; | |
| 450 | + interrupts = <3 IRQ_TYPE_EDGE_BOTH>; | |
| 451 | + }; | |
| 389 | 452 | }; |
| 390 | 453 | |
| 391 | 454 | at24@50 { |
| @@ -479,6 +542,8 @@ · 87 unmodified lines | ||
| 479 | 542 | &usb1 { |
| 480 | 543 | dr_mode = "peripheral"; |
| 481 | 544 | status = "okay"; |
| 545 | + pinctrl-names = "default"; | |
| 546 | + pinctrl-0 = <&usb1_pins>; | |
| 482 | 547 | }; |
| 483 | 548 | |
| 484 | 549 | &usb2_phy2 { |
| @@ -488,6 +553,8 @@ · 3 unmodified lines | ||
| 488 | 553 | &usb2 { |
| 489 | 554 | dr_mode = "host"; |
| 490 | 555 | status = "okay"; |
| 556 | + pinctrl-names = "default"; | |
| 557 | + pinctrl-0 = <&usb2_pins>; | |
| 491 | 558 | }; |
| 492 | 559 | |
| 493 | 560 | &qspi { |
| @@ -610,3 +677,25 @@ · 116 unmodified lines | ||
| 610 | 677 | &wdt { |
| 611 | 678 | status = "okay"; |
| 612 | 679 | }; |
| 680 | + | |
| 681 | +&cpu { | |
| 682 | + cpu0-supply = <&dcdc2>; | |
| 683 | +}; | |
| 684 | + | |
| 685 | +&vpfe0 { | |
| 686 | + status = "okay"; | |
| 687 | + pinctrl-names = "default", "sleep"; | |
| 688 | + pinctrl-0 = <&vpfe0_pins_default>; | |
| 689 | + pinctrl-1 = <&vpfe0_pins_sleep>; | |
| 690 | + | |
| 691 | + /* Camera port */ | |
| 692 | + port { | |
| 693 | + vpfe0_ep: endpoint { | |
| 694 | + /* remote-endpoint = <&sensor>; add once we have it */ | |
| 695 | + ti,am437x-vpfe-interface = <0>; | |
| 696 | + bus-width = <8>; | |
| 697 | + hsync-active = <0>; | |
| 698 | + vsync-active = <0>; | |
| 699 | + }; | |
| 700 | + }; | |
| 701 | +}; | |
| @@ -243,6 +243,42 @@ · 242 unmodified lines | ||
| 243 | 243 | 0x08C (PIN_OUTPUT_PULLUP | MUX_MODE7) |
| 244 | 244 | >; |
| 245 | 245 | }; |
| 246 | + | |
| 247 | + vpfe1_pins_default: vpfe1_pins_default { | |
| 248 | + pinctrl-single,pins = < | |
| 249 | + 0x1cc (PIN_INPUT_PULLUP | MUX_MODE0) /* cam1_data9 mode 0 */ | |
| 250 | + 0x1d0 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam1_data8 mode 0 */ | |
| 251 | + 0x1d4 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam1_hd mode 0 */ | |
| 252 | + 0x1d8 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam1_vd mode 0 */ | |
| 253 | + 0x1dc (PIN_INPUT_PULLUP | MUX_MODE0) /* cam1_pclk mode 0 */ | |
| 254 | + 0x1e8 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam1_data0 mode 0 */ | |
| 255 | + 0x1ec (PIN_INPUT_PULLUP | MUX_MODE0) /* cam1_data1 mode 0 */ | |
| 256 | + 0x1f0 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam1_data2 mode 0 */ | |
| 257 | + 0x1f4 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam1_data3 mode 0 */ | |
| 258 | + 0x1f8 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam1_data4 mode 0 */ | |
| 259 | + 0x1fc (PIN_INPUT_PULLUP | MUX_MODE0) /* cam1_data5 mode 0 */ | |
| 260 | + 0x200 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam1_data6 mode 0 */ | |
| 261 | + 0x204 (PIN_INPUT_PULLUP | MUX_MODE0) /* cam1_data7 mode 0 */ | |
| 262 | + >; | |
| 263 | + }; | |
| 264 | + | |
| 265 | + vpfe1_pins_sleep: vpfe1_pins_sleep { | |
| 266 | + pinctrl-single,pins = < | |
| 267 | + 0x1cc (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | |
| 268 | + 0x1d0 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | |
| 269 | + 0x1d4 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | |
| 270 | + 0x1d8 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | |
| 271 | + 0x1dc (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | |
| 272 | + 0x1e8 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | |
| 273 | + 0x1ec (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | |
| 274 | + 0x1f0 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | |
| 275 | + 0x1f4 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | |
| 276 | + 0x1f8 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | |
| 277 | + 0x1fc (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | |
| 278 | + 0x200 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | |
| 279 | + 0x204 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | |
| 280 | + >; | |
| 281 | + }; | |
| 246 | 282 | }; |
| 247 | 283 | |
| 248 | 284 | matrix_keypad: matrix_keypad@0 { |
| @@ -634,3 +670,20 @@ · 385 unmodified lines | ||
| 634 | 670 | }; |
| 635 | 671 | }; |
| 636 | 672 | }; |
| 673 | + | |
| 674 | +&vpfe1 { | |
| 675 | + status = "okay"; | |
| 676 | + pinctrl-names = "default", "sleep"; | |
| 677 | + pinctrl-0 = <&vpfe1_pins_default>; | |
| 678 | + pinctrl-1 = <&vpfe1_pins_sleep>; | |
| 679 | + | |
| 680 | + port { | |
| 681 | + vpfe1_ep: endpoint { | |
| 682 | + /* remote-endpoint = <&sensor>; add once we have it */ | |
| 683 | + ti,am437x-vpfe-interface = <0>; | |
| 684 | + bus-width = <8>; | |
| 685 | + hsync-active = <0>; | |
| 686 | + vsync-active = <0>; | |
| 687 | + }; | |
| 688 | + }; | |
| 689 | +}; | |
| @@ -80,6 +80,28 @@ · 79 unmodified lines | ||
| 80 | 80 | default-state = "off"; |
| 81 | 81 | }; |
| 82 | 82 | }; |
| 83 | + | |
| 84 | + gpio_fan: gpio_fan { | |
| 85 | + /* Based on 5v 500mA AFB02505HHB */ | |
| 86 | + compatible = "gpio-fan"; | |
| 87 | + gpios = <&tps659038_gpio 1 GPIO_ACTIVE_HIGH>; | |
| 88 | + gpio-fan,speed-map = <0 0>, | |
| 89 | + <13000 1>; | |
| 90 | + }; | |
| 91 | + | |
| 92 | + extcon_usb1: extcon_usb1 { | |
| 93 | + compatible = "linux,extcon-usb-gpio"; | |
| 94 | + id-gpio = <&gpio7 25 GPIO_ACTIVE_HIGH>; | |
| 95 | + pinctrl-names = "default"; | |
| 96 | + pinctrl-0 = <&extcon_usb1_pins>; | |
| 97 | + }; | |
| 98 | + | |
| 99 | + extcon_usb2: extcon_usb2 { | |
| 100 | + compatible = "linux,extcon-usb-gpio"; | |
| 101 | + id-gpio = <&gpio7 24 GPIO_ACTIVE_HIGH>; | |
| 102 | + pinctrl-names = "default"; | |
| 103 | + pinctrl-0 = <&extcon_usb2_pins>; | |
| 104 | + }; | |
| 83 | 105 | }; |
| 84 | 106 | |
| 85 | 107 | &dra7_pmx_core { |
| @@ -140,6 +162,86 @@ · 54 unmodified lines | ||
| 140 | 162 | >; |
| 141 | 163 | }; |
| 142 | 164 | |
| 165 | + cpsw_pins_default: cpsw_pins_default { | |
| 166 | + pinctrl-single,pins = < | |
| 167 | + /* Slave 1 */ | |
| 168 | + 0x250 (PIN_OUTPUT | MUX_MODE0) /* rgmii1_tclk */ | |
| 169 | + 0x254 (PIN_OUTPUT | MUX_MODE0) /* rgmii1_tctl */ | |
| 170 | + 0x258 (PIN_OUTPUT | MUX_MODE0) /* rgmii1_td3 */ | |
| 171 | + 0x25c (PIN_OUTPUT | MUX_MODE0) /* rgmii1_td2 */ | |
| 172 | + 0x260 (PIN_OUTPUT | MUX_MODE0) /* rgmii1_td1 */ | |
| 173 | + 0x264 (PIN_OUTPUT | MUX_MODE0) /* rgmii1_td0 */ | |
| 174 | + 0x268 (PIN_INPUT | MUX_MODE0) /* rgmii1_rclk */ | |
| 175 | + 0x26c (PIN_INPUT | MUX_MODE0) /* rgmii1_rctl */ | |
| 176 | + 0x270 (PIN_INPUT | MUX_MODE0) /* rgmii1_rd3 */ | |
| 177 | + 0x274 (PIN_INPUT | MUX_MODE0) /* rgmii1_rd2 */ | |
| 178 | + 0x278 (PIN_INPUT | MUX_MODE0) /* rgmii1_rd1 */ | |
| 179 | + 0x27c (PIN_INPUT | MUX_MODE0) /* rgmii1_rd0 */ | |
| 180 | + | |
| 181 | + /* Slave 2 */ | |
| 182 | + 0x198 (PIN_OUTPUT | MUX_MODE3) /* rgmii2_tclk */ | |
| 183 | + 0x19c (PIN_OUTPUT | MUX_MODE3) /* rgmii2_tctl */ | |
| 184 | + 0x1a0 (PIN_OUTPUT | MUX_MODE3) /* rgmii2_td3 */ | |
| 185 | + 0x1a4 (PIN_OUTPUT | MUX_MODE3) /* rgmii2_td2 */ | |
| 186 | + 0x1a8 (PIN_OUTPUT | MUX_MODE3) /* rgmii2_td1 */ | |
| 187 | + 0x1ac (PIN_OUTPUT | MUX_MODE3) /* rgmii2_td0 */ | |
| 188 | + 0x1b0 (PIN_INPUT | MUX_MODE3) /* rgmii2_rclk */ | |
| 189 | + 0x1b4 (PIN_INPUT | MUX_MODE3) /* rgmii2_rctl */ | |
| 190 | + 0x1b8 (PIN_INPUT | MUX_MODE3) /* rgmii2_rd3 */ | |
| 191 | + 0x1bc (PIN_INPUT | MUX_MODE3) /* rgmii2_rd2 */ | |
| 192 | + 0x1c0 (PIN_INPUT | MUX_MODE3) /* rgmii2_rd1 */ | |
| 193 | + 0x1c4 (PIN_INPUT | MUX_MODE3) /* rgmii2_rd0 */ | |
| 194 | + >; | |
| 195 | + | |
| 196 | + }; | |
| 197 | + | |
| 198 | + cpsw_pins_sleep: cpsw_pins_sleep { | |
| 199 | + pinctrl-single,pins = < | |
| 200 | + /* Slave 1 */ | |
| 201 | + 0x250 (PIN_INPUT | MUX_MODE15) | |
| 202 | + 0x254 (PIN_INPUT | MUX_MODE15) | |
| 203 | + 0x258 (PIN_INPUT | MUX_MODE15) | |
| 204 | + 0x25c (PIN_INPUT | MUX_MODE15) | |
| 205 | + 0x260 (PIN_INPUT | MUX_MODE15) | |
| 206 | + 0x264 (PIN_INPUT | MUX_MODE15) | |
| 207 | + 0x268 (PIN_INPUT | MUX_MODE15) | |
| 208 | + 0x26c (PIN_INPUT | MUX_MODE15) | |
| 209 | + 0x270 (PIN_INPUT | MUX_MODE15) | |
| 210 | + 0x274 (PIN_INPUT | MUX_MODE15) | |
| 211 | + 0x278 (PIN_INPUT | MUX_MODE15) | |
| 212 | + 0x27c (PIN_INPUT | MUX_MODE15) | |
| 213 | + | |
| 214 | + /* Slave 2 */ | |
| 215 | + 0x198 (PIN_INPUT | MUX_MODE15) | |
| 216 | + 0x19c (PIN_INPUT | MUX_MODE15) | |
| 217 | + 0x1a0 (PIN_INPUT | MUX_MODE15) | |
| 218 | + 0x1a4 (PIN_INPUT | MUX_MODE15) | |
| 219 | + 0x1a8 (PIN_INPUT | MUX_MODE15) | |
| 220 | + 0x1ac (PIN_INPUT | MUX_MODE15) | |
| 221 | + 0x1b0 (PIN_INPUT | MUX_MODE15) | |
| 222 | + 0x1b4 (PIN_INPUT | MUX_MODE15) | |
| 223 | + 0x1b8 (PIN_INPUT | MUX_MODE15) | |
| 224 | + 0x1bc (PIN_INPUT | MUX_MODE15) | |
| 225 | + 0x1c0 (PIN_INPUT | MUX_MODE15) | |
| 226 | + 0x1c4 (PIN_INPUT | MUX_MODE15) | |
| 227 | + >; | |
| 228 | + }; | |
| 229 | + | |
| 230 | + davinci_mdio_pins_default: davinci_mdio_pins_default { | |
| 231 | + pinctrl-single,pins = < | |
| 232 | + /* MDIO */ | |
| 233 | + 0x23c (PIN_OUTPUT_PULLUP | MUX_MODE0) /* mdio_mclk */ | |
| 234 | + 0x240 (PIN_INPUT_PULLUP | MUX_MODE0) /* mdio_d */ | |
| 235 | + >; | |
| 236 | + }; | |
| 237 | + | |
| 238 | + davinci_mdio_pins_sleep: davinci_mdio_pins_sleep { | |
| 239 | + pinctrl-single,pins = < | |
| 240 | + 0x23c (PIN_INPUT | MUX_MODE15) | |
| 241 | + 0x240 (PIN_INPUT | MUX_MODE15) | |
| 242 | + >; | |
| 243 | + }; | |
| 244 | + | |
| 143 | 245 | tps659038_pins_default: tps659038_pins_default { |
| 144 | 246 | pinctrl-single,pins = < |
| 145 | 247 | 0x418 (PIN_INPUT_PULLUP | MUX_MODE14) /* wakeup0.gpio1_0 */ |
| @@ -164,6 +266,17 @@ · 18 unmodified lines | ||
| 164 | 266 | >; |
| 165 | 267 | }; |
| 166 | 268 | |
| 269 | + extcon_usb1_pins: extcon_usb1_pins { | |
| 270 | + pinctrl-single,pins = < | |
| 271 | + 0x3ec (PIN_INPUT_PULLUP | MUX_MODE14) /* uart1_rtsn.gpio7_25 */ | |
| 272 | + >; | |
| 273 | + }; | |
| 274 | + | |
| 275 | + extcon_usb2_pins: extcon_usb2_pins { | |
| 276 | + pinctrl-single,pins = < | |
| 277 | + 0x3e8 (PIN_INPUT_PULLUP | MUX_MODE14) /* uart1_ctsn.gpio7_24 */ | |
| 278 | + >; | |
| 279 | + }; | |
| 167 | 280 | }; |
| 168 | 281 | |
| 169 | 282 | &i2c1 { |
| @@ -314,6 +427,12 @@ · 144 unmodified lines | ||
| 314 | 427 | wakeup-source; |
| 315 | 428 | ti,palmas-long-press-seconds = <12>; |
| 316 | 429 | }; |
| 430 | + | |
| 431 | + tps659038_gpio: tps659038_gpio { | |
| 432 | + compatible = "ti,palmas-gpio"; | |
| 433 | + gpio-controller; | |
| 434 | + #gpio-cells = <2>; | |
| 435 | + }; | |
| 317 | 436 | }; |
| 318 | 437 | |
| 319 | 438 | tmp102: tmp102@48 { |
| @@ -365,6 +484,32 @@ · 45 unmodified lines | ||
| 365 | 484 | pinctrl-0 = <&uart3_pins_default>; |
| 366 | 485 | }; |
| 367 | 486 | |
| 487 | +&mac { | |
| 488 | + status = "okay"; | |
| 489 | + pinctrl-names = "default", "sleep"; | |
| 490 | + pinctrl-0 = <&cpsw_pins_default>; | |
| 491 | + pinctrl-1 = <&cpsw_pins_sleep>; | |
| 492 | + dual_emac; | |
| 493 | +}; | |
| 494 | + | |
| 495 | +&cpsw_emac0 { | |
| 496 | + phy_id = <&davinci_mdio>, <1>; | |
| 497 | + phy-mode = "rgmii"; | |
| 498 | + dual_emac_res_vlan = <1>; | |
| 499 | +}; | |
| 500 | + | |
| 501 | +&cpsw_emac1 { | |
| 502 | + phy_id = <&davinci_mdio>, <2>; | |
| 503 | + phy-mode = "rgmii"; | |
| 504 | + dual_emac_res_vlan = <2>; | |
| 505 | +}; | |
| 506 | + | |
| 507 | +&davinci_mdio { | |
| 508 | + pinctrl-names = "default", "sleep"; | |
| 509 | + pinctrl-0 = <&davinci_mdio_pins_default>; | |
| 510 | + pinctrl-1 = <&davinci_mdio_pins_sleep>; | |
| 511 | +}; | |
| 512 | + | |
| 368 | 513 | &mmc1 { |
| 369 | 514 | status = "okay"; |
| 370 | 515 | |
| @@ -403,3 +548,15 @@ · 32 unmodified lines | ||
| 403 | 548 | pinctrl-names = "default"; |
| 404 | 549 | pinctrl-0 = <&usb1_pins>; |
| 405 | 550 | }; |
| 551 | + | |
| 552 | +&omap_dwc3_1 { | |
| 553 | + extcon = <&extcon_usb1>; | |
| 554 | +}; | |
| 555 | + | |
| 556 | +&omap_dwc3_2 { | |
| 557 | + extcon = <&extcon_usb2>; | |
| 558 | +}; | |
| 559 | + | |
| 560 | +&usb2 { | |
| 561 | + dr_mode = "peripheral"; | |
| 562 | +}; | |
| @@ -8,9 +8,43 @@ · 7 unmodified lines | ||
| 8 | 8 | * Gregory CLEMENT <gregory.clement@free-electrons.com> |
| 9 | 9 | * Thomas Petazzoni <thomas.petazzoni@free-electrons.com> |
| 10 | 10 | * |
| 11 | − * This file is licensed under the terms of the GNU General Public | |
| 12 | − * License version 2. This program is licensed "as is" without any | |
| 13 | − * warranty of any kind, whether express or implied. | |
| 11 | + * This file is dual-licensed: you can use it either under the terms | |
| 12 | + * of the GPL or the X11 license, at your option. Note that this dual | |
| 13 | + * licensing only applies to this file, and not this project as a | |
| 14 | + * whole. | |
| 15 | + * | |
| 16 | + * a) This file is free software; you can redistribute it and/or | |
| 17 | + * modify it under the terms of the GNU General Public License as | |
| 18 | + * published by the Free Software Foundation; either version 2 of the | |
| 19 | + * License, or (at your option) any later version. | |
| 20 | + * | |
| 21 | + * This file is distributed in the hope that it will be useful | |
| 22 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 23 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 24 | + * GNU General Public License for more details. | |
| 25 | + * | |
| 26 | + * Or, alternatively | |
| 27 | + * | |
| 28 | + * b) Permission is hereby granted, free of charge, to any person | |
| 29 | + * obtaining a copy of this software and associated documentation | |
| 30 | + * files (the "Software"), to deal in the Software without | |
| 31 | + * restriction, including without limitation the rights to use | |
| 32 | + * copy, modify, merge, publish, distribute, sublicense, and/or | |
| 33 | + * sell copies of the Software, and to permit persons to whom the | |
| 34 | + * Software is furnished to do so, subject to the following | |
| 35 | + * conditions: | |
| 36 | + * | |
| 37 | + * The above copyright notice and this permission notice shall be | |
| 38 | + * included in all copies or substantial portions of the Software. | |
| 39 | + * | |
| 40 | + * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND | |
| 41 | + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | |
| 42 | + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |
| 43 | + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | |
| 44 | + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY | |
| 45 | + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | |
| 46 | + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | |
| 47 | + * OTHER DEALINGS IN THE SOFTWARE. | |
| 14 | 48 | */ |
| 15 | 49 | |
| 16 | 50 | /dts-v1/; |
| @@ -3,9 +3,43 @@ · 2 unmodified lines | ||
| 3 | 3 | * |
| 4 | 4 | * Gregory CLEMENT <gregory.clement@free-electrons.com> |
| 5 | 5 | * |
| 6 | − * This file is licensed under the terms of the GNU General Public | |
| 7 | − * License version 2. This program is licensed "as is" without any | |
| 8 | − * warranty of any kind, whether express or implied. | |
| 6 | + * This file is dual-licensed: you can use it either under the terms | |
| 7 | + * of the GPL or the X11 license, at your option. Note that this dual | |
| 8 | + * licensing only applies to this file, and not this project as a | |
| 9 | + * whole. | |
| 10 | + * | |
| 11 | + * a) This file is free software; you can redistribute it and/or | |
| 12 | + * modify it under the terms of the GNU General Public License as | |
| 13 | + * published by the Free Software Foundation; either version 2 of the | |
| 14 | + * License, or (at your option) any later version. | |
| 15 | + * | |
| 16 | + * This file is distributed in the hope that it will be useful | |
| 17 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 18 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 19 | + * GNU General Public License for more details. | |
| 20 | + * | |
| 21 | + * Or, alternatively | |
| 22 | + * | |
| 23 | + * b) Permission is hereby granted, free of charge, to any person | |
| 24 | + * obtaining a copy of this software and associated documentation | |
| 25 | + * files (the "Software"), to deal in the Software without | |
| 26 | + * restriction, including without limitation the rights to use | |
| 27 | + * copy, modify, merge, publish, distribute, sublicense, and/or | |
| 28 | + * sell copies of the Software, and to permit persons to whom the | |
| 29 | + * Software is furnished to do so, subject to the following | |
| 30 | + * conditions: | |
| 31 | + * | |
| 32 | + * The above copyright notice and this permission notice shall be | |
| 33 | + * included in all copies or substantial portions of the Software. | |
| 34 | + * | |
| 35 | + * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND | |
| 36 | + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | |
| 37 | + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |
| 38 | + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | |
| 39 | + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY | |
| 40 | + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | |
| 41 | + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | |
| 42 | + * OTHER DEALINGS IN THE SOFTWARE. | |
| 9 | 43 | */ |
| 10 | 44 | |
| 11 | 45 | /dts-v1/; |
| @@ -3,10 +3,43 @@ · 2 unmodified lines | ||
| 3 | 3 | * |
| 4 | 4 | * Copyright (C) 2013, Arnaud EBALARD <arno@natisbad.org> |
| 5 | 5 | * |
| 6 | − * This program is free software; you can redistribute it and/or | |
| 7 | − * modify it under the terms of the GNU General Public License | |
| 8 | − * as published by the Free Software Foundation; either version | |
| 9 | − * 2 of the License, or (at your option) any later version. | |
| 6 | + * This file is dual-licensed: you can use it either under the terms | |
| 7 | + * of the GPL or the X11 license, at your option. Note that this dual | |
| 8 | + * licensing only applies to this file, and not this project as a | |
| 9 | + * whole. | |
| 10 | + * | |
| 11 | + * a) This file is free software; you can redistribute it and/or | |
| 12 | + * modify it under the terms of the GNU General Public License as | |
| 13 | + * published by the Free Software Foundation; either version 2 of the | |
| 14 | + * License, or (at your option) any later version. | |
| 15 | + * | |
| 16 | + * This file is distributed in the hope that it will be useful | |
| 17 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 18 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 19 | + * GNU General Public License for more details. | |
| 20 | + * | |
| 21 | + * Or, alternatively | |
| 22 | + * | |
| 23 | + * b) Permission is hereby granted, free of charge, to any person | |
| 24 | + * obtaining a copy of this software and associated documentation | |
| 25 | + * files (the "Software"), to deal in the Software without | |
| 26 | + * restriction, including without limitation the rights to use | |
| 27 | + * copy, modify, merge, publish, distribute, sublicense, and/or | |
| 28 | + * sell copies of the Software, and to permit persons to whom the | |
| 29 | + * Software is furnished to do so, subject to the following | |
| 30 | + * conditions: | |
| 31 | + * | |
| 32 | + * The above copyright notice and this permission notice shall be | |
| 33 | + * included in all copies or substantial portions of the Software. | |
| 34 | + * | |
| 35 | + * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND | |
| 36 | + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | |
| 37 | + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |
| 38 | + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | |
| 39 | + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY | |
| 40 | + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | |
| 41 | + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | |
| 42 | + * OTHER DEALINGS IN THE SOFTWARE. | |
| 10 | 43 | */ |
| 11 | 44 | |
| 12 | 45 | /dts-v1/; |
| @@ -87,6 +120,7 @@ · 74 unmodified lines | ||
| 87 | 120 | isl12057: isl12057@68 { |
| 88 | 121 | compatible = "isil,isl12057"; |
| 89 | 122 | reg = <0x68>; |
| 123 | + isil,irq2-can-wakeup-machine; | |
| 90 | 124 | }; |
| 91 | 125 | |
| 92 | 126 | g762: g762@3e { |
| @@ -3,10 +3,43 @@ · 2 unmodified lines | ||
| 3 | 3 | * |
| 4 | 4 | * Copyright (C) 2013, Arnaud EBALARD <arno@natisbad.org> |
| 5 | 5 | * |
| 6 | − * This program is free software; you can redistribute it and/or | |
| 7 | − * modify it under the terms of the GNU General Public License | |
| 8 | − * as published by the Free Software Foundation; either version | |
| 9 | − * 2 of the License, or (at your option) any later version. | |
| 6 | + * This file is dual-licensed: you can use it either under the terms | |
| 7 | + * of the GPL or the X11 license, at your option. Note that this dual | |
| 8 | + * licensing only applies to this file, and not this project as a | |
| 9 | + * whole. | |
| 10 | + * | |
| 11 | + * a) This file is free software; you can redistribute it and/or | |
| 12 | + * modify it under the terms of the GNU General Public License as | |
| 13 | + * published by the Free Software Foundation; either version 2 of the | |
| 14 | + * License, or (at your option) any later version. | |
| 15 | + * | |
| 16 | + * This file is distributed in the hope that it will be useful | |
| 17 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 18 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 19 | + * GNU General Public License for more details. | |
| 20 | + * | |
| 21 | + * Or, alternatively | |
| 22 | + * | |
| 23 | + * b) Permission is hereby granted, free of charge, to any person | |
| 24 | + * obtaining a copy of this software and associated documentation | |
| 25 | + * files (the "Software"), to deal in the Software without | |
| 26 | + * restriction, including without limitation the rights to use | |
| 27 | + * copy, modify, merge, publish, distribute, sublicense, and/or | |
| 28 | + * sell copies of the Software, and to permit persons to whom the | |
| 29 | + * Software is furnished to do so, subject to the following | |
| 30 | + * conditions: | |
| 31 | + * | |
| 32 | + * The above copyright notice and this permission notice shall be | |
| 33 | + * included in all copies or substantial portions of the Software. | |
| 34 | + * | |
| 35 | + * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND | |
| 36 | + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | |
| 37 | + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |
| 38 | + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | |
| 39 | + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY | |
| 40 | + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | |
| 41 | + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | |
| 42 | + * OTHER DEALINGS IN THE SOFTWARE. | |
| 10 | 43 | */ |
| 11 | 44 | |
| 12 | 45 | /dts-v1/; |
| @@ -93,6 +126,7 @@ · 80 unmodified lines | ||
| 93 | 126 | isl12057: isl12057@68 { |
| 94 | 127 | compatible = "isil,isl12057"; |
| 95 | 128 | reg = <0x68>; |
| 129 | + isil,irq2-can-wakeup-machine; | |
| 96 | 130 | }; |
| 97 | 131 | |
| 98 | 132 | g762: g762@3e { |
| @@ -6,9 +6,43 @@ · 5 unmodified lines | ||
| 6 | 6 | * |
| 7 | 7 | * Copyright (C) 2013 Florian Fainelli <florian@openwrt.org> |
| 8 | 8 | * |
| 9 | − * This file is licensed under the terms of the GNU General Public | |
| 10 | − * License version 2. This program is licensed "as is" without any | |
| 11 | − * warranty of any kind, whether express or implied. | |
| 9 | + * This file is dual-licensed: you can use it either under the terms | |
| 10 | + * of the GPL or the X11 license, at your option. Note that this dual | |
| 11 | + * licensing only applies to this file, and not this project as a | |
| 12 | + * whole. | |
| 13 | + * | |
| 14 | + * a) This file is free software; you can redistribute it and/or | |
| 15 | + * modify it under the terms of the GNU General Public License as | |
| 16 | + * published by the Free Software Foundation; either version 2 of the | |
| 17 | + * License, or (at your option) any later version. | |
| 18 | + * | |
| 19 | + * This file is distributed in the hope that it will be useful | |
| 20 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 21 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 22 | + * GNU General Public License for more details. | |
| 23 | + * | |
| 24 | + * Or, alternatively | |
| 25 | + * | |
| 26 | + * b) Permission is hereby granted, free of charge, to any person | |
| 27 | + * obtaining a copy of this software and associated documentation | |
| 28 | + * files (the "Software"), to deal in the Software without | |
| 29 | + * restriction, including without limitation the rights to use | |
| 30 | + * copy, modify, merge, publish, distribute, sublicense, and/or | |
| 31 | + * sell copies of the Software, and to permit persons to whom the | |
| 32 | + * Software is furnished to do so, subject to the following | |
| 33 | + * conditions: | |
| 34 | + * | |
| 35 | + * The above copyright notice and this permission notice shall be | |
| 36 | + * included in all copies or substantial portions of the Software. | |
| 37 | + * | |
| 38 | + * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND | |
| 39 | + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | |
| 40 | + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |
| 41 | + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | |
| 42 | + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY | |
| 43 | + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | |
| 44 | + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | |
| 45 | + * OTHER DEALINGS IN THE SOFTWARE. | |
| 12 | 46 | * |
| 13 | 47 | * Note: this Device Tree assumes that the bootloader has remapped the |
| 14 | 48 | * internal registers to 0xf1000000 (instead of the default |
| @@ -3,10 +3,43 @@ · 2 unmodified lines | ||
| 3 | 3 | * |
| 4 | 4 | * Copyright (C) 2014, Arnaud EBALARD <arno@natisbad.org> |
| 5 | 5 | * |
| 6 | − * This program is free software; you can redistribute it and/or | |
| 7 | − * modify it under the terms of the GNU General Public License | |
| 8 | − * as published by the Free Software Foundation; either version | |
| 9 | − * 2 of the License, or (at your option) any later version. | |
| 6 | + * This file is dual-licensed: you can use it either under the terms | |
| 7 | + * of the GPL or the X11 license, at your option. Note that this dual | |
| 8 | + * licensing only applies to this file, and not this project as a | |
| 9 | + * whole. | |
| 10 | + * | |
| 11 | + * a) This file is free software; you can redistribute it and/or | |
| 12 | + * modify it under the terms of the GNU General Public License as | |
| 13 | + * published by the Free Software Foundation; either version 2 of the | |
| 14 | + * License, or (at your option) any later version. | |
| 15 | + * | |
| 16 | + * This file is distributed in the hope that it will be useful | |
| 17 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 18 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 19 | + * GNU General Public License for more details. | |
| 20 | + * | |
| 21 | + * Or, alternatively | |
| 22 | + * | |
| 23 | + * b) Permission is hereby granted, free of charge, to any person | |
| 24 | + * obtaining a copy of this software and associated documentation | |
| 25 | + * files (the "Software"), to deal in the Software without | |
| 26 | + * restriction, including without limitation the rights to use | |
| 27 | + * copy, modify, merge, publish, distribute, sublicense, and/or | |
| 28 | + * sell copies of the Software, and to permit persons to whom the | |
| 29 | + * Software is furnished to do so, subject to the following | |
| 30 | + * conditions: | |
| 31 | + * | |
| 32 | + * The above copyright notice and this permission notice shall be | |
| 33 | + * included in all copies or substantial portions of the Software. | |
| 34 | + * | |
| 35 | + * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND | |
| 36 | + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | |
| 37 | + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |
| 38 | + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | |
| 39 | + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY | |
| 40 | + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | |
| 41 | + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | |
| 42 | + * OTHER DEALINGS IN THE SOFTWARE. | |
| 10 | 43 | * |
| 11 | 44 | * Note: this Device Tree assumes that the bootloader has remapped the |
| 12 | 45 | * internal registers to 0xf1000000 (instead of the old 0xd0000000). |
| @@ -8,9 +8,43 @@ · 7 unmodified lines | ||
| 8 | 8 | * Thomas Petazzoni <thomas.petazzoni@free-electrons.com> |
| 9 | 9 | * Ben Dooks <ben.dooks@codethink.co.uk> |
| 10 | 10 | * |
| 11 | − * This file is licensed under the terms of the GNU General Public | |
| 12 | − * License version 2. This program is licensed "as is" without any | |
| 13 | − * warranty of any kind, whether express or implied. | |
| 11 | + * This file is dual-licensed: you can use it either under the terms | |
| 12 | + * of the GPL or the X11 license, at your option. Note that this dual | |
| 13 | + * licensing only applies to this file, and not this project as a | |
| 14 | + * whole. | |
| 15 | + * | |
| 16 | + * a) This file is free software; you can redistribute it and/or | |
| 17 | + * modify it under the terms of the GNU General Public License as | |
| 18 | + * published by the Free Software Foundation; either version 2 of the | |
| 19 | + * License, or (at your option) any later version. | |
| 20 | + * | |
| 21 | + * This file is distributed in the hope that it will be useful | |
| 22 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 23 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 24 | + * GNU General Public License for more details. | |
| 25 | + * | |
| 26 | + * Or, alternatively | |
| 27 | + * | |
| 28 | + * b) Permission is hereby granted, free of charge, to any person | |
| 29 | + * obtaining a copy of this software and associated documentation | |
| 30 | + * files (the "Software"), to deal in the Software without | |
| 31 | + * restriction, including without limitation the rights to use | |
| 32 | + * copy, modify, merge, publish, distribute, sublicense, and/or | |
| 33 | + * sell copies of the Software, and to permit persons to whom the | |
| 34 | + * Software is furnished to do so, subject to the following | |
| 35 | + * conditions: | |
| 36 | + * | |
| 37 | + * The above copyright notice and this permission notice shall be | |
| 38 | + * included in all copies or substantial portions of the Software. | |
| 39 | + * | |
| 40 | + * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND | |
| 41 | + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | |
| 42 | + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |
| 43 | + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | |
| 44 | + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY | |
| 45 | + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | |
| 46 | + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | |
| 47 | + * OTHER DEALINGS IN THE SOFTWARE. | |
| 14 | 48 | * |
| 15 | 49 | * This file contains the definitions that are common to the Armada |
| 16 | 50 | * 370 and Armada XP SoC. |
| @@ -7,9 +7,43 @@ · 6 unmodified lines | ||
| 7 | 7 | * Gregory CLEMENT <gregory.clement@free-electrons.com> |
| 8 | 8 | * Thomas Petazzoni <thomas.petazzoni@free-electrons.com> |
| 9 | 9 | * |
| 10 | − * This file is licensed under the terms of the GNU General Public | |
| 11 | − * License version 2. This program is licensed "as is" without any | |
| 12 | − * warranty of any kind, whether express or implied. | |
| 10 | + * This file is dual-licensed: you can use it either under the terms | |
| 11 | + * of the GPL or the X11 license, at your option. Note that this dual | |
| 12 | + * licensing only applies to this file, and not this project as a | |
| 13 | + * whole. | |
| 14 | + * | |
| 15 | + * a) This file is free software; you can redistribute it and/or | |
| 16 | + * modify it under the terms of the GNU General Public License as | |
| 17 | + * published by the Free Software Foundation; either version 2 of the | |
| 18 | + * License, or (at your option) any later version. | |
| 19 | + * | |
| 20 | + * This file is distributed in the hope that it will be useful | |
| 21 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 22 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 23 | + * GNU General Public License for more details. | |
| 24 | + * | |
| 25 | + * Or, alternatively | |
| 26 | + * | |
| 27 | + * b) Permission is hereby granted, free of charge, to any person | |
| 28 | + * obtaining a copy of this software and associated documentation | |
| 29 | + * files (the "Software"), to deal in the Software without | |
| 30 | + * restriction, including without limitation the rights to use | |
| 31 | + * copy, modify, merge, publish, distribute, sublicense, and/or | |
| 32 | + * sell copies of the Software, and to permit persons to whom the | |
| 33 | + * Software is furnished to do so, subject to the following | |
| 34 | + * conditions: | |
| 35 | + * | |
| 36 | + * The above copyright notice and this permission notice shall be | |
| 37 | + * included in all copies or substantial portions of the Software. | |
| 38 | + * | |
| 39 | + * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND | |
| 40 | + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | |
| 41 | + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |
| 42 | + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | |
| 43 | + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY | |
| 44 | + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | |
| 45 | + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | |
| 46 | + * OTHER DEALINGS IN THE SOFTWARE. | |
| 13 | 47 | * |
| 14 | 48 | * Contains definitions specific to the Armada 370 SoC that are not |
| 15 | 49 | * common to all Armada SoCs. |
| @@ -7,9 +7,43 @@ · 6 unmodified lines | ||
| 7 | 7 | * Gregory CLEMENT <gregory.clement@free-electrons.com> |
| 8 | 8 | * Thomas Petazzoni <thomas.petazzoni@free-electrons.com> |
| 9 | 9 | * |
| 10 | − * This file is licensed under the terms of the GNU General Public | |
| 11 | − * License version 2. This program is licensed "as is" without any | |
| 12 | − * warranty of any kind, whether express or implied. | |
| 10 | + * This file is dual-licensed: you can use it either under the terms | |
| 11 | + * of the GPL or the X11 license, at your option. Note that this dual | |
| 12 | + * licensing only applies to this file, and not this project as a | |
| 13 | + * whole. | |
| 14 | + * | |
| 15 | + * a) This file is free software; you can redistribute it and/or | |
| 16 | + * modify it under the terms of the GNU General Public License as | |
| 17 | + * published by the Free Software Foundation; either version 2 of the | |
| 18 | + * License, or (at your option) any later version. | |
| 19 | + * | |
| 20 | + * This file is distributed in the hope that it will be useful | |
| 21 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 22 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 23 | + * GNU General Public License for more details. | |
| 24 | + * | |
| 25 | + * Or, alternatively | |
| 26 | + * | |
| 27 | + * b) Permission is hereby granted, free of charge, to any person | |
| 28 | + * obtaining a copy of this software and associated documentation | |
| 29 | + * files (the "Software"), to deal in the Software without | |
| 30 | + * restriction, including without limitation the rights to use | |
| 31 | + * copy, modify, merge, publish, distribute, sublicense, and/or | |
| 32 | + * sell copies of the Software, and to permit persons to whom the | |
| 33 | + * Software is furnished to do so, subject to the following | |
| 34 | + * conditions: | |
| 35 | + * | |
| 36 | + * The above copyright notice and this permission notice shall be | |
| 37 | + * included in all copies or substantial portions of the Software. | |
| 38 | + * | |
| 39 | + * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND | |
| 40 | + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | |
| 41 | + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |
| 42 | + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | |
| 43 | + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY | |
| 44 | + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | |
| 45 | + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | |
| 46 | + * OTHER DEALINGS IN THE SOFTWARE. | |
| 13 | 47 | */ |
| 14 | 48 | |
| 15 | 49 | /dts-v1/; |
| @@ -6,9 +6,43 @@ · 5 unmodified lines | ||
| 6 | 6 | * Gregory CLEMENT <gregory.clement@free-electrons.com> |
| 7 | 7 | * Thomas Petazzoni <thomas.petazzoni@free-electrons.com> |
| 8 | 8 | * |
| 9 | − * This file is licensed under the terms of the GNU General Public | |
| 10 | − * License version 2. This program is licensed "as is" without any | |
| 11 | − * warranty of any kind, whether express or implied. | |
| 9 | + * This file is dual-licensed: you can use it either under the terms | |
| 10 | + * of the GPL or the X11 license, at your option. Note that this dual | |
| 11 | + * licensing only applies to this file, and not this project as a | |
| 12 | + * whole. | |
| 13 | + * | |
| 14 | + * a) This file is free software; you can redistribute it and/or | |
| 15 | + * modify it under the terms of the GNU General Public License as | |
| 16 | + * published by the Free Software Foundation; either version 2 of the | |
| 17 | + * License, or (at your option) any later version. | |
| 18 | + * | |
| 19 | + * This file is distributed in the hope that it will be useful | |
| 20 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 21 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 22 | + * GNU General Public License for more details. | |
| 23 | + * | |
| 24 | + * Or, alternatively | |
| 25 | + * | |
| 26 | + * b) Permission is hereby granted, free of charge, to any person | |
| 27 | + * obtaining a copy of this software and associated documentation | |
| 28 | + * files (the "Software"), to deal in the Software without | |
| 29 | + * restriction, including without limitation the rights to use | |
| 30 | + * copy, modify, merge, publish, distribute, sublicense, and/or | |
| 31 | + * sell copies of the Software, and to permit persons to whom the | |
| 32 | + * Software is furnished to do so, subject to the following | |
| 33 | + * conditions: | |
| 34 | + * | |
| 35 | + * The above copyright notice and this permission notice shall be | |
| 36 | + * included in all copies or substantial portions of the Software. | |
| 37 | + * | |
| 38 | + * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND | |
| 39 | + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | |
| 40 | + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |
| 41 | + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | |
| 42 | + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY | |
| 43 | + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | |
| 44 | + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | |
| 45 | + * OTHER DEALINGS IN THE SOFTWARE. | |
| 12 | 46 | */ |
| 13 | 47 | |
| 14 | 48 | #include "skeleton.dtsi" |
| @@ -63,7 +97,7 @@ · 48 unmodified lines | ||
| 63 | 97 | }; |
| 64 | 98 | |
| 65 | 99 | soc { |
| 66 | − compatible = "marvell,armada375-mbus", "marvell,armada370-mbus", "simple-bus"; | |
| 100 | + compatible = "marvell,armada375-mbus", "simple-bus"; | |
| 67 | 101 | #address-cells = <2>; |
| 68 | 102 | #size-cells = <1>; |
| 69 | 103 | controller = <&mbusc>; |
| @@ -7,9 +7,43 @@ · 6 unmodified lines | ||
| 7 | 7 | * Gregory CLEMENT <gregory.clement@free-electrons.com> |
| 8 | 8 | * Thomas Petazzoni <thomas.petazzoni@free-electrons.com> |
| 9 | 9 | * |
| 10 | − * This file is licensed under the terms of the GNU General Public | |
| 11 | − * License version 2. This program is licensed "as is" without any | |
| 12 | − * warranty of any kind, whether express or implied. | |
| 10 | + * This file is dual-licensed: you can use it either under the terms | |
| 11 | + * of the GPL or the X11 license, at your option. Note that this dual | |
| 12 | + * licensing only applies to this file, and not this project as a | |
| 13 | + * whole. | |
| 14 | + * | |
| 15 | + * a) This file is free software; you can redistribute it and/or | |
| 16 | + * modify it under the terms of the GNU General Public License as | |
| 17 | + * published by the Free Software Foundation; either version 2 of the | |
| 18 | + * License, or (at your option) any later version. | |
| 19 | + * | |
| 20 | + * This file is distributed in the hope that it will be useful | |
| 21 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 22 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
38 more lines aren’t shown here.
This diff is large: its 179 lines aren’t shown here.
This diff is large: its 98 lines aren’t shown here.
This diff is large: its 58 lines aren’t shown here.
This diff is large: its 73 lines aren’t shown here.
This diff is large: its 415 lines aren’t shown here.
This diff is large: its 133 lines aren’t shown here.
This diff is large: its 71 lines aren’t shown here.
This diff is large: its 186 lines aren’t shown here.
This diff is large: its 69 lines aren’t shown here.
This diff is large: its 47 lines aren’t shown here.
This diff is large: its 47 lines aren’t shown here.
This diff is large: its 48 lines aren’t shown here.
This diff is large: its 47 lines aren’t shown here.
This diff is large: its 47 lines aren’t shown here.
This diff is large: its 47 lines aren’t shown here.
This diff is large: its 47 lines aren’t shown here.
This diff is large: its 56 lines aren’t shown here.
This diff is large: its 47 lines aren’t shown here.
This diff is large: its 48 lines aren’t shown here.
This diff is large: its 47 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 61 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 28 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 61 lines aren’t shown here.
This diff is large: its 111 lines aren’t shown here.
This diff is large: its 814 lines aren’t shown here.
This diff is large: its 98 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 79 lines aren’t shown here.
This diff is large: its 61 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 79 lines aren’t shown here.
This diff is large: its 38 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 114 lines aren’t shown here.
This diff is large: its 75 lines aren’t shown here.
This diff is large: its 130 lines aren’t shown here.
This diff is large: its 251 lines aren’t shown here.
This diff is large: its 393 lines aren’t shown here.
This diff is large: its 52 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 147 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 98 lines aren’t shown here.
This diff is large: its 168 lines aren’t shown here.
This diff is large: its 175 lines aren’t shown here.
This diff is large: its 284 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 30 lines aren’t shown here.
This diff is large: its 74 lines aren’t shown here.
This diff is large: its 15 lines aren’t shown here.
This diff is large: its 15 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 521 lines aren’t shown here.
This diff is large: its 78 lines aren’t shown here.
This diff is large: its 58 lines aren’t shown here.
This diff is large: its 37 lines aren’t shown here.
This diff is large: its 59 lines aren’t shown here.
This diff is large: its 310 lines aren’t shown here.
This diff is large: its 93 lines aren’t shown here.
This diff is large: its 372 lines aren’t shown here.
This diff is large: its 311 lines aren’t shown here.
This diff is large: its 52 lines aren’t shown here.
This diff is large: its 111 lines aren’t shown here.
This diff is large: its 35 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 28 lines aren’t shown here.
This diff is large: its 25 lines aren’t shown here.
This diff is large: its 19 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 139 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 54 lines aren’t shown here.
This diff is large: its 135 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 147 lines aren’t shown here.
This diff is large: its 53 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 174 lines aren’t shown here.
This diff is large: its 22 lines aren’t shown here.
This diff is large: its 135 lines aren’t shown here.
This diff is large: its 55 lines aren’t shown here.
This diff is large: its 758 lines aren’t shown here.
This diff is large: its 22 lines aren’t shown here.
This diff is large: its 85 lines aren’t shown here.
This diff is large: its 78 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 85 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 87 lines aren’t shown here.
This diff is large: its 62 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 177 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 31 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 216 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 354 lines aren’t shown here.
This diff is large: its 121 lines aren’t shown here.
This diff is large: its 81 lines aren’t shown here.
This diff is large: its 135 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 74 lines aren’t shown here.
This diff is large: its 165 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 167 lines aren’t shown here.
This diff is large: its 469 lines aren’t shown here.
This diff is large: its 35 lines aren’t shown here.
This diff is large: its 194 lines aren’t shown here.
This diff is large: its 76 lines aren’t shown here.
This diff is large: its 72 lines aren’t shown here.
This diff is large: its 72 lines aren’t shown here.
This diff is large: its 491 lines aren’t shown here.
This diff is large: its 250 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 66 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 73 lines aren’t shown here.
This diff is large: its 60 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 532 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 68 lines aren’t shown here.
This diff is large: its 152 lines aren’t shown here.
This diff is large: its 214 lines aren’t shown here.
This diff is large: its 40 lines aren’t shown here.
This diff is large: its 66 lines aren’t shown here.
This diff is large: its 79 lines aren’t shown here.
This diff is large: its 349 lines aren’t shown here.
This diff is large: its 100 lines aren’t shown here.
This diff is large: its 25 lines aren’t shown here.
This diff is large: its 67 lines aren’t shown here.
This diff is large: its 31 lines aren’t shown here.
This diff is large: its 101 lines aren’t shown here.
This diff is large: its 110 lines aren’t shown here.
This diff is large: its 61 lines aren’t shown here.
This diff is large: its 106 lines aren’t shown here.
This diff is large: its 22 lines aren’t shown here.
This diff is large: its 184 lines aren’t shown here.
This diff is large: its 32 lines aren’t shown here.
This diff is large: its 110 lines aren’t shown here.
This diff is large: its 114 lines aren’t shown here.
This diff is large: its 60 lines aren’t shown here.
This diff is large: its 96 lines aren’t shown here.
This diff is large: its 474 lines aren’t shown here.
This diff is large: its 126 lines aren’t shown here.
This diff is large: its 128 lines aren’t shown here.
This diff is large: its 69 lines aren’t shown here.
This diff is large: its 267 lines aren’t shown here.
This diff is large: its 98 lines aren’t shown here.
This diff is large: its 69 lines aren’t shown here.
This diff is large: its 126 lines aren’t shown here.
This diff is large: its 273 lines aren’t shown here.
This diff is large: its 34 lines aren’t shown here.
This diff is large: its 59 lines aren’t shown here.
This diff is large: its 201 lines aren’t shown here.
This diff is large: its 82 lines aren’t shown here.
This diff is large: its 622 lines aren’t shown here.
This diff is large: its 105 lines aren’t shown here.
This diff is large: its 59 lines aren’t shown here.
This diff is large: its 79 lines aren’t shown here.
This diff is large: its 263 lines aren’t shown here.
This diff is large: its 150 lines aren’t shown here.
This diff is large: its 214 lines aren’t shown here.
This diff is large: its 113 lines aren’t shown here.
This diff is large: its 119 lines aren’t shown here.
This diff is large: its 53 lines aren’t shown here.
This diff is large: its 70 lines aren’t shown here.
This diff is large: its 70 lines aren’t shown here.
This diff is large: its 126 lines aren’t shown here.
This diff is large: its 63 lines aren’t shown here.
This diff is large: its 910 lines aren’t shown here.
This diff is large: its 60 lines aren’t shown here.
This diff is large: its 54 lines aren’t shown here.
This diff is large: its 419 lines aren’t shown here.
This diff is large: its 139 lines aren’t shown here.
This diff is large: its 372 lines aren’t shown here.
This diff is large: its 105 lines aren’t shown here.
This diff is large: its 14 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 33 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 44 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 53 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 118 lines aren’t shown here.
This diff is large: its 58 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 269 lines aren’t shown here.
This diff is large: its 235 lines aren’t shown here.
This diff is large: its 33 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 51 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 99 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 7 lines aren’t shown here.
This diff is large: its 5 lines aren’t shown here.
This diff is large: its 5 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 151 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 145 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 246 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 5 lines aren’t shown here.
This diff is large: its 22 lines aren’t shown here.
This diff is large: its 144 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
File renamed without changes.
This diff is large: its 46 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 28 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
File renamed without changes.
This diff is large: its 14 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 28 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 37 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 285 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 37 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 22 lines aren’t shown here.
This diff is large: its 38 lines aren’t shown here.
This diff is large: its 44 lines aren’t shown here.
This diff is large: its 51 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 30 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 30 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 6 lines aren’t shown here.
This diff is large: its 103 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 391 lines aren’t shown here.
This diff is large: its 46 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 22 lines aren’t shown here.
This diff is large: its 565 lines aren’t shown here.
This diff is large: its 170 lines aren’t shown here.
This diff is large: its 32 lines aren’t shown here.
This diff is large: its 96 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 88 lines aren’t shown here.
This diff is large: its 62 lines aren’t shown here.
This diff is large: its 43 lines aren’t shown here.
This diff is large: its 41 lines aren’t shown here.
This diff is large: its 41 lines aren’t shown here.
This diff is large: its 33 lines aren’t shown here.
This diff is large: its 54 lines aren’t shown here.
This diff is large: its 37 lines aren’t shown here.
This diff is large: its 44 lines aren’t shown here.
This diff is large: its 37 lines aren’t shown here.
This diff is large: its 40 lines aren’t shown here.
This diff is large: its 81 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 84 lines aren’t shown here.
This diff is large: its 28 lines aren’t shown here.
This diff is large: its 213 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 84 lines aren’t shown here.
This diff is large: its 42 lines aren’t shown here.
This diff is large: its 65 lines aren’t shown here.
This diff is large: its 219 lines aren’t shown here.
This diff is large: its 78 lines aren’t shown here.
This diff is large: its 76 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 123 lines aren’t shown here.
This diff is large: its 179 lines aren’t shown here.
This diff is large: its 15 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 59 lines aren’t shown here.
This diff is large: its 296 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 2 lines aren’t shown here.
This diff is large: its 19 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 96 lines aren’t shown here.
This diff is large: its 69 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 166 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 64 lines aren’t shown here.
This diff is large: its 168 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 15 lines aren’t shown here.
This diff is large: its 14 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 41 lines aren’t shown here.
This diff is large: its 45 lines aren’t shown here.
This diff is large: its 93 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 35 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 45 lines aren’t shown here.
This diff is large: its 32 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 106 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 53 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 107 lines aren’t shown here.
This diff is large: its 67 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 100 lines aren’t shown here.
This diff is large: its 28 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 97 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 102 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 70 lines aren’t shown here.
This diff is large: its 115 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 47 lines aren’t shown here.
This diff is large: its 151 lines aren’t shown here.
This diff is large: its 374 lines aren’t shown here.
This diff is large: its 336 lines aren’t shown here.
This diff is large: its 63 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 3693 lines aren’t shown here.
This diff is large: its 143 lines aren’t shown here.
This diff is large: its 40 lines aren’t shown here.
This diff is large: its 64 lines aren’t shown here.
This diff is large: its 25 lines aren’t shown here.
This diff is large: its 22 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 195 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 28 lines aren’t shown here.
This diff is large: its 62 lines aren’t shown here.
This diff is large: its 52 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 45 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 127 lines aren’t shown here.
This diff is large: its 211 lines aren’t shown here.
This diff is large: its 213 lines aren’t shown here.
This diff is large: its 43 lines aren’t shown here.
This diff is large: its 285 lines aren’t shown here.
This diff is large: its 45 lines aren’t shown here.
This diff is large: its 84 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 19 lines aren’t shown here.
This diff is large: its 1137 lines aren’t shown here.
This diff is large: its 39 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 19 lines aren’t shown here.
This diff is large: its 96 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 35 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 19 lines aren’t shown here.
This diff is large: its 6 lines aren’t shown here.
This diff is large: its 129 lines aren’t shown here.
This diff is large: its 48 lines aren’t shown here.
This diff is large: its 42 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 64 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 95 lines aren’t shown here.
This diff is large: its 57 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 33 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 182 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 6 lines aren’t shown here.
This diff is large: its 261 lines aren’t shown here.
This diff is large: its 106 lines aren’t shown here.
This diff is large: its 25 lines aren’t shown here.
This diff is large: its 74 lines aren’t shown here.
This diff is large: its 112 lines aren’t shown here.
This diff is large: its 37 lines aren’t shown here.
This diff is large: its 183 lines aren’t shown here.
This diff is large: its 151 lines aren’t shown here.
This diff is large: its 194 lines aren’t shown here.
This diff is large: its 180 lines aren’t shown here.
This diff is large: its 1466 lines aren’t shown here.
This diff is large: its 171 lines aren’t shown here.
This diff is large: its 22 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 19 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 93 lines aren’t shown here.
This diff is large: its 246 lines aren’t shown here.
This diff is large: its 114 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 140 lines aren’t shown here.
This diff is large: its 70 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 40 lines aren’t shown here.
This diff is large: its 841 lines aren’t shown here.
This diff is large: its 460 lines aren’t shown here.
This diff is large: its 31 lines aren’t shown here.
This diff is large: its 67 lines aren’t shown here.
This diff is large: its 409 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 76 lines aren’t shown here.
This diff is large: its 35 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 302 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 30 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 6 lines aren’t shown here.
This diff is large: its 53 lines aren’t shown here.
This diff is large: its 32 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 44 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 63 lines aren’t shown here.
This diff is large: its 22 lines aren’t shown here.
This diff is large: its 758 lines aren’t shown here.
This diff is large: its 33 lines aren’t shown here.
This diff is large: its 19 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 28 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 15 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 15 lines aren’t shown here.
This diff is large: its 147 lines aren’t shown here.
This diff is large: its 85 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 70 lines aren’t shown here.
This diff is large: its 122 lines aren’t shown here.
This diff is large: its 74 lines aren’t shown here.
This diff is large: its 131 lines aren’t shown here.
This diff is large: its 152 lines aren’t shown here.
This diff is large: its 147 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 54 lines aren’t shown here.
This diff is large: its 28 lines aren’t shown here.
This diff is large: its 45 lines aren’t shown here.
This diff is large: its 30 lines aren’t shown here.
This diff is large: its 131 lines aren’t shown here.
This diff is large: its 31 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 34 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 193 lines aren’t shown here.
This diff is large: its 102 lines aren’t shown here.
This diff is large: its 111 lines aren’t shown here.
This diff is large: its 56 lines aren’t shown here.
This diff is large: its 106 lines aren’t shown here.
This diff is large: its 41 lines aren’t shown here.
This diff is large: its 371 lines aren’t shown here.
This diff is large: its 117 lines aren’t shown here.
This diff is large: its 117 lines aren’t shown here.
This diff is large: its 68 lines aren’t shown here.
This diff is large: its 62 lines aren’t shown here.
This diff is large: its 2 lines aren’t shown here.
This diff is large: its 22 lines aren’t shown here.
This diff is large: its 22 lines aren’t shown here.
File renamed without changes.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 114 lines aren’t shown here.
This diff is large: its 28 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 6 lines aren’t shown here.
This diff is large: its 85 lines aren’t shown here.
This diff is large: its 589 lines aren’t shown here.
This diff is large: its 531 lines aren’t shown here.
This diff is large: its 6 lines aren’t shown here.
This diff is large: its 66 lines aren’t shown here.
This diff is large: its 164 lines aren’t shown here.
This diff is large: its 6 lines aren’t shown here.
This diff is large: its 39 lines aren’t shown here.
This diff is large: its 169 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 48 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 31 lines aren’t shown here.
This diff is large: its 35 lines aren’t shown here.
This diff is large: its 61 lines aren’t shown here.
This diff is large: its 125 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 63 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 19 lines aren’t shown here.
This diff is large: its 89 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 105 lines aren’t shown here.
This diff is large: its 35 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 28 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 79 lines aren’t shown here.
This diff is large: its 14 lines aren’t shown here.
This diff is large: its 7 lines aren’t shown here.
This diff is large: its 31 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 6 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 19 lines aren’t shown here.
This diff is large: its 22 lines aren’t shown here.
This diff is large: its 272 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 129 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 59 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 487 lines aren’t shown here.
This diff is large: its 125 lines aren’t shown here.
This diff is large: its 98 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 79 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 50 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 46 lines aren’t shown here.
This diff is large: its 38 lines aren’t shown here.
This diff is large: its 35 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 52 lines aren’t shown here.
This diff is large: its 71 lines aren’t shown here.
This diff is large: its 56 lines aren’t shown here.
This diff is large: its 14 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 19 lines aren’t shown here.
This diff is large: its 90 lines aren’t shown here.
This diff is large: its 78 lines aren’t shown here.
This diff is large: its 43 lines aren’t shown here.
This diff is large: its 121 lines aren’t shown here.
This diff is large: its 56 lines aren’t shown here.
This diff is large: its 37 lines aren’t shown here.
This diff is large: its 233 lines aren’t shown here.
This diff is large: its 90 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 66 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 4 lines aren’t shown here.
This diff is large: its 479 lines aren’t shown here.
This diff is large: its 32 lines aren’t shown here.
This diff is large: its 112 lines aren’t shown here.
This diff is large: its 117 lines aren’t shown here.
This diff is large: its 116 lines aren’t shown here.
This diff is large: its 97 lines aren’t shown here.
This diff is large: its 112 lines aren’t shown here.
This diff is large: its 118 lines aren’t shown here.
This diff is large: its 117 lines aren’t shown here.
This diff is large: its 125 lines aren’t shown here.
This diff is large: its 106 lines aren’t shown here.
This diff is large: its 109 lines aren’t shown here.
This diff is large: its 126 lines aren’t shown here.
This diff is large: its 104 lines aren’t shown here.
This diff is large: its 90 lines aren’t shown here.
This diff is large: its 91 lines aren’t shown here.
This diff is large: its 72 lines aren’t shown here.
This diff is large: its 69 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 80 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 73 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 40 lines aren’t shown here.
This diff is large: its 42 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 100 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 32 lines aren’t shown here.
This diff is large: its 32 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 15 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 15 lines aren’t shown here.
This diff is large: its 15 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 314 lines aren’t shown here.
This diff is large: its 5 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 61 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 30 lines aren’t shown here.
This diff is large: its 97 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 60 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 25 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 14 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 45 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 41 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 242 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 28 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 107 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 211 lines aren’t shown here.
This diff is large: its 211 lines aren’t shown here.
This diff is large: its 227 lines aren’t shown here.
This diff is large: its 211 lines aren’t shown here.
This diff is large: its 211 lines aren’t shown here.
This diff is large: its 214 lines aren’t shown here.
This diff is large: its 234 lines aren’t shown here.
This diff is large: its 211 lines aren’t shown here.
This diff is large: its 211 lines aren’t shown here.
This diff is large: its 211 lines aren’t shown here.
This diff is large: its 210 lines aren’t shown here.
This diff is large: its 211 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 38 lines aren’t shown here.
This diff is large: its 95 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 49 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 54 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 130 lines aren’t shown here.
This diff is large: its 50 lines aren’t shown here.
This diff is large: its 6 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 50 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 7 lines aren’t shown here.
This diff is large: its 6 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 58 lines aren’t shown here.
This diff is large: its 57 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 7 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 14 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 28 lines aren’t shown here.
This diff is large: its 22 lines aren’t shown here.
This diff is large: its 47 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 5 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 214 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 105 lines aren’t shown here.
This diff is large: its 88 lines aren’t shown here.
This diff is large: its 14 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 69 lines aren’t shown here.
This diff is large: its 102 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 67 lines aren’t shown here.
This diff is large: its 76 lines aren’t shown here.
This diff is large: its 217 lines aren’t shown here.
This diff is large: its 30 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 1754 lines aren’t shown here.
This diff is large: its 254 lines aren’t shown here.
This diff is large: its 109 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 68 lines aren’t shown here.
This diff is large: its 194 lines aren’t shown here.
This diff is large: its 74 lines aren’t shown here.
This diff is large: its 6 lines aren’t shown here.
This diff is large: its 67 lines aren’t shown here.
This diff is large: its 150 lines aren’t shown here.
This diff is large: its 223 lines aren’t shown here.
This diff is large: its 85 lines aren’t shown here.
This diff is large: its 91 lines aren’t shown here.
This diff is large: its 34 lines aren’t shown here.
This diff is large: its 68 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 14 lines aren’t shown here.
This diff is large: its 42 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 73 lines aren’t shown here.
This diff is large: its 72 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 44 lines aren’t shown here.
This diff is large: its 30 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 90 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 65 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 97 lines aren’t shown here.
This diff is large: its 53 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 65 lines aren’t shown here.
This diff is large: its 15 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 307 lines aren’t shown here.
This diff is large: its 31 lines aren’t shown here.
This diff is large: its 208 lines aren’t shown here.
This diff is large: its 255 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 66 lines aren’t shown here.
This diff is large: its 14 lines aren’t shown here.
This diff is large: its 180 lines aren’t shown here.
This diff is large: its 117 lines aren’t shown here.
This diff is large: its 47 lines aren’t shown here.
This diff is large: its 14 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 185 lines aren’t shown here.
This diff is large: its 22 lines aren’t shown here.
This diff is large: its 30 lines aren’t shown here.
This diff is large: its 162 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 15 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 53 lines aren’t shown here.
This diff is large: its 32 lines aren’t shown here.
This diff is large: its 59 lines aren’t shown here.
This diff is large: its 28 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 411 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 64 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 104 lines aren’t shown here.
This diff is large: its 363 lines aren’t shown here.
This diff is large: its 48 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 2379 lines aren’t shown here.
This diff is large: its 38 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 353 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 157 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 55 lines aren’t shown here.
This diff is large: its 44 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 6 lines aren’t shown here.
This diff is large: its 6 lines aren’t shown here.
This diff is large: its 14 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 145 lines aren’t shown here.
This diff is large: its 493 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 85 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 54 lines aren’t shown here.
This diff is large: its 82 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 288 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 57 lines aren’t shown here.
This diff is large: its 15 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 65 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 15 lines aren’t shown here.
This diff is large: its 35 lines aren’t shown here.
This diff is large: its 15 lines aren’t shown here.
This diff is large: its 86 lines aren’t shown here.
This diff is large: its 43 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 41 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 33 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 38 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 14 lines aren’t shown here.
This diff is large: its 49 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 14 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 126 lines aren’t shown here.
This diff is large: its 118 lines aren’t shown here.
This diff is large: its 188 lines aren’t shown here.
This diff is large: its 59 lines aren’t shown here.
This diff is large: its 35 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 94 lines aren’t shown here.
This diff is large: its 7 lines aren’t shown here.
This diff is large: its 40 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 119 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 172 lines aren’t shown here.
This diff is large: its 70 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 80 lines aren’t shown here.
This diff is large: its 38 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 6 lines aren’t shown here.
This diff is large: its 547 lines aren’t shown here.
This diff is large: its 193 lines aren’t shown here.
This diff is large: its 108 lines aren’t shown here.
This diff is large: its 73 lines aren’t shown here.
This diff is large: its 964 lines aren’t shown here.
This diff is large: its 251 lines aren’t shown here.
This diff is large: its 47 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 202 lines aren’t shown here.
This diff is large: its 509 lines aren’t shown here.
This diff is large: its 34 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 65 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 79 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 25 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 91 lines aren’t shown here.
This diff is large: its 42 lines aren’t shown here.
This diff is large: its 102 lines aren’t shown here.
This diff is large: its 42 lines aren’t shown here.
This diff is large: its 42 lines aren’t shown here.
This diff is large: its 281 lines aren’t shown here.
This diff is large: its 282 lines aren’t shown here.
This diff is large: its 70 lines aren’t shown here.
This diff is large: its 69 lines aren’t shown here.
This diff is large: its 77 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 68 lines aren’t shown here.
This diff is large: its 51 lines aren’t shown here.
This diff is large: its 68 lines aren’t shown here.
This diff is large: its 62 lines aren’t shown here.
This diff is large: its 42 lines aren’t shown here.
This diff is large: its 70 lines aren’t shown here.
This diff is large: its 56 lines aren’t shown here.
This diff is large: its 57 lines aren’t shown here.
This diff is large: its 75 lines aren’t shown here.
This diff is large: its 56 lines aren’t shown here.
This diff is large: its 62 lines aren’t shown here.
This diff is large: its 92 lines aren’t shown here.
This diff is large: its 84 lines aren’t shown here.
This diff is large: its 56 lines aren’t shown here.
This diff is large: its 61 lines aren’t shown here.
This diff is large: its 62 lines aren’t shown here.
This diff is large: its 91 lines aren’t shown here.
This diff is large: its 86 lines aren’t shown here.
This diff is large: its 70 lines aren’t shown here.
This diff is large: its 61 lines aren’t shown here.
This diff is large: its 68 lines aren’t shown here.
This diff is large: its 100 lines aren’t shown here.
This diff is large: its 82 lines aren’t shown here.
This diff is large: its 68 lines aren’t shown here.
This diff is large: its 86 lines aren’t shown here.
This diff is large: its 81 lines aren’t shown here.
This diff is large: its 79 lines aren’t shown here.
This diff is large: its 76 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 90 lines aren’t shown here.
This diff is large: its 85 lines aren’t shown here.
This diff is large: its 69 lines aren’t shown here.
This diff is large: its 81 lines aren’t shown here.
This diff is large: its 76 lines aren’t shown here.
This diff is large: its 75 lines aren’t shown here.
This diff is large: its 68 lines aren’t shown here.
This diff is large: its 73 lines aren’t shown here.
This diff is large: its 63 lines aren’t shown here.
This diff is large: its 62 lines aren’t shown here.
This diff is large: its 77 lines aren’t shown here.
This diff is large: its 62 lines aren’t shown here.
This diff is large: its 101 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 66 lines aren’t shown here.
This diff is large: its 57 lines aren’t shown here.
This diff is large: its 56 lines aren’t shown here.
This diff is large: its 63 lines aren’t shown here.
This diff is large: its 86 lines aren’t shown here.
This diff is large: its 75 lines aren’t shown here.
This diff is large: its 83 lines aren’t shown here.
This diff is large: its 66 lines aren’t shown here.
This diff is large: its 58 lines aren’t shown here.
This diff is large: its 58 lines aren’t shown here.
This diff is large: its 71 lines aren’t shown here.
This diff is large: its 58 lines aren’t shown here.
This diff is large: its 58 lines aren’t shown here.
This diff is large: its 144 lines aren’t shown here.
This diff is large: its 151 lines aren’t shown here.
This diff is large: its 143 lines aren’t shown here.
This diff is large: its 214 lines aren’t shown here.
This diff is large: its 106 lines aren’t shown here.
This diff is large: its 126 lines aren’t shown here.
This diff is large: its 184 lines aren’t shown here.
This diff is large: its 71 lines aren’t shown here.
This diff is large: its 115 lines aren’t shown here.
This diff is large: its 247 lines aren’t shown here.
This diff is large: its 136 lines aren’t shown here.
This diff is large: its 109 lines aren’t shown here.
This diff is large: its 123 lines aren’t shown here.
This diff is large: its 104 lines aren’t shown here.
This diff is large: its 30 lines aren’t shown here.
This diff is large: its 68 lines aren’t shown here.
This diff is large: its 74 lines aren’t shown here.
This diff is large: its 196 lines aren’t shown here.
This diff is large: its 75 lines aren’t shown here.
This diff is large: its 56 lines aren’t shown here.
This diff is large: its 113 lines aren’t shown here.
This diff is large: its 106 lines aren’t shown here.
This diff is large: its 61 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 84 lines aren’t shown here.
This diff is large: its 64 lines aren’t shown here.
This diff is large: its 85 lines aren’t shown here.
This diff is large: its 51 lines aren’t shown here.
This diff is large: its 210 lines aren’t shown here.
This diff is large: its 188 lines aren’t shown here.
This diff is large: its 60 lines aren’t shown here.
This diff is large: its 141 lines aren’t shown here.
This diff is large: its 76 lines aren’t shown here.
This diff is large: its 34 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 203 lines aren’t shown here.
This diff is large: its 77 lines aren’t shown here.
This diff is large: its 72 lines aren’t shown here.
This diff is large: its 89 lines aren’t shown here.
This diff is large: its 32 lines aren’t shown here.
This diff is large: its 784 lines aren’t shown here.
This diff is large: its 92 lines aren’t shown here.
This diff is large: its 77 lines aren’t shown here.
This diff is large: its 125 lines aren’t shown here.
This diff is large: its 129 lines aren’t shown here.
This diff is large: its 67 lines aren’t shown here.
This diff is large: its 83 lines aren’t shown here.
This diff is large: its 88 lines aren’t shown here.
This diff is large: its 14 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 41 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 79 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 81 lines aren’t shown here.
This diff is large: its 28 lines aren’t shown here.
This diff is large: its 100 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 32 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 62 lines aren’t shown here.
This diff is large: its 15 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 22 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 47 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 42 lines aren’t shown here.
This diff is large: its 132 lines aren’t shown here.
This diff is large: its 117 lines aren’t shown here.
This diff is large: its 215 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 15 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 61 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 58 lines aren’t shown here.
This diff is large: its 22 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 42 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 50 lines aren’t shown here.
This diff is large: its 72 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 46 lines aren’t shown here.
This diff is large: its 234 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 48 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 33 lines aren’t shown here.
This diff is large: its 83 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 53 lines aren’t shown here.
This diff is large: its 19 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 33 lines aren’t shown here.
This diff is large: its 30 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 879 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 262 lines aren’t shown here.
This diff is large: its 59 lines aren’t shown here.
This diff is large: its 45 lines aren’t shown here.
This diff is large: its 14 lines aren’t shown here.
This diff is large: its 6 lines aren’t shown here.
This diff is large: its 5 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 156 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 25 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 5 lines aren’t shown here.
This diff is large: its 75 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 278 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 66 lines aren’t shown here.
This diff is large: its 107 lines aren’t shown here.
This diff is large: its 86 lines aren’t shown here.
This diff is large: its 44 lines aren’t shown here.
This diff is large: its 98 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 31 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 41 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 32 lines aren’t shown here.
This diff is large: its 83 lines aren’t shown here.
This diff is large: its 56 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 14 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 42 lines aren’t shown here.
This diff is large: its 118 lines aren’t shown here.
This diff is large: its 33 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 22 lines aren’t shown here.
This diff is large: its 5 lines aren’t shown here.
This diff is large: its 28 lines aren’t shown here.
This diff is large: its 83 lines aren’t shown here.
This diff is large: its 140 lines aren’t shown here.
This diff is large: its 121 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 22 lines aren’t shown here.
This diff is large: its 42 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 151 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 77 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 35 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 70 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 46 lines aren’t shown here.
This diff is large: its 54 lines aren’t shown here.
This diff is large: its 55 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 454 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 51 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 132 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 89 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 49 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 528 lines aren’t shown here.
This diff is large: its 51 lines aren’t shown here.
This diff is large: its 265 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 107 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 76 lines aren’t shown here.
This diff is large: its 453 lines aren’t shown here.
This diff is large: its 839 lines aren’t shown here.
This diff is large: its 53 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 267 lines aren’t shown here.
This diff is large: its 28 lines aren’t shown here.
This diff is large: its 127 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 31 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 173 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 59 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 48 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 90 lines aren’t shown here.
This diff is large: its 37 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 22 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 7 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 57 lines aren’t shown here.
This diff is large: its 84 lines aren’t shown here.
This diff is large: its 30 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 33 lines aren’t shown here.
This diff is large: its 377 lines aren’t shown here.
This diff is large: its 252 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 80 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 30 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 38 lines aren’t shown here.
This diff is large: its 42 lines aren’t shown here.
This diff is large: its 35 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 35 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 85 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 63 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 197 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 28 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 541 lines aren’t shown here.
This diff is large: its 111 lines aren’t shown here.
This diff is large: its 7 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 108 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 61 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 32 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 108 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 47 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 46 lines aren’t shown here.
This diff is large: its 19 lines aren’t shown here.
This diff is large: its 143 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 91 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 69 lines aren’t shown here.
This diff is large: its 173 lines aren’t shown here.
This diff is large: its 46 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 25 lines aren’t shown here.
This diff is large: its 37 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 31 lines aren’t shown here.
This diff is large: its 19 lines aren’t shown here.
This diff is large: its 58 lines aren’t shown here.
This diff is large: its 15 lines aren’t shown here.
This diff is large: its 565 lines aren’t shown here.
This diff is large: its 34 lines aren’t shown here.
This diff is large: its 34 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 33 lines aren’t shown here.
This diff is large: its 102 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 54 lines aren’t shown here.
This diff is large: its 253 lines aren’t shown here.
This diff is large: its 44 lines aren’t shown here.
This diff is large: its 39 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 71 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 45 lines aren’t shown here.
This diff is large: its 91 lines aren’t shown here.
This diff is large: its 56 lines aren’t shown here.
This diff is large: its 155 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 86 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 200 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 216 lines aren’t shown here.
This diff is large: its 22 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 601 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 281 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 562 lines aren’t shown here.
This diff is large: its 31 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 52 lines aren’t shown here.
This diff is large: its 1692 lines aren’t shown here.
This diff is large: its 393 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 222 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 22 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 39 lines aren’t shown here.
This diff is large: its 47 lines aren’t shown here.
This diff is large: its 51 lines aren’t shown here.
This diff is large: its 207 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 63 lines aren’t shown here.
This diff is large: its 386 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 78 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 58 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 168 lines aren’t shown here.
This diff is large: its 144 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 245 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 3 lines aren’t shown here.
This diff is large: its 662 lines aren’t shown here.
This diff is large: its 130 lines aren’t shown here.
This diff is large: its 45 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 73 lines aren’t shown here.
This diff is large: its 347 lines aren’t shown here.
This diff is large: its 104 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 45 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 54 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 191 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 641 lines aren’t shown here.
This diff is large: its 41 lines aren’t shown here.
This diff is large: its 45 lines aren’t shown here.
This diff is large: its 224 lines aren’t shown here.
This diff is large: its 62 lines aren’t shown here.
This diff is large: its 51 lines aren’t shown here.
This diff is large: its 206 lines aren’t shown here.
This diff is large: its 14 lines aren’t shown here.
This diff is large: its 103 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 88 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 93 lines aren’t shown here.
This diff is large: its 41 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 19 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 33 lines aren’t shown here.
This diff is large: its 32 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 35 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 93 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 64 lines aren’t shown here.
This diff is large: its 193 lines aren’t shown here.
This diff is large: its 129 lines aren’t shown here.
This diff is large: its 19 lines aren’t shown here.
This diff is large: its 112 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 94 lines aren’t shown here.
This diff is large: its 129 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 25 lines aren’t shown here.
This diff is large: its 151 lines aren’t shown here.
This diff is large: its 162 lines aren’t shown here.
This diff is large: its 172 lines aren’t shown here.
This diff is large: its 22 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 268 lines aren’t shown here.
This diff is large: its 25 lines aren’t shown here.
This diff is large: its 30 lines aren’t shown here.
This diff is large: its 89 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 230 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 172 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 38 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 60 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 46 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 103 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 55 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 69 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 768 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 37 lines aren’t shown here.
This diff is large: its 230 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 22 lines aren’t shown here.
This diff is large: its 31 lines aren’t shown here.
This diff is large: its 202 lines aren’t shown here.
This diff is large: its 150 lines aren’t shown here.
This diff is large: its 304 lines aren’t shown here.
This diff is large: its 551 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 34 lines aren’t shown here.
This diff is large: its 75 lines aren’t shown here.
This diff is large: its 68 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 39 lines aren’t shown here.
This diff is large: its 74 lines aren’t shown here.
This diff is large: its 39 lines aren’t shown here.
This diff is large: its 39 lines aren’t shown here.
This diff is large: its 39 lines aren’t shown here.
This diff is large: its 39 lines aren’t shown here.
This diff is large: its 39 lines aren’t shown here.
This diff is large: its 288 lines aren’t shown here.
This diff is large: its 377 lines aren’t shown here.
This diff is large: its 139 lines aren’t shown here.
This diff is large: its 42 lines aren’t shown here.
This diff is large: its 62 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 31 lines aren’t shown here.
This diff is large: its 44 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 294 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 42 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 95 lines aren’t shown here.
This diff is large: its 71 lines aren’t shown here.
This diff is large: its 315 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 45 lines aren’t shown here.
This diff is large: its 265 lines aren’t shown here.
This diff is large: its 136 lines aren’t shown here.
This diff is large: its 51 lines aren’t shown here.
This diff is large: its 138 lines aren’t shown here.
This diff is large: its 72 lines aren’t shown here.
This diff is large: its 48 lines aren’t shown here.
This diff is large: its 66 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 86 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 48 lines aren’t shown here.
This diff is large: its 249 lines aren’t shown here.
This diff is large: its 502 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 25 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 67 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 41 lines aren’t shown here.
This diff is large: its 55 lines aren’t shown here.
This diff is large: its 98 lines aren’t shown here.
This diff is large: its 15 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 130 lines aren’t shown here.
This diff is large: its 90 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 22 lines aren’t shown here.
This diff is large: its 279 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 54 lines aren’t shown here.
This diff is large: its 601 lines aren’t shown here.
This diff is large: its 41 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 1068 lines aren’t shown here.
This diff is large: its 128 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 347 lines aren’t shown here.
This diff is large: its 33 lines aren’t shown here.
This diff is large: its 261 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 14 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 436 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 45 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 77 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 876 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 546 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 63 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 401 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 520 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 172 lines aren’t shown here.
This diff is large: its 256 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 218 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 33 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 257 lines aren’t shown here.
This diff is large: its 85 lines aren’t shown here.
This diff is large: its 514 lines aren’t shown here.
This diff is large: its 57 lines aren’t shown here.
This diff is large: its 218 lines aren’t shown here.
This diff is large: its 647 lines aren’t shown here.
This diff is large: its 90 lines aren’t shown here.
This diff is large: its 345 lines aren’t shown here.
This diff is large: its 137 lines aren’t shown here.
This diff is large: its 94 lines aren’t shown here.
This diff is large: its 185 lines aren’t shown here.
This diff is large: its 1094 lines aren’t shown here.
This diff is large: its 146 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 127 lines aren’t shown here.
This diff is large: its 111 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 266 lines aren’t shown here.
This diff is large: its 486 lines aren’t shown here.
This diff is large: its 47 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 41 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 349 lines aren’t shown here.
This diff is large: its 701 lines aren’t shown here.
This diff is large: its 104 lines aren’t shown here.
This diff is large: its 395 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 298 lines aren’t shown here.
This diff is large: its 1921 lines aren’t shown here.
This diff is large: its 33 lines aren’t shown here.
This diff is large: its 188 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 5 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 365 lines aren’t shown here.
This diff is large: its 32 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 38 lines aren’t shown here.
This diff is large: its 34 lines aren’t shown here.
This diff is large: its 71 lines aren’t shown here.
This diff is large: its 30 lines aren’t shown here.
This diff is large: its 60 lines aren’t shown here.
This diff is large: its 30 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 474 lines aren’t shown here.
This diff is large: its 586 lines aren’t shown here.
This diff is large: its 140 lines aren’t shown here.
This diff is large: its 59 lines aren’t shown here.
This diff is large: its 278 lines aren’t shown here.
This diff is large: its 37 lines aren’t shown here.
This diff is large: its 266 lines aren’t shown here.
This diff is large: its 65 lines aren’t shown here.
This diff is large: its 623 lines aren’t shown here.
This diff is large: its 35 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 34 lines aren’t shown here.
This diff is large: its 242 lines aren’t shown here.
This diff is large: its 109 lines aren’t shown here.
This diff is large: its 219 lines aren’t shown here.
This diff is large: its 92 lines aren’t shown here.
This diff is large: its 63 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 35 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 296 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 176 lines aren’t shown here.
This diff is large: its 220 lines aren’t shown here.
This diff is large: its 317 lines aren’t shown here.
This diff is large: its 5 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 63 lines aren’t shown here.
This diff is large: its 67 lines aren’t shown here.
This diff is large: its 39 lines aren’t shown here.
This diff is large: its 31 lines aren’t shown here.
This diff is large: its 280 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 4654 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 54 lines aren’t shown here.
This diff is large: its 138 lines aren’t shown here.
This diff is large: its 173 lines aren’t shown here.
This diff is large: its 76 lines aren’t shown here.
This diff is large: its 153 lines aren’t shown here.
This diff is large: its 187 lines aren’t shown here.
This diff is large: its 411 lines aren’t shown here.
This diff is large: its 204 lines aren’t shown here.
This diff is large: its 135 lines aren’t shown here.
This diff is large: its 98 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 53 lines aren’t shown here.
This diff is large: its 35 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 221 lines aren’t shown here.
This diff is large: its 181 lines aren’t shown here.
This diff is large: its 56 lines aren’t shown here.
This diff is large: its 200 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 28 lines aren’t shown here.
This diff is large: its 60 lines aren’t shown here.
This diff is large: its 19 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 19 lines aren’t shown here.
This diff is large: its 19 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 59 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 85 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 514 lines aren’t shown here.
This diff is large: its 371 lines aren’t shown here.
This diff is large: its 60 lines aren’t shown here.
This diff is large: its 137 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 31 lines aren’t shown here.
This diff is large: its 137 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 108 lines aren’t shown here.
This diff is large: its 127 lines aren’t shown here.
This diff is large: its 145 lines aren’t shown here.
This diff is large: its 30 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 132 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 44 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 72 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 30 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 53 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 28 lines aren’t shown here.
This diff is large: its 167 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 7 lines aren’t shown here.
This diff is large: its 1063 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 40 lines aren’t shown here.
This diff is large: its 91 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 51 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 14 lines aren’t shown here.
This diff is large: its 495 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 3 lines aren’t shown here.
This diff is large: its 375 lines aren’t shown here.
This diff is large: its 94 lines aren’t shown here.
This diff is large: its 719 lines aren’t shown here.
This diff is large: its 25 lines aren’t shown here.
This diff is large: its 14 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 203 lines aren’t shown here.
This diff is large: its 188 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 337 lines aren’t shown here.
This diff is large: its 84 lines aren’t shown here.
This diff is large: its 239 lines aren’t shown here.
This diff is large: its 51 lines aren’t shown here.
This diff is large: its 41 lines aren’t shown here.
This diff is large: its 131 lines aren’t shown here.
This diff is large: its 76 lines aren’t shown here.
This diff is large: its 170 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 141 lines aren’t shown here.
This diff is large: its 85 lines aren’t shown here.
This diff is large: its 154 lines aren’t shown here.
This diff is large: its 133 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 1012 lines aren’t shown here.
This diff is large: its 141 lines aren’t shown here.
This diff is large: its 256 lines aren’t shown here.
This diff is large: its 54 lines aren’t shown here.
This diff is large: its 67 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 152 lines aren’t shown here.
This diff is large: its 263 lines aren’t shown here.
This diff is large: its 133 lines aren’t shown here.
This diff is large: its 139 lines aren’t shown here.
This diff is large: its 39 lines aren’t shown here.
This diff is large: its 139 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 154 lines aren’t shown here.
This diff is large: its 163 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 122 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 339 lines aren’t shown here.
This diff is large: its 137 lines aren’t shown here.
This diff is large: its 123 lines aren’t shown here.
This diff is large: its 199 lines aren’t shown here.
This diff is large: its 32 lines aren’t shown here.
This diff is large: its 5 lines aren’t shown here.
This diff is large: its 1771 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 99 lines aren’t shown here.
This diff is large: its 62 lines aren’t shown here.
This diff is large: its 115 lines aren’t shown here.
This diff is large: its 125 lines aren’t shown here.
This diff is large: its 194 lines aren’t shown here.
This diff is large: its 77 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 28 lines aren’t shown here.
This diff is large: its 56 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 5 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 131 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 7 lines aren’t shown here.
This diff is large: its 7 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 31 lines aren’t shown here.
This diff is large: its 536 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 14 lines aren’t shown here.
This diff is large: its 136 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 86 lines aren’t shown here.
This diff is large: its 71 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 96 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 112 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 113 lines aren’t shown here.
This diff is large: its 128 lines aren’t shown here.
This diff is large: its 95 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 432 lines aren’t shown here.
This diff is large: its 233 lines aren’t shown here.
This diff is large: its 31 lines aren’t shown here.
This diff is large: its 71 lines aren’t shown here.
This diff is large: its 144 lines aren’t shown here.
This diff is large: its 60 lines aren’t shown here.
This diff is large: its 122 lines aren’t shown here.
This diff is large: its 261 lines aren’t shown here.
This diff is large: its 77 lines aren’t shown here.
This diff is large: its 136 lines aren’t shown here.
This diff is large: its 172 lines aren’t shown here.
This diff is large: its 221 lines aren’t shown here.
This diff is large: its 159 lines aren’t shown here.
This diff is large: its 71 lines aren’t shown here.
This diff is large: its 412 lines aren’t shown here.
This diff is large: its 41 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 87 lines aren’t shown here.
This diff is large: its 161 lines aren’t shown here.
This diff is large: its 429 lines aren’t shown here.
This diff is large: its 33 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 32 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 86 lines aren’t shown here.
This diff is large: its 316 lines aren’t shown here.
This diff is large: its 735 lines aren’t shown here.
This diff is large: its 101 lines aren’t shown here.
This diff is large: its 136 lines aren’t shown here.
This diff is large: its 65 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 15 lines aren’t shown here.
This diff is large: its 206 lines aren’t shown here.
This diff is large: its 67 lines aren’t shown here.
This diff is large: its 45 lines aren’t shown here.
This diff is large: its 57 lines aren’t shown here.
This diff is large: its 35 lines aren’t shown here.
This diff is large: its 333 lines aren’t shown here.
This diff is large: its 451 lines aren’t shown here.
This diff is large: its 34 lines aren’t shown here.
This diff is large: its 108 lines aren’t shown here.
This diff is large: its 141 lines aren’t shown here.
This diff is large: its 69 lines aren’t shown here.
This diff is large: its 125 lines aren’t shown here.
This diff is large: its 192 lines aren’t shown here.
This diff is large: its 294 lines aren’t shown here.
This diff is large: its 103 lines aren’t shown here.
This diff is large: its 19 lines aren’t shown here.
This diff is large: its 34 lines aren’t shown here.
This diff is large: its 12 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 407 lines aren’t shown here.
This diff is large: its 580 lines aren’t shown here.
This diff is large: its 214 lines aren’t shown here.
This diff is large: its 668 lines aren’t shown here.
This diff is large: its 399 lines aren’t shown here.
This diff is large: its 320 lines aren’t shown here.
This diff is large: its 857 lines aren’t shown here.
This diff is large: its 25 lines aren’t shown here.
This diff is large: its 19 lines aren’t shown here.
This diff is large: its 14 lines aren’t shown here.
This diff is large: its 5 lines aren’t shown here.
This diff is large: its 1359 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 472 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 827 lines aren’t shown here.
This diff is large: its 598 lines aren’t shown here.
This diff is large: its 92 lines aren’t shown here.
This diff is large: its 48 lines aren’t shown here.
This diff is large: its 1189 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 38 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 107 lines aren’t shown here.
This diff is large: its 31 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 34 lines aren’t shown here.
This diff is large: its 68 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 236 lines aren’t shown here.
This diff is large: its 104 lines aren’t shown here.
This diff is large: its 161 lines aren’t shown here.
This diff is large: its 185 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 62 lines aren’t shown here.
This diff is large: its 14 lines aren’t shown here.
This diff is large: its 991 lines aren’t shown here.
This diff is large: its 144 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 434 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 15 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 150 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 53 lines aren’t shown here.
This diff is large: its 56 lines aren’t shown here.
This diff is large: its 478 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
This diff is large: its 252 lines aren’t shown here.
This diff is large: its 25 lines aren’t shown here.
This diff is large: its 302 lines aren’t shown here.
This diff is large: its 44 lines aren’t shown here.
This diff is large: its 412 lines aren’t shown here.
This diff is large: its 42 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 30 lines aren’t shown here.
This diff is large: its 233 lines aren’t shown here.
This diff is large: its 860 lines aren’t shown here.
This diff is large: its 140 lines aren’t shown here.
This diff is large: its 103 lines aren’t shown here.
This diff is large: its 771 lines aren’t shown here.
This diff is large: its 1447 lines aren’t shown here.
This diff is large: its 138 lines aren’t shown here.
This diff is large: its 154 lines aren’t shown here.
This diff is large: its 41 lines aren’t shown here.
This diff is large: its 239 lines aren’t shown here.
This diff is large: its 287 lines aren’t shown here.
This diff is large: its 71 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 34 lines aren’t shown here.
This diff is large: its 170 lines aren’t shown here.
This diff is large: its 423 lines aren’t shown here.
This diff is large: its 39 lines aren’t shown here.
This diff is large: its 735 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 267 lines aren’t shown here.
This diff is large: its 152 lines aren’t shown here.
This diff is large: its 238 lines aren’t shown here.
This diff is large: its 247 lines aren’t shown here.
This diff is large: its 130 lines aren’t shown here.
This diff is large: its 59 lines aren’t shown here.
This diff is large: its 46 lines aren’t shown here.
This diff is large: its 73 lines aren’t shown here.
This diff is large: its 414 lines aren’t shown here.
This diff is large: its 4618 lines aren’t shown here.
This diff is large: its 582 lines aren’t shown here.
This diff is large: its 79 lines aren’t shown here.
This diff is large: its 466 lines aren’t shown here.
This diff is large: its 1141 lines aren’t shown here.
This diff is large: its 112 lines aren’t shown here.
This diff is large: its 438 lines aren’t shown here.
This diff is large: its 84 lines aren’t shown here.
This diff is large: its 470 lines aren’t shown here.
This diff is large: its 30 lines aren’t shown here.
This diff is large: its 89 lines aren’t shown here.
This diff is large: its 702 lines aren’t shown here.
This diff is large: its 46 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 16 lines aren’t shown here.
This diff is large: its 208 lines aren’t shown here.
This diff is large: its 927 lines aren’t shown here.
This diff is large: its 64 lines aren’t shown here.
This diff is large: its 89 lines aren’t shown here.
This diff is large: its 113 lines aren’t shown here.
This diff is large: its 60 lines aren’t shown here.
This diff is large: its 1538 lines aren’t shown here.
This diff is large: its 479 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 629 lines aren’t shown here.
This diff is large: its 101 lines aren’t shown here.
This diff is large: its 167 lines aren’t shown here.
This diff is large: its 135 lines aren’t shown here.
This diff is large: its 123 lines aren’t shown here.
This diff is large: its 687 lines aren’t shown here.
This diff is large: its 51 lines aren’t shown here.
This diff is large: its 1502 lines aren’t shown here.
This diff is large: its 17 lines aren’t shown here.
This diff is large: its 6 lines aren’t shown here.
This diff is large: its 259 lines aren’t shown here.
This diff is large: its 145 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 72 lines aren’t shown here.
This diff is large: its 131 lines aren’t shown here.
This diff is large: its 28 lines aren’t shown here.
This diff is large: its 25 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 301 lines aren’t shown here.
This diff is large: its 624 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 75 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 209 lines aren’t shown here.
This diff is large: its 86 lines aren’t shown here.
This diff is large: its 293 lines aren’t shown here.
This diff is large: its 269 lines aren’t shown here.
This diff is large: its 121 lines aren’t shown here.
This diff is large: its 162 lines aren’t shown here.
This diff is large: its 1374 lines aren’t shown here.
This diff is large: its 107 lines aren’t shown here.
This diff is large: its 229 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 169 lines aren’t shown here.
This diff is large: its 44 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 96 lines aren’t shown here.
This diff is large: its 96 lines aren’t shown here.
This diff is large: its 148 lines aren’t shown here.
This diff is large: its 48 lines aren’t shown here.
This diff is large: its 30 lines aren’t shown here.
This diff is large: its 184 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 170 lines aren’t shown here.
This diff is large: its 333 lines aren’t shown here.
This diff is large: its 326 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 183 lines aren’t shown here.
This diff is large: its 86 lines aren’t shown here.
This diff is large: its 30 lines aren’t shown here.
This diff is large: its 288 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 47 lines aren’t shown here.
This diff is large: its 144 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 34 lines aren’t shown here.
This diff is large: its 124 lines aren’t shown here.
This diff is large: its 48 lines aren’t shown here.
This diff is large: its 35 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 19 lines aren’t shown here.
This diff is large: its 67 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 401 lines aren’t shown here.
This diff is large: its 324 lines aren’t shown here.
This diff is large: its 173 lines aren’t shown here.
This diff is large: its 177 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 476 lines aren’t shown here.
This diff is large: its 358 lines aren’t shown here.
This diff is large: its 325 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 253 lines aren’t shown here.
This diff is large: its 49 lines aren’t shown here.
This diff is large: its 31 lines aren’t shown here.
This diff is large: its 37 lines aren’t shown here.
This diff is large: its 19 lines aren’t shown here.
This diff is large: its 203 lines aren’t shown here.
This diff is large: its 32 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 271 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 71 lines aren’t shown here.
This diff is large: its 97 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 163 lines aren’t shown here.
This diff is large: its 72 lines aren’t shown here.
This diff is large: its 92 lines aren’t shown here.
This diff is large: its 47 lines aren’t shown here.
This diff is large: its 58 lines aren’t shown here.
This diff is large: its 185 lines aren’t shown here.
This diff is large: its 55 lines aren’t shown here.
This diff is large: its 58 lines aren’t shown here.
This diff is large: its 25 lines aren’t shown here.
This diff is large: its 72 lines aren’t shown here.
This diff is large: its 35 lines aren’t shown here.
This diff is large: its 7 lines aren’t shown here.
This diff is large: its 41 lines aren’t shown here.
This diff is large: its 57 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 63 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 14 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 37 lines aren’t shown here.
This diff is large: its 32 lines aren’t shown here.
This diff is large: its 84 lines aren’t shown here.
This diff is large: its 127 lines aren’t shown here.
This diff is large: its 87 lines aren’t shown here.
This diff is large: its 64 lines aren’t shown here.
This diff is large: its 39 lines aren’t shown here.
This diff is large: its 8 lines aren’t shown here.
This diff is large: its 52 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 39 lines aren’t shown here.
This diff is large: its 2 lines aren’t shown here.
This diff is large: its 2 lines aren’t shown here.
This diff is large: its 2 lines aren’t shown here.
This diff is large: its 2 lines aren’t shown here.
This diff is large: its 38 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 33 lines aren’t shown here.
This diff is large: its 31 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 30 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 49 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 15 lines aren’t shown here.
This diff is large: its 26 lines aren’t shown here.
This diff is large: its 28 lines aren’t shown here.
This diff is large: its 54 lines aren’t shown here.
This diff is large: its 167 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 160 lines aren’t shown here.
This diff is large: its 31 lines aren’t shown here.
This diff is large: its 48 lines aren’t shown here.
This diff is large: its 137 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 53 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 32 lines aren’t shown here.
This diff is large: its 38 lines aren’t shown here.
This diff is large: its 57 lines aren’t shown here.
This diff is large: its 84 lines aren’t shown here.
This diff is large: its 65 lines aren’t shown here.
This diff is large: its 136 lines aren’t shown here.
This diff is large: its 62 lines aren’t shown here.
This diff is large: its 150 lines aren’t shown here.
This diff is large: its 221 lines aren’t shown here.
This diff is large: its 33 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 32 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 24 lines aren’t shown here.
This diff is large: its 41 lines aren’t shown here.
This diff is large: its 56 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 34 lines aren’t shown here.
This diff is large: its 32 lines aren’t shown here.
This diff is large: its 77 lines aren’t shown here.
This diff is large: its 10 lines aren’t shown here.
This diff is large: its 68 lines aren’t shown here.
This diff is large: its 35 lines aren’t shown here.
This diff is large: its 90 lines aren’t shown here.
This diff is large: its 41 lines aren’t shown here.
This diff is large: its 57 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 39 lines aren’t shown here.
This diff is large: its 23 lines aren’t shown here.
This diff is large: its 273 lines aren’t shown here.
This diff is large: its 202 lines aren’t shown here.
This diff is large: its 45 lines aren’t shown here.
This diff is large: its 160 lines aren’t shown here.
This diff is large: its 484 lines aren’t shown here.
This diff is large: its 20 lines aren’t shown here.
File renamed without changes.
This diff is large: its 25 lines aren’t shown here.
This diff is large: its 45 lines aren’t shown here.
This diff is large: its 13 lines aren’t shown here.
This diff is large: its 31 lines aren’t shown here.
This diff is large: its 27 lines aren’t shown here.
This diff is large: its 84 lines aren’t shown here.
This diff is large: its 11 lines aren’t shown here.
This diff is large: its 29 lines aren’t shown here.
This diff is large: its 36 lines aren’t shown here.
This diff is large: its 42 lines aren’t shown here.
This diff is large: its 21 lines aren’t shown here.
This diff is large: its 62 lines aren’t shown here.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
This diff is large: its 8 lines aren’t shown here.
File renamed without changes.
File renamed without changes.
This diff is large: its 56 lines aren’t shown here.
This diff is large: its 15 lines aren’t shown here.
This diff is large: its 102 lines aren’t shown here.
This diff is large: its 63 lines aren’t shown here.
This diff is larger than a page shows: the files after these aren’t listed. Clone the repository to see all of it.