aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/00-INDEX28
-rw-r--r--Documentation/ABI/stable/sysfs-class-tpm22
-rw-r--r--Documentation/ABI/testing/sysfs-bus-amba20
-rw-r--r--Documentation/ABI/testing/sysfs-bus-event_source-devices-events6
-rw-r--r--Documentation/ABI/testing/sysfs-bus-event_source-devices-hv_24x722
-rw-r--r--Documentation/ABI/testing/sysfs-class-cxl67
-rw-r--r--Documentation/ABI/testing/sysfs-class-power42
-rw-r--r--Documentation/ABI/testing/sysfs-driver-input-axp-pek11
-rw-r--r--Documentation/ABI/testing/sysfs-kernel-livepatch44
-rw-r--r--Documentation/Changes6
-rw-r--r--Documentation/CodingStyle1
-rw-r--r--Documentation/DocBook/80211.tmpl5
-rw-r--r--Documentation/DocBook/Makefile2
-rw-r--r--Documentation/DocBook/crypto-API.tmpl2
-rw-r--r--Documentation/DocBook/kgdb.tmpl81
-rw-r--r--Documentation/DocBook/media/v4l/controls.xml11
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-srggb10.xml2
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-srggb10alaw8.xml2
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml2
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-srggb10p.xml99
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-srggb12.xml2
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt.xml1
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml8
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml8
-rw-r--r--Documentation/RCU/stallwarn.txt16
-rw-r--r--Documentation/RCU/trace.txt32
-rw-r--r--Documentation/SubmittingPatches452
-rw-r--r--Documentation/acpi/enumeration.txt2
-rw-r--r--Documentation/arm/00-INDEX12
-rw-r--r--Documentation/arm64/legacy_instructions.txt12
-rw-r--r--Documentation/blackfin/Makefile2
-rw-r--r--Documentation/cachetlb.txt8
-rw-r--r--Documentation/cgroups/00-INDEX2
-rw-r--r--Documentation/cgroups/unified-hierarchy.txt79
-rw-r--r--Documentation/cpu-freq/intel-pstate.txt8
-rw-r--r--Documentation/devicetree/bindings/arm/brcm-brcmstb.txt4
-rw-r--r--Documentation/devicetree/bindings/arm/cpus.txt1
-rw-r--r--Documentation/devicetree/bindings/arm/l2cc.txt10
-rw-r--r--Documentation/devicetree/bindings/arm/msm/timer.txt2
-rw-r--r--Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-ahb.txt5
-rw-r--r--Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt6
-rw-r--r--Documentation/devicetree/bindings/ata/ahci-platform.txt9
-rw-r--r--Documentation/devicetree/bindings/ata/cavium-compact-flash.txt2
-rw-r--r--Documentation/devicetree/bindings/ata/tegra-sata.txt4
-rw-r--r--Documentation/devicetree/bindings/c6x/dscr.txt2
-rw-r--r--Documentation/devicetree/bindings/devfreq/event/exynos-ppmu.txt110
-rw-r--r--Documentation/devicetree/bindings/dma/renesas,rcar-dmac.txt2
-rw-r--r--Documentation/devicetree/bindings/fpga/altera-socfpga-fpga-mgr.txt17
-rw-r--r--Documentation/devicetree/bindings/fuse/nvidia,tegra20-fuse.txt10
-rw-r--r--Documentation/devicetree/bindings/gpio/fujitsu,mb86s70-gpio.txt20
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio-max732x.txt59
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt2
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio-sx150x.txt40
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio-xgene-sb.txt32
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio.txt5
-rw-r--r--Documentation/devicetree/bindings/gpio/mrvl-gpio.txt4
-rw-r--r--Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt8
-rw-r--r--Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt10
-rw-r--r--Documentation/devicetree/bindings/iio/adc/xilinx-xadc.txt2
-rw-r--r--Documentation/devicetree/bindings/input/e3x0-button.txt25
-rw-r--r--Documentation/devicetree/bindings/input/regulator-haptic.txt21
-rw-r--r--Documentation/devicetree/bindings/input/sun4i-lradc-keys.txt62
-rw-r--r--Documentation/devicetree/bindings/input/touchscreen/sun4i.txt4
-rw-r--r--Documentation/devicetree/bindings/input/touchscreen/ti-tsc-adc.txt15
-rw-r--r--Documentation/devicetree/bindings/input/tps65218-pwrbutton.txt17
-rw-r--r--Documentation/devicetree/bindings/mailbox/altera-mailbox.txt49
-rw-r--r--Documentation/devicetree/bindings/media/atmel-isi.txt2
-rw-r--r--Documentation/devicetree/bindings/media/i2c/nokia,smia.txt63
-rw-r--r--Documentation/devicetree/bindings/media/sunxi-ir.txt4
-rw-r--r--Documentation/devicetree/bindings/media/ti-am437x-vpfe.txt61
-rw-r--r--Documentation/devicetree/bindings/media/video-interfaces.txt5
-rw-r--r--Documentation/devicetree/bindings/mfd/max77686.txt14
-rw-r--r--Documentation/devicetree/bindings/mfd/max77693.txt45
-rw-r--r--Documentation/devicetree/bindings/misc/nvidia,tegra20-apbmisc.txt9
-rw-r--r--Documentation/devicetree/bindings/mmc/mmc-pwrseq-emmc.txt25
-rw-r--r--Documentation/devicetree/bindings/mmc/mmc-pwrseq-simple.txt25
-rw-r--r--Documentation/devicetree/bindings/mmc/mmc.txt62
-rw-r--r--Documentation/devicetree/bindings/mmc/nvidia,tegra20-sdhci.txt6
-rw-r--r--Documentation/devicetree/bindings/mmc/sdhci-fujitsu.txt30
-rw-r--r--Documentation/devicetree/bindings/mmc/sdhci-pxa.txt15
-rw-r--r--Documentation/devicetree/bindings/mtd/fsmc-nand.txt2
-rw-r--r--Documentation/devicetree/bindings/net/amd-xgbe-phy.txt21
-rw-r--r--Documentation/devicetree/bindings/net/broadcom-systemport.txt2
-rw-r--r--Documentation/devicetree/bindings/net/davicom-dm9000.txt4
-rw-r--r--Documentation/devicetree/bindings/net/fsl-fec.txt2
-rw-r--r--Documentation/devicetree/bindings/net/fsl-tsec-phy.txt11
-rw-r--r--Documentation/devicetree/bindings/net/hisilicon-hip04-net.txt88
-rw-r--r--Documentation/devicetree/bindings/net/keystone-netcp.txt197
-rw-r--r--Documentation/devicetree/bindings/net/nfc/st21nfca.txt11
-rw-r--r--Documentation/devicetree/bindings/net/nfc/st21nfcb.txt4
-rw-r--r--Documentation/devicetree/bindings/net/rockchip-dwmac.txt68
-rw-r--r--Documentation/devicetree/bindings/net/sti-dwmac.txt14
-rw-r--r--Documentation/devicetree/bindings/net/stmmac.txt1
-rw-r--r--Documentation/devicetree/bindings/net/wireless/qcom,ath10k.txt30
-rw-r--r--Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt8
-rw-r--r--Documentation/devicetree/bindings/pci/versatile.txt59
-rw-r--r--Documentation/devicetree/bindings/phy/phy-miphy365x.txt15
-rw-r--r--Documentation/devicetree/bindings/phy/phy-stih407-usb.txt10
-rw-r--r--Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt1
-rw-r--r--Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-pinmux.txt3
-rw-r--r--Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-xusb-padctl.txt4
-rw-r--r--Documentation/devicetree/bindings/pinctrl/qcom,msm8916-pinctrl.txt186
-rw-r--r--Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt9
-rw-r--r--Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt12
-rw-r--r--Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt35
-rw-r--r--Documentation/devicetree/bindings/pinctrl/xlnx,zynq-pinctrl.txt104
-rw-r--r--Documentation/devicetree/bindings/power/ltc2941.txt27
-rw-r--r--Documentation/devicetree/bindings/power/reset/ltc2952-poweroff.txt13
-rw-r--r--Documentation/devicetree/bindings/power/rockchip-io-domain.txt2
-rw-r--r--Documentation/devicetree/bindings/powerpc/fsl/fman.txt70
-rw-r--r--Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt7
-rw-r--r--Documentation/devicetree/bindings/regulator/da9211.txt7
-rw-r--r--Documentation/devicetree/bindings/regulator/isl9305.txt4
-rw-r--r--Documentation/devicetree/bindings/regulator/mt6397-regulator.txt217
-rw-r--r--Documentation/devicetree/bindings/regulator/pfuze100.txt94
-rw-r--r--Documentation/devicetree/bindings/rtc/nvidia,tegra20-rtc.txt4
-rw-r--r--Documentation/devicetree/bindings/security/tpm/st33zp24-i2c.txt36
-rw-r--r--Documentation/devicetree/bindings/serial/of-serial.txt5
-rw-r--r--Documentation/devicetree/bindings/serio/allwinner,sun4i-ps2.txt23
-rw-r--r--Documentation/devicetree/bindings/soc/fsl/bman.txt12
-rw-r--r--Documentation/devicetree/bindings/soc/fsl/qman.txt14
-rw-r--r--Documentation/devicetree/bindings/sound/cdns,xtfpga-i2s.txt18
-rw-r--r--Documentation/devicetree/bindings/sound/designware-i2s.txt31
-rw-r--r--Documentation/devicetree/bindings/sound/ingenic,jz4740-i2s.txt23
-rw-r--r--Documentation/devicetree/bindings/sound/max98357a.txt14
-rw-r--r--Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5677.txt67
-rw-r--r--Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt5
-rw-r--r--Documentation/devicetree/bindings/sound/nvidia,tegra30-hda.txt4
-rw-r--r--Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt5
-rw-r--r--Documentation/devicetree/bindings/sound/pcm512x.txt28
-rw-r--r--Documentation/devicetree/bindings/sound/samsung-i2s.txt22
-rw-r--r--Documentation/devicetree/bindings/sound/simple-card.txt5
-rw-r--r--Documentation/devicetree/bindings/sound/st,sta32x.txt92
-rw-r--r--Documentation/devicetree/bindings/sound/tlv320aic3x.txt10
-rw-r--r--Documentation/devicetree/bindings/sound/ts3a227e.txt5
-rw-r--r--Documentation/devicetree/bindings/sound/wm8904.txt2
-rw-r--r--Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.txt4
-rw-r--r--Documentation/devicetree/bindings/spi/sh-msiof.txt16
-rw-r--r--Documentation/devicetree/bindings/spi/spi-sirf.txt41
-rw-r--r--Documentation/devicetree/bindings/spi/spi-st-ssc.txt40
-rw-r--r--Documentation/devicetree/bindings/submitting-patches.txt23
-rw-r--r--Documentation/devicetree/bindings/thermal/tegra-soctherm.txt4
-rw-r--r--Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt4
-rw-r--r--Documentation/devicetree/bindings/unittest.txt59
-rw-r--r--Documentation/devicetree/bindings/usb/nvidia,tegra20-ehci.txt5
-rw-r--r--Documentation/devicetree/bindings/usb/nvidia,tegra20-usb-phy.txt5
-rw-r--r--Documentation/devicetree/bindings/vendor-prefixes.txt11
-rw-r--r--Documentation/devicetree/bindings/video/ti,dra7-dss.txt69
-rw-r--r--Documentation/devicetree/bindings/video/ti,opa362.txt38
-rw-r--r--Documentation/devicetree/overlay-notes.txt4
-rw-r--r--Documentation/dmaengine/00-INDEX8
-rw-r--r--Documentation/driver-model/bus.txt2
-rw-r--r--Documentation/filesystems/fiemap.txt3
-rw-r--r--Documentation/filesystems/inotify.txt197
-rw-r--r--Documentation/filesystems/nfs/pnfs.txt13
-rw-r--r--Documentation/filesystems/ocfs2.txt4
-rw-r--r--Documentation/filesystems/proc.txt25
-rw-r--r--Documentation/filesystems/seq_file.txt12
-rw-r--r--Documentation/filesystems/xfs.txt22
-rw-r--r--Documentation/futex-requeue-pi.txt8
-rw-r--r--Documentation/gpio/board.txt2
-rw-r--r--Documentation/hwmon/ina2xx23
-rw-r--r--Documentation/kernel-parameters.txt17
-rw-r--r--Documentation/kprobes.txt3
-rw-r--r--Documentation/locking/00-INDEX16
-rw-r--r--Documentation/locking/lockdep-design.txt2
-rw-r--r--Documentation/locking/lockstat.txt5
-rw-r--r--Documentation/memory-barriers.txt46
-rw-r--r--Documentation/misc-devices/mei/mei-client-bus.txt17
-rw-r--r--Documentation/misc-devices/mei/mei.txt126
-rw-r--r--Documentation/networking/00-INDEX8
-rw-r--r--Documentation/networking/can.txt2
-rw-r--r--Documentation/networking/filter.txt4
-rw-r--r--Documentation/networking/ip-sysctl.txt29
-rw-r--r--Documentation/networking/netlink_mmap.txt13
-rw-r--r--Documentation/networking/nf_conntrack-sysctl.txt3
-rw-r--r--Documentation/networking/openvswitch.txt13
-rw-r--r--Documentation/networking/timestamping.txt21
-rw-r--r--Documentation/networking/timestamping/txtimestamp.c38
-rw-r--r--Documentation/oops-tracing.txt2
-rw-r--r--Documentation/power/s2ram.txt4
-rw-r--r--Documentation/rfkill.txt3
-rw-r--r--Documentation/s390/Debugging390.txt493
-rw-r--r--Documentation/scheduler/completion.txt236
-rw-r--r--Documentation/security/keys.txt2
-rw-r--r--Documentation/sysctl/kernel.txt1
-rw-r--r--Documentation/sysctl/net.txt8
-rw-r--r--Documentation/sysctl/vm.txt14
-rw-r--r--Documentation/trace/ftrace.txt2
-rw-r--r--Documentation/usb/usbmon.txt2
-rw-r--r--Documentation/video4linux/CQcam.txt205
-rw-r--r--Documentation/video4linux/README.tlg230047
-rw-r--r--Documentation/video4linux/v4l2-framework.txt25
-rw-r--r--Documentation/video4linux/w9966.txt33
-rw-r--r--Documentation/vm/cleancache.txt2
-rw-r--r--Documentation/vm/pagemap.txt8
-rw-r--r--Documentation/vm/remap_file_pages.txt7
-rw-r--r--Documentation/x86/entry_64.txt18
-rw-r--r--Documentation/x86/x86_64/kernel-stacks8
199 files changed, 4544 insertions, 1392 deletions
diff --git a/Documentation/00-INDEX b/Documentation/00-INDEX
index 1750fcef1ab4..cd077ca0e1b8 100644
--- a/Documentation/00-INDEX
+++ b/Documentation/00-INDEX
@@ -29,8 +29,6 @@ DMA-ISA-LPC.txt
29 - How to do DMA with ISA (and LPC) devices. 29 - How to do DMA with ISA (and LPC) devices.
30DMA-attributes.txt 30DMA-attributes.txt
31 - listing of the various possible attributes a DMA region can have 31 - listing of the various possible attributes a DMA region can have
32dmatest.txt
33 - how to compile, configure and use the dmatest system.
34DocBook/ 32DocBook/
35 - directory with DocBook templates etc. for kernel documentation. 33 - directory with DocBook templates etc. for kernel documentation.
36EDID/ 34EDID/
@@ -163,8 +161,6 @@ digsig.txt
163 -info on the Digital Signature Verification API 161 -info on the Digital Signature Verification API
164dma-buf-sharing.txt 162dma-buf-sharing.txt
165 - the DMA Buffer Sharing API Guide 163 - the DMA Buffer Sharing API Guide
166dmaengine.txt
167 -the DMA Engine API Guide
168dontdiff 164dontdiff
169 - file containing a list of files that should never be diff'ed. 165 - file containing a list of files that should never be diff'ed.
170driver-model/ 166driver-model/
@@ -209,6 +205,8 @@ hid/
209 - directory with information on human interface devices 205 - directory with information on human interface devices
210highuid.txt 206highuid.txt
211 - notes on the change from 16 bit to 32 bit user/group IDs. 207 - notes on the change from 16 bit to 32 bit user/group IDs.
208hsi.txt
209 - HSI subsystem overview.
212hwspinlock.txt 210hwspinlock.txt
213 - hardware spinlock provides hardware assistance for synchronization 211 - hardware spinlock provides hardware assistance for synchronization
214timers/ 212timers/
@@ -277,6 +275,8 @@ kprobes.txt
277 - documents the kernel probes debugging feature. 275 - documents the kernel probes debugging feature.
278kref.txt 276kref.txt
279 - docs on adding reference counters (krefs) to kernel objects. 277 - docs on adding reference counters (krefs) to kernel objects.
278kselftest.txt
279 - small unittests for (some) individual codepaths in the kernel.
280laptops/ 280laptops/
281 - directory with laptop related info and laptop driver documentation. 281 - directory with laptop related info and laptop driver documentation.
282ldm.txt 282ldm.txt
@@ -285,22 +285,22 @@ leds/
285 - directory with info about LED handling under Linux. 285 - directory with info about LED handling under Linux.
286local_ops.txt 286local_ops.txt
287 - semantics and behavior of local atomic operations. 287 - semantics and behavior of local atomic operations.
288lockdep-design.txt
289 - documentation on the runtime locking correctness validator.
290locking/ 288locking/
291 - directory with info about kernel locking primitives 289 - directory with info about kernel locking primitives
292lockstat.txt
293 - info on collecting statistics on locks (and contention).
294lockup-watchdogs.txt 290lockup-watchdogs.txt
295 - info on soft and hard lockup detectors (aka nmi_watchdog). 291 - info on soft and hard lockup detectors (aka nmi_watchdog).
296logo.gif 292logo.gif
297 - full colour GIF image of Linux logo (penguin - Tux). 293 - full colour GIF image of Linux logo (penguin - Tux).
298logo.txt 294logo.txt
299 - info on creator of above logo & site to get additional images from. 295 - info on creator of above logo & site to get additional images from.
296lzo.txt
297 - kernel LZO decompressor input formats
300m68k/ 298m68k/
301 - directory with info about Linux on Motorola 68k architecture. 299 - directory with info about Linux on Motorola 68k architecture.
302magic-number.txt 300magic-number.txt
303 - list of magic numbers used to mark/protect kernel data structures. 301 - list of magic numbers used to mark/protect kernel data structures.
302mailbox.txt
303 - How to write drivers for the common mailbox framework (IPC).
304md.txt 304md.txt
305 - info on boot arguments for the multiple devices driver. 305 - info on boot arguments for the multiple devices driver.
306media-framework.txt 306media-framework.txt
@@ -327,8 +327,6 @@ mtd/
327 - directory with info about memory technology devices (flash) 327 - directory with info about memory technology devices (flash)
328mono.txt 328mono.txt
329 - how to execute Mono-based .NET binaries with the help of BINFMT_MISC. 329 - how to execute Mono-based .NET binaries with the help of BINFMT_MISC.
330mutex-design.txt
331 - info on the generic mutex subsystem.
332namespaces/ 330namespaces/
333 - directory with various information about namespaces 331 - directory with various information about namespaces
334netlabel/ 332netlabel/
@@ -395,10 +393,6 @@ robust-futexes.txt
395 - a description of what robust futexes are. 393 - a description of what robust futexes are.
396rpmsg.txt 394rpmsg.txt
397 - info on the Remote Processor Messaging (rpmsg) Framework 395 - info on the Remote Processor Messaging (rpmsg) Framework
398rt-mutex-design.txt
399 - description of the RealTime mutex implementation design.
400rt-mutex.txt
401 - desc. of RT-mutex subsystem with PI (Priority Inheritance) support.
402rtc.txt 396rtc.txt
403 - notes on how to use the Real Time Clock (aka CMOS clock) driver. 397 - notes on how to use the Real Time Clock (aka CMOS clock) driver.
404s390/ 398s390/
@@ -425,8 +419,6 @@ sparse.txt
425 - info on how to obtain and use the sparse tool for typechecking. 419 - info on how to obtain and use the sparse tool for typechecking.
426spi/ 420spi/
427 - overview of Linux kernel Serial Peripheral Interface (SPI) support. 421 - overview of Linux kernel Serial Peripheral Interface (SPI) support.
428spinlocks.txt
429 - info on using spinlocks to provide exclusive access in kernel.
430stable_api_nonsense.txt 422stable_api_nonsense.txt
431 - info on why the kernel does not have a stable in-kernel api or abi. 423 - info on why the kernel does not have a stable in-kernel api or abi.
432stable_kernel_rules.txt 424stable_kernel_rules.txt
@@ -483,10 +475,10 @@ wimax/
483 - directory with info about Intel Wireless Wimax Connections 475 - directory with info about Intel Wireless Wimax Connections
484workqueue.txt 476workqueue.txt
485 - information on the Concurrency Managed Workqueue implementation 477 - information on the Concurrency Managed Workqueue implementation
486ww-mutex-design.txt
487 - Intro to Mutex wait/would deadlock handling.s
488x86/x86_64/ 478x86/x86_64/
489 - directory with info on Linux support for AMD x86-64 (Hammer) machines. 479 - directory with info on Linux support for AMD x86-64 (Hammer) machines.
480xillybus.txt
481 - Overview and basic ui of xillybus driver
490xtensa/ 482xtensa/
491 - directory with documents relating to arch/xtensa port/implementation 483 - directory with documents relating to arch/xtensa port/implementation
492xz.txt 484xz.txt
diff --git a/Documentation/ABI/stable/sysfs-class-tpm b/Documentation/ABI/stable/sysfs-class-tpm
index a60b45e2493b..9f790eebb5d2 100644
--- a/Documentation/ABI/stable/sysfs-class-tpm
+++ b/Documentation/ABI/stable/sysfs-class-tpm
@@ -1,4 +1,4 @@
1What: /sys/class/misc/tpmX/device/ 1What: /sys/class/tpm/tpmX/device/
2Date: April 2005 2Date: April 2005
3KernelVersion: 2.6.12 3KernelVersion: 2.6.12
4Contact: tpmdd-devel@lists.sf.net 4Contact: tpmdd-devel@lists.sf.net
@@ -6,7 +6,7 @@ Description: The device/ directory under a specific TPM instance exposes
6 the properties of that TPM chip 6 the properties of that TPM chip
7 7
8 8
9What: /sys/class/misc/tpmX/device/active 9What: /sys/class/tpm/tpmX/device/active
10Date: April 2006 10Date: April 2006
11KernelVersion: 2.6.17 11KernelVersion: 2.6.17
12Contact: tpmdd-devel@lists.sf.net 12Contact: tpmdd-devel@lists.sf.net
@@ -18,7 +18,7 @@ Description: The "active" property prints a '1' if the TPM chip is accepting
18 section 17 for more information on which commands are 18 section 17 for more information on which commands are
19 available. 19 available.
20 20
21What: /sys/class/misc/tpmX/device/cancel 21What: /sys/class/tpm/tpmX/device/cancel
22Date: June 2005 22Date: June 2005
23KernelVersion: 2.6.13 23KernelVersion: 2.6.13
24Contact: tpmdd-devel@lists.sf.net 24Contact: tpmdd-devel@lists.sf.net
@@ -26,7 +26,7 @@ Description: The "cancel" property allows you to cancel the currently
26 pending TPM command. Writing any value to cancel will call the 26 pending TPM command. Writing any value to cancel will call the
27 TPM vendor specific cancel operation. 27 TPM vendor specific cancel operation.
28 28
29What: /sys/class/misc/tpmX/device/caps 29What: /sys/class/tpm/tpmX/device/caps
30Date: April 2005 30Date: April 2005
31KernelVersion: 2.6.12 31KernelVersion: 2.6.12
32Contact: tpmdd-devel@lists.sf.net 32Contact: tpmdd-devel@lists.sf.net
@@ -43,7 +43,7 @@ Description: The "caps" property contains TPM manufacturer and version info.
43 the chip supports. Firmware version is that of the chip and 43 the chip supports. Firmware version is that of the chip and
44 is manufacturer specific. 44 is manufacturer specific.
45 45
46What: /sys/class/misc/tpmX/device/durations 46What: /sys/class/tpm/tpmX/device/durations
47Date: March 2011 47Date: March 2011
48KernelVersion: 3.1 48KernelVersion: 3.1
49Contact: tpmdd-devel@lists.sf.net 49Contact: tpmdd-devel@lists.sf.net
@@ -66,7 +66,7 @@ Description: The "durations" property shows the 3 vendor-specific values
66 scaled to be displayed in usecs. In this case "[adjusted]" 66 scaled to be displayed in usecs. In this case "[adjusted]"
67 will be displayed in place of "[original]". 67 will be displayed in place of "[original]".
68 68
69What: /sys/class/misc/tpmX/device/enabled 69What: /sys/class/tpm/tpmX/device/enabled
70Date: April 2006 70Date: April 2006
71KernelVersion: 2.6.17 71KernelVersion: 2.6.17
72Contact: tpmdd-devel@lists.sf.net 72Contact: tpmdd-devel@lists.sf.net
@@ -75,7 +75,7 @@ Description: The "enabled" property prints a '1' if the TPM chip is enabled,
75 may be visible but produce a '0' after some operation that 75 may be visible but produce a '0' after some operation that
76 disables the TPM. 76 disables the TPM.
77 77
78What: /sys/class/misc/tpmX/device/owned 78What: /sys/class/tpm/tpmX/device/owned
79Date: April 2006 79Date: April 2006
80KernelVersion: 2.6.17 80KernelVersion: 2.6.17
81Contact: tpmdd-devel@lists.sf.net 81Contact: tpmdd-devel@lists.sf.net
@@ -83,7 +83,7 @@ Description: The "owned" property produces a '1' if the TPM_TakeOwnership
83 ordinal has been executed successfully in the chip. A '0' 83 ordinal has been executed successfully in the chip. A '0'
84 indicates that ownership hasn't been taken. 84 indicates that ownership hasn't been taken.
85 85
86What: /sys/class/misc/tpmX/device/pcrs 86What: /sys/class/tpm/tpmX/device/pcrs
87Date: April 2005 87Date: April 2005
88KernelVersion: 2.6.12 88KernelVersion: 2.6.12
89Contact: tpmdd-devel@lists.sf.net 89Contact: tpmdd-devel@lists.sf.net
@@ -106,7 +106,7 @@ Description: The "pcrs" property will dump the current value of all Platform
106 1.2 chips, PCRs represent SHA-1 hashes, which are 20 bytes 106 1.2 chips, PCRs represent SHA-1 hashes, which are 20 bytes
107 long. Use the "caps" property to determine TPM version. 107 long. Use the "caps" property to determine TPM version.
108 108
109What: /sys/class/misc/tpmX/device/pubek 109What: /sys/class/tpm/tpmX/device/pubek
110Date: April 2005 110Date: April 2005
111KernelVersion: 2.6.12 111KernelVersion: 2.6.12
112Contact: tpmdd-devel@lists.sf.net 112Contact: tpmdd-devel@lists.sf.net
@@ -158,7 +158,7 @@ Description: The "pubek" property will return the TPM's public endorsement
158 Modulus Length: 256 (bytes) 158 Modulus Length: 256 (bytes)
159 Modulus: The 256 byte Endorsement Key modulus 159 Modulus: The 256 byte Endorsement Key modulus
160 160
161What: /sys/class/misc/tpmX/device/temp_deactivated 161What: /sys/class/tpm/tpmX/device/temp_deactivated
162Date: April 2006 162Date: April 2006
163KernelVersion: 2.6.17 163KernelVersion: 2.6.17
164Contact: tpmdd-devel@lists.sf.net 164Contact: tpmdd-devel@lists.sf.net
@@ -167,7 +167,7 @@ Description: The "temp_deactivated" property returns a '1' if the chip has
167 cycle. Whether a warm boot (reboot) will clear a TPM chip 167 cycle. Whether a warm boot (reboot) will clear a TPM chip
168 from a temp_deactivated state is platform specific. 168 from a temp_deactivated state is platform specific.
169 169
170What: /sys/class/misc/tpmX/device/timeouts 170What: /sys/class/tpm/tpmX/device/timeouts
171Date: March 2011 171Date: March 2011
172KernelVersion: 3.1 172KernelVersion: 3.1
173Contact: tpmdd-devel@lists.sf.net 173Contact: tpmdd-devel@lists.sf.net
diff --git a/Documentation/ABI/testing/sysfs-bus-amba b/Documentation/ABI/testing/sysfs-bus-amba
new file mode 100644
index 000000000000..e7b54677cfbe
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-bus-amba
@@ -0,0 +1,20 @@
1What: /sys/bus/amba/devices/.../driver_override
2Date: September 2014
3Contact: Antonios Motakis <a.motakis@virtualopensystems.com>
4Description:
5 This file allows the driver for a device to be specified which
6 will override standard OF, ACPI, ID table, and name matching.
7 When specified, only a driver with a name matching the value
8 written to driver_override will have an opportunity to bind to
9 the device. The override is specified by writing a string to the
10 driver_override file (echo vfio-amba > driver_override) and may
11 be cleared with an empty string (echo > driver_override).
12 This returns the device to standard matching rules binding.
13 Writing to driver_override does not automatically unbind the
14 device from its current driver or make any attempt to
15 automatically load the specified driver. If no driver with a
16 matching name is currently loaded in the kernel, the device will
17 not bind to any driver. This also allows devices to opt-out of
18 driver binding using a driver_override name such as "none".
19 Only a single driver may be specified in the override, there is
20 no support for parsing delimiters.
diff --git a/Documentation/ABI/testing/sysfs-bus-event_source-devices-events b/Documentation/ABI/testing/sysfs-bus-event_source-devices-events
index 20979f8b3edb..505f080d20a1 100644
--- a/Documentation/ABI/testing/sysfs-bus-event_source-devices-events
+++ b/Documentation/ABI/testing/sysfs-bus-event_source-devices-events
@@ -52,12 +52,18 @@ Description: Per-pmu performance monitoring events specific to the running syste
52 event=0x2abc 52 event=0x2abc
53 event=0x423,inv,cmask=0x3 53 event=0x423,inv,cmask=0x3
54 domain=0x1,offset=0x8,starting_index=0xffff 54 domain=0x1,offset=0x8,starting_index=0xffff
55 domain=0x1,offset=0x8,core=?
55 56
56 Each of the assignments indicates a value to be assigned to a 57 Each of the assignments indicates a value to be assigned to a
57 particular set of bits (as defined by the format file 58 particular set of bits (as defined by the format file
58 corresponding to the <term>) in the perf_event structure passed 59 corresponding to the <term>) in the perf_event structure passed
59 to the perf_open syscall. 60 to the perf_open syscall.
60 61
62 In the case of the last example, a value replacing "?" would
63 need to be provided by the user selecting the particular event.
64 This is referred to as "event parameterization". Event
65 parameters have the format 'param=?'.
66
61What: /sys/bus/event_source/devices/<pmu>/events/<event>.unit 67What: /sys/bus/event_source/devices/<pmu>/events/<event>.unit
62Date: 2014/02/24 68Date: 2014/02/24
63Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> 69Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
diff --git a/Documentation/ABI/testing/sysfs-bus-event_source-devices-hv_24x7 b/Documentation/ABI/testing/sysfs-bus-event_source-devices-hv_24x7
index 32f3f5f8bba2..f893337570c1 100644
--- a/Documentation/ABI/testing/sysfs-bus-event_source-devices-hv_24x7
+++ b/Documentation/ABI/testing/sysfs-bus-event_source-devices-hv_24x7
@@ -21,3 +21,25 @@ Contact: Linux on PowerPC Developer List <linuxppc-dev@lists.ozlabs.org>
21Description: 21Description:
22 Exposes the "version" field of the 24x7 catalog. This is also 22 Exposes the "version" field of the 24x7 catalog. This is also
23 extractable from the provided binary "catalog" sysfs entry. 23 extractable from the provided binary "catalog" sysfs entry.
24
25What: /sys/bus/event_source/devices/hv_24x7/event_descs/<event-name>
26Date: February 2014
27Contact: Linux on PowerPC Developer List <linuxppc-dev@lists.ozlabs.org>
28Description:
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
36What: /sys/bus/event_source/devices/hv_24x7/event_long_descs/<event-name>
37Date: February 2014
38Contact: Linux on PowerPC Developer List <linuxppc-dev@lists.ozlabs.org>
39Description:
40 Provides the "long" description of a particular event as
41 provided by the firmware. If firmware does not provide a
42 description, no file will be created.
43
44 Note that the event-name lacks the domain suffix appended for
45 events in the events/ dir.
diff --git a/Documentation/ABI/testing/sysfs-class-cxl b/Documentation/ABI/testing/sysfs-class-cxl
index 554405ec1955..3680364b4048 100644
--- a/Documentation/ABI/testing/sysfs-class-cxl
+++ b/Documentation/ABI/testing/sysfs-class-cxl
@@ -1,3 +1,9 @@
1Note: Attributes that are shared between devices are stored in the directory
2pointed to by the symlink device/.
3Example: 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
1Slave contexts (eg. /sys/class/cxl/afu0.0s): 7Slave contexts (eg. /sys/class/cxl/afu0.0s):
2 8
3What: /sys/class/cxl/<afu>/irqs_max 9What: /sys/class/cxl/<afu>/irqs_max
@@ -67,7 +73,7 @@ Contact: linuxppc-dev@lists.ozlabs.org
67Description: read only 73Description: read only
68 Decimal value of the current version of the kernel/user API. 74 Decimal value of the current version of the kernel/user API.
69 75
70What: /sys/class/cxl/<afu>/api_version_com 76What: /sys/class/cxl/<afu>/api_version_compatible
71Date: September 2014 77Date: September 2014
72Contact: linuxppc-dev@lists.ozlabs.org 78Contact: linuxppc-dev@lists.ozlabs.org
73Description: read only 79Description: read only
@@ -75,6 +81,42 @@ Description: read only
75 this this kernel supports. 81 this this kernel supports.
76 82
77 83
84AFU configuration records (eg. /sys/class/cxl/afu0.0/cr0):
85
86An AFU may optionally export one or more PCIe like configuration records, known
87as AFU configuration records, which will show up here (if present).
88
89What: /sys/class/cxl/<afu>/cr<config num>/vendor
90Date: February 2015
91Contact: linuxppc-dev@lists.ozlabs.org
92Description: read only
93 Hexadecimal value of the vendor ID found in this AFU
94 configuration record.
95
96What: /sys/class/cxl/<afu>/cr<config num>/device
97Date: February 2015
98Contact: linuxppc-dev@lists.ozlabs.org
99Description: read only
100 Hexadecimal value of the device ID found in this AFU
101 configuration record.
102
103What: /sys/class/cxl/<afu>/cr<config num>/vendor
104Date: February 2015
105Contact: linuxppc-dev@lists.ozlabs.org
106Description: read only
107 Hexadecimal value of the class code found in this AFU
108 configuration record.
109
110What: /sys/class/cxl/<afu>/cr<config num>/config
111Date: February 2015
112Contact: linuxppc-dev@lists.ozlabs.org
113Description: 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
79Master contexts (eg. /sys/class/cxl/afu0.0m) 121Master contexts (eg. /sys/class/cxl/afu0.0m)
80 122
@@ -106,7 +148,7 @@ Contact: linuxppc-dev@lists.ozlabs.org
106Description: read only 148Description: read only
107 Identifies the CAIA Version the card implements. 149 Identifies the CAIA Version the card implements.
108 150
109What: /sys/class/cxl/<card>/psl_version 151What: /sys/class/cxl/<card>/psl_revision
110Date: September 2014 152Date: September 2014
111Contact: linuxppc-dev@lists.ozlabs.org 153Contact: linuxppc-dev@lists.ozlabs.org
112Description: read only 154Description: read only
@@ -127,3 +169,24 @@ Contact: linuxppc-dev@lists.ozlabs.org
127Description: read only 169Description: read only
128 Will return "user" or "factory" depending on the image loaded 170 Will return "user" or "factory" depending on the image loaded
129 onto the card. 171 onto the card.
172
173What: /sys/class/cxl/<card>/load_image_on_perst
174Date: December 2014
175Contact: linuxppc-dev@lists.ozlabs.org
176Description: 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
187What: /sys/class/cxl/<card>/reset
188Date: October 2014
189Contact: linuxppc-dev@lists.ozlabs.org
190Description: write only
191 Writing 1 will issue a PERST to card which may cause the card
192 to reload the FPGA depending on load_image_on_perst.
diff --git a/Documentation/ABI/testing/sysfs-class-power b/Documentation/ABI/testing/sysfs-class-power
index 909e7602c717..369d2a2d7d3e 100644
--- a/Documentation/ABI/testing/sysfs-class-power
+++ b/Documentation/ABI/testing/sysfs-class-power
@@ -32,3 +32,45 @@ Description:
32 Valid values: 32 Valid values:
33 - 5, 6 or 7 (hours), 33 - 5, 6 or 7 (hours),
34 - 0: disabled. 34 - 0: disabled.
35
36What: /sys/class/power_supply/max77693-charger/device/fast_charge_timer
37Date: January 2015
38KernelVersion: 3.19.0
39Contact: Krzysztof Kozlowski <k.kozlowski@samsung.com>
40Description:
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
50What: /sys/class/power_supply/max77693-charger/device/top_off_threshold_current
51Date: January 2015
52KernelVersion: 3.19.0
53Contact: Krzysztof Kozlowski <k.kozlowski@samsung.com>
54Description:
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
65What: /sys/class/power_supply/max77693-charger/device/top_off_timer
66Date: January 2015
67KernelVersion: 3.19.0
68Contact: Krzysztof Kozlowski <k.kozlowski@samsung.com>
69Description:
70 This entry shows and sets the maximum time the max77693
71 charger operates in top-off charge mode. When the timer expires
72 the device will terminate top-off charge mode (charging current
73 will drop to 0 A) and will trigger interrupt.
74
75 Valid values:
76 - 0 - 70 (minutes), step by 10 (rounded down)
diff --git a/Documentation/ABI/testing/sysfs-driver-input-axp-pek b/Documentation/ABI/testing/sysfs-driver-input-axp-pek
new file mode 100644
index 000000000000..a5e671b9fa79
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-driver-input-axp-pek
@@ -0,0 +1,11 @@
1What: /sys/class/input/input(x)/device/startup
2Date: March 2014
3Contact: Carlo Caione <carlo@caione.org>
4Description: Startup time in us. Board is powered on if the button is pressed
5 for more than <startup_time>
6
7What: /sys/class/input/input(x)/device/shutdown
8Date: March 2014
9Contact: Carlo Caione <carlo@caione.org>
10Description: Shutdown time in us. Board is powered off if the button is pressed
11 for more than <shutdown_time>
diff --git a/Documentation/ABI/testing/sysfs-kernel-livepatch b/Documentation/ABI/testing/sysfs-kernel-livepatch
new file mode 100644
index 000000000000..5bf42a840b22
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-kernel-livepatch
@@ -0,0 +1,44 @@
1What: /sys/kernel/livepatch
2Date: Nov 2014
3KernelVersion: 3.19.0
4Contact: live-patching@vger.kernel.org
5Description:
6 Interface for kernel live patching
7
8 The /sys/kernel/livepatch directory contains subdirectories for
9 each loaded live patch module.
10
11What: /sys/kernel/livepatch/<patch>
12Date: Nov 2014
13KernelVersion: 3.19.0
14Contact: live-patching@vger.kernel.org
15Description:
16 The patch directory contains subdirectories for each kernel
17 object (vmlinux or a module) in which it patched functions.
18
19What: /sys/kernel/livepatch/<patch>/enabled
20Date: Nov 2014
21KernelVersion: 3.19.0
22Contact: live-patching@vger.kernel.org
23Description:
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
28What: /sys/kernel/livepatch/<patch>/<object>
29Date: Nov 2014
30KernelVersion: 3.19.0
31Contact: live-patching@vger.kernel.org
32Description:
33 The object directory contains subdirectories for each function
34 that is patched within the object.
35
36What: /sys/kernel/livepatch/<patch>/<object>/<function>
37Date: Nov 2014
38KernelVersion: 3.19.0
39Contact: live-patching@vger.kernel.org
40Description:
41 The function directory contains attributes regarding the
42 properties and state of the patched function.
43
44 There are currently no such attributes.
diff --git a/Documentation/Changes b/Documentation/Changes
index 74bdda9272a4..646cdaa6e9d1 100644
--- a/Documentation/Changes
+++ b/Documentation/Changes
@@ -21,8 +21,8 @@ running a Linux kernel. Also, not all tools are necessary on all
21systems; obviously, if you don't have any ISDN hardware, for example, 21systems; obviously, if you don't have any ISDN hardware, for example,
22you probably needn't concern yourself with isdn4k-utils. 22you probably needn't concern yourself with isdn4k-utils.
23 23
24o Gnu C 3.2 # gcc --version 24o GNU C 3.2 # gcc --version
25o Gnu make 3.80 # make --version 25o GNU make 3.80 # make --version
26o binutils 2.12 # ld -v 26o binutils 2.12 # ld -v
27o util-linux 2.10o # fdformat --version 27o util-linux 2.10o # fdformat --version
28o module-init-tools 0.9.10 # depmod -V 28o module-init-tools 0.9.10 # depmod -V
@@ -57,7 +57,7 @@ computer.
57Make 57Make
58---- 58----
59 59
60You will need Gnu make 3.80 or later to build the kernel. 60You will need GNU make 3.80 or later to build the kernel.
61 61
62Binutils 62Binutils
63-------- 63--------
diff --git a/Documentation/CodingStyle b/Documentation/CodingStyle
index 618a33c940df..449a8a19fc21 100644
--- a/Documentation/CodingStyle
+++ b/Documentation/CodingStyle
@@ -527,6 +527,7 @@ values. To do the latter, you can stick the following in your .emacs file:
527 (string-match (expand-file-name "~/src/linux-trees") 527 (string-match (expand-file-name "~/src/linux-trees")
528 filename)) 528 filename))
529 (setq indent-tabs-mode t) 529 (setq indent-tabs-mode t)
530 (setq show-trailing-whitespace t)
530 (c-set-style "linux-tabs-only"))))) 531 (c-set-style "linux-tabs-only")))))
531 532
532This will make emacs go better with the kernel coding style for C 533This will make emacs go better with the kernel coding style for C
diff --git a/Documentation/DocBook/80211.tmpl b/Documentation/DocBook/80211.tmpl
index d9b9416c989f..aac9357d4866 100644
--- a/Documentation/DocBook/80211.tmpl
+++ b/Documentation/DocBook/80211.tmpl
@@ -113,7 +113,6 @@
113!Finclude/net/cfg80211.h cfg80211_beacon_data 113!Finclude/net/cfg80211.h cfg80211_beacon_data
114!Finclude/net/cfg80211.h cfg80211_ap_settings 114!Finclude/net/cfg80211.h cfg80211_ap_settings
115!Finclude/net/cfg80211.h station_parameters 115!Finclude/net/cfg80211.h station_parameters
116!Finclude/net/cfg80211.h station_info_flags
117!Finclude/net/cfg80211.h rate_info_flags 116!Finclude/net/cfg80211.h rate_info_flags
118!Finclude/net/cfg80211.h rate_info 117!Finclude/net/cfg80211.h rate_info
119!Finclude/net/cfg80211.h station_info 118!Finclude/net/cfg80211.h station_info
@@ -435,7 +434,6 @@
435 <section id="ps-client"> 434 <section id="ps-client">
436 <title>support for powersaving clients</title> 435 <title>support for powersaving clients</title>
437!Pinclude/net/mac80211.h AP support for powersaving clients 436!Pinclude/net/mac80211.h AP support for powersaving clients
438 </section>
439!Finclude/net/mac80211.h ieee80211_get_buffered_bc 437!Finclude/net/mac80211.h ieee80211_get_buffered_bc
440!Finclude/net/mac80211.h ieee80211_beacon_get 438!Finclude/net/mac80211.h ieee80211_beacon_get
441!Finclude/net/mac80211.h ieee80211_sta_eosp 439!Finclude/net/mac80211.h ieee80211_sta_eosp
@@ -444,6 +442,7 @@
444!Finclude/net/mac80211.h ieee80211_sta_ps_transition_ni 442!Finclude/net/mac80211.h ieee80211_sta_ps_transition_ni
445!Finclude/net/mac80211.h ieee80211_sta_set_buffered 443!Finclude/net/mac80211.h ieee80211_sta_set_buffered
446!Finclude/net/mac80211.h ieee80211_sta_block_awake 444!Finclude/net/mac80211.h ieee80211_sta_block_awake
445 </section>
447 </chapter> 446 </chapter>
448 447
449 <chapter id="multi-iface"> 448 <chapter id="multi-iface">
@@ -488,8 +487,8 @@
488 <title>RX A-MPDU aggregation</title> 487 <title>RX A-MPDU aggregation</title>
489!Pnet/mac80211/agg-rx.c RX A-MPDU aggregation 488!Pnet/mac80211/agg-rx.c RX A-MPDU aggregation
490!Cnet/mac80211/agg-rx.c 489!Cnet/mac80211/agg-rx.c
491 </sect1>
492!Finclude/net/mac80211.h ieee80211_ampdu_mlme_action 490!Finclude/net/mac80211.h ieee80211_ampdu_mlme_action
491 </sect1>
493 </chapter> 492 </chapter>
494 493
495 <chapter id="smps"> 494 <chapter id="smps">
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile
index 9c7d92d03f62..b6a6a2e0dd3b 100644
--- a/Documentation/DocBook/Makefile
+++ b/Documentation/DocBook/Makefile
@@ -56,7 +56,7 @@ htmldocs: $(HTML)
56 56
57MAN := $(patsubst %.xml, %.9, $(BOOKS)) 57MAN := $(patsubst %.xml, %.9, $(BOOKS))
58mandocs: $(MAN) 58mandocs: $(MAN)
59 $(if $(wildcard $(obj)/man/*.9),gzip -f $(obj)/man/*.9) 59 find $(obj)/man -name '*.9' | xargs gzip -f
60 60
61installmandocs: mandocs 61installmandocs: mandocs
62 mkdir -p /usr/local/man/man9/ 62 mkdir -p /usr/local/man/man9/
diff --git a/Documentation/DocBook/crypto-API.tmpl b/Documentation/DocBook/crypto-API.tmpl
index c763d30f4893..04a8c24ead47 100644
--- a/Documentation/DocBook/crypto-API.tmpl
+++ b/Documentation/DocBook/crypto-API.tmpl
@@ -111,7 +111,7 @@
111 <para> 111 <para>
112 This specification is intended for consumers of the kernel crypto 112 This specification is intended for consumers of the kernel crypto
113 API as well as for developers implementing ciphers. This API 113 API as well as for developers implementing ciphers. This API
114 specification, however, does not discusses all API calls available 114 specification, however, does not discuss all API calls available
115 to data transformation implementations (i.e. implementations of 115 to data transformation implementations (i.e. implementations of
116 ciphers and other transformations (such as CRC or even compression 116 ciphers and other transformations (such as CRC or even compression
117 algorithms) that can register with the kernel crypto API). 117 algorithms) that can register with the kernel crypto API).
diff --git a/Documentation/DocBook/kgdb.tmpl b/Documentation/DocBook/kgdb.tmpl
index f77358f96930..2428cc04dbc8 100644
--- a/Documentation/DocBook/kgdb.tmpl
+++ b/Documentation/DocBook/kgdb.tmpl
@@ -75,7 +75,7 @@
75 a development machine and the other is the target machine. The 75 a development machine and the other is the target machine. The
76 kernel to be debugged runs on the target machine. The development 76 kernel to be debugged runs on the target machine. The development
77 machine runs an instance of gdb against the vmlinux file which 77 machine runs an instance of gdb against the vmlinux file which
78 contains the symbols (not boot image such as bzImage, zImage, 78 contains the symbols (not a boot image such as bzImage, zImage,
79 uImage...). In gdb the developer specifies the connection 79 uImage...). In gdb the developer specifies the connection
80 parameters and connects to kgdb. The type of connection a 80 parameters and connects to kgdb. The type of connection a
81 developer makes with gdb depends on the availability of kgdb I/O 81 developer makes with gdb depends on the availability of kgdb I/O
@@ -95,7 +95,7 @@
95 <title>Kernel config options for kgdb</title> 95 <title>Kernel config options for kgdb</title>
96 <para> 96 <para>
97 To enable <symbol>CONFIG_KGDB</symbol> you should look under 97 To enable <symbol>CONFIG_KGDB</symbol> you should look under
98 "Kernel debugging" and select "KGDB: kernel debugger". 98 "Kernel hacking" / "Kernel debugging" and select "KGDB: kernel debugger".
99 </para> 99 </para>
100 <para> 100 <para>
101 While it is not a hard requirement that you have symbols in your 101 While it is not a hard requirement that you have symbols in your
@@ -105,7 +105,7 @@
105 kernel with debug info" in the config menu. 105 kernel with debug info" in the config menu.
106 </para> 106 </para>
107 <para> 107 <para>
108 It is advised, but not required that you turn on the 108 It is advised, but not required, that you turn on the
109 <symbol>CONFIG_FRAME_POINTER</symbol> kernel option which is called "Compile the 109 <symbol>CONFIG_FRAME_POINTER</symbol> kernel option which is called "Compile the
110 kernel with frame pointers" in the config menu. This option 110 kernel with frame pointers" in the config menu. This option
111 inserts code to into the compiled executable which saves the frame 111 inserts code to into the compiled executable which saves the frame
@@ -181,7 +181,7 @@
181 <para>This section describes the various runtime kernel 181 <para>This section describes the various runtime kernel
182 parameters that affect the configuration of the kernel debugger. 182 parameters that affect the configuration of the kernel debugger.
183 The following chapter covers using kdb and kgdb as well as 183 The following chapter covers using kdb and kgdb as well as
184 provides some examples of the configuration parameters.</para> 184 providing some examples of the configuration parameters.</para>
185 <sect1 id="kgdboc"> 185 <sect1 id="kgdboc">
186 <title>Kernel parameter: kgdboc</title> 186 <title>Kernel parameter: kgdboc</title>
187 <para>The kgdboc driver was originally an abbreviation meant to 187 <para>The kgdboc driver was originally an abbreviation meant to
@@ -219,8 +219,8 @@
219 <listitem><para>kbd = Keyboard</para></listitem> 219 <listitem><para>kbd = Keyboard</para></listitem>
220 </itemizedlist> 220 </itemizedlist>
221 </para> 221 </para>
222 <para>You can configure kgdboc to use the keyboard, and or a serial 222 <para>You can configure kgdboc to use the keyboard, and/or a serial
223 device depending on if you are using kdb and or kgdb, in one of the 223 device depending on if you are using kdb and/or kgdb, in one of the
224 following scenarios. The order listed above must be observed if 224 following scenarios. The order listed above must be observed if
225 you use any of the optional configurations together. Using kms + 225 you use any of the optional configurations together. Using kms +
226 only gdb is generally not a useful combination.</para> 226 only gdb is generally not a useful combination.</para>
@@ -261,11 +261,8 @@
261 </sect3> 261 </sect3>
262 <sect3 id="kgdbocArgs3"> 262 <sect3 id="kgdbocArgs3">
263 <title>More examples</title> 263 <title>More examples</title>
264 <para>You can configure kgdboc to use the keyboard, and or a serial 264 <para>You can configure kgdboc to use the keyboard, and/or a serial device
265 device depending on if you are using kdb and or kgdb, in one of the 265 depending on if you are using kdb and/or kgdb, in one of the
266 following scenarios.</para>
267 <para>You can configure kgdboc to use the keyboard, and or a serial device
268 depending on if you are using kdb and or kgdb, in one of the
269 following scenarios. 266 following scenarios.
270 <orderedlist> 267 <orderedlist>
271 <listitem><para>kdb and kgdb over only a serial port</para> 268 <listitem><para>kdb and kgdb over only a serial port</para>
@@ -315,7 +312,7 @@
315 <para> 312 <para>
316 The Kernel command line option <constant>kgdbwait</constant> makes 313 The Kernel command line option <constant>kgdbwait</constant> makes
317 kgdb wait for a debugger connection during booting of a kernel. You 314 kgdb wait for a debugger connection during booting of a kernel. You
318 can only use this option you compiled a kgdb I/O driver into the 315 can only use this option if you compiled a kgdb I/O driver into the
319 kernel and you specified the I/O driver configuration as a kernel 316 kernel and you specified the I/O driver configuration as a kernel
320 command line option. The kgdbwait parameter should always follow the 317 command line option. The kgdbwait parameter should always follow the
321 configuration parameter for the kgdb I/O driver in the kernel 318 configuration parameter for the kgdb I/O driver in the kernel
@@ -354,7 +351,7 @@
354 </listitem> 351 </listitem>
355 </orderedlist> 352 </orderedlist>
356 <para>IMPORTANT NOTE: You cannot use kgdboc + kgdbcon on a tty that is an 353 <para>IMPORTANT NOTE: You cannot use kgdboc + kgdbcon on a tty that is an
357 active system console. An example incorrect usage is <constant>console=ttyS0,115200 kgdboc=ttyS0 kgdbcon</constant> 354 active system console. An example of incorrect usage is <constant>console=ttyS0,115200 kgdboc=ttyS0 kgdbcon</constant>
358 </para> 355 </para>
359 <para>It is possible to use this option with kgdboc on a tty that is not a system console. 356 <para>It is possible to use this option with kgdboc on a tty that is not a system console.
360 </para> 357 </para>
@@ -386,12 +383,12 @@
386 <title>Quick start for kdb on a serial port</title> 383 <title>Quick start for kdb on a serial port</title>
387 <para>This is a quick example of how to use kdb.</para> 384 <para>This is a quick example of how to use kdb.</para>
388 <para><orderedlist> 385 <para><orderedlist>
389 <listitem><para>Boot kernel with arguments: 386 <listitem><para>Configure kgdboc at boot using kernel parameters:
390 <itemizedlist> 387 <itemizedlist>
391 <listitem><para><constant>console=ttyS0,115200 kgdboc=ttyS0,115200</constant></para></listitem> 388 <listitem><para><constant>console=ttyS0,115200 kgdboc=ttyS0,115200</constant></para></listitem>
392 </itemizedlist></para> 389 </itemizedlist></para>
393 <para>OR</para> 390 <para>OR</para>
394 <para>Configure kgdboc after the kernel booted; assuming you are using a serial port console: 391 <para>Configure kgdboc after the kernel has booted; assuming you are using a serial port console:
395 <itemizedlist> 392 <itemizedlist>
396 <listitem><para><constant>echo ttyS0 &gt; /sys/module/kgdboc/parameters/kgdboc</constant></para></listitem> 393 <listitem><para><constant>echo ttyS0 &gt; /sys/module/kgdboc/parameters/kgdboc</constant></para></listitem>
397 </itemizedlist> 394 </itemizedlist>
@@ -442,12 +439,12 @@
442 <title>Quick start for kdb using a keyboard connected console</title> 439 <title>Quick start for kdb using a keyboard connected console</title>
443 <para>This is a quick example of how to use kdb with a keyboard.</para> 440 <para>This is a quick example of how to use kdb with a keyboard.</para>
444 <para><orderedlist> 441 <para><orderedlist>
445 <listitem><para>Boot kernel with arguments: 442 <listitem><para>Configure kgdboc at boot using kernel parameters:
446 <itemizedlist> 443 <itemizedlist>
447 <listitem><para><constant>kgdboc=kbd</constant></para></listitem> 444 <listitem><para><constant>kgdboc=kbd</constant></para></listitem>
448 </itemizedlist></para> 445 </itemizedlist></para>
449 <para>OR</para> 446 <para>OR</para>
450 <para>Configure kgdboc after the kernel booted: 447 <para>Configure kgdboc after the kernel has booted:
451 <itemizedlist> 448 <itemizedlist>
452 <listitem><para><constant>echo kbd &gt; /sys/module/kgdboc/parameters/kgdboc</constant></para></listitem> 449 <listitem><para><constant>echo kbd &gt; /sys/module/kgdboc/parameters/kgdboc</constant></para></listitem>
453 </itemizedlist> 450 </itemizedlist>
@@ -501,12 +498,12 @@
501 <title>Connecting with gdb to a serial port</title> 498 <title>Connecting with gdb to a serial port</title>
502 <orderedlist> 499 <orderedlist>
503 <listitem><para>Configure kgdboc</para> 500 <listitem><para>Configure kgdboc</para>
504 <para>Boot kernel with arguments: 501 <para>Configure kgdboc at boot using kernel parameters:
505 <itemizedlist> 502 <itemizedlist>
506 <listitem><para><constant>kgdboc=ttyS0,115200</constant></para></listitem> 503 <listitem><para><constant>kgdboc=ttyS0,115200</constant></para></listitem>
507 </itemizedlist></para> 504 </itemizedlist></para>
508 <para>OR</para> 505 <para>OR</para>
509 <para>Configure kgdboc after the kernel booted: 506 <para>Configure kgdboc after the kernel has booted:
510 <itemizedlist> 507 <itemizedlist>
511 <listitem><para><constant>echo ttyS0 &gt; /sys/module/kgdboc/parameters/kgdboc</constant></para></listitem> 508 <listitem><para><constant>echo ttyS0 &gt; /sys/module/kgdboc/parameters/kgdboc</constant></para></listitem>
512 </itemizedlist></para> 509 </itemizedlist></para>
@@ -536,7 +533,7 @@
536 </para> 533 </para>
537 </listitem> 534 </listitem>
538 <listitem> 535 <listitem>
539 <para>Connect from from gdb</para> 536 <para>Connect from gdb</para>
540 <para> 537 <para>
541 Example (using a directly connected port): 538 Example (using a directly connected port):
542 </para> 539 </para>
@@ -584,7 +581,7 @@
584 <para> 581 <para>
585 There are two ways to switch from kgdb to kdb: you can use gdb to 582 There are two ways to switch from kgdb to kdb: you can use gdb to
586 issue a maintenance packet, or you can blindly type the command $3#33. 583 issue a maintenance packet, or you can blindly type the command $3#33.
587 Whenever kernel debugger stops in kgdb mode it will print the 584 Whenever the kernel debugger stops in kgdb mode it will print the
588 message <constant>KGDB or $3#33 for KDB</constant>. It is important 585 message <constant>KGDB or $3#33 for KDB</constant>. It is important
589 to note that you have to type the sequence correctly in one pass. 586 to note that you have to type the sequence correctly in one pass.
590 You cannot type a backspace or delete because kgdb will interpret 587 You cannot type a backspace or delete because kgdb will interpret
@@ -704,7 +701,7 @@ Task Addr Pid Parent [*] cpu State Thread Command
704 <listitem><para>Registration and unregistration of architecture specific trap hooks</para></listitem> 701 <listitem><para>Registration and unregistration of architecture specific trap hooks</para></listitem>
705 <listitem><para>Any special exception handling and cleanup</para></listitem> 702 <listitem><para>Any special exception handling and cleanup</para></listitem>
706 <listitem><para>NMI exception handling and cleanup</para></listitem> 703 <listitem><para>NMI exception handling and cleanup</para></listitem>
707 <listitem><para>(optional)HW breakpoints</para></listitem> 704 <listitem><para>(optional) HW breakpoints</para></listitem>
708 </itemizedlist> 705 </itemizedlist>
709 </para> 706 </para>
710 </listitem> 707 </listitem>
@@ -760,7 +757,7 @@ Task Addr Pid Parent [*] cpu State Thread Command
760 a kgdb I/O driver for characters when it needs input. The I/O 757 a kgdb I/O driver for characters when it needs input. The I/O
761 driver is expected to return immediately if there is no data 758 driver is expected to return immediately if there is no data
762 available. Doing so allows for the future possibility to touch 759 available. Doing so allows for the future possibility to touch
763 watch dog hardware in such a way as to have a target system not 760 watchdog hardware in such a way as to have a target system not
764 reset when these are enabled. 761 reset when these are enabled.
765 </para> 762 </para>
766 </listitem> 763 </listitem>
@@ -779,21 +776,25 @@ Task Addr Pid Parent [*] cpu State Thread Command
779 their &lt;asm/kgdb.h&gt; file. These are: 776 their &lt;asm/kgdb.h&gt; file. These are:
780 <itemizedlist> 777 <itemizedlist>
781 <listitem> 778 <listitem>
782 <para> 779 <para>
783 NUMREGBYTES: The size in bytes of all of the registers, so 780 NUMREGBYTES: The size in bytes of all of the registers, so
784 that we can ensure they will all fit into a packet. 781 that we can ensure they will all fit into a packet.
785 </para> 782 </para>
786 <para> 783 </listitem>
787 BUFMAX: The size in bytes of the buffer GDB will read into. 784 <listitem>
788 This must be larger than NUMREGBYTES. 785 <para>
789 </para> 786 BUFMAX: The size in bytes of the buffer GDB will read into.
790 <para> 787 This must be larger than NUMREGBYTES.
791 CACHE_FLUSH_IS_SAFE: Set to 1 if it is always safe to call 788 </para>
792 flush_cache_range or flush_icache_range. On some architectures, 789 </listitem>
793 these functions may not be safe to call on SMP since we keep other 790 <listitem>
794 CPUs in a holding pattern. 791 <para>
795 </para> 792 CACHE_FLUSH_IS_SAFE: Set to 1 if it is always safe to call
796 </listitem> 793 flush_cache_range or flush_icache_range. On some architectures,
794 these functions may not be safe to call on SMP since we keep other
795 CPUs in a holding pattern.
796 </para>
797 </listitem>
797 </itemizedlist> 798 </itemizedlist>
798 </para> 799 </para>
799 <para> 800 <para>
@@ -812,8 +813,8 @@ Task Addr Pid Parent [*] cpu State Thread Command
812 <para> 813 <para>
813 The kgdboc driver is actually a very thin driver that relies on the 814 The kgdboc driver is actually a very thin driver that relies on the
814 underlying low level to the hardware driver having "polling hooks" 815 underlying low level to the hardware driver having "polling hooks"
815 which the to which the tty driver is attached. In the initial 816 to which the tty driver is attached. In the initial
816 implementation of kgdboc it the serial_core was changed to expose a 817 implementation of kgdboc the serial_core was changed to expose a
817 low level UART hook for doing polled mode reading and writing of a 818 low level UART hook for doing polled mode reading and writing of a
818 single character while in an atomic context. When kgdb makes an I/O 819 single character while in an atomic context. When kgdb makes an I/O
819 request to the debugger, kgdboc invokes a callback in the serial 820 request to the debugger, kgdboc invokes a callback in the serial
diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml
index e013e4bf244c..4e9462f1ab4c 100644
--- a/Documentation/DocBook/media/v4l/controls.xml
+++ b/Documentation/DocBook/media/v4l/controls.xml
@@ -2692,12 +2692,11 @@ in the S5P family of SoCs by Samsung.
2692 <row><entry></entry></row> 2692 <row><entry></entry></row>
2693 <row> 2693 <row>
2694 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE</constant>&nbsp;</entry> 2694 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE</constant>&nbsp;</entry>
2695 <entry>integer</entry> 2695 <entry>boolean</entry>
2696 </row><row><entry spanname="descr">If the display delay is enabled then the decoder has to return a 2696 </row><row><entry spanname="descr">If the display delay is enabled then the decoder is forced to return a
2697CAPTURE buffer after processing a certain number of OUTPUT buffers. If this number is low, then it may result in 2697CAPTURE buffer (decoded frame) after processing a certain number of OUTPUT buffers. The delay can be set through
2698buffers not being dequeued in display order. In addition hardware may still use those buffers as reference, thus 2698<constant>V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY</constant>. This feature can be used for example
2699application should not write to those buffers. This feature can be used for example for generating thumbnails of videos. 2699for generating thumbnails of videos. Applicable to the H264 decoder.
2700Applicable to the H264 decoder.
2701 </entry> 2700 </entry>
2702 </row> 2701 </row>
2703 <row><entry></entry></row> 2702 <row><entry></entry></row>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml
index c1c62a9acc2a..f34d03ebda3a 100644
--- a/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml
@@ -17,7 +17,7 @@
17 <refsect1> 17 <refsect1>
18 <title>Description</title> 18 <title>Description</title>
19 19
20 <para>The following four pixel formats are raw sRGB / Bayer formats with 20 <para>These four pixel formats are raw sRGB / Bayer formats with
2110 bits per colour. Each colour component is stored in a 16-bit word, with 6 2110 bits per colour. Each colour component is stored in a 16-bit word, with 6
22unused high bits filled with zeros. Each n-pixel row contains n/2 green samples 22unused high bits filled with zeros. Each n-pixel row contains n/2 green samples
23and n/2 blue or red samples, with alternating red and blue rows. Bytes are 23and n/2 blue or red samples, with alternating red and blue rows. Bytes are
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb10alaw8.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb10alaw8.xml
index 29acc2098cc2..d2e5845e57fb 100644
--- a/Documentation/DocBook/media/v4l/pixfmt-srggb10alaw8.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-srggb10alaw8.xml
@@ -25,7 +25,7 @@
25 </refnamediv> 25 </refnamediv>
26 <refsect1> 26 <refsect1>
27 <title>Description</title> 27 <title>Description</title>
28 <para>The following four pixel formats are raw sRGB / Bayer 28 <para>These four pixel formats are raw sRGB / Bayer
29 formats with 10 bits per color compressed to 8 bits each, 29 formats with 10 bits per color compressed to 8 bits each,
30 using the A-LAW algorithm. Each color component consumes 8 30 using the A-LAW algorithm. Each color component consumes 8
31 bits of memory. In other respects this format is similar to 31 bits of memory. In other respects this format is similar to
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml
index 2d3f0b1aefe0..bde89878c5c5 100644
--- a/Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml
@@ -18,7 +18,7 @@
18 <refsect1> 18 <refsect1>
19 <title>Description</title> 19 <title>Description</title>
20 20
21 <para>The following four pixel formats are raw sRGB / Bayer formats 21 <para>These four pixel formats are raw sRGB / Bayer formats
22 with 10 bits per colour compressed to 8 bits each, using DPCM 22 with 10 bits per colour compressed to 8 bits each, using DPCM
23 compression. DPCM, differential pulse-code modulation, is lossy. 23 compression. DPCM, differential pulse-code modulation, is lossy.
24 Each colour component consumes 8 bits of memory. In other respects 24 Each colour component consumes 8 bits of memory. In other respects
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb10p.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb10p.xml
new file mode 100644
index 000000000000..30aa63581fe3
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/pixfmt-srggb10p.xml
@@ -0,0 +1,99 @@
1 <refentry id="pixfmt-srggb10p">
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_SRGGB10P ('pRAA'),
4 V4L2_PIX_FMT_SGRBG10P ('pgAA'),
5 V4L2_PIX_FMT_SGBRG10P ('pGAA'),
6 V4L2_PIX_FMT_SBGGR10P ('pBAA'),
7 </refentrytitle>
8 &manvol;
9 </refmeta>
10 <refnamediv>
11 <refname id="V4L2-PIX-FMT-SRGGB10P"><constant>V4L2_PIX_FMT_SRGGB10P</constant></refname>
12 <refname id="V4L2-PIX-FMT-SGRBG10P"><constant>V4L2_PIX_FMT_SGRBG10P</constant></refname>
13 <refname id="V4L2-PIX-FMT-SGBRG10P"><constant>V4L2_PIX_FMT_SGBRG10P</constant></refname>
14 <refname id="V4L2-PIX-FMT-SBGGR10P"><constant>V4L2_PIX_FMT_SBGGR10P</constant></refname>
15 <refpurpose>10-bit packed Bayer formats</refpurpose>
16 </refnamediv>
17 <refsect1>
18 <title>Description</title>
19
20 <para>These four pixel formats are packed raw sRGB /
21 Bayer formats with 10 bits per colour. Every four consecutive
22 colour components are packed into 5 bytes. Each of the first 4
23 bytes contain the 8 high order bits of the pixels, and the
24 fifth byte contains the two least significants bits of each
25 pixel, in the same order.</para>
26
27 <para>Each n-pixel row contains n/2 green samples and n/2 blue
28 or red samples, with alternating green-red and green-blue
29 rows. They are conventionally described as GRGR... BGBG...,
30 RGRG... GBGB..., etc. Below is an example of one of these
31 formats:</para>
32
33 <example>
34 <title><constant>V4L2_PIX_FMT_SBGGR10P</constant> 4 &times; 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&nbsp;+&nbsp;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&nbsp;+&nbsp;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&nbsp;+&nbsp;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&nbsp;+&nbsp;15:</entry>
82 <entry>G<subscript>30high</subscript></entry>
83 <entry>R<subscript>31high</subscript></entry>
84 <entry>G<subscript>32high</subscript></entry>
85 <entry>R<subscript>33high</subscript></entry>
86 <entry>G<subscript>30low</subscript>(bits 7--6)
87 R<subscript>31low</subscript>(bits 5--4)
88 G<subscript>32low</subscript>(bits 3--2)
89 R<subscript>33low</subscript>(bits 1--0)
90 </entry>
91 </row>
92 </tbody>
93 </tgroup>
94 </informaltable>
95 </para>
96 </formalpara>
97 </example>
98 </refsect1>
99</refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb12.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb12.xml
index 96947f17fca1..0c8e4adf417f 100644
--- a/Documentation/DocBook/media/v4l/pixfmt-srggb12.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-srggb12.xml
@@ -17,7 +17,7 @@
17 <refsect1> 17 <refsect1>
18 <title>Description</title> 18 <title>Description</title>
19 19
20 <para>The following four pixel formats are raw sRGB / Bayer formats with 20 <para>These four pixel formats are raw sRGB / Bayer formats with
2112 bits per colour. Each colour component is stored in a 16-bit word, with 4 2112 bits per colour. Each colour component is stored in a 16-bit word, with 4
22unused high bits filled with zeros. Each n-pixel row contains n/2 green samples 22unused high bits filled with zeros. Each n-pixel row contains n/2 green samples
23and n/2 blue or red samples, with alternating red and blue rows. Bytes are 23and n/2 blue or red samples, with alternating red and blue rows. Bytes are
diff --git a/Documentation/DocBook/media/v4l/pixfmt.xml b/Documentation/DocBook/media/v4l/pixfmt.xml
index d5eca4b8f74b..5e0352c50324 100644
--- a/Documentation/DocBook/media/v4l/pixfmt.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt.xml
@@ -1405,6 +1405,7 @@ access the palette, this must be done with ioctls of the Linux framebuffer API.<
1405 &sub-srggb8; 1405 &sub-srggb8;
1406 &sub-sbggr16; 1406 &sub-sbggr16;
1407 &sub-srggb10; 1407 &sub-srggb10;
1408 &sub-srggb10p;
1408 &sub-srggb10alaw8; 1409 &sub-srggb10alaw8;
1409 &sub-srggb10dpcm8; 1410 &sub-srggb10dpcm8;
1410 &sub-srggb12; 1411 &sub-srggb12;
diff --git a/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml b/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml
index 28a8c1e1c705..a2017bfcaed2 100644
--- a/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml
@@ -212,11 +212,3 @@ standards set in the <structfield>standards</structfield> field.
212 &return-value; 212 &return-value;
213 </refsect1> 213 </refsect1>
214</refentry> 214</refentry>
215
216<!--
217Local Variables:
218mode: sgml
219sgml-parent-document: "v4l2.sgml"
220indent-tabs-mode: nil
221End:
222-->
diff --git a/Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml b/Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml
index b9fdfeacdbcb..6e3cadd4e1f9 100644
--- a/Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml
@@ -131,11 +131,3 @@ is out of bounds or the <structfield>pad</structfield> number is invalid.</para>
131 </variablelist> 131 </variablelist>
132 </refsect1> 132 </refsect1>
133</refentry> 133</refentry>
134
135<!--
136Local Variables:
137mode: sgml
138sgml-parent-document: "v4l2.sgml"
139indent-tabs-mode: nil
140End:
141-->
diff --git a/Documentation/RCU/stallwarn.txt b/Documentation/RCU/stallwarn.txt
index ed186a902d31..b57c0c1cdac6 100644
--- a/Documentation/RCU/stallwarn.txt
+++ b/Documentation/RCU/stallwarn.txt
@@ -15,7 +15,7 @@ CONFIG_RCU_CPU_STALL_TIMEOUT
15 21 seconds. 15 21 seconds.
16 16
17 This configuration parameter may be changed at runtime via the 17 This configuration parameter may be changed at runtime via the
18 /sys/module/rcutree/parameters/rcu_cpu_stall_timeout, however 18 /sys/module/rcupdate/parameters/rcu_cpu_stall_timeout, however
19 this parameter is checked only at the beginning of a cycle. 19 this parameter is checked only at the beginning of a cycle.
20 So if you are 10 seconds into a 40-second stall, setting this 20 So if you are 10 seconds into a 40-second stall, setting this
21 sysfs parameter to (say) five will shorten the timeout for the 21 sysfs parameter to (say) five will shorten the timeout for the
@@ -152,6 +152,15 @@ no non-lazy callbacks ("." is printed otherwise, as shown above) and
152"D" indicates that dyntick-idle processing is enabled ("." is printed 152"D" indicates that dyntick-idle processing is enabled ("." is printed
153otherwise, for example, if disabled via the "nohz=" kernel boot parameter). 153otherwise, for example, if disabled via the "nohz=" kernel boot parameter).
154 154
155If the relevant grace-period kthread has been unable to run prior to
156the stall warning, the following additional line is printed:
157
158 rcu_preempt kthread starved for 2023 jiffies!
159
160Starving the grace-period kthreads of CPU time can of course result in
161RCU CPU stall warnings even when all CPUs and tasks have passed through
162the required quiescent states.
163
155 164
156Multiple Warnings From One Stall 165Multiple Warnings From One Stall
157 166
@@ -187,6 +196,11 @@ o For !CONFIG_PREEMPT kernels, a CPU looping anywhere in the
187 behavior, you might need to replace some of the cond_resched() 196 behavior, you might need to replace some of the cond_resched()
188 calls with calls to cond_resched_rcu_qs(). 197 calls with calls to cond_resched_rcu_qs().
189 198
199o 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
190o A CPU-bound real-time task in a CONFIG_PREEMPT kernel, which might 204o A CPU-bound real-time task in a CONFIG_PREEMPT kernel, which might
191 happen to preempt a low-priority task in the middle of an RCU 205 happen to preempt a low-priority task in the middle of an RCU
192 read-side critical section. This is especially damaging if 206 read-side critical section. This is especially damaging if
diff --git a/Documentation/RCU/trace.txt b/Documentation/RCU/trace.txt
index b63b9bb3bc0c..08651da15448 100644
--- a/Documentation/RCU/trace.txt
+++ b/Documentation/RCU/trace.txt
@@ -56,14 +56,14 @@ rcuboost:
56 56
57The output of "cat rcu/rcu_preempt/rcudata" looks as follows: 57The output of "cat rcu/rcu_preempt/rcudata" looks as follows:
58 58
59 0!c=30455 g=30456 pq=1 qp=1 dt=126535/140000000000000/0 df=2002 of=4 ql=0/0 qs=N... b=10 ci=74572 nci=0 co=1131 ca=716 59 0!c=30455 g=30456 pq=1/0 qp=1 dt=126535/140000000000000/0 df=2002 of=4 ql=0/0 qs=N... b=10 ci=74572 nci=0 co=1131 ca=716
60 1!c=30719 g=30720 pq=1 qp=0 dt=132007/140000000000000/0 df=1874 of=10 ql=0/0 qs=N... b=10 ci=123209 nci=0 co=685 ca=982 60 1!c=30719 g=30720 pq=1/0 qp=0 dt=132007/140000000000000/0 df=1874 of=10 ql=0/0 qs=N... b=10 ci=123209 nci=0 co=685 ca=982
61 2!c=30150 g=30151 pq=1 qp=1 dt=138537/140000000000000/0 df=1707 of=8 ql=0/0 qs=N... b=10 ci=80132 nci=0 co=1328 ca=1458 61 2!c=30150 g=30151 pq=1/1 qp=1 dt=138537/140000000000000/0 df=1707 of=8 ql=0/0 qs=N... b=10 ci=80132 nci=0 co=1328 ca=1458
62 3 c=31249 g=31250 pq=1 qp=0 dt=107255/140000000000000/0 df=1749 of=6 ql=0/450 qs=NRW. b=10 ci=151700 nci=0 co=509 ca=622 62 3 c=31249 g=31250 pq=1/1 qp=0 dt=107255/140000000000000/0 df=1749 of=6 ql=0/450 qs=NRW. b=10 ci=151700 nci=0 co=509 ca=622
63 4!c=29502 g=29503 pq=1 qp=1 dt=83647/140000000000000/0 df=965 of=5 ql=0/0 qs=N... b=10 ci=65643 nci=0 co=1373 ca=1521 63 4!c=29502 g=29503 pq=1/0 qp=1 dt=83647/140000000000000/0 df=965 of=5 ql=0/0 qs=N... b=10 ci=65643 nci=0 co=1373 ca=1521
64 5 c=31201 g=31202 pq=1 qp=1 dt=70422/0/0 df=535 of=7 ql=0/0 qs=.... b=10 ci=58500 nci=0 co=764 ca=698 64 5 c=31201 g=31202 pq=1/0 qp=1 dt=70422/0/0 df=535 of=7 ql=0/0 qs=.... b=10 ci=58500 nci=0 co=764 ca=698
65 6!c=30253 g=30254 pq=1 qp=1 dt=95363/140000000000000/0 df=780 of=5 ql=0/0 qs=N... b=10 ci=100607 nci=0 co=1414 ca=1353 65 6!c=30253 g=30254 pq=1/0 qp=1 dt=95363/140000000000000/0 df=780 of=5 ql=0/0 qs=N... b=10 ci=100607 nci=0 co=1414 ca=1353
66 7 c=31178 g=31178 pq=1 qp=0 dt=91536/0/0 df=547 of=4 ql=0/0 qs=.... b=10 ci=109819 nci=0 co=1115 ca=969 66 7 c=31178 g=31178 pq=1/0 qp=0 dt=91536/0/0 df=547 of=4 ql=0/0 qs=.... b=10 ci=109819 nci=0 co=1115 ca=969
67 67
68This file has one line per CPU, or eight for this 8-CPU system. 68This file has one line per CPU, or eight for this 8-CPU system.
69The fields are as follows: 69The fields are as follows:
@@ -188,14 +188,14 @@ o "ca" is the number of RCU callbacks that have been adopted by this
188Kernels compiled with CONFIG_RCU_BOOST=y display the following from 188Kernels compiled with CONFIG_RCU_BOOST=y display the following from
189/debug/rcu/rcu_preempt/rcudata: 189/debug/rcu/rcu_preempt/rcudata:
190 190
191 0!c=12865 g=12866 pq=1 qp=1 dt=83113/140000000000000/0 df=288 of=11 ql=0/0 qs=N... kt=0/O ktl=944 b=10 ci=60709 nci=0 co=748 ca=871 191 0!c=12865 g=12866 pq=1/0 qp=1 dt=83113/140000000000000/0 df=288 of=11 ql=0/0 qs=N... kt=0/O ktl=944 b=10 ci=60709 nci=0 co=748 ca=871
192 1 c=14407 g=14408 pq=1 qp=0 dt=100679/140000000000000/0 df=378 of=7 ql=0/119 qs=NRW. kt=0/W ktl=9b6 b=10 ci=109740 nci=0 co=589 ca=485 192 1 c=14407 g=14408 pq=1/0 qp=0 dt=100679/140000000000000/0 df=378 of=7 ql=0/119 qs=NRW. kt=0/W ktl=9b6 b=10 ci=109740 nci=0 co=589 ca=485
193 2 c=14407 g=14408 pq=1 qp=0 dt=105486/0/0 df=90 of=9 ql=0/89 qs=NRW. kt=0/W ktl=c0c b=10 ci=83113 nci=0 co=533 ca=490 193 2 c=14407 g=14408 pq=1/0 qp=0 dt=105486/0/0 df=90 of=9 ql=0/89 qs=NRW. kt=0/W ktl=c0c b=10 ci=83113 nci=0 co=533 ca=490
194 3 c=14407 g=14408 pq=1 qp=0 dt=107138/0/0 df=142 of=8 ql=0/188 qs=NRW. kt=0/W ktl=b96 b=10 ci=121114 nci=0 co=426 ca=290 194 3 c=14407 g=14408 pq=1/0 qp=0 dt=107138/0/0 df=142 of=8 ql=0/188 qs=NRW. kt=0/W ktl=b96 b=10 ci=121114 nci=0 co=426 ca=290
195 4 c=14405 g=14406 pq=1 qp=1 dt=50238/0/0 df=706 of=7 ql=0/0 qs=.... kt=0/W ktl=812 b=10 ci=34929 nci=0 co=643 ca=114 195 4 c=14405 g=14406 pq=1/0 qp=1 dt=50238/0/0 df=706 of=7 ql=0/0 qs=.... kt=0/W ktl=812 b=10 ci=34929 nci=0 co=643 ca=114
196 5!c=14168 g=14169 pq=1 qp=0 dt=45465/140000000000000/0 df=161 of=11 ql=0/0 qs=N... kt=0/O ktl=b4d b=10 ci=47712 nci=0 co=677 ca=722 196 5!c=14168 g=14169 pq=1/0 qp=0 dt=45465/140000000000000/0 df=161 of=11 ql=0/0 qs=N... kt=0/O ktl=b4d b=10 ci=47712 nci=0 co=677 ca=722
197 6 c=14404 g=14405 pq=1 qp=0 dt=59454/0/0 df=94 of=6 ql=0/0 qs=.... kt=0/W ktl=e57 b=10 ci=55597 nci=0 co=701 ca=811 197 6 c=14404 g=14405 pq=1/0 qp=0 dt=59454/0/0 df=94 of=6 ql=0/0 qs=.... kt=0/W ktl=e57 b=10 ci=55597 nci=0 co=701 ca=811
198 7 c=14407 g=14408 pq=1 qp=1 dt=68850/0/0 df=31 of=8 ql=0/0 qs=.... kt=0/W ktl=14bd b=10 ci=77475 nci=0 co=508 ca=1042 198 7 c=14407 g=14408 pq=1/0 qp=1 dt=68850/0/0 df=31 of=8 ql=0/0 qs=.... kt=0/W ktl=14bd b=10 ci=77475 nci=0 co=508 ca=1042
199 199
200This is similar to the output discussed above, but contains the following 200This is similar to the output discussed above, but contains the following
201additional fields: 201additional fields:
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index 1fa1caa198eb..447671bd2927 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -10,27 +10,49 @@ kernel, the process can sometimes be daunting if you're not familiar
10with "the system." This text is a collection of suggestions which 10with "the system." This text is a collection of suggestions which
11can greatly increase the chances of your change being accepted. 11can greatly increase the chances of your change being accepted.
12 12
13Read Documentation/SubmitChecklist for a list of items to check 13This document contains a large number of suggestions in a relatively terse
14before submitting code. If you are submitting a driver, also read 14format. For detailed information on how the kernel development process
15Documentation/SubmittingDrivers. 15works, see Documentation/development-process. Also, read
16Documentation/SubmitChecklist for a list of items to check before
17submitting code. If you are submitting a driver, also read
18Documentation/SubmittingDrivers; for device tree binding patches, read
19Documentation/devicetree/bindings/submitting-patches.txt.
16 20
17Many of these steps describe the default behavior of the git version 21Many of these steps describe the default behavior of the git version
18control system; if you use git to prepare your patches, you'll find much 22control system; if you use git to prepare your patches, you'll find much
19of the mechanical work done for you, though you'll still need to prepare 23of the mechanical work done for you, though you'll still need to prepare
20and document a sensible set of patches. 24and document a sensible set of patches. In general, use of git will make
25your life as a kernel developer easier.
21 26
22-------------------------------------------- 27--------------------------------------------
23SECTION 1 - CREATING AND SENDING YOUR CHANGE 28SECTION 1 - CREATING AND SENDING YOUR CHANGE
24-------------------------------------------- 29--------------------------------------------
25 30
26 31
320) Obtain a current source tree
33-------------------------------
34
35If you do not have a repository with the current kernel source handy, use
36git to obtain one. You'll want to start with the mainline repository,
37which can be grabbed with:
38
39 git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
40
41Note, however, that you may not want to develop against the mainline tree
42directly. Most subsystem maintainers run their own trees and want to see
43patches prepared against those trees. See the "T:" entry for the subsystem
44in the MAINTAINERS file to find that tree, or simply ask the maintainer if
45the tree is not listed there.
46
47It is still possible to download kernel releases via tarballs (as described
48in the next section), but that is the hard way to do kernel development.
27 49
281) "diff -up" 501) "diff -up"
29------------ 51------------
30 52
31Use "diff -up" or "diff -uprN" to create patches. git generates patches 53If you must generate your patches by hand, use "diff -up" or "diff -uprN"
32in this form by default; if you're using git, you can skip this section 54to create patches. Git generates patches in this form by default; if
33entirely. 55you're using git, you can skip this section entirely.
34 56
35All changes to the Linux kernel occur in the form of patches, as 57All changes to the Linux kernel occur in the form of patches, as
36generated by diff(1). When creating your patch, make sure to create it 58generated by diff(1). When creating your patch, make sure to create it
@@ -42,7 +64,7 @@ not in any lower subdirectory.
42 64
43To create a patch for a single file, it is often sufficient to do: 65To create a patch for a single file, it is often sufficient to do:
44 66
45 SRCTREE= linux-2.6 67 SRCTREE= linux
46 MYFILE= drivers/net/mydriver.c 68 MYFILE= drivers/net/mydriver.c
47 69
48 cd $SRCTREE 70 cd $SRCTREE
@@ -55,17 +77,16 @@ To create a patch for multiple files, you should unpack a "vanilla",
55or unmodified kernel source tree, and generate a diff against your 77or unmodified kernel source tree, and generate a diff against your
56own source tree. For example: 78own source tree. For example:
57 79
58 MYSRC= /devel/linux-2.6 80 MYSRC= /devel/linux
59 81
60 tar xvfz linux-2.6.12.tar.gz 82 tar xvfz linux-3.19.tar.gz
61 mv linux-2.6.12 linux-2.6.12-vanilla 83 mv linux-3.19 linux-3.19-vanilla
62 diff -uprN -X linux-2.6.12-vanilla/Documentation/dontdiff \ 84 diff -uprN -X linux-3.19-vanilla/Documentation/dontdiff \
63 linux-2.6.12-vanilla $MYSRC > /tmp/patch 85 linux-3.19-vanilla $MYSRC > /tmp/patch
64 86
65"dontdiff" is a list of files which are generated by the kernel during 87"dontdiff" is a list of files which are generated by the kernel during
66the build process, and should be ignored in any diff(1)-generated 88the build process, and should be ignored in any diff(1)-generated
67patch. The "dontdiff" file is included in the kernel tree in 89patch.
682.6.12 and later.
69 90
70Make sure your patch does not include any extra files which do not 91Make sure your patch does not include any extra files which do not
71belong in a patch submission. Make sure to review your patch -after- 92belong in a patch submission. Make sure to review your patch -after-
@@ -83,6 +104,7 @@ is another popular alternative.
83 104
84 105
852) Describe your changes. 1062) Describe your changes.
107-------------------------
86 108
87Describe your problem. Whether your patch is a one-line bug fix or 109Describe your problem. Whether your patch is a one-line bug fix or
885000 lines of a new feature, there must be an underlying problem that 1105000 lines of a new feature, there must be an underlying problem that
@@ -124,10 +146,10 @@ See #3, next.
124When you submit or resubmit a patch or patch series, include the 146When you submit or resubmit a patch or patch series, include the
125complete patch description and justification for it. Don't just 147complete patch description and justification for it. Don't just
126say that this is version N of the patch (series). Don't expect the 148say that this is version N of the patch (series). Don't expect the
127patch merger to refer back to earlier patch versions or referenced 149subsystem maintainer to refer back to earlier patch versions or referenced
128URLs to find the patch description and put that into the patch. 150URLs to find the patch description and put that into the patch.
129I.e., the patch (series) and its description should be self-contained. 151I.e., the patch (series) and its description should be self-contained.
130This benefits both the patch merger(s) and reviewers. Some reviewers 152This benefits both the maintainers and reviewers. Some reviewers
131probably didn't even receive earlier versions of the patch. 153probably didn't even receive earlier versions of the patch.
132 154
133Describe your changes in imperative mood, e.g. "make xyzzy do frotz" 155Describe your changes in imperative mood, e.g. "make xyzzy do frotz"
@@ -156,10 +178,15 @@ Example:
156 platform_set_drvdata(), but left the variable "dev" unused, 178 platform_set_drvdata(), but left the variable "dev" unused,
157 delete it. 179 delete it.
158 180
181You should also be sure to use at least the first twelve characters of the
182SHA-1 ID. The kernel repository holds a *lot* of objects, making
183collisions with shorter IDs a real possibility. Bear in mind that, even if
184there is no collision with your six-character ID now, that condition may
185change five years from now.
186
159If your patch fixes a bug in a specific commit, e.g. you found an issue using 187If your patch fixes a bug in a specific commit, e.g. you found an issue using
160git-bisect, please use the 'Fixes:' tag with the first 12 characters of the 188git-bisect, please use the 'Fixes:' tag with the first 12 characters of the
161SHA-1 ID, and the one line summary. 189SHA-1 ID, and the one line summary. For example:
162Example:
163 190
164 Fixes: e21d2170f366 ("video: remove unnecessary platform_set_drvdata()") 191 Fixes: e21d2170f366 ("video: remove unnecessary platform_set_drvdata()")
165 192
@@ -172,8 +199,9 @@ outputting the above style in the git log or git show commands
172 fixes = Fixes: %h (\"%s\") 199 fixes = Fixes: %h (\"%s\")
173 200
1743) Separate your changes. 2013) Separate your changes.
202-------------------------
175 203
176Separate _logical changes_ into a single patch file. 204Separate each _logical change_ into a separate patch.
177 205
178For example, if your changes include both bug fixes and performance 206For example, if your changes include both bug fixes and performance
179enhancements for a single driver, separate those changes into two 207enhancements 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,
184group those changes into a single patch. Thus a single logical change 212group those changes into a single patch. Thus a single logical change
185is contained within a single patch. 213is contained within a single patch.
186 214
215The point to remember is that each patch should make an easily understood
216change that can be verified by reviewers. Each patch should be justifiable
217on its own merits.
218
187If one patch depends on another patch in order for a change to be 219If one patch depends on another patch in order for a change to be
188complete, that is OK. Simply note "this patch depends on patch X" 220complete, that is OK. Simply note "this patch depends on patch X"
189in your patch description. 221in your patch description.
190 222
223When dividing your change into a series of patches, take special care to
224ensure that the kernel builds and runs properly after each patch in the
225series. Developers using "git bisect" to track down a problem can end up
226splitting your patch series at any point; they will not thank you if you
227introduce bugs in the middle.
228
191If you cannot condense your patch set into a smaller set of patches, 229If you cannot condense your patch set into a smaller set of patches,
192then only post say 15 or so at a time and wait for review and integration. 230then only post say 15 or so at a time and wait for review and integration.
193 231
194 232
195 233
1964) Style check your changes. 2344) Style-check your changes.
235----------------------------
197 236
198Check your patch for basic style violations, details of which can be 237Check your patch for basic style violations, details of which can be
199found in Documentation/CodingStyle. Failure to do so simply wastes 238found in Documentation/CodingStyle. Failure to do so simply wastes
200the reviewers time and will get your patch rejected, probably 239the reviewers time and will get your patch rejected, probably
201without even being read. 240without even being read.
202 241
203At a minimum you should check your patches with the patch style 242One significant exception is when moving code from one file to
204checker prior to submission (scripts/checkpatch.pl). You should 243another -- in this case you should not modify the moved code at all in
205be able to justify all violations that remain in your patch. 244the same patch which moves it. This clearly delineates the act of
206 245moving the code and your changes. This greatly aids review of the
207 246actual differences and allows tools to better track the history of
247the code itself.
208 248
2095) Select e-mail destination. 249Check your patches with the patch style checker prior to submission
250(scripts/checkpatch.pl). Note, though, that the style checker should be
251viewed as a guide, not as a replacement for human judgment. If your code
252looks better with a violation then its probably best left alone.
210 253
211Look through the MAINTAINERS file and the source code, and determine 254The checker reports at three levels:
212if your change applies to a specific subsystem of the kernel, with 255 - ERROR: things that are very likely to be wrong
213an assigned maintainer. If so, e-mail that person. The script 256 - WARNING: things requiring careful review
214scripts/get_maintainer.pl can be very useful at this step. 257 - CHECK: things requiring thought
215 258
216If no maintainer is listed, or the maintainer does not respond, send 259You should be able to justify all violations that remain in your
217your patch to the primary Linux kernel developer's mailing list, 260patch.
218linux-kernel@vger.kernel.org. Most kernel developers monitor this
219e-mail list, and can comment on your changes.
220 261
221 262
222Do not send more than 15 patches at once to the vger mailing lists!!! 2635) Select the recipients for your patch.
264----------------------------------------
223 265
266You should always copy the appropriate subsystem maintainer(s) on any patch
267to code that they maintain; look through the MAINTAINERS file and the
268source code revision history to see who those maintainers are. The
269script scripts/get_maintainer.pl can be very useful at this step. If you
270cannot find a maintainer for the subsystem your are working on, Andrew
271Morton (akpm@linux-foundation.org) serves as a maintainer of last resort.
224 272
225Linus Torvalds is the final arbiter of all changes accepted into the 273You should also normally choose at least one mailing list to receive a copy
226Linux kernel. His e-mail address is <torvalds@linux-foundation.org>. 274of your patch set. linux-kernel@vger.kernel.org functions as a list of
227He gets a lot of e-mail, so typically you should do your best to -avoid- 275last resort, but the volume on that list has caused a number of developers
228sending him e-mail. 276to tune it out. Look in the MAINTAINERS file for a subsystem-specific
277list; your patch will probably get more attention there. Please do not
278spam unrelated lists, though.
229 279
230Patches which are bug fixes, are "obvious" changes, or similarly 280Many kernel-related lists are hosted on vger.kernel.org; you can find a
231require little discussion should be sent or CC'd to Linus. Patches 281list of them at http://vger.kernel.org/vger-lists.html. There are
232which require discussion or do not have a clear advantage should 282kernel-related lists hosted elsewhere as well, though.
233usually be sent first to linux-kernel. Only after the patch is
234discussed should the patch then be submitted to Linus.
235 283
284Do not send more than 15 patches at once to the vger mailing lists!!!
236 285
286Linus Torvalds is the final arbiter of all changes accepted into the
287Linux kernel. His e-mail address is <torvalds@linux-foundation.org>.
288He gets a lot of e-mail, and, at this point, very few patches go through
289Linus directly, so typically you should do your best to -avoid-
290sending him e-mail.
237 291
2386) Select your CC (e-mail carbon copy) list. 292If you have a patch that fixes an exploitable security bug, send that patch
293to security@kernel.org. For severe bugs, a short embargo may be considered
294to allow distrbutors to get the patch out to users; in such cases,
295obviously, the patch should not be sent to any public lists.
239 296
240Unless you have a reason NOT to do so, CC linux-kernel@vger.kernel.org. 297Patches that fix a severe bug in a released kernel should be directed
298toward the stable maintainers by putting a line like this:
241 299
242Other kernel developers besides Linus need to be aware of your change, 300 Cc: stable@vger.kernel.org
243so that they may comment on it and offer code review and suggestions.
244linux-kernel is the primary Linux kernel developer mailing list.
245Other mailing lists are available for specific subsystems, such as
246USB, framebuffer devices, the VFS, the SCSI subsystem, etc. See the
247MAINTAINERS file for a mailing list that relates specifically to
248your change.
249 301
250Majordomo lists of VGER.KERNEL.ORG at: 302into your patch.
251 <http://vger.kernel.org/vger-lists.html>
252 303
253If changes affect userland-kernel interfaces, please send 304Note, however, that some subsystem maintainers want to come to their own
254the MAN-PAGES maintainer (as listed in the MAINTAINERS file) 305conclusions on which patches should go to the stable trees. The networking
255a man-pages patch, or at least a notification of the change, 306maintainer, in particular, would rather not see individual developers
256so that some information makes its way into the manual pages. 307adding lines like the above to their patches.
257 308
258Even if the maintainer did not respond in step #5, make sure to ALWAYS 309If changes affect userland-kernel interfaces, please send the MAN-PAGES
259copy the maintainer when you change their code. 310maintainer (as listed in the MAINTAINERS file) a man-pages patch, or at
311least a notification of the change, so that some information makes its way
312into the manual pages. User-space API changes should also be copied to
313linux-api@vger.kernel.org.
260 314
261For small patches you may want to CC the Trivial Patch Monkey 315For small patches you may want to CC the Trivial Patch Monkey
262trivial@kernel.org which collects "trivial" patches. Have a look 316trivial@kernel.org which collects "trivial" patches. Have a look
263into the MAINTAINERS file for its current manager. 317into the MAINTAINERS file for its current manager.
264Trivial patches must qualify for one of the following rules: 318Trivial patches must qualify for one of the following rules:
265 Spelling fixes in documentation 319 Spelling fixes in documentation
266 Spelling fixes which could break grep(1) 320 Spelling fixes for errors which could break grep(1)
267 Warning fixes (cluttering with useless warnings is bad) 321 Warning fixes (cluttering with useless warnings is bad)
268 Compilation fixes (only if they are actually correct) 322 Compilation fixes (only if they are actually correct)
269 Runtime fixes (only if they actually fix things) 323 Runtime fixes (only if they actually fix things)
270 Removing use of deprecated functions/macros (eg. check_region) 324 Removing use of deprecated functions/macros
271 Contact detail and documentation fixes 325 Contact detail and documentation fixes
272 Non-portable code replaced by portable code (even in arch-specific, 326 Non-portable code replaced by portable code (even in arch-specific,
273 since people copy, as long as it's trivial) 327 since people copy, as long as it's trivial)
@@ -276,7 +330,8 @@ Trivial patches must qualify for one of the following rules:
276 330
277 331
278 332
2797) No MIME, no links, no compression, no attachments. Just plain text. 3336) No MIME, no links, no compression, no attachments. Just plain text.
334-----------------------------------------------------------------------
280 335
281Linus and other kernel developers need to be able to read and comment 336Linus and other kernel developers need to be able to read and comment
282on the changes you are submitting. It is important for a kernel 337on the changes you are submitting. It is important for a kernel
@@ -299,54 +354,48 @@ you to re-send them using MIME.
299See Documentation/email-clients.txt for hints about configuring 354See Documentation/email-clients.txt for hints about configuring
300your e-mail client so that it sends your patches untouched. 355your e-mail client so that it sends your patches untouched.
301 356
3028) E-mail size. 3577) E-mail size.
303 358---------------
304When sending patches to Linus, always follow step #7.
305 359
306Large changes are not appropriate for mailing lists, and some 360Large changes are not appropriate for mailing lists, and some
307maintainers. If your patch, uncompressed, exceeds 300 kB in size, 361maintainers. If your patch, uncompressed, exceeds 300 kB in size,
308it is preferred that you store your patch on an Internet-accessible 362it is preferred that you store your patch on an Internet-accessible
309server, and provide instead a URL (link) pointing to your patch. 363server, and provide instead a URL (link) pointing to your patch. But note
364that if your patch exceeds 300 kB, it almost certainly needs to be broken up
365anyway.
310 366
3678) Respond to review comments.
368------------------------------
311 369
370Your patch will almost certainly get comments from reviewers on ways in
371which the patch can be improved. You must respond to those comments;
372ignoring reviewers is a good way to get ignored in return. Review comments
373or questions that do not lead to a code change should almost certainly
374bring about a comment or changelog entry so that the next reviewer better
375understands what is going on.
312 376
3139) Name your kernel version. 377Be sure to tell the reviewers what changes you are making and to thank them
378for their time. Code review is a tiring and time-consuming process, and
379reviewers sometimes get grumpy. Even in that case, though, respond
380politely and address the problems they have pointed out.
314 381
315It is important to note, either in the subject line or in the patch
316description, the kernel version to which this patch applies.
317 382
318If the patch does not apply cleanly to the latest kernel version, 3839) Don't get discouraged - or impatient.
319Linus will not apply it. 384----------------------------------------
320 385
386After you have submitted your change, be patient and wait. Reviewers are
387busy people and may not get to your patch right away.
321 388
389Once upon a time, patches used to disappear into the void without comment,
390but the development process works more smoothly than that now. You should
391receive comments within a week or so; if that does not happen, make sure
392that you have sent your patches to the right place. Wait for a minimum of
393one week before resubmitting or pinging reviewers - possibly longer during
394busy times like merge windows.
322 395
32310) Don't get discouraged. Re-submit.
324 396
325After you have submitted your change, be patient and wait. If Linus 39710) Include PATCH in the subject
326likes your change and applies it, it will appear in the next version 398--------------------------------
327of the kernel that he releases.
328
329However, if your change doesn't appear in the next version of the
330kernel, there could be any number of reasons. It's YOUR job to
331narrow down those reasons, correct what was wrong, and submit your
332updated change.
333
334It is quite common for Linus to "drop" your patch without comment.
335That's the nature of the system. If he drops your patch, it could be
336due 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
345When in doubt, solicit comments on linux-kernel mailing list.
346
347
348
34911) Include PATCH in the subject
350 399
351Due to high e-mail traffic to Linus, and to linux-kernel, it is common 400Due to high e-mail traffic to Linus, and to linux-kernel, it is common
352convention to prefix your subject line with [PATCH]. This lets Linus 401convention to prefix your subject line with [PATCH]. This lets Linus
@@ -355,7 +404,8 @@ e-mail discussions.
355 404
356 405
357 406
35812) Sign your work 40711) Sign your work
408------------------
359 409
360To improve tracking of who did what, especially with patches that can 410To improve tracking of who did what, especially with patches that can
361percolate to their final resting place in the kernel through several 411percolate to their final resting place in the kernel through several
@@ -387,11 +437,11 @@ can certify the below:
387 person who certified (a), (b) or (c) and I have not modified 437 person who certified (a), (b) or (c) and I have not modified
388 it. 438 it.
389 439
390 (d) I understand and agree that this project and the contribution 440 (d) I understand and agree that this project and the contribution
391 are public and that a record of the contribution (including all 441 are public and that a record of the contribution (including all
392 personal information I submit with it, including my sign-off) is 442 personal information I submit with it, including my sign-off) is
393 maintained indefinitely and may be redistributed consistent with 443 maintained indefinitely and may be redistributed consistent with
394 this project or the open source license(s) involved. 444 this project or the open source license(s) involved.
395 445
396then you just add a line saying 446then you just add a line saying
397 447
@@ -401,7 +451,7 @@ using your real name (sorry, no pseudonyms or anonymous contributions.)
401 451
402Some people also put extra tags at the end. They'll just be ignored for 452Some people also put extra tags at the end. They'll just be ignored for
403now, but you can do this to mark internal company procedures or just 453now, but you can do this to mark internal company procedures or just
404point out some special detail about the sign-off. 454point out some special detail about the sign-off.
405 455
406If you are a subsystem or branch maintainer, sometimes you need to slightly 456If you are a subsystem or branch maintainer, sometimes you need to slightly
407modify patches you receive in order to merge them, because the code is not 457modify patches you receive in order to merge them, because the code is not
@@ -429,15 +479,15 @@ which appears in the changelog.
429Special note to back-porters: It seems to be a common and useful practice 479Special note to back-porters: It seems to be a common and useful practice
430to insert an indication of the origin of a patch at the top of the commit 480to insert an indication of the origin of a patch at the top of the commit
431message (just after the subject line) to facilitate tracking. For instance, 481message (just after the subject line) to facilitate tracking. For instance,
432here's what we see in 2.6-stable : 482here's what we see in a 3.x-stable release:
433 483
434 Date: Tue May 13 19:10:30 2008 +0000 484Date: 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
440And here's what appears in 2.4 : 490And here's what might appear in an older kernel once a patch is backported:
441 491
442 Date: Tue May 13 22:12:27 2008 +0200 492 Date: Tue May 13 22:12:27 2008 +0200
443 493
@@ -446,18 +496,19 @@ And here's what appears in 2.4 :
446 [backport of 2.6 commit b7acbdfbd1f277c1eb23f344f899cfa4cd0bf36a] 496 [backport of 2.6 commit b7acbdfbd1f277c1eb23f344f899cfa4cd0bf36a]
447 497
448Whatever the format, this information provides a valuable help to people 498Whatever the format, this information provides a valuable help to people
449tracking your trees, and to people trying to trouble-shoot bugs in your 499tracking your trees, and to people trying to troubleshoot bugs in your
450tree. 500tree.
451 501
452 502
45313) When to use Acked-by: and Cc: 50312) When to use Acked-by: and Cc:
504---------------------------------
454 505
455The Signed-off-by: tag indicates that the signer was involved in the 506The Signed-off-by: tag indicates that the signer was involved in the
456development of the patch, or that he/she was in the patch's delivery path. 507development of the patch, or that he/she was in the patch's delivery path.
457 508
458If a person was not directly involved in the preparation or handling of a 509If a person was not directly involved in the preparation or handling of a
459patch but wishes to signify and record their approval of it then they can 510patch but wishes to signify and record their approval of it then they can
460arrange to have an Acked-by: line added to the patch's changelog. 511ask to have an Acked-by: line added to the patch's changelog.
461 512
462Acked-by: is often used by the maintainer of the affected code when that 513Acked-by: is often used by the maintainer of the affected code when that
463maintainer neither contributed to nor forwarded the patch. 514maintainer neither contributed to nor forwarded the patch.
@@ -465,7 +516,8 @@ maintainer neither contributed to nor forwarded the patch.
465Acked-by: is not as formal as Signed-off-by:. It is a record that the acker 516Acked-by: is not as formal as Signed-off-by:. It is a record that the acker
466has at least reviewed the patch and has indicated acceptance. Hence patch 517has at least reviewed the patch and has indicated acceptance. Hence patch
467mergers will sometimes manually convert an acker's "yep, looks good to me" 518mergers will sometimes manually convert an acker's "yep, looks good to me"
468into an Acked-by:. 519into an Acked-by: (but note that it is usually better to ask for an
520explicit ack).
469 521
470Acked-by: does not necessarily indicate acknowledgement of the entire patch. 522Acked-by: does not necessarily indicate acknowledgement of the entire patch.
471For example, if a patch affects multiple subsystems and has an Acked-by: from 523For example, if a patch affects multiple subsystems and has an Acked-by: from
@@ -477,11 +529,13 @@ list archives.
477If a person has had the opportunity to comment on a patch, but has not 529If a person has had the opportunity to comment on a patch, but has not
478provided such comments, you may optionally add a "Cc:" tag to the patch. 530provided such comments, you may optionally add a "Cc:" tag to the patch.
479This is the only tag which might be added without an explicit action by the 531This is the only tag which might be added without an explicit action by the
480person it names. This tag documents that potentially interested parties 532person it names - but it should indicate that this person was copied on the
481have been included in the discussion 533patch. This tag documents that potentially interested parties
534have been included in the discussion.
482 535
483 536
48414) Using Reported-by:, Tested-by:, Reviewed-by:, Suggested-by: and Fixes: 53713) Using Reported-by:, Tested-by:, Reviewed-by:, Suggested-by: and Fixes:
538--------------------------------------------------------------------------
485 539
486The Reported-by tag gives credit to people who find bugs and report them and it 540The Reported-by tag gives credit to people who find bugs and report them and it
487hopefully inspires them to help us again in the future. Please note that if 541hopefully 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
541method for indicating a bug fixed by the patch. See #2 above for more details. 595method for indicating a bug fixed by the patch. See #2 above for more details.
542 596
543 597
54415) The canonical patch format 59814) The canonical patch format
599------------------------------
600
601This section describes how the patch itself should be formatted. Note
602that, if you have your patches stored in a git repository, proper patch
603formatting can be had with "git format-patch". The tools cannot create
604the necessary text, though, so read the instructions below anyway.
545 605
546The canonical patch subject line is: 606The canonical patch subject line is:
547 607
@@ -549,7 +609,8 @@ The canonical patch subject line is:
549 609
550The canonical patch message body contains the following: 610The canonical patch message body contains the following:
551 611
552 - A "from" line specifying the patch author. 612 - A "from" line specifying the patch author (only needed if the person
613 sending the patch is not the author).
553 614
554 - An empty line. 615 - An empty line.
555 616
@@ -656,128 +717,63 @@ See more details on the proper patch format in the following
656references. 717references.
657 718
658 719
65916) Sending "git pull" requests (from Linus emails) 72015) Sending "git pull" requests
660 721-------------------------------
661Please write the git repo address and branch name alone on the same line
662so that I can't even by mistake pull from the wrong branch, and so
663that a triple-click just selects the whole thing.
664
665So 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
673so that I don't have to hunt-and-peck for the address and inevitably
674get it wrong (actually, I've only gotten it wrong a few times, and
675checking against the diffstat tells me when I get it wrong, but I'm
676just a lot more comfortable when I don't have to "look for" the right
677thing to pull, and double-check that I have the right branch-name).
678
679
680Please use "git diff -M --stat --summary" to generate the diffstat:
681the -M enables rename detection, and the summary enables a summary of
682new/deleted or renamed files.
683
684With rename detection, the statistics are rather different [...]
685because git will notice that a fair number of the changes are renames.
686
687-----------------------------------
688SECTION 2 - HINTS, TIPS, AND TRICKS
689-----------------------------------
690
691This section lists many of the common "rules" associated with code
692submitted to the kernel. There are always exceptions... but you must
693have a really good reason for doing so. You could probably call this
694section Linus Computer Science 101.
695
696
697
6981) Read Documentation/CodingStyle
699
700Nuff said. If your code deviates too much from this, it is likely
701to be rejected without further review, and without comment.
702
703One significant exception is when moving code from one file to
704another -- in this case you should not modify the moved code at all in
705the same patch which moves it. This clearly delineates the act of
706moving the code and your changes. This greatly aids review of the
707actual differences and allows tools to better track the history of
708the code itself.
709
710Check your patches with the patch style checker prior to submission
711(scripts/checkpatch.pl). The style checker should be viewed as
712a guide not as the final word. If your code looks better with
713a violation then its probably best left alone.
714
715The 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
720You should be able to justify all violations that remain in your
721patch.
722
723
724
7252) #ifdefs are ugly
726
727Code cluttered with ifdefs is difficult to read and maintain. Don't do
728it. Instead, put your ifdefs in a header, and conditionally define
729'static inline' functions, or macros, which are used in the code.
730Let the compiler optimize away the "no-op" case.
731
732Simple 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
741Cleaned-up example:
742
743(in header)
744 #ifndef CONFIG_NET_FUNKINESS
745 static inline void init_funky_net (struct net_device *d) {}
746 #endif
747 722
748(in the code itself) 723If you have a series of patches, it may be most convenient to have the
749 dev = alloc_etherdev (sizeof(struct funky_private)); 724maintainer pull them directly into the subsystem repository with a
750 if (!dev) 725"git pull" operation. Note, however, that pulling patches from a developer
751 return -ENODEV; 726requires a higher degree of trust than taking patches from a mailing list.
752 init_funky_net(dev); 727As a result, many subsystem maintainers are reluctant to take pull
728requests, especially from new, unknown developers. If in doubt you can use
729the pull request as the cover letter for a normal posting of the patch
730series, giving the maintainer the option of using either.
753 731
732A pull request should have [GIT] or [PULL] in the subject line. The
733request itself should include the repository name and the branch of
734interest on a single line; it should look something like:
754 735
736 Please pull from
755 737
7563) 'static inline' is better than a macro 738 git://jdelvare.pck.nerim.net/jdelvare-2.6 i2c-for-linus
757 739
758Static inline functions are greatly preferred over macros. 740 to get these changes:"
759They provide type safety, have no length limitations, no formatting
760limitations, and under gcc they are as cheap as macros.
761 741
762Macros should only be used for cases where a static inline is clearly 742A pull request should also include an overall message saying what will be
763suboptimal [there are a few, isolated cases of this in fast paths], 743included in the request, a "git shortlog" listing of the patches
764or where it is impossible to use a static inline function [such as 744themselves, and a diffstat showing the overall effect of the patch series.
765string-izing]. 745The easiest way to get all this information together is, of course, to let
746git do it for you with the "git request-pull" command.
766 747
767'static inline' is preferred over 'static __inline__', 'extern inline', 748Some maintainers (including Linus) want to see pull requests from signed
768and 'extern __inline__'. 749commits; that increases their confidence that the request actually came
750from you. Linus, in particular, will not pull from public hosting sites
751like GitHub in the absence of a signed tag.
769 752
753The first step toward creating such tags is to make a GNUPG key and get it
754signed by one or more core kernel developers. This step can be hard for
755new developers, but there is no way around it. Attending conferences can
756be a good way to find developers who can sign your key.
770 757
758Once you have prepared a patch series in git that you wish to have somebody
759pull, create a signed tag with "git tag -s". This will create a new tag
760identifying the last commit in the series and containing a signature
761created with your private key. You will also have the opportunity to add a
762changelog-style message to the tag; this is an ideal place to describe the
763effects of the pull request as a whole.
771 764
7724) Don't over-design. 765If the tree the maintainer will be pulling from is not the repository you
766are working from, don't forget to push the signed tag explicitly to the
767public tree.
773 768
774Don't try to anticipate nebulous future cases which may or may not 769When generating your pull request, use the signed tag as the target. A
775be useful: "Make it as simple as you can, and no simpler." 770command 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----------------------
780SECTION 3 - REFERENCES 776SECTION 2 - REFERENCES
781---------------------- 777----------------------
782 778
783Andrew Morton, "The perfect patch" (tpp). 779Andrew Morton, "The perfect patch" (tpp).
diff --git a/Documentation/acpi/enumeration.txt b/Documentation/acpi/enumeration.txt
index b60d2ab69497..9b121a569ab4 100644
--- a/Documentation/acpi/enumeration.txt
+++ b/Documentation/acpi/enumeration.txt
@@ -243,7 +243,7 @@ input driver:
243 .owner = THIS_MODULE, 243 .owner = THIS_MODULE,
244 .pm = &mpu3050_pm, 244 .pm = &mpu3050_pm,
245 .of_match_table = mpu3050_of_match, 245 .of_match_table = mpu3050_of_match,
246 .acpi_match_table ACPI_PTR(mpu3050_acpi_match), 246 .acpi_match_table = ACPI_PTR(mpu3050_acpi_match),
247 }, 247 },
248 .probe = mpu3050_probe, 248 .probe = mpu3050_probe,
249 .remove = mpu3050_remove, 249 .remove = mpu3050_remove,
diff --git a/Documentation/arm/00-INDEX b/Documentation/arm/00-INDEX
index 3b08bc2b04cf..8edb9007844e 100644
--- a/Documentation/arm/00-INDEX
+++ b/Documentation/arm/00-INDEX
@@ -2,11 +2,15 @@
2 - this file 2 - this file
3Booting 3Booting
4 - requirements for booting 4 - requirements for booting
5CCN.txt
6 - Cache Coherent Network ring-bus and perf PMU driver.
5Interrupts 7Interrupts
6 - ARM Interrupt subsystem documentation 8 - ARM Interrupt subsystem documentation
7IXP4xx 9IXP4xx
8 - Intel IXP4xx Network processor. 10 - Intel IXP4xx Network processor.
9msm 11Makefile
12 - Build sourcefiles as part of the Documentation-build for arm
13msm/
10 - MSM specific documentation 14 - MSM specific documentation
11Netwinder 15Netwinder
12 - Netwinder specific documentation 16 - Netwinder specific documentation
@@ -18,11 +22,9 @@ README
18 - General ARM documentation 22 - General ARM documentation
19SA1100/ 23SA1100/
20 - SA1100 documentation 24 - SA1100 documentation
21Samsung-S3C24XX 25Samsung-S3C24XX/
22 - S3C24XX ARM Linux Overview 26 - S3C24XX ARM Linux Overview
23Sharp-LH 27SPEAr/
24 - Linux on Sharp LH79524 and LH7A40X System On a Chip (SOC)
25SPEAr
26 - ST SPEAr platform Linux Overview 28 - ST SPEAr platform Linux Overview
27VFP/ 29VFP/
28 - Release notes for Linux Kernel Vector Floating Point support code 30 - Release notes for Linux Kernel Vector Floating Point support code
diff --git a/Documentation/arm64/legacy_instructions.txt b/Documentation/arm64/legacy_instructions.txt
index a3b3da2ec6ed..01bf3d9fac85 100644
--- a/Documentation/arm64/legacy_instructions.txt
+++ b/Documentation/arm64/legacy_instructions.txt
@@ -32,6 +32,9 @@ The default mode depends on the status of the instruction in the
32architecture. Deprecated instructions should default to emulation 32architecture. Deprecated instructions should default to emulation
33while obsolete instructions must be undefined by default. 33while obsolete instructions must be undefined by default.
34 34
35Note: Instruction emulation may not be possible in all cases. See
36individual instruction notes for further information.
37
35Supported legacy instructions 38Supported legacy instructions
36----------------------------- 39-----------------------------
37* SWP{B} 40* SWP{B}
@@ -43,3 +46,12 @@ Default: Undef (0)
43Node: /proc/sys/abi/cp15_barrier 46Node: /proc/sys/abi/cp15_barrier
44Status: Deprecated 47Status: Deprecated
45Default: Emulate (1) 48Default: Emulate (1)
49
50* SETEND
51Node: /proc/sys/abi/setend
52Status: Deprecated
53Default: Emulate (1)*
54Note: All the cpus on the system must have mixed endian support at EL0
55for this feature to be enabled. If a new CPU - which doesn't support mixed
56endian - is hotplugged in after this feature has been enabled, there could
57be unexpected results in the application.
diff --git a/Documentation/blackfin/Makefile b/Documentation/blackfin/Makefile
index c7e6c99bad81..03f78059d6f5 100644
--- a/Documentation/blackfin/Makefile
+++ b/Documentation/blackfin/Makefile
@@ -1,3 +1,5 @@
1ifneq ($(CONFIG_BLACKFIN),) 1ifneq ($(CONFIG_BLACKFIN),)
2ifneq ($(CONFIG_BFIN_GPTIMERS,)
2obj-m := gptimers-example.o 3obj-m := gptimers-example.o
3endif 4endif
5endif
diff --git a/Documentation/cachetlb.txt b/Documentation/cachetlb.txt
index d79b008e4a32..3f9f808b5119 100644
--- a/Documentation/cachetlb.txt
+++ b/Documentation/cachetlb.txt
@@ -317,10 +317,10 @@ maps this page at its virtual address.
317 about doing this. 317 about doing this.
318 318
319 The idea is, first at flush_dcache_page() time, if 319 The idea is, first at flush_dcache_page() time, if
320 page->mapping->i_mmap is an empty tree and ->i_mmap_nonlinear 320 page->mapping->i_mmap is an empty tree, just mark the architecture
321 an empty list, just mark the architecture private page flag bit. 321 private page flag bit. Later, in update_mmu_cache(), a check is
322 Later, in update_mmu_cache(), a check is made of this flag bit, 322 made of this flag bit, and if set the flush is done and the flag
323 and if set the flush is done and the flag bit is cleared. 323 bit is cleared.
324 324
325 IMPORTANT NOTE: It is often important, if you defer the flush, 325 IMPORTANT NOTE: It is often important, if you defer the flush,
326 that the actual flush occurs on the same CPU 326 that the actual flush occurs on the same CPU
diff --git a/Documentation/cgroups/00-INDEX b/Documentation/cgroups/00-INDEX
index bc461b6425a7..96ce071a3633 100644
--- a/Documentation/cgroups/00-INDEX
+++ b/Documentation/cgroups/00-INDEX
@@ -24,3 +24,5 @@ net_prio.txt
24 - Network priority cgroups details and usages. 24 - Network priority cgroups details and usages.
25resource_counter.txt 25resource_counter.txt
26 - Resource Counter API. 26 - Resource Counter API.
27unified-hierarchy.txt
28 - Description the new/next cgroup interface.
diff --git a/Documentation/cgroups/unified-hierarchy.txt b/Documentation/cgroups/unified-hierarchy.txt
index 4f4563277864..71daa35ec2d9 100644
--- a/Documentation/cgroups/unified-hierarchy.txt
+++ b/Documentation/cgroups/unified-hierarchy.txt
@@ -327,6 +327,85 @@ supported and the interface files "release_agent" and
327- use_hierarchy is on by default and the cgroup file for the flag is 327- use_hierarchy is on by default and the cgroup file for the flag is
328 not created. 328 not created.
329 329
330- The original lower boundary, the soft limit, is defined as a limit
331 that is per default unset. As a result, the set of cgroups that
332 global reclaim prefers is opt-in, rather than opt-out. The costs
333 for optimizing these mostly negative lookups are so high that the
334 implementation, despite its enormous size, does not even provide the
335 basic desirable behavior. First off, the soft limit has no
336 hierarchical meaning. All configured groups are organized in a
337 global rbtree and treated like equal peers, regardless where they
338 are located in the hierarchy. This makes subtree delegation
339 impossible. Second, the soft limit reclaim pass is so aggressive
340 that it not just introduces high allocation latencies into the
341 system, but also impacts system performance due to overreclaim, to
342 the point where the feature becomes self-defeating.
343
344 The memory.low boundary on the other hand is a top-down allocated
345 reserve. A cgroup enjoys reclaim protection when it and all its
346 ancestors are below their low boundaries, which makes delegation of
347 subtrees possible. Secondly, new cgroups have no reserve per
348 default and in the common case most cgroups are eligible for the
349 preferred reclaim pass. This allows the new low boundary to be
350 efficiently implemented with just a minor addition to the generic
351 reclaim code, without the need for out-of-band data structures and
352 reclaim passes. Because the generic reclaim code considers all
353 cgroups except for the ones running low in the preferred first
354 reclaim pass, overreclaim of individual groups is eliminated as
355 well, resulting in much better overall workload performance.
356
357- The original high boundary, the hard limit, is defined as a strict
358 limit that can not budge, even if the OOM killer has to be called.
359 But this generally goes against the goal of making the most out of
360 the available memory. The memory consumption of workloads varies
361 during runtime, and that requires users to overcommit. But doing
362 that with a strict upper limit requires either a fairly accurate
363 prediction of the working set size or adding slack to the limit.
364 Since working set size estimation is hard and error prone, and
365 getting it wrong results in OOM kills, most users tend to err on the
366 side of a looser limit and end up wasting precious resources.
367
368 The memory.high boundary on the other hand can be set much more
369 conservatively. When hit, it throttles allocations by forcing them
370 into direct reclaim to work off the excess, but it never invokes the
371 OOM killer. As a result, a high boundary that is chosen too
372 aggressively will not terminate the processes, but instead it will
373 lead to gradual performance degradation. The user can monitor this
374 and make corrections until the minimal memory footprint that still
375 gives acceptable performance is found.
376
377 In extreme cases, with many concurrent allocations and a complete
378 breakdown of reclaim progress within the group, the high boundary
379 can be exceeded. But even then it's mostly better to satisfy the
380 allocation from the slack available in other groups or the rest of
381 the system than killing the group. Otherwise, memory.max is there
382 to limit this type of spillover and ultimately contain buggy or even
383 malicious applications.
384
385- The original control file names are unwieldy and inconsistent in
386 many different ways. For example, the upper boundary hit count is
387 exported in the memory.failcnt file, but an OOM event count has to
388 be manually counted by listening to memory.oom_control events, and
389 lower boundary / soft limit events have to be counted by first
390 setting a threshold for that value and then counting those events.
391 Also, usage and limit files encode their units in the filename.
392 That makes the filenames very long, even though this is not
393 information that a user needs to be reminded of every time they type
394 out those names.
395
396 To address these naming issues, as well as to signal clearly that
397 the new interface carries a new configuration model, the naming
398 conventions in it necessarily differ from the old interface.
399
400- The original limit files indicate the state of an unset limit with a
401 Very High Number, and a configured limit can be unset by echoing -1
402 into those files. But that very high number is implementation and
403 architecture dependent and not very descriptive. And while -1 can
404 be understood as an underflow into the highest possible value, -2 or
405 -10M etc. do not work, so it's not consistent.
406
407 memory.low, memory.high, and memory.max will use the string
408 "infinity" to indicate and set the highest possible value.
330 409
3315. Planned Changes 4105. Planned Changes
332 411
diff --git a/Documentation/cpu-freq/intel-pstate.txt b/Documentation/cpu-freq/intel-pstate.txt
index 765d7fc0e692..655750743fb0 100644
--- a/Documentation/cpu-freq/intel-pstate.txt
+++ b/Documentation/cpu-freq/intel-pstate.txt
@@ -37,6 +37,14 @@ controlling P state selection. These files have been added to
37 no_turbo: limits the driver to selecting P states below the turbo 37 no_turbo: limits the driver to selecting P states below the turbo
38 frequency range. 38 frequency range.
39 39
40 turbo_pct: displays the percentage of the total performance that
41 is supported by hardware that is in the turbo range. This number
42 is independent of whether turbo has been disabled or not.
43
44 num_pstates: displays the number of pstates that are supported
45 by hardware. This number is independent of whether turbo has
46 been disabled or not.
47
40For contemporary Intel processors, the frequency is controlled by the 48For contemporary Intel processors, the frequency is controlled by the
41processor itself and the P-states exposed to software are related to 49processor itself and the P-states exposed to software are related to
42performance levels. The idea that frequency can be set to a single 50performance levels. The idea that frequency can be set to a single
diff --git a/Documentation/devicetree/bindings/arm/brcm-brcmstb.txt b/Documentation/devicetree/bindings/arm/brcm-brcmstb.txt
index 3c436cc4f35d..430608ec09f0 100644
--- a/Documentation/devicetree/bindings/arm/brcm-brcmstb.txt
+++ b/Documentation/devicetree/bindings/arm/brcm-brcmstb.txt
@@ -79,7 +79,9 @@ reboot
79Required properties 79Required properties
80 80
81 - compatible 81 - compatible
82 The string property "brcm,brcmstb-reboot". 82 The string property "brcm,brcmstb-reboot" for 40nm/28nm chips with
83 the new SYS_CTRL interface, or "brcm,bcm7038-reboot" for 65nm
84 chips with the old SUN_TOP_CTRL interface.
83 85
84 - syscon 86 - syscon
85 A phandle / integer array that points to the syscon node which describes 87 A phandle / integer array that points to the syscon node which describes
diff --git a/Documentation/devicetree/bindings/arm/cpus.txt b/Documentation/devicetree/bindings/arm/cpus.txt
index b2aacbe16ed9..8b9e0a95de31 100644
--- a/Documentation/devicetree/bindings/arm/cpus.txt
+++ b/Documentation/devicetree/bindings/arm/cpus.txt
@@ -175,6 +175,7 @@ nodes to be present and contain the properties described below.
175 "marvell,pj4a" 175 "marvell,pj4a"
176 "marvell,pj4b" 176 "marvell,pj4b"
177 "marvell,sheeva-v5" 177 "marvell,sheeva-v5"
178 "nvidia,tegra132-denver"
178 "qcom,krait" 179 "qcom,krait"
179 "qcom,scorpion" 180 "qcom,scorpion"
180 - enable-method 181 - enable-method
diff --git a/Documentation/devicetree/bindings/arm/l2cc.txt b/Documentation/devicetree/bindings/arm/l2cc.txt
index 292ef7ca3058..0dbabe9a6b0a 100644
--- a/Documentation/devicetree/bindings/arm/l2cc.txt
+++ b/Documentation/devicetree/bindings/arm/l2cc.txt
@@ -57,6 +57,16 @@ Optional properties:
57- cache-id-part: cache id part number to be used if it is not present 57- cache-id-part: cache id part number to be used if it is not present
58 on hardware 58 on hardware
59- wt-override: If present then L2 is forced to Write through mode 59- wt-override: If present then L2 is forced to Write through mode
60- arm,double-linefill : Override double linefill enable setting. Enable if
61 non-zero, disable if zero.
62- arm,double-linefill-incr : Override double linefill on INCR read. Enable
63 if non-zero, disable if zero.
64- arm,double-linefill-wrap : Override double linefill on WRAP read. Enable
65 if non-zero, disable if zero.
66- arm,prefetch-drop : Override prefetch drop enable setting. Enable if non-zero,
67 disable if zero.
68- arm,prefetch-offset : Override prefetch offset value. Valid values are
69 0-7, 15, 23, and 31.
60 70
61Example: 71Example:
62 72
diff --git a/Documentation/devicetree/bindings/arm/msm/timer.txt b/Documentation/devicetree/bindings/arm/msm/timer.txt
index c6ef8f13dc7e..74607b6c1117 100644
--- a/Documentation/devicetree/bindings/arm/msm/timer.txt
+++ b/Documentation/devicetree/bindings/arm/msm/timer.txt
@@ -8,7 +8,7 @@ Properties:
8 "qcom,kpss-timer" - krait subsystem 8 "qcom,kpss-timer" - krait subsystem
9 "qcom,scss-timer" - scorpion subsystem 9 "qcom,scss-timer" - scorpion subsystem
10 10
11- interrupts : Interrupts for the the debug timer, the first general purpose 11- interrupts : Interrupts for the debug timer, the first general purpose
12 timer, and optionally a second general purpose timer in that 12 timer, and optionally a second general purpose timer in that
13 order. 13 order.
14 14
diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-ahb.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-ahb.txt
index 234406d41c12..067c9790062f 100644
--- a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-ahb.txt
+++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-ahb.txt
@@ -1,7 +1,10 @@
1NVIDIA Tegra AHB 1NVIDIA Tegra AHB
2 2
3Required properties: 3Required properties:
4- compatible : "nvidia,tegra20-ahb" or "nvidia,tegra30-ahb" 4- compatible : For Tegra20, must contain "nvidia,tegra20-ahb". For
5 Tegra30, must contain "nvidia,tegra30-ahb". Otherwise, must contain
6 '"nvidia,<chip>-ahb", "nvidia,tegra30-ahb"' where <chip> is tegra124,
7 tegra132, or tegra210.
5- reg : Should contain 1 register ranges(address and length) 8- reg : Should contain 1 register ranges(address and length)
6 9
7Example: 10Example:
diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt
index 68ac65f82a1c..dd75b972ee37 100644
--- a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt
+++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt
@@ -6,7 +6,11 @@ modes. It provides power-gating controllers for SoC and CPU power-islands.
6 6
7Required properties: 7Required properties:
8- name : Should be pmc 8- name : Should be pmc
9- compatible : Should contain "nvidia,tegra<chip>-pmc". 9- compatible : For Tegra20, must contain "nvidia,tegra20-pmc". For Tegra30,
10 must contain "nvidia,tegra30-pmc". For Tegra114, must contain
11 "nvidia,tegra114-pmc". For Tegra124, must contain "nvidia,tegra124-pmc".
12 Otherwise, must contain "nvidia,<chip>-pmc", plus at least one of the
13 above, where <chip> is tegra132.
10- reg : Offset and length of the register set for the device 14- reg : Offset and length of the register set for the device
11- clocks : Must contain an entry for each entry in clock-names. 15- clocks : Must contain an entry for each entry in clock-names.
12 See ../clocks/clock-bindings.txt for details. 16 See ../clocks/clock-bindings.txt for details.
diff --git a/Documentation/devicetree/bindings/ata/ahci-platform.txt b/Documentation/devicetree/bindings/ata/ahci-platform.txt
index 4ab09f2202d4..c2340eeeb97f 100644
--- a/Documentation/devicetree/bindings/ata/ahci-platform.txt
+++ b/Documentation/devicetree/bindings/ata/ahci-platform.txt
@@ -37,9 +37,10 @@ Required properties when using sub-nodes:
37 37
38 38
39Sub-nodes required properties: 39Sub-nodes required properties:
40- reg : the port number 40- reg : the port number
41- phys : reference to the SATA PHY node 41And at least one of the following properties:
42 42- phys : reference to the SATA PHY node
43- target-supply : regulator for SATA target power
43 44
44Examples: 45Examples:
45 sata@ffe08000 { 46 sata@ffe08000 {
@@ -68,10 +69,12 @@ With sub-nodes:
68 sata0: sata-port@0 { 69 sata0: sata-port@0 {
69 reg = <0>; 70 reg = <0>;
70 phys = <&sata_phy 0>; 71 phys = <&sata_phy 0>;
72 target-supply = <&reg_sata0>;
71 }; 73 };
72 74
73 sata1: sata-port@1 { 75 sata1: sata-port@1 {
74 reg = <1>; 76 reg = <1>;
75 phys = <&sata_phy 1>; 77 phys = <&sata_phy 1>;
78 target-supply = <&reg_sata1>;;
76 }; 79 };
77 }; 80 };
diff --git a/Documentation/devicetree/bindings/ata/cavium-compact-flash.txt b/Documentation/devicetree/bindings/ata/cavium-compact-flash.txt
index 93986a5a8018..3bacc8e0931e 100644
--- a/Documentation/devicetree/bindings/ata/cavium-compact-flash.txt
+++ b/Documentation/devicetree/bindings/ata/cavium-compact-flash.txt
@@ -9,7 +9,7 @@ Properties:
9 9
10 Compatibility with many Cavium evaluation boards. 10 Compatibility with many Cavium evaluation boards.
11 11
12- reg: The base address of the the CF chip select banks. Depending on 12- reg: The base address of the CF chip select banks. Depending on
13 the device configuration, there may be one or two banks. 13 the device configuration, there may be one or two banks.
14 14
15- cavium,bus-width: The width of the connection to the CF devices. Valid 15- cavium,bus-width: The width of the connection to the CF devices. Valid
diff --git a/Documentation/devicetree/bindings/ata/tegra-sata.txt b/Documentation/devicetree/bindings/ata/tegra-sata.txt
index 946f2072570b..66c83c3e8915 100644
--- a/Documentation/devicetree/bindings/ata/tegra-sata.txt
+++ b/Documentation/devicetree/bindings/ata/tegra-sata.txt
@@ -1,7 +1,9 @@
1Tegra124 SoC SATA AHCI controller 1Tegra124 SoC SATA AHCI controller
2 2
3Required properties : 3Required properties :
4- compatible : "nvidia,tegra124-ahci". 4- compatible : For Tegra124, must contain "nvidia,tegra124-ahci". Otherwise,
5 must contain '"nvidia,<chip>-ahci", "nvidia,tegra124-ahci"', where <chip>
6 is tegra132.
5- reg : Should contain 2 entries: 7- reg : Should contain 2 entries:
6 - AHCI register set (SATA BAR5) 8 - AHCI register set (SATA BAR5)
7 - SATA register set 9 - SATA register set
diff --git a/Documentation/devicetree/bindings/c6x/dscr.txt b/Documentation/devicetree/bindings/c6x/dscr.txt
index b0e97144cfb1..92672235de57 100644
--- a/Documentation/devicetree/bindings/c6x/dscr.txt
+++ b/Documentation/devicetree/bindings/c6x/dscr.txt
@@ -12,7 +12,7 @@ configuration register for writes. These configuration register may be used to
12enable (and disable in some cases) SoC pin drivers, select peripheral clock 12enable (and disable in some cases) SoC pin drivers, select peripheral clock
13sources (internal or pin), etc. In some cases, a configuration register is 13sources (internal or pin), etc. In some cases, a configuration register is
14write once or the individual bits are write once. In addition to device config, 14write once or the individual bits are write once. In addition to device config,
15the DSCR block may provide registers which which are used to reset peripherals, 15the DSCR block may provide registers which are used to reset peripherals,
16provide device ID information, provide ethernet MAC addresses, as well as other 16provide device ID information, provide ethernet MAC addresses, as well as other
17miscellaneous functions. 17miscellaneous functions.
18 18
diff --git a/Documentation/devicetree/bindings/devfreq/event/exynos-ppmu.txt b/Documentation/devicetree/bindings/devfreq/event/exynos-ppmu.txt
new file mode 100644
index 000000000000..b54bf3a2ff57
--- /dev/null
+++ b/Documentation/devicetree/bindings/devfreq/event/exynos-ppmu.txt
@@ -0,0 +1,110 @@
1
2* Samsung Exynos PPMU (Platform Performance Monitoring Unit) device
3
4The Samsung Exynos SoC has PPMU (Platform Performance Monitoring Unit) for
5each IP. PPMU provides the primitive values to get performance data. These
6PPMU events provide information of the SoC's behaviors so that you may
7use to analyze system performance, to make behaviors visible and to count
8usages of each IP (DMC, CPU, RIGHTBUS, LEFTBUS, CAM interface, LCD, G3D, MFC).
9The Exynos PPMU driver uses the devfreq-event class to provide event data
10to various devfreq devices. The devfreq devices would use the event data when
11derterming the current state of each IP.
12
13Required properties:
14- compatible: Should be "samsung,exynos-ppmu".
15- reg: physical base address of each PPMU and length of memory mapped region.
16
17Optional 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
22Example1 : 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
58Example2 : Events of each PPMU node in exynos3250-rinato.dts are listed below.
59
60 &ppmu_dmc0 {
61 status = "okay";
62
63 events {
64 ppmu_dmc0_3: ppmu-event3-dmc0 {
65 event-name = "ppmu-event3-dmc0";
66 };
67
68 ppmu_dmc0_2: ppmu-event2-dmc0 {
69 event-name = "ppmu-event2-dmc0";
70 };
71
72 ppmu_dmc0_1: ppmu-event1-dmc0 {
73 event-name = "ppmu-event1-dmc0";
74 };
75
76 ppmu_dmc0_0: ppmu-event0-dmc0 {
77 event-name = "ppmu-event0-dmc0";
78 };
79 };
80 };
81
82 &ppmu_dmc1 {
83 status = "okay";
84
85 events {
86 ppmu_dmc1_3: ppmu-event3-dmc1 {
87 event-name = "ppmu-event3-dmc1";
88 };
89 };
90 };
91
92 &ppmu_leftbus {
93 status = "okay";
94
95 events {
96 ppmu_leftbus_3: ppmu-event3-leftbus {
97 event-name = "ppmu-event3-leftbus";
98 };
99 };
100 };
101
102 &ppmu_rightbus {
103 status = "okay";
104
105 events {
106 ppmu_rightbus_3: ppmu-event3-rightbus {
107 event-name = "ppmu-event3-rightbus";
108 };
109 };
110 };
diff --git a/Documentation/devicetree/bindings/dma/renesas,rcar-dmac.txt b/Documentation/devicetree/bindings/dma/renesas,rcar-dmac.txt
index df0f48bcf75a..f7e21b1c2a05 100644
--- a/Documentation/devicetree/bindings/dma/renesas,rcar-dmac.txt
+++ b/Documentation/devicetree/bindings/dma/renesas,rcar-dmac.txt
@@ -1,6 +1,6 @@
1* Renesas R-Car DMA Controller Device Tree bindings 1* Renesas R-Car DMA Controller Device Tree bindings
2 2
3Renesas R-Car Generation 2 SoCs have have multiple multi-channel DMA 3Renesas R-Car Generation 2 SoCs have multiple multi-channel DMA
4controller instances named DMAC capable of serving multiple clients. Channels 4controller instances named DMAC capable of serving multiple clients. Channels
5can be dedicated to specific clients or shared between a large number of 5can be dedicated to specific clients or shared between a large number of
6clients. 6clients.
diff --git a/Documentation/devicetree/bindings/fpga/altera-socfpga-fpga-mgr.txt b/Documentation/devicetree/bindings/fpga/altera-socfpga-fpga-mgr.txt
new file mode 100644
index 000000000000..9b027a615486
--- /dev/null
+++ b/Documentation/devicetree/bindings/fpga/altera-socfpga-fpga-mgr.txt
@@ -0,0 +1,17 @@
1Altera SOCFPGA FPGA Manager
2
3Required 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
10Example:
11
12 hps_0_fpgamgr: fpgamgr@0xff706000 {
13 compatible = "altr,socfpga-fpga-mgr";
14 reg = <0xFF706000 0x1000
15 0xFFB90000 0x1000>;
16 interrupts = <0 175 4>;
17 };
diff --git a/Documentation/devicetree/bindings/fuse/nvidia,tegra20-fuse.txt b/Documentation/devicetree/bindings/fuse/nvidia,tegra20-fuse.txt
index d8c98c7614d0..23e1d3194174 100644
--- a/Documentation/devicetree/bindings/fuse/nvidia,tegra20-fuse.txt
+++ b/Documentation/devicetree/bindings/fuse/nvidia,tegra20-fuse.txt
@@ -1,11 +1,11 @@
1NVIDIA Tegra20/Tegra30/Tegr114/Tegra124 fuse block. 1NVIDIA Tegra20/Tegra30/Tegr114/Tegra124 fuse block.
2 2
3Required properties: 3Required properties:
4- compatible : should be: 4- compatible : For Tegra20, must contain "nvidia,tegra20-efuse". For Tegra30,
5 "nvidia,tegra20-efuse" 5 must contain "nvidia,tegra30-efuse". For Tegra114, must contain
6 "nvidia,tegra30-efuse" 6 "nvidia,tegra114-efuse". For Tegra124, must contain "nvidia,tegra124-efuse".
7 "nvidia,tegra114-efuse" 7 Otherwise, must contain "nvidia,<chip>-efuse", plus one of the above, where
8 "nvidia,tegra124-efuse" 8 <chip> is tegra132.
9 Details: 9 Details:
10 nvidia,tegra20-efuse: Tegra20 requires using APB DMA to read the fuse data 10 nvidia,tegra20-efuse: Tegra20 requires using APB DMA to read the fuse data
11 due to a hardware bug. Tegra20 also lacks certain information which is 11 due to a hardware bug. Tegra20 also lacks certain information which is
diff --git a/Documentation/devicetree/bindings/gpio/fujitsu,mb86s70-gpio.txt b/Documentation/devicetree/bindings/gpio/fujitsu,mb86s70-gpio.txt
new file mode 100644
index 000000000000..bef353f370d8
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/fujitsu,mb86s70-gpio.txt
@@ -0,0 +1,20 @@
1Fujitsu MB86S7x GPIO Controller
2-------------------------------
3
4Required 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
13Examples:
14 gpio0: gpio@31000000 {
15 compatible = "fujitsu,mb86s70-gpio";
16 reg = <0 0x31000000 0x10000>;
17 gpio-controller;
18 #gpio-cells = <2>;
19 clocks = <&clk 0 2 1>;
20 };
diff --git a/Documentation/devicetree/bindings/gpio/gpio-max732x.txt b/Documentation/devicetree/bindings/gpio/gpio-max732x.txt
new file mode 100644
index 000000000000..5fdc843b4542
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/gpio-max732x.txt
@@ -0,0 +1,59 @@
1* MAX732x-compatible I/O expanders
2
3Required 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
21Optional 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
36Please refer to gpio.txt in this directory for details of the common GPIO
37bindings used by client devices.
38
39Example 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
52Example 2. MAX7325 with interrupt support disabled (CONFIG_GPIO_MAX732X_IRQ=n):
53
54 expander: max7325@6d {
55 compatible = "maxim,max7325";
56 reg = <0x6d>;
57 gpio-controller;
58 #gpio-cells = <2>;
59 };
diff --git a/Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt b/Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt
index d63194a2c848..ada4e2973323 100644
--- a/Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt
+++ b/Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt
@@ -39,7 +39,7 @@ Optional Properties:
39 - lines-initial-states: Bitmask that specifies the initial state of each 39 - lines-initial-states: Bitmask that specifies the initial state of each
40 line. When a bit is set to zero, the corresponding line will be initialized to 40 line. When a bit is set to zero, the corresponding line will be initialized to
41 the input (pulled-up) state. When the bit is set to one, the line will be 41 the input (pulled-up) state. When the bit is set to one, the line will be
42 initialized the the low-level output state. If the property is not specified 42 initialized the low-level output state. If the property is not specified
43 all lines will be initialized to the input state. 43 all lines will be initialized to the input state.
44 44
45 The I/O expander can detect input state changes, and thus optionally act as 45 The I/O expander can detect input state changes, and thus optionally act as
diff --git a/Documentation/devicetree/bindings/gpio/gpio-sx150x.txt b/Documentation/devicetree/bindings/gpio/gpio-sx150x.txt
new file mode 100644
index 000000000000..ba2bb84eeac3
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/gpio-sx150x.txt
@@ -0,0 +1,40 @@
1SEMTECH SX150x GPIO expander bindings
2
3
4Required 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
24The GPIO expander can optionally be used as an interrupt controller, in
25which case it uses the default two cell specifier as described in
26Documentation/devicetree/bindings/interrupt-controller/interrupts.txt.
27
28Example:
29
30 i2c_gpio_expander@20{
31 #gpio-cells = <2>;
32 #interrupt-cells = <2>;
33 compatible = "semtech,sx1506q";
34 reg = <0x20>;
35 interrupt-parent = <&gpio_1>;
36 interrupts = <16 0>;
37
38 gpio-controller;
39 interrupt-controller;
40 };
diff --git a/Documentation/devicetree/bindings/gpio/gpio-xgene-sb.txt b/Documentation/devicetree/bindings/gpio/gpio-xgene-sb.txt
new file mode 100644
index 000000000000..dae130060537
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/gpio-xgene-sb.txt
@@ -0,0 +1,32 @@
1APM X-Gene Standby GPIO controller bindings
2
3This is a gpio controller in the standby domain.
4
5There are 20 GPIO pins from 0..21. There is no GPIO_DS14 or GPIO_DS15,
6only GPIO_DS8..GPIO_DS13 support interrupts. The IRQ mapping
7is currently 1-to-1 on interrupts 0x28 thru 0x2d.
8
9Required 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
20Example:
21 sbgpio: sbgpio@17001000 {
22 compatible = "apm,xgene-gpio-sb";
23 reg = <0x0 0x17001000 0x0 0x400>;
24 #gpio-cells = <2>;
25 gpio-controller;
26 interrupts = <0x0 0x28 0x1>,
27 <0x0 0x29 0x1>,
28 <0x0 0x2a 0x1>,
29 <0x0 0x2b 0x1>,
30 <0x0 0x2c 0x1>,
31 <0x0 0x2d 0x1>;
32 };
diff --git a/Documentation/devicetree/bindings/gpio/gpio.txt b/Documentation/devicetree/bindings/gpio/gpio.txt
index b9bd1d64cfa6..f7a158d85862 100644
--- a/Documentation/devicetree/bindings/gpio/gpio.txt
+++ b/Documentation/devicetree/bindings/gpio/gpio.txt
@@ -69,7 +69,8 @@ GPIO pin number, and GPIO flags as accepted by the "qe_pio_e" gpio-controller.
69---------------------------------- 69----------------------------------
70 70
71A gpio-specifier should contain a flag indicating the GPIO polarity; active- 71A gpio-specifier should contain a flag indicating the GPIO polarity; active-
72high or active-low. If it does, the follow best practices should be followed: 72high or active-low. If it does, the following best practices should be
73followed:
73 74
74The gpio-specifier's polarity flag should represent the physical level at the 75The gpio-specifier's polarity flag should represent the physical level at the
75GPIO controller that achieves (or represents, for inputs) a logically asserted 76GPIO controller that achieves (or represents, for inputs) a logically asserted
@@ -147,7 +148,7 @@ contains information structures as follows:
147 numeric-gpio-range ::= 148 numeric-gpio-range ::=
148 <pinctrl-phandle> <gpio-base> <pinctrl-base> <count> 149 <pinctrl-phandle> <gpio-base> <pinctrl-base> <count>
149 named-gpio-range ::= <pinctrl-phandle> <gpio-base> '<0 0>' 150 named-gpio-range ::= <pinctrl-phandle> <gpio-base> '<0 0>'
150 gpio-phandle : phandle to pin controller node. 151 pinctrl-phandle : phandle to pin controller node
151 gpio-base : Base GPIO ID in the GPIO controller 152 gpio-base : Base GPIO ID in the GPIO controller
152 pinctrl-base : Base pinctrl pin ID in the pin controller 153 pinctrl-base : Base pinctrl pin ID in the pin controller
153 count : The number of GPIOs/pins in this range 154 count : The number of GPIOs/pins in this range
diff --git a/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt b/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt
index b2afdb27adeb..67a2e4e414a5 100644
--- a/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt
+++ b/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt
@@ -3,8 +3,8 @@
3Required properties: 3Required properties:
4- compatible : Should be "intel,pxa25x-gpio", "intel,pxa26x-gpio", 4- compatible : Should be "intel,pxa25x-gpio", "intel,pxa26x-gpio",
5 "intel,pxa27x-gpio", "intel,pxa3xx-gpio", 5 "intel,pxa27x-gpio", "intel,pxa3xx-gpio",
6 "marvell,pxa93x-gpio", "marvell,mmp-gpio" or 6 "marvell,pxa93x-gpio", "marvell,mmp-gpio",
7 "marvell,mmp2-gpio". 7 "marvell,mmp2-gpio" or marvell,pxa1928-gpio.
8- reg : Address and length of the register set for the device 8- reg : Address and length of the register set for the device
9- interrupts : Should be the port interrupt shared by all gpio pins. 9- interrupts : Should be the port interrupt shared by all gpio pins.
10 There're three gpio interrupts in arch-pxa, and they're gpio0, 10 There're three gpio interrupts in arch-pxa, and they're gpio0,
diff --git a/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt b/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt
index 4c32ef0b7db8..009f4bfa1590 100644
--- a/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt
+++ b/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt
@@ -197,7 +197,9 @@ of the following host1x client modules:
197- sor: serial output resource 197- sor: serial output resource
198 198
199 Required properties: 199 Required properties:
200 - compatible: "nvidia,tegra124-sor" 200 - compatible: For Tegra124, must contain "nvidia,tegra124-sor". Otherwise,
201 must contain '"nvidia,<chip>-sor", "nvidia,tegra124-sor"', where <chip>
202 is tegra132.
201 - reg: Physical base address and length of the controller's registers. 203 - reg: Physical base address and length of the controller's registers.
202 - interrupts: The interrupt outputs from the controller. 204 - interrupts: The interrupt outputs from the controller.
203 - clocks: Must contain an entry for each entry in clock-names. 205 - clocks: Must contain an entry for each entry in clock-names.
@@ -222,7 +224,9 @@ of the following host1x client modules:
222 - nvidia,dpaux: phandle to a DispayPort AUX interface 224 - nvidia,dpaux: phandle to a DispayPort AUX interface
223 225
224- dpaux: DisplayPort AUX interface 226- dpaux: DisplayPort AUX interface
225 - compatible: "nvidia,tegra124-dpaux" 227 - compatible: For Tegra124, must contain "nvidia,tegra124-dpaux". Otherwise,
228 must contain '"nvidia,<chip>-dpaux", "nvidia,tegra124-dpaux"', where
229 <chip> is tegra132.
226 - reg: Physical base address and length of the controller's registers. 230 - reg: Physical base address and length of the controller's registers.
227 - interrupts: The interrupt outputs from the controller. 231 - interrupts: The interrupt outputs from the controller.
228 - clocks: Must contain an entry for each entry in clock-names. 232 - clocks: Must contain an entry for each entry in clock-names.
diff --git a/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt b/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt
index 87507e9ce6db..656716b72cc4 100644
--- a/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt
+++ b/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt
@@ -1,11 +1,11 @@
1NVIDIA Tegra20/Tegra30/Tegra114 I2C controller driver. 1NVIDIA Tegra20/Tegra30/Tegra114 I2C controller driver.
2 2
3Required properties: 3Required properties:
4- compatible : should be: 4- compatible : For Tegra20, must be one of "nvidia,tegra20-i2c-dvc" or
5 "nvidia,tegra114-i2c" 5 "nvidia,tegra20-i2c". For Tegra30, must be "nvidia,tegra30-i2c".
6 "nvidia,tegra30-i2c" 6 For Tegra114, must be "nvidia,tegra114-i2c". Otherwise, must be
7 "nvidia,tegra20-i2c" 7 "nvidia,<chip>-i2c", plus at least one of the above, where <chip> is
8 "nvidia,tegra20-i2c-dvc" 8 tegra124, tegra132, or tegra210.
9 Details of compatible are as follows: 9 Details of compatible are as follows:
10 nvidia,tegra20-i2c-dvc: Tegra20 has specific I2C controller called as DVC I2C 10 nvidia,tegra20-i2c-dvc: Tegra20 has specific I2C controller called as DVC I2C
11 controller. This only support master mode of I2C communication. Register 11 controller. This only support master mode of I2C communication. Register
diff --git a/Documentation/devicetree/bindings/iio/adc/xilinx-xadc.txt b/Documentation/devicetree/bindings/iio/adc/xilinx-xadc.txt
index d9ee909d2b78..d71258e2d456 100644
--- a/Documentation/devicetree/bindings/iio/adc/xilinx-xadc.txt
+++ b/Documentation/devicetree/bindings/iio/adc/xilinx-xadc.txt
@@ -59,7 +59,7 @@ Optional properties:
59 Each child node represents one channel and has the following 59 Each child node represents one channel and has the following
60 properties: 60 properties:
61 Required properties: 61 Required properties:
62 * reg: Pair of pins the the channel is connected to. 62 * reg: Pair of pins the channel is connected to.
63 0: VP/VN 63 0: VP/VN
64 1: VAUXP[0]/VAUXN[0] 64 1: VAUXP[0]/VAUXN[0]
65 2: VAUXP[1]/VAUXN[1] 65 2: VAUXP[1]/VAUXN[1]
diff --git a/Documentation/devicetree/bindings/input/e3x0-button.txt b/Documentation/devicetree/bindings/input/e3x0-button.txt
new file mode 100644
index 000000000000..751665e8e47a
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/e3x0-button.txt
@@ -0,0 +1,25 @@
1National Instruments Ettus Research USRP E3x0 button driver
2
3This module is part of the NI Ettus Research USRP E3x0 SDR.
4
5This module provides a simple power button event via two interrupts.
6
7Required 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
17Note: Interrupt numbers might vary depending on the FPGA configuration.
18
19Example:
20 button {
21 compatible = "ettus,e3x0-button";
22 interrupt-parent = <&intc>;
23 interrupts = <0 30 1>, <0 31 1>;
24 interrupt-names = "press", "release";
25 }
diff --git a/Documentation/devicetree/bindings/input/regulator-haptic.txt b/Documentation/devicetree/bindings/input/regulator-haptic.txt
new file mode 100644
index 000000000000..3ed1c7eb2f97
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/regulator-haptic.txt
@@ -0,0 +1,21 @@
1* Regulator Haptic Device Tree Bindings
2
3Required 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
14Example:
15
16 haptics {
17 compatible = "regulator-haptic";
18 haptic-supply = <&motor_regulator>;
19 max-microvolt = <2700000>;
20 min-microvolt = <1100000>;
21 };
diff --git a/Documentation/devicetree/bindings/input/sun4i-lradc-keys.txt b/Documentation/devicetree/bindings/input/sun4i-lradc-keys.txt
new file mode 100644
index 000000000000..b9c32f6fd687
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/sun4i-lradc-keys.txt
@@ -0,0 +1,62 @@
1Allwinner sun4i low res adc attached tablet keys
2------------------------------------------------
3
4Required 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
10Each key is represented as a sub-node of "allwinner,sun4i-a10-lradc-keys":
11
12Required 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
18Example:
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 = <&reg_vcc3v0>;
27
28 button@191 {
29 label = "Volume Up";
30 linux,code = <KEY_VOLUMEUP>;
31 channel = <0>;
32 voltage = <191274>;
33 };
34
35 button@392 {
36 label = "Volume Down";
37 linux,code = <KEY_VOLUMEDOWN>;
38 channel = <0>;
39 voltage = <392644>;
40 };
41
42 button@601 {
43 label = "Menu";
44 linux,code = <KEY_MENU>;
45 channel = <0>;
46 voltage = <601151>;
47 };
48
49 button@795 {
50 label = "Enter";
51 linux,code = <KEY_ENTER>;
52 channel = <0>;
53 voltage = <795090>;
54 };
55
56 button@987 {
57 label = "Home";
58 linux,code = <KEY_HOMEPAGE>;
59 channel = <0>;
60 voltage = <987387>;
61 };
62 };
diff --git a/Documentation/devicetree/bindings/input/touchscreen/sun4i.txt b/Documentation/devicetree/bindings/input/touchscreen/sun4i.txt
index aef57791f40b..433332d3b2ba 100644
--- a/Documentation/devicetree/bindings/input/touchscreen/sun4i.txt
+++ b/Documentation/devicetree/bindings/input/touchscreen/sun4i.txt
@@ -2,9 +2,10 @@ sun4i resistive touchscreen controller
2-------------------------------------- 2--------------------------------------
3 3
4Required properties: 4Required properties:
5 - compatible: "allwinner,sun4i-a10-ts" 5 - compatible: "allwinner,sun4i-a10-ts" or "allwinner,sun6i-a31-ts"
6 - reg: mmio address range of the chip 6 - reg: mmio address range of the chip
7 - interrupts: interrupt to which the chip is connected 7 - interrupts: interrupt to which the chip is connected
8 - #thermal-sensor-cells: shall be 0
8 9
9Optional properties: 10Optional properties:
10 - allwinner,ts-attached: boolean indicating that an actual touchscreen is 11 - allwinner,ts-attached: boolean indicating that an actual touchscreen is
@@ -17,4 +18,5 @@ Example:
17 reg = <0x01c25000 0x100>; 18 reg = <0x01c25000 0x100>;
18 interrupts = <29>; 19 interrupts = <29>;
19 allwinner,ts-attached; 20 allwinner,ts-attached;
21 #thermal-sensor-cells = <0>;
20 }; 22 };
diff --git a/Documentation/devicetree/bindings/input/touchscreen/ti-tsc-adc.txt b/Documentation/devicetree/bindings/input/touchscreen/ti-tsc-adc.txt
index 878549ba814d..6c4fb34823d3 100644
--- a/Documentation/devicetree/bindings/input/touchscreen/ti-tsc-adc.txt
+++ b/Documentation/devicetree/bindings/input/touchscreen/ti-tsc-adc.txt
@@ -28,6 +28,20 @@ Required properties:
28 ti,adc-channels: List of analog inputs available for ADC. 28 ti,adc-channels: List of analog inputs available for ADC.
29 AIN0 = 0, AIN1 = 1 and so on till AIN7 = 7. 29 AIN0 = 0, AIN1 = 1 and so on till AIN7 = 7.
30 30
31Optional 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
31Example: 45Example:
32 tscadc: tscadc@44e0d000 { 46 tscadc: tscadc@44e0d000 {
33 compatible = "ti,am3359-tscadc"; 47 compatible = "ti,am3359-tscadc";
@@ -36,6 +50,7 @@ Example:
36 ti,x-plate-resistance = <200>; 50 ti,x-plate-resistance = <200>;
37 ti,coordiante-readouts = <5>; 51 ti,coordiante-readouts = <5>;
38 ti,wire-config = <0x00 0x11 0x22 0x33>; 52 ti,wire-config = <0x00 0x11 0x22 0x33>;
53 ti,charge-delay = <0x400>;
39 }; 54 };
40 55
41 adc { 56 adc {
diff --git a/Documentation/devicetree/bindings/input/tps65218-pwrbutton.txt b/Documentation/devicetree/bindings/input/tps65218-pwrbutton.txt
new file mode 100644
index 000000000000..e30e0b93f2b3
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/tps65218-pwrbutton.txt
@@ -0,0 +1,17 @@
1Texas Instruments TPS65218 power button
2
3This driver provides a simple power button event via an Interrupt.
4
5Required 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
10Example:
11
12&tps {
13 power-button {
14 compatible = "ti,tps65218-pwrbutton";
15 interrupts = <3 IRQ_TYPE_EDGE_BOTH>;
16 };
17};
diff --git a/Documentation/devicetree/bindings/mailbox/altera-mailbox.txt b/Documentation/devicetree/bindings/mailbox/altera-mailbox.txt
new file mode 100644
index 000000000000..c2619797ce0c
--- /dev/null
+++ b/Documentation/devicetree/bindings/mailbox/altera-mailbox.txt
@@ -0,0 +1,49 @@
1Altera Mailbox Driver
2=====================
3
4Required 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
11Optional properties:
12- interrupt-parent : interrupt source phandle.
13- interrupts : interrupt number. The interrupt specifier format
14 depends on the interrupt controller parent.
15
16Example:
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
33Mailbox client
34===============
35"mboxes" and the optional "mbox-names" (please see
36Documentation/devicetree/bindings/mailbox/mailbox.txt for details). Each value
37of the mboxes property should contain a phandle to the mailbox controller
38device node and second argument is the channel index. It must be 0 (hardware
39support only one channel).The equivalent "mbox-names" property value can be
40used to give a name to the communication channel to be used by the client user.
41
42Example:
43 mclient0: mclient0@0x400 {
44 compatible = "client-1.0";
45 reg = <0x400 0x10>;
46 mbox-names = "mbox-tx", "mbox-rx";
47 mboxes = <&mbox_tx 0>,
48 <&mbox_rx 0>;
49 };
diff --git a/Documentation/devicetree/bindings/media/atmel-isi.txt b/Documentation/devicetree/bindings/media/atmel-isi.txt
index 17e71b7b44c6..251f008f220c 100644
--- a/Documentation/devicetree/bindings/media/atmel-isi.txt
+++ b/Documentation/devicetree/bindings/media/atmel-isi.txt
@@ -38,7 +38,7 @@ Example:
38 38
39 i2c1: i2c@f0018000 { 39 i2c1: i2c@f0018000 {
40 ov2640: camera@0x30 { 40 ov2640: camera@0x30 {
41 compatible = "omnivision,ov2640"; 41 compatible = "ovti,ov2640";
42 reg = <0x30>; 42 reg = <0x30>;
43 43
44 port { 44 port {
diff --git a/Documentation/devicetree/bindings/media/i2c/nokia,smia.txt b/Documentation/devicetree/bindings/media/i2c/nokia,smia.txt
new file mode 100644
index 000000000000..855e1faf73e2
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/nokia,smia.txt
@@ -0,0 +1,63 @@
1SMIA/SMIA++ sensor
2
3SMIA (Standard Mobile Imaging Architecture) is an image sensor standard
4defined jointly by Nokia and ST. SMIA++, defined by Nokia, is an extension
5of that. These definitions are valid for both types of sensors.
6
7More detailed documentation can be found in
8Documentation/devicetree/bindings/media/video-interfaces.txt .
9
10
11Mandatory 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
24Optional 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
32Endpoint 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
40Example
41-------
42
43&i2c2 {
44 clock-frequency = <400000>;
45
46 smiapp_1: camera@10 {
47 compatible = "nokia,smia";
48 reg = <0x10>;
49 reset-gpios = <&gpio3 20 0>;
50 vana-supply = <&vaux3>;
51 clocks = <&omap3_isp 0>;
52 clock-frequency = <9600000>;
53 nokia,nvm-size = <512>; /* 8 * 64 */
54 link-frequencies = /bits/ 64 <199200000 210000000 499200000>;
55 port {
56 smiapp_1_1: endpoint {
57 clock-lanes = <0>;
58 data-lanes = <1 2>;
59 remote-endpoint = <&csi2a_ep>;
60 };
61 };
62 };
63};
diff --git a/Documentation/devicetree/bindings/media/sunxi-ir.txt b/Documentation/devicetree/bindings/media/sunxi-ir.txt
index 23dd5ad07b7c..1811a067c72c 100644
--- a/Documentation/devicetree/bindings/media/sunxi-ir.txt
+++ b/Documentation/devicetree/bindings/media/sunxi-ir.txt
@@ -1,7 +1,7 @@
1Device-Tree bindings for SUNXI IR controller found in sunXi SoC family 1Device-Tree bindings for SUNXI IR controller found in sunXi SoC family
2 2
3Required properties: 3Required properties:
4- compatible : should be "allwinner,sun4i-a10-ir"; 4- compatible : "allwinner,sun4i-a10-ir" or "allwinner,sun5i-a13-ir"
5- clocks : list of clock specifiers, corresponding to 5- clocks : list of clock specifiers, corresponding to
6 entries in clock-names property; 6 entries in clock-names property;
7- clock-names : should contain "apb" and "ir" entries; 7- clock-names : should contain "apb" and "ir" entries;
@@ -10,6 +10,7 @@ Required properties:
10 10
11Optional properties: 11Optional properties:
12- linux,rc-map-name : Remote control map name. 12- linux,rc-map-name : Remote control map name.
13- resets : phandle + reset specifier pair
13 14
14Example: 15Example:
15 16
@@ -17,6 +18,7 @@ ir0: ir@01c21800 {
17 compatible = "allwinner,sun4i-a10-ir"; 18 compatible = "allwinner,sun4i-a10-ir";
18 clocks = <&apb0_gates 6>, <&ir0_clk>; 19 clocks = <&apb0_gates 6>, <&ir0_clk>;
19 clock-names = "apb", "ir"; 20 clock-names = "apb", "ir";
21 resets = <&apb0_rst 1>;
20 interrupts = <0 5 1>; 22 interrupts = <0 5 1>;
21 reg = <0x01C21800 0x40>; 23 reg = <0x01C21800 0x40>;
22 linux,rc-map-name = "rc-rc6-mce"; 24 linux,rc-map-name = "rc-rc6-mce";
diff --git a/Documentation/devicetree/bindings/media/ti-am437x-vpfe.txt b/Documentation/devicetree/bindings/media/ti-am437x-vpfe.txt
new file mode 100644
index 000000000000..3932e766553a
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/ti-am437x-vpfe.txt
@@ -0,0 +1,61 @@
1Texas Instruments AM437x CAMERA (VPFE)
2--------------------------------------
3
4The Video Processing Front End (VPFE) is a key component for image capture
5applications. The capture module provides the system interface and the
6processing capability to connect RAW image-sensor modules and video decoders
7to the AM437x device.
8
9Required 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
20VPFE 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
22defined in Documentation/devicetree/bindings/media/video-interfaces.txt.
23
24Example:
25 vpfe: vpfe@f0034000 {
26 compatible = "ti,am437x-vpfe";
27 reg = <0x48328000 0x2000>;
28 interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
29
30 pinctrl-names = "default", "sleep";
31 pinctrl-0 = <&vpfe_pins_default>;
32 pinctrl-1 = <&vpfe_pins_sleep>;
33
34 port {
35 #address-cells = <1>;
36 #size-cells = <0>;
37
38 vpfe0_ep: endpoint {
39 remote-endpoint = <&ov2659_1>;
40 ti,am437x-vpfe-interface = <0>;
41 bus-width = <8>;
42 hsync-active = <0>;
43 vsync-active = <0>;
44 };
45 };
46 };
47
48 i2c1: i2c@4802a000 {
49
50 ov2659@30 {
51 compatible = "ti,ov2659";
52 reg = <0x30>;
53
54 port {
55 ov2659_1: endpoint {
56 remote-endpoint = <&vpfe0_ep>;
57 bus-width = <8>;
58 mclk-frequency = <12000000>;
59 };
60 };
61 };
diff --git a/Documentation/devicetree/bindings/media/video-interfaces.txt b/Documentation/devicetree/bindings/media/video-interfaces.txt
index ce719f89dd1c..571b4c60665f 100644
--- a/Documentation/devicetree/bindings/media/video-interfaces.txt
+++ b/Documentation/devicetree/bindings/media/video-interfaces.txt
@@ -103,6 +103,9 @@ Optional endpoint properties
103 array contains only one entry. 103 array contains only one entry.
104- clock-noncontinuous: a boolean property to allow MIPI CSI-2 non-continuous 104- clock-noncontinuous: a boolean property to allow MIPI CSI-2 non-continuous
105 clock mode. 105 clock mode.
106- link-frequencies: Allowed data bus frequencies. For MIPI CSI-2, for
107 instance, this is the actual frequency of the bus, not bits per clock per
108 lane value. An array of 64-bit unsigned integers.
106 109
107 110
108Example 111Example
@@ -159,7 +162,7 @@ pipelines can be active: ov772x -> ceu0 or imx074 -> csi2 -> ceu0.
159 i2c0: i2c@0xfff20000 { 162 i2c0: i2c@0xfff20000 {
160 ... 163 ...
161 ov772x_1: camera@0x21 { 164 ov772x_1: camera@0x21 {
162 compatible = "omnivision,ov772x"; 165 compatible = "ovti,ov772x";
163 reg = <0x21>; 166 reg = <0x21>;
164 vddio-supply = <&regulator1>; 167 vddio-supply = <&regulator1>;
165 vddcore-supply = <&regulator2>; 168 vddcore-supply = <&regulator2>;
diff --git a/Documentation/devicetree/bindings/mfd/max77686.txt b/Documentation/devicetree/bindings/mfd/max77686.txt
index 75fdfaf41831..e39f0bc1f55e 100644
--- a/Documentation/devicetree/bindings/mfd/max77686.txt
+++ b/Documentation/devicetree/bindings/mfd/max77686.txt
@@ -39,6 +39,12 @@ to get matched with their hardware counterparts as follow:
39 -BUCKn : 1-4. 39 -BUCKn : 1-4.
40 Use standard regulator bindings for it ('regulator-off-in-suspend'). 40 Use standard regulator bindings for it ('regulator-off-in-suspend').
41 41
42 LDO20, LDO21, LDO22, BUCK8 and BUCK9 can be configured to GPIO enable
43 control. To turn this feature on this property must be added to the regulator
44 sub-node:
45 - maxim,ena-gpios : one GPIO specifier enable control (the gpio
46 flags are actually ignored and always
47 ACTIVE_HIGH is used)
42 48
43Example: 49Example:
44 50
@@ -65,4 +71,12 @@ Example:
65 regulator-always-on; 71 regulator-always-on;
66 regulator-boot-on; 72 regulator-boot-on;
67 }; 73 };
74
75 buck9_reg {
76 regulator-compatible = "BUCK9";
77 regulator-name = "CAM_ISP_CORE_1.2V";
78 regulator-min-microvolt = <1000000>;
79 regulator-max-microvolt = <1200000>;
80 maxim,ena-gpios = <&gpm0 3 GPIO_ACTIVE_HIGH>;
81 };
68 } 82 }
diff --git a/Documentation/devicetree/bindings/mfd/max77693.txt b/Documentation/devicetree/bindings/mfd/max77693.txt
index 01e9f30fe678..38e64405e98d 100644
--- a/Documentation/devicetree/bindings/mfd/max77693.txt
+++ b/Documentation/devicetree/bindings/mfd/max77693.txt
@@ -41,6 +41,41 @@ Optional properties:
41 To get more informations, please refer to documentaion. 41 To get more informations, please refer to documentaion.
42 [*] refer Documentation/devicetree/bindings/pwm/pwm.txt 42 [*] refer Documentation/devicetree/bindings/pwm/pwm.txt
43 43
44- charger : Node configuring the charger driver.
45 If present, required properties:
46 - compatible : Must be "maxim,max77693-charger".
47
48 Optional properties (if not set, defaults will be used):
49 - maxim,constant-microvolt : Battery constant voltage in uV. The charger
50 will operate in fast charge constant current mode till battery voltage
51 reaches this level. Then the charger will switch to fast charge constant
52 voltage mode. Also vsys (system voltage) will be set to this value when
53 DC power is supplied but charger is not enabled.
54 Valid values: 3650000 - 4400000, step by 25000 (rounded down)
55 Default: 4200000
56
57 - maxim,min-system-microvolt : Minimal system voltage in uV.
58 Valid values: 3000000 - 3700000, step by 100000 (rounded down)
59 Default: 3600000
60
61 - maxim,thermal-regulation-celsius : Temperature in Celsius for entering
62 high temperature charging mode. If die temperature exceeds this value
63 the charging current will be reduced by 105 mA/Celsius.
64 Valid values: 70, 85, 100, 115
65 Default: 100
66
67 - maxim,battery-overcurrent-microamp : Overcurrent protection threshold
68 in uA (current from battery to system).
69 Valid values: 2000000 - 3500000, step by 250000 (rounded down)
70 Default: 3500000
71
72 - maxim,charge-input-threshold-microvolt : Threshold voltage in uV for
73 triggering input voltage regulation loop. If input voltage decreases
74 below this value, the input current will be reduced to reach the
75 threshold voltage.
76 Valid values: 4300000, 4700000, 4800000, 4900000
77 Default: 4300000
78
44Example: 79Example:
45 max77693@66 { 80 max77693@66 {
46 compatible = "maxim,max77693"; 81 compatible = "maxim,max77693";
@@ -73,4 +108,14 @@ Example:
73 pwms = <&pwm 0 40000 0>; 108 pwms = <&pwm 0 40000 0>;
74 pwm-names = "haptic"; 109 pwm-names = "haptic";
75 }; 110 };
111
112 charger {
113 compatible = "maxim,max77693-charger";
114
115 maxim,constant-microvolt = <4200000>;
116 maxim,min-system-microvolt = <3600000>;
117 maxim,thermal-regulation-celsius = <75>;
118 maxim,battery-overcurrent-microamp = <3000000>;
119 maxim,charge-input-threshold-microvolt = <4300000>;
120 };
76 }; 121 };
diff --git a/Documentation/devicetree/bindings/misc/nvidia,tegra20-apbmisc.txt b/Documentation/devicetree/bindings/misc/nvidia,tegra20-apbmisc.txt
index b97b8bef1fe5..47b205cc9cc7 100644
--- a/Documentation/devicetree/bindings/misc/nvidia,tegra20-apbmisc.txt
+++ b/Documentation/devicetree/bindings/misc/nvidia,tegra20-apbmisc.txt
@@ -1,11 +1,10 @@
1NVIDIA Tegra20/Tegra30/Tegr114/Tegra124 apbmisc block 1NVIDIA Tegra20/Tegra30/Tegr114/Tegra124 apbmisc block
2 2
3Required properties: 3Required properties:
4- compatible : should be: 4- compatible : For Tegra20, must be "nvidia,tegra20-apbmisc". For Tegra30,
5 "nvidia,tegra20-apbmisc" 5 must be "nvidia,tegra30-apbmisc". Otherwise, must contain
6 "nvidia,tegra30-apbmisc" 6 "nvidia,<chip>-apbmisc", plus one of the above, where <chip> is tegra114,
7 "nvidia,tegra114-apbmisc" 7 tegra124, tegra132.
8 "nvidia,tegra124-apbmisc"
9- reg: Should contain 2 entries: the first entry gives the physical address 8- reg: Should contain 2 entries: the first entry gives the physical address
10 and length of the registers which contain revision and debug features. 9 and length of the registers which contain revision and debug features.
11 The second entry gives the physical address and length of the 10 The second entry gives the physical address and length of the
diff --git a/Documentation/devicetree/bindings/mmc/mmc-pwrseq-emmc.txt b/Documentation/devicetree/bindings/mmc/mmc-pwrseq-emmc.txt
new file mode 100644
index 000000000000..0cb827bf9435
--- /dev/null
+++ b/Documentation/devicetree/bindings/mmc/mmc-pwrseq-emmc.txt
@@ -0,0 +1,25 @@
1* The simple eMMC hardware reset provider
2
3The purpose of this driver is to perform standard eMMC hw reset
4procedure, as descibed by Jedec 4.4 specification. This procedure is
5performed just after MMC core enabled power to the given mmc host (to
6fix possible issues if bootloader has left eMMC card in initialized or
7unknown state), and before performing complete system reboot (also in
8case of emergency reboot call). The latter is needed on boards, which
9doesn't have hardware reset logic connected to emmc card and (limited or
10broken) ROM bootloaders are unable to read second stage from the emmc
11card if the card is left in unknown or already initialized state.
12
13Required 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
20Example:
21
22 sdhci0_pwrseq {
23 compatible = "mmc-pwrseq-emmc";
24 reset-gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
25 }
diff --git a/Documentation/devicetree/bindings/mmc/mmc-pwrseq-simple.txt b/Documentation/devicetree/bindings/mmc/mmc-pwrseq-simple.txt
new file mode 100644
index 000000000000..a462c50f19a8
--- /dev/null
+++ b/Documentation/devicetree/bindings/mmc/mmc-pwrseq-simple.txt
@@ -0,0 +1,25 @@
1* The simple MMC power sequence provider
2
3The purpose of the simple MMC power sequence provider is to supports a set of
4common properties between various SOC designs. It thus enables us to use the
5same provider for several SOC designs.
6
7Required properties:
8- compatible : contains "mmc-pwrseq-simple".
9
10Optional 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
20Example:
21
22 sdhci0_pwrseq {
23 compatible = "mmc-pwrseq-simple";
24 reset-gpios = <&gpio1 12 0>;
25 }
diff --git a/Documentation/devicetree/bindings/mmc/mmc.txt b/Documentation/devicetree/bindings/mmc/mmc.txt
index b52628b18a53..438899e8829b 100644
--- a/Documentation/devicetree/bindings/mmc/mmc.txt
+++ b/Documentation/devicetree/bindings/mmc/mmc.txt
@@ -64,7 +64,43 @@ Optional SDIO properties:
64- keep-power-in-suspend: Preserves card power during a suspend/resume cycle 64- keep-power-in-suspend: Preserves card power during a suspend/resume cycle
65- enable-sdio-wakeup: Enables wake up of host system on SDIO IRQ assertion 65- enable-sdio-wakeup: Enables wake up of host system on SDIO IRQ assertion
66 66
67Example: 67
68MMC power sequences:
69--------------------
70
71System on chip designs may specify a specific MMC power sequence. To
72successfully detect an (e)MMC/SD/SDIO card, that power sequence must be
73maintained while initializing the card.
74
75Optional property:
76- mmc-pwrseq: phandle to the MMC power sequence node. See "mmc-pwrseq-*"
77 for documentation of MMC power sequence bindings.
78
79
80Use of Function subnodes
81------------------------
82
83On embedded systems the cards connected to a host may need additional
84properties. These can be specified in subnodes to the host controller node.
85The subnodes are identified by the standard 'reg' property.
86Which information exactly can be specified depends on the bindings for the
87SDIO function driver for the subnode, as specified by the compatible string.
88
89Required 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
93Required 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
100Examples
101--------
102
103Basic example:
68 104
69sdhci@ab000000 { 105sdhci@ab000000 {
70 compatible = "sdhci"; 106 compatible = "sdhci";
@@ -77,4 +113,28 @@ sdhci@ab000000 {
77 max-frequency = <50000000>; 113 max-frequency = <50000000>;
78 keep-power-in-suspend; 114 keep-power-in-suspend;
79 enable-sdio-wakeup; 115 enable-sdio-wakeup;
116 mmc-pwrseq = <&sdhci0_pwrseq>
80} 117}
118
119Example with sdio function subnode:
120
121mmc3: mmc@01c12000 {
122 #address-cells = <1>;
123 #size-cells = <0>;
124
125 pinctrl-names = "default";
126 pinctrl-0 = <&mmc3_pins_a>;
127 vmmc-supply = <&reg_vmmc3>;
128 bus-width = <4>;
129 non-removable;
130 mmc-pwrseq = <&sdhci0_pwrseq>
131 status = "okay";
132
133 brcmf: bcrmf@1 {
134 reg = <1>;
135 compatible = "brcm,bcm43xx-fmac";
136 interrupt-parent = <&pio>;
137 interrupts = <10 8>; /* PH10 / EINT10 */
138 interrupt-names = "host-wake";
139 };
140};
diff --git a/Documentation/devicetree/bindings/mmc/nvidia,tegra20-sdhci.txt b/Documentation/devicetree/bindings/mmc/nvidia,tegra20-sdhci.txt
index f357c16ea815..15b8368ee1f2 100644
--- a/Documentation/devicetree/bindings/mmc/nvidia,tegra20-sdhci.txt
+++ b/Documentation/devicetree/bindings/mmc/nvidia,tegra20-sdhci.txt
@@ -7,7 +7,11 @@ This file documents differences between the core properties described
7by mmc.txt and the properties used by the sdhci-tegra driver. 7by mmc.txt and the properties used by the sdhci-tegra driver.
8 8
9Required properties: 9Required properties:
10- compatible : Should be "nvidia,<chip>-sdhci" 10- compatible : For Tegra20, must contain "nvidia,tegra20-sdhci".
11 For Tegra30, must contain "nvidia,tegra30-sdhci". For Tegra114,
12 must contain "nvidia,tegra114-sdhci". For Tegra124, must contain
13 "nvidia,tegra124-sdhci". Otherwise, must contain "nvidia,<chip>-sdhci",
14 plus one of the above, where <chip> is tegra132 or tegra210.
11- clocks : Must contain one entry, for the module clock. 15- clocks : Must contain one entry, for the module clock.
12 See ../clocks/clock-bindings.txt for details. 16 See ../clocks/clock-bindings.txt for details.
13- resets : Must contain an entry for each entry in reset-names. 17- resets : Must contain an entry for each entry in reset-names.
diff --git a/Documentation/devicetree/bindings/mmc/sdhci-fujitsu.txt b/Documentation/devicetree/bindings/mmc/sdhci-fujitsu.txt
new file mode 100644
index 000000000000..de2c53cff4f1
--- /dev/null
+++ b/Documentation/devicetree/bindings/mmc/sdhci-fujitsu.txt
@@ -0,0 +1,30 @@
1* Fujitsu SDHCI controller
2
3This file documents differences between the core properties in mmc.txt
4and the properties used by the sdhci_f_sdh30 driver.
5
6Required 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
15Optional 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
19Example:
20
21 sdhci1: mmc@36600000 {
22 compatible = "fujitsu,mb86s70-sdhci-3.0";
23 reg = <0 0x36600000 0x1000>;
24 interrupts = <0 172 0x4>,
25 <0 173 0x4>;
26 bus-width = <4>;
27 vqmmc-supply = <&vccq_sdhci1>;
28 clocks = <&clock 2 2 0>, <&clock 2 3 0>;
29 clock-names = "iface", "core";
30 };
diff --git a/Documentation/devicetree/bindings/mmc/sdhci-pxa.txt b/Documentation/devicetree/bindings/mmc/sdhci-pxa.txt
index 4dd6deb90719..3d1b449d6097 100644
--- a/Documentation/devicetree/bindings/mmc/sdhci-pxa.txt
+++ b/Documentation/devicetree/bindings/mmc/sdhci-pxa.txt
@@ -9,9 +9,13 @@ Required properties:
9- reg: 9- reg:
10 * for "mrvl,pxav2-mmc" and "mrvl,pxav3-mmc", one register area for 10 * for "mrvl,pxav2-mmc" and "mrvl,pxav3-mmc", one register area for
11 the SDHCI registers. 11 the SDHCI registers.
12 * for "marvell,armada-380-sdhci", two register areas. The first one 12
13 for the SDHCI registers themselves, and the second one for the 13 * for "marvell,armada-380-sdhci", three register areas. The first
14 AXI/Mbus bridge registers of the SDHCI unit. 14 one for the SDHCI registers themselves, the second one for the
15 AXI/Mbus bridge registers of the SDHCI unit, the third one for the
16 SDIO3 Configuration register
17- reg names: should be "sdhci", "mbus", "conf-sdio3". only mandatory
18 for "marvell,armada-380-sdhci"
15- clocks: Array of clocks required for SDHCI; requires at least one for 19- clocks: Array of clocks required for SDHCI; requires at least one for
16 I/O clock. 20 I/O clock.
17- clock-names: Array of names corresponding to clocks property; shall be 21- clock-names: Array of names corresponding to clocks property; shall be
@@ -35,7 +39,10 @@ sdhci@d4280800 {
35 39
36sdhci@d8000 { 40sdhci@d8000 {
37 compatible = "marvell,armada-380-sdhci"; 41 compatible = "marvell,armada-380-sdhci";
38 reg = <0xd8000 0x1000>, <0xdc000 0x100>; 42 reg-names = "sdhci", "mbus", "conf-sdio3";
43 reg = <0xd8000 0x1000>,
44 <0xdc000 0x100>;
45 <0x18454 0x4>;
39 interrupts = <0 25 0x4>; 46 interrupts = <0 25 0x4>;
40 clocks = <&gateclk 17>; 47 clocks = <&gateclk 17>;
41 clock-names = "io"; 48 clock-names = "io";
diff --git a/Documentation/devicetree/bindings/mtd/fsmc-nand.txt b/Documentation/devicetree/bindings/mtd/fsmc-nand.txt
index ec42935f3908..5235cbc551b0 100644
--- a/Documentation/devicetree/bindings/mtd/fsmc-nand.txt
+++ b/Documentation/devicetree/bindings/mtd/fsmc-nand.txt
@@ -9,7 +9,7 @@ Required properties:
9Optional properties: 9Optional properties:
10- bank-width : Width (in bytes) of the device. If not present, the width 10- bank-width : Width (in bytes) of the device. If not present, the width
11 defaults to 1 byte 11 defaults to 1 byte
12- nand-skip-bbtscan: Indicates the the BBT scanning should be skipped 12- nand-skip-bbtscan: Indicates the BBT scanning should be skipped
13- timings: array of 6 bytes for NAND timings. The meanings of these bytes 13- timings: array of 6 bytes for NAND timings. The meanings of these bytes
14 are: 14 are:
15 byte 0 TCLR : CLE to RE delay in number of AHB clock cycles, only 4 bits 15 byte 0 TCLR : CLE to RE delay in number of AHB clock cycles, only 4 bits
diff --git a/Documentation/devicetree/bindings/net/amd-xgbe-phy.txt b/Documentation/devicetree/bindings/net/amd-xgbe-phy.txt
index 42409bfe04c4..33df3932168e 100644
--- a/Documentation/devicetree/bindings/net/amd-xgbe-phy.txt
+++ b/Documentation/devicetree/bindings/net/amd-xgbe-phy.txt
@@ -7,17 +7,38 @@ Required properties:
7 - SerDes Rx/Tx registers 7 - SerDes Rx/Tx registers
8 - SerDes integration registers (1/2) 8 - SerDes integration registers (1/2)
9 - SerDes integration registers (2/2) 9 - SerDes integration registers (2/2)
10- interrupt-parent: Should be the phandle for the interrupt controller
11 that services interrupts for this device
12- interrupts: Should contain the amd-xgbe-phy interrupt.
10 13
11Optional properties: 14Optional properties:
12- amd,speed-set: Speed capabilities of the device 15- amd,speed-set: Speed capabilities of the device
13 0 - 1GbE and 10GbE (default) 16 0 - 1GbE and 10GbE (default)
14 1 - 2.5GbE and 10GbE 17 1 - 2.5GbE and 10GbE
15 18
19The following optional properties are represented by an array with each
20value corresponding to a particular speed. The first array value represents
21the setting for the 1GbE speed, the second value for the 2.5GbE speed and
22the third value for the 10GbE speed. All three values are required if the
23property 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
16Example: 31Example:
17 xgbe_phy@e1240800 { 32 xgbe_phy@e1240800 {
18 compatible = "amd,xgbe-phy-seattle-v1a", "ethernet-phy-ieee802.3-c45"; 33 compatible = "amd,xgbe-phy-seattle-v1a", "ethernet-phy-ieee802.3-c45";
19 reg = <0 0xe1240800 0 0x00400>, 34 reg = <0 0xe1240800 0 0x00400>,
20 <0 0xe1250000 0 0x00060>, 35 <0 0xe1250000 0 0x00060>,
21 <0 0xe1250080 0 0x00004>; 36 <0 0xe1250080 0 0x00004>;
37 interrupt-parent = <&gic>;
38 interrupts = <0 323 4>;
22 amd,speed-set = <0>; 39 amd,speed-set = <0>;
40 amd,serdes-blwc = <1>, <1>, <0>;
41 amd,serdes-cdr-rate = <2>, <2>, <7>;
42 amd,serdes-pq-skew = <10>, <10>, <30>;
43 amd,serdes-tx-amp = <15>, <15>, <10>;
23 }; 44 };
diff --git a/Documentation/devicetree/bindings/net/broadcom-systemport.txt b/Documentation/devicetree/bindings/net/broadcom-systemport.txt
index aa7ad622259d..877da34145b0 100644
--- a/Documentation/devicetree/bindings/net/broadcom-systemport.txt
+++ b/Documentation/devicetree/bindings/net/broadcom-systemport.txt
@@ -3,7 +3,7 @@
3Required properties: 3Required properties:
4- compatible: should be one of "brcm,systemport-v1.00" or "brcm,systemport" 4- compatible: should be one of "brcm,systemport-v1.00" or "brcm,systemport"
5- reg: address and length of the register set for the device. 5- reg: address and length of the register set for the device.
6- interrupts: interrupts for the device, first cell must be for the the rx 6- interrupts: interrupts for the device, first cell must be for the rx
7 interrupts, and the second cell should be for the transmit queues. An 7 interrupts, and the second cell should be for the transmit queues. An
8 optional third interrupt cell for Wake-on-LAN can be specified 8 optional third interrupt cell for Wake-on-LAN can be specified
9- local-mac-address: Ethernet MAC address (48 bits) of this adapter 9- local-mac-address: Ethernet MAC address (48 bits) of this adapter
diff --git a/Documentation/devicetree/bindings/net/davicom-dm9000.txt b/Documentation/devicetree/bindings/net/davicom-dm9000.txt
index 28767ed7c1bd..5224bf05f6f8 100644
--- a/Documentation/devicetree/bindings/net/davicom-dm9000.txt
+++ b/Documentation/devicetree/bindings/net/davicom-dm9000.txt
@@ -11,6 +11,8 @@ Required properties:
11Optional properties: 11Optional properties:
12- davicom,no-eeprom : Configuration EEPROM is not available 12- davicom,no-eeprom : Configuration EEPROM is not available
13- davicom,ext-phy : Use external PHY 13- davicom,ext-phy : Use external PHY
14- reset-gpios : phandle of gpio that will be used to reset chip during probe
15- vcc-supply : phandle of regulator that will be used to enable power to chip
14 16
15Example: 17Example:
16 18
@@ -21,4 +23,6 @@ Example:
21 interrupts = <7 4>; 23 interrupts = <7 4>;
22 local-mac-address = [00 00 de ad be ef]; 24 local-mac-address = [00 00 de ad be ef];
23 davicom,no-eeprom; 25 davicom,no-eeprom;
26 reset-gpios = <&gpf 12 GPIO_ACTIVE_LOW>;
27 vcc-supply = <&eth0_power>;
24 }; 28 };
diff --git a/Documentation/devicetree/bindings/net/fsl-fec.txt b/Documentation/devicetree/bindings/net/fsl-fec.txt
index 0c8775c45798..a9eb611bee68 100644
--- a/Documentation/devicetree/bindings/net/fsl-fec.txt
+++ b/Documentation/devicetree/bindings/net/fsl-fec.txt
@@ -22,6 +22,8 @@ Optional properties:
22- fsl,num-rx-queues : The property is valid for enet-avb IP, which supports 22- fsl,num-rx-queues : The property is valid for enet-avb IP, which supports
23 hw multi queues. Should specify the rx queue number, otherwise set rx queue 23 hw multi queues. Should specify the rx queue number, otherwise set rx queue
24 number to 1. 24 number to 1.
25- fsl,magic-packet : If present, indicates that the hardware supports waking
26 up via magic packet.
25 27
26Optional subnodes: 28Optional subnodes:
27- mdio : specifies the mdio bus in the FEC, used as a container for phy nodes 29- mdio : specifies the mdio bus in the FEC, used as a container for phy nodes
diff --git a/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt b/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt
index be6ea8960f20..1e97532a0b79 100644
--- a/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt
+++ b/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt
@@ -8,7 +8,16 @@ of how to define a PHY.
8Required properties: 8Required properties:
9 - reg : Offset and length of the register set for the device 9 - reg : Offset and length of the register set for the device
10 - compatible : Should define the compatible device type for the 10 - compatible : Should define the compatible device type for the
11 mdio. Currently, this is most likely to be "fsl,gianfar-mdio" 11 mdio. Currently supported strings/devices are:
12 - "fsl,gianfar-tbi"
13 - "fsl,gianfar-mdio"
14 - "fsl,etsec2-tbi"
15 - "fsl,etsec2-mdio"
16 - "fsl,ucc-mdio"
17 - "fsl,fman-mdio"
18 When device_type is "mdio", the following strings are also considered:
19 - "gianfar"
20 - "ucc_geth_phy"
12 21
13Example: 22Example:
14 23
diff --git a/Documentation/devicetree/bindings/net/hisilicon-hip04-net.txt b/Documentation/devicetree/bindings/net/hisilicon-hip04-net.txt
new file mode 100644
index 000000000000..988fc694b663
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/hisilicon-hip04-net.txt
@@ -0,0 +1,88 @@
1Hisilicon hip04 Ethernet Controller
2
3* Ethernet controller node
4
5Required 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
15Optional properties:
16- phy-handle: see ethernet.txt [1].
17
18[1] Documentation/devicetree/bindings/net/ethernet.txt
19
20
21* Ethernet ppe node:
22Control rx & tx fifos of all ethernet controllers.
23Have 2048 recv channels shared by all ethernet controllers, only if no overlap.
24Each controller's recv channel start from channel * number (RX_DESC_NUM).
25
26Required 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
33Required 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
39Example:
40 mdio {
41 compatible = "hisilicon,hip04-mdio";
42 reg = <0x28f1000 0x1000>;
43 #address-cells = <1>;
44 #size-cells = <0>;
45
46 phy0: ethernet-phy@0 {
47 compatible = "ethernet-phy-ieee802.3-c22";
48 reg = <0>;
49 marvell,reg-init = <18 0x14 0 0x8001>;
50 };
51
52 phy1: ethernet-phy@1 {
53 compatible = "ethernet-phy-ieee802.3-c22";
54 reg = <1>;
55 marvell,reg-init = <18 0x14 0 0x8001>;
56 };
57 };
58
59 ppe: ppe@28c0000 {
60 compatible = "hisilicon,hip04-ppe", "syscon";
61 reg = <0x28c0000 0x10000>;
62 };
63
64 fe: ethernet@28b0000 {
65 compatible = "hisilicon,hip04-mac";
66 reg = <0x28b0000 0x10000>;
67 interrupts = <0 413 4>;
68 phy-mode = "mii";
69 port-handle = <&ppe 31 0>;
70 };
71
72 ge0: ethernet@2800000 {
73 compatible = "hisilicon,hip04-mac";
74 reg = <0x2800000 0x10000>;
75 interrupts = <0 402 4>;
76 phy-mode = "sgmii";
77 port-handle = <&ppe 0 1>;
78 phy-handle = <&phy0>;
79 };
80
81 ge8: ethernet@2880000 {
82 compatible = "hisilicon,hip04-mac";
83 reg = <0x2880000 0x10000>;
84 interrupts = <0 410 4>;
85 phy-mode = "sgmii";
86 port-handle = <&ppe 8 2>;
87 phy-handle = <&phy1>;
88 };
diff --git a/Documentation/devicetree/bindings/net/keystone-netcp.txt b/Documentation/devicetree/bindings/net/keystone-netcp.txt
new file mode 100644
index 000000000000..f9c07710478d
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/keystone-netcp.txt
@@ -0,0 +1,197 @@
1This document describes the device tree bindings associated with the
2keystone network coprocessor(NetCP) driver support.
3
4The network coprocessor (NetCP) is a hardware accelerator that processes
5Ethernet packets. NetCP has a gigabit Ethernet (GbE) subsytem with a ethernet
6switch sub-module to send and receive packets. NetCP also includes a packet
7accelerator (PA) module to perform packet classification operations such as
8header matching, and packet modification operations such as checksum
9generation. NetCP can also optionally include a Security Accelerator (SA)
10capable of performing IPSec operations on ingress/egress packets.
11
12Keystone II SoC's also have a 10 Gigabit Ethernet Subsystem (XGbE) which
13includes a 3-port Ethernet switch sub-module capable of 10Gb/s and 1Gb/s rates
14per Ethernet port.
15
16Keystone NetCP driver has a plug-in module architecture where each of the NetCP
17sub-modules exist as a loadable kernel module which plug in to the netcp core.
18These sub-modules are represented as "netcp-devices" in the dts bindings. It is
19mandatory to have the ethernet switch sub-module for the ethernet interface to
20be operational. Any other sub-module like the PA is optional.
21
22NetCP 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
47NetCP subsystem properties:
48Required 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
53Optional 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
63NetCP device properties: Device specification for NetCP sub-modules.
641Gb/10Gb (gbe/xgbe) ethernet switch sub-module specifications.
65Required 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
86Optional 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
95NetCP interface properties: Interface specification for NetCP sub-modules.
96Required 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
110Optional 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
121Example binding:
122
123netcp: netcp@2090000 {
124 reg = <0x2620110 0x8>;
125 reg-names = "efuse";
126 compatible = "ti,netcp-1.0";
127 #address-cells = <1>;
128 #size-cells = <1>;
129 ranges;
130
131 clocks = <&papllclk>, <&clkcpgmac>, <&chipclk12>;
132 dma-coherent;
133 /* big-endian; */
134 dma-id = <0>;
135
136 netcp-devices {
137 #address-cells = <1>;
138 #size-cells = <1>;
139 ranges;
140 gbe@0x2090000 {
141 label = "netcp-gbe";
142 reg = <0x2090000 0xf00>;
143 /* enable-ale; */
144 tx-queue = <648>;
145 tx-channel = <8>;
146
147 interfaces {
148 gbe0: interface-0 {
149 slave-port = <0>;
150 link-interface = <4>;
151 };
152 gbe1: interface-1 {
153 slave-port = <1>;
154 link-interface = <4>;
155 };
156 };
157
158 secondary-slave-ports {
159 port-2 {
160 slave-port = <2>;
161 link-interface = <2>;
162 };
163 port-3 {
164 slave-port = <3>;
165 link-interface = <2>;
166 };
167 };
168 };
169 };
170
171 netcp-interfaces {
172 interface-0 {
173 rx-channel = <22>;
174 rx-pool = <1024 12>;
175 tx-pool = <1024 12>;
176 rx-queue-depth = <128 128 0 0>;
177 rx-buffer-size = <1518 4096 0 0>;
178 rx-queue = <8704>;
179 tx-completion-queue = <8706>;
180 efuse-mac = <1>;
181 netcp-gbe = <&gbe0>;
182
183 };
184 interface-1 {
185 rx-channel = <23>;
186 rx-pool = <1024 12>;
187 tx-pool = <1024 12>;
188 rx-queue-depth = <128 128 0 0>;
189 rx-buffer-size = <1518 4096 0 0>;
190 rx-queue = <8705>;
191 tx-completion-queue = <8707>;
192 efuse-mac = <0>;
193 local-mac-address = [02 18 31 7e 3e 6f];
194 netcp-gbe = <&gbe1>;
195 };
196 };
197};
diff --git a/Documentation/devicetree/bindings/net/nfc/st21nfca.txt b/Documentation/devicetree/bindings/net/nfc/st21nfca.txt
index e4faa2e8dfeb..7bb2e213d6f9 100644
--- a/Documentation/devicetree/bindings/net/nfc/st21nfca.txt
+++ b/Documentation/devicetree/bindings/net/nfc/st21nfca.txt
@@ -1,7 +1,7 @@
1* STMicroelectronics SAS. ST21NFCA NFC Controller 1* STMicroelectronics SAS. ST21NFCA NFC Controller
2 2
3Required properties: 3Required properties:
4- compatible: Should be "st,st21nfca_i2c". 4- compatible: Should be "st,st21nfca-i2c".
5- clock-frequency: I²C work frequency. 5- clock-frequency: I²C work frequency.
6- reg: address on the bus 6- reg: address on the bus
7- interrupt-parent: phandle for the interrupt gpio controller 7- interrupt-parent: phandle for the interrupt gpio controller
@@ -11,6 +11,10 @@ Required properties:
11Optional SoC Specific Properties: 11Optional SoC Specific Properties:
12- pinctrl-names: Contains only one value - "default". 12- pinctrl-names: Contains only one value - "default".
13- pintctrl-0: Specifies the pin control groups used for this controller. 13- pintctrl-0: Specifies the pin control groups used for this controller.
14- ese-present: Specifies that an ese is physically connected to the nfc
15controller.
16- uicc-present: Specifies that the uicc swp signal can be physically
17connected to the nfc controller.
14 18
15Example (for ARM-based BeagleBoard xM with ST21NFCA on I2C2): 19Example (for ARM-based BeagleBoard xM with ST21NFCA on I2C2):
16 20
@@ -20,7 +24,7 @@ Example (for ARM-based BeagleBoard xM with ST21NFCA on I2C2):
20 24
21 st21nfca: st21nfca@1 { 25 st21nfca: st21nfca@1 {
22 26
23 compatible = "st,st21nfca_i2c"; 27 compatible = "st,st21nfca-i2c";
24 28
25 reg = <0x01>; 29 reg = <0x01>;
26 clock-frequency = <400000>; 30 clock-frequency = <400000>;
@@ -29,5 +33,8 @@ Example (for ARM-based BeagleBoard xM with ST21NFCA on I2C2):
29 interrupts = <2 IRQ_TYPE_LEVEL_LOW>; 33 interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
30 34
31 enable-gpios = <&gpio5 29 GPIO_ACTIVE_HIGH>; 35 enable-gpios = <&gpio5 29 GPIO_ACTIVE_HIGH>;
36
37 ese-present;
38 uicc-present;
32 }; 39 };
33}; 40};
diff --git a/Documentation/devicetree/bindings/net/nfc/st21nfcb.txt b/Documentation/devicetree/bindings/net/nfc/st21nfcb.txt
index 9005608cbbd1..bb237072dbe9 100644
--- a/Documentation/devicetree/bindings/net/nfc/st21nfcb.txt
+++ b/Documentation/devicetree/bindings/net/nfc/st21nfcb.txt
@@ -1,7 +1,7 @@
1* STMicroelectronics SAS. ST21NFCB NFC Controller 1* STMicroelectronics SAS. ST21NFCB NFC Controller
2 2
3Required properties: 3Required properties:
4- compatible: Should be "st,st21nfcb_i2c". 4- compatible: Should be "st,st21nfcb-i2c".
5- clock-frequency: I²C work frequency. 5- clock-frequency: I²C work frequency.
6- reg: address on the bus 6- reg: address on the bus
7- interrupt-parent: phandle for the interrupt gpio controller 7- interrupt-parent: phandle for the interrupt gpio controller
@@ -20,7 +20,7 @@ Example (for ARM-based BeagleBoard xM with ST21NFCB on I2C2):
20 20
21 st21nfcb: st21nfcb@8 { 21 st21nfcb: st21nfcb@8 {
22 22
23 compatible = "st,st21nfcb_i2c"; 23 compatible = "st,st21nfcb-i2c";
24 24
25 reg = <0x08>; 25 reg = <0x08>;
26 clock-frequency = <400000>; 26 clock-frequency = <400000>;
diff --git a/Documentation/devicetree/bindings/net/rockchip-dwmac.txt b/Documentation/devicetree/bindings/net/rockchip-dwmac.txt
new file mode 100644
index 000000000000..21fd199e89b5
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/rockchip-dwmac.txt
@@ -0,0 +1,68 @@
1Rockchip SoC RK3288 10/100/1000 Ethernet driver(GMAC)
2
3The device node has following properties.
4
5Required 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
33Optional 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
38Example:
39
40gmac: ethernet@ff290000 {
41 compatible = "rockchip,rk3288-gmac";
42 reg = <0xff290000 0x10000>;
43 interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
44 interrupt-names = "macirq";
45 rockchip,grf = <&grf>;
46 clocks = <&cru SCLK_MAC>,
47 <&cru SCLK_MAC_RX>, <&cru SCLK_MAC_TX>,
48 <&cru SCLK_MACREF>, <&cru SCLK_MACREF_OUT>,
49 <&cru ACLK_GMAC>, <&cru PCLK_GMAC>;
50 clock-names = "stmmaceth",
51 "mac_clk_rx", "mac_clk_tx",
52 "clk_mac_ref", "clk_mac_refout",
53 "aclk_mac", "pclk_mac";
54 phy-mode = "rgmii";
55 pinctrl-names = "default";
56 pinctrl-0 = <&rgmii_pins /*&rmii_pins*/>;
57
58 clock_in_out = "input";
59 snps,reset-gpio = <&gpio4 7 0>;
60 snps,reset-active-low;
61
62 assigned-clocks = <&cru SCLK_MAC>;
63 assigned-clock-parents = <&ext_gmac>;
64 tx_delay = <0x30>;
65 rx_delay = <0x10>;
66
67 status = "ok";
68};
diff --git a/Documentation/devicetree/bindings/net/sti-dwmac.txt b/Documentation/devicetree/bindings/net/sti-dwmac.txt
index 6762a6b5da7e..d05c1e1fd9b6 100644
--- a/Documentation/devicetree/bindings/net/sti-dwmac.txt
+++ b/Documentation/devicetree/bindings/net/sti-dwmac.txt
@@ -9,14 +9,10 @@ The device node has following properties.
9Required properties: 9Required properties:
10 - compatible : Can be "st,stih415-dwmac", "st,stih416-dwmac", 10 - compatible : Can be "st,stih415-dwmac", "st,stih416-dwmac",
11 "st,stih407-dwmac", "st,stid127-dwmac". 11 "st,stih407-dwmac", "st,stid127-dwmac".
12 - reg : Offset of the glue configuration register map in system 12 - st,syscon : Should be phandle/offset pair. The phandle to the syscon node which
13 configuration regmap pointed by st,syscon property and size. 13 encompases the glue register, and the offset of the control register.
14 - st,syscon : Should be phandle to system configuration node which
15 encompases this glue registers.
16 - st,gmac_en: this is to enable the gmac into a dedicated sysctl control 14 - st,gmac_en: this is to enable the gmac into a dedicated sysctl control
17 register available on STiH407 SoC. 15 register available on STiH407 SoC.
18 - sti-ethconf: this is the gmac glue logic register to enable the GMAC,
19 select among the different modes and program the clk retiming.
20 - pinctrl-0: pin-control for all the MII mode supported. 16 - pinctrl-0: pin-control for all the MII mode supported.
21 17
22Optional properties: 18Optional properties:
@@ -40,10 +36,10 @@ ethernet0: dwmac@9630000 {
40 device_type = "network"; 36 device_type = "network";
41 status = "disabled"; 37 status = "disabled";
42 compatible = "st,stih407-dwmac", "snps,dwmac", "snps,dwmac-3.710"; 38 compatible = "st,stih407-dwmac", "snps,dwmac", "snps,dwmac-3.710";
43 reg = <0x9630000 0x8000>, <0x80 0x4>; 39 reg = <0x9630000 0x8000>;
44 reg-names = "stmmaceth", "sti-ethconf"; 40 reg-names = "stmmaceth";
45 41
46 st,syscon = <&syscfg_sbc_reg>; 42 st,syscon = <&syscfg_sbc_reg 0x80>;
47 st,gmac_en; 43 st,gmac_en;
48 resets = <&softreset STIH407_ETH1_SOFTRESET>; 44 resets = <&softreset STIH407_ETH1_SOFTRESET>;
49 reset-names = "stmmaceth"; 45 reset-names = "stmmaceth";
diff --git a/Documentation/devicetree/bindings/net/stmmac.txt b/Documentation/devicetree/bindings/net/stmmac.txt
index c41afd963edf..8ca65cec52ae 100644
--- a/Documentation/devicetree/bindings/net/stmmac.txt
+++ b/Documentation/devicetree/bindings/net/stmmac.txt
@@ -43,6 +43,7 @@ Optional properties:
43 available this clock is used for programming the Timestamp Addend Register. 43 available this clock is used for programming the Timestamp Addend Register.
44 If not passed then the system clock will be used and this is fine on some 44 If not passed then the system clock will be used and this is fine on some
45 platforms. 45 platforms.
46- snps,burst_len: The AXI burst lenth value of the AXI BUS MODE register.
46 47
47Examples: 48Examples:
48 49
diff --git a/Documentation/devicetree/bindings/net/wireless/qcom,ath10k.txt b/Documentation/devicetree/bindings/net/wireless/qcom,ath10k.txt
new file mode 100644
index 000000000000..edefc26c6204
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/wireless/qcom,ath10k.txt
@@ -0,0 +1,30 @@
1* Qualcomm Atheros ath10k wireless devices
2
3For ath10k devices the calibration data can be provided through Device
4Tree. The node is a child node of the PCI controller.
5
6Required properties:
7-compatible : Should be "qcom,ath10k"
8
9Optional properties:
10- qcom,ath10k-calibration-data : calibration data as an array, the
11 length can vary between hw versions
12
13
14Example:
15
16pci {
17 pcie@0 {
18 reg = <0 0 0 0 0>;
19 #interrupt-cells = <1>;
20 #size-cells = <2>;
21 #address-cells = <3>;
22 device_type = "pci";
23
24 ath10k@0,0 {
25 reg = <0 0 0 0 0>;
26 device_type = "pci";
27 qcom,ath10k-calibration-data = [ 01 02 03 ... ];
28 };
29 };
30};
diff --git a/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt b/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt
index d763e047c6ae..75321ae23c08 100644
--- a/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt
+++ b/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt
@@ -1,10 +1,10 @@
1NVIDIA Tegra PCIe controller 1NVIDIA Tegra PCIe controller
2 2
3Required properties: 3Required properties:
4- compatible: Must be one of: 4- compatible: For Tegra20, must contain "nvidia,tegra20-pcie". For Tegra30,
5 - "nvidia,tegra20-pcie" 5 "nvidia,tegra30-pcie". For Tegra124, must contain "nvidia,tegra124-pcie".
6 - "nvidia,tegra30-pcie" 6 Otherwise, must contain "nvidia,<chip>-pcie", plus one of the above, where
7 - "nvidia,tegra124-pcie" 7 <chip> is tegra132 or tegra210.
8- device_type: Must be "pci" 8- device_type: Must be "pci"
9- reg: A list of physical base address and length for each set of controller 9- reg: A list of physical base address and length for each set of controller
10 registers. Must contain an entry for each entry in the reg-names property. 10 registers. Must contain an entry for each entry in the reg-names property.
diff --git a/Documentation/devicetree/bindings/pci/versatile.txt b/Documentation/devicetree/bindings/pci/versatile.txt
new file mode 100644
index 000000000000..ebd1e7d0403e
--- /dev/null
+++ b/Documentation/devicetree/bindings/pci/versatile.txt
@@ -0,0 +1,59 @@
1* ARM Versatile Platform Baseboard PCI interface
2
3PCI host controller found on the ARM Versatile PB board's FPGA.
4
5Required 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
22Example:
23
24pci-controller@10001000 {
25 compatible = "arm,versatile-pci";
26 device_type = "pci";
27 reg = <0x10001000 0x1000
28 0x41000000 0x10000
29 0x42000000 0x100000>;
30 bus-range = <0 0xff>;
31 #address-cells = <3>;
32 #size-cells = <2>;
33 #interrupt-cells = <1>;
34
35 ranges = <0x01000000 0 0x00000000 0x43000000 0 0x00010000 /* downstream I/O */
36 0x02000000 0 0x50000000 0x50000000 0 0x10000000 /* non-prefetchable memory */
37 0x42000000 0 0x60000000 0x60000000 0 0x10000000>; /* prefetchable memory */
38
39 interrupt-map-mask = <0x1800 0 0 7>;
40 interrupt-map = <0x1800 0 0 1 &sic 28
41 0x1800 0 0 2 &sic 29
42 0x1800 0 0 3 &sic 30
43 0x1800 0 0 4 &sic 27
44
45 0x1000 0 0 1 &sic 27
46 0x1000 0 0 2 &sic 28
47 0x1000 0 0 3 &sic 29
48 0x1000 0 0 4 &sic 30
49
50 0x0800 0 0 1 &sic 30
51 0x0800 0 0 2 &sic 27
52 0x0800 0 0 3 &sic 28
53 0x0800 0 0 4 &sic 29
54
55 0x0000 0 0 1 &sic 29
56 0x0000 0 0 2 &sic 30
57 0x0000 0 0 3 &sic 27
58 0x0000 0 0 4 &sic 28>;
59};
diff --git a/Documentation/devicetree/bindings/phy/phy-miphy365x.txt b/Documentation/devicetree/bindings/phy/phy-miphy365x.txt
index 42c880886cf7..9802d5d911aa 100644
--- a/Documentation/devicetree/bindings/phy/phy-miphy365x.txt
+++ b/Documentation/devicetree/bindings/phy/phy-miphy365x.txt
@@ -6,8 +6,10 @@ for SATA and PCIe.
6 6
7Required properties (controller (parent) node): 7Required properties (controller (parent) node):
8- compatible : Should be "st,miphy365x-phy" 8- compatible : Should be "st,miphy365x-phy"
9- st,syscfg : Should be a phandle of the system configuration register group 9- st,syscfg : Phandle / integer array property. Phandle of sysconfig group
10 which contain the SATA, PCIe mode setting bits 10 containing the miphy registers and integer array should contain
11 an entry for each port sub-node, specifying the control
12 register offset inside the sysconfig group.
11 13
12Required nodes : A sub-node is required for each channel the controller 14Required nodes : A sub-node is required for each channel the controller
13 provides. Address range information including the usual 15 provides. Address range information including the usual
@@ -26,7 +28,6 @@ Required properties (port (child) node):
26 registers filled in "reg": 28 registers filled in "reg":
27 - sata: For SATA devices 29 - sata: For SATA devices
28 - pcie: For PCIe devices 30 - pcie: For PCIe devices
29 - syscfg: To specify the syscfg based config register
30 31
31Optional properties (port (child) node): 32Optional properties (port (child) node):
32- st,sata-gen : Generation of locally attached SATA IP. Expected values 33- st,sata-gen : Generation of locally attached SATA IP. Expected values
@@ -39,20 +40,20 @@ Example:
39 40
40 miphy365x_phy: miphy365x@fe382000 { 41 miphy365x_phy: miphy365x@fe382000 {
41 compatible = "st,miphy365x-phy"; 42 compatible = "st,miphy365x-phy";
42 st,syscfg = <&syscfg_rear>; 43 st,syscfg = <&syscfg_rear 0x824 0x828>;
43 #address-cells = <1>; 44 #address-cells = <1>;
44 #size-cells = <1>; 45 #size-cells = <1>;
45 ranges; 46 ranges;
46 47
47 phy_port0: port@fe382000 { 48 phy_port0: port@fe382000 {
48 reg = <0xfe382000 0x100>, <0xfe394000 0x100>, <0x824 0x4>; 49 reg = <0xfe382000 0x100>, <0xfe394000 0x100>;
49 reg-names = "sata", "pcie", "syscfg"; 50 reg-names = "sata", "pcie";
50 #phy-cells = <1>; 51 #phy-cells = <1>;
51 st,sata-gen = <3>; 52 st,sata-gen = <3>;
52 }; 53 };
53 54
54 phy_port1: port@fe38a000 { 55 phy_port1: port@fe38a000 {
55 reg = <0xfe38a000 0x100>, <0xfe804000 0x100>, <0x828 0x4>;; 56 reg = <0xfe38a000 0x100>, <0xfe804000 0x100>;;
56 reg-names = "sata", "pcie", "syscfg"; 57 reg-names = "sata", "pcie", "syscfg";
57 #phy-cells = <1>; 58 #phy-cells = <1>;
58 st,pcie-tx-pol-inv; 59 st,pcie-tx-pol-inv;
diff --git a/Documentation/devicetree/bindings/phy/phy-stih407-usb.txt b/Documentation/devicetree/bindings/phy/phy-stih407-usb.txt
index 1ef8228db73b..de6a706abcdb 100644
--- a/Documentation/devicetree/bindings/phy/phy-stih407-usb.txt
+++ b/Documentation/devicetree/bindings/phy/phy-stih407-usb.txt
@@ -5,10 +5,7 @@ host controllers (when controlling usb2/1.1 devices) available on STiH407 SoC fa
5 5
6Required properties: 6Required properties:
7- compatible : should be "st,stih407-usb2-phy" 7- compatible : should be "st,stih407-usb2-phy"
8- reg : contain the offset and length of the system configuration registers 8- st,syscfg : phandle of sysconfig bank plus integer array containing phyparam and phyctrl register offsets
9 used as glue logic to control & parameter phy
10- reg-names : the names of the system configuration registers in "reg", should be "param" and "reg"
11- st,syscfg : sysconfig register to manage phy parameter at driver level
12- resets : list of phandle and reset specifier pairs. There should be two entries, one 9- resets : list of phandle and reset specifier pairs. There should be two entries, one
13 for the whole phy and one for the port 10 for the whole phy and one for the port
14- reset-names : list of reset signal names. Should be "global" and "port" 11- reset-names : list of reset signal names. Should be "global" and "port"
@@ -19,11 +16,8 @@ Example:
19 16
20usb2_picophy0: usbpicophy@f8 { 17usb2_picophy0: usbpicophy@f8 {
21 compatible = "st,stih407-usb2-phy"; 18 compatible = "st,stih407-usb2-phy";
22 reg = <0xf8 0x04>, /* syscfg 5062 */
23 <0xf4 0x04>; /* syscfg 5061 */
24 reg-names = "param", "ctrl";
25 #phy-cells = <0>; 19 #phy-cells = <0>;
26 st,syscfg = <&syscfg_core>; 20 st,syscfg = <&syscfg_core 0x100 0xf4>;
27 resets = <&softreset STIH407_PICOPHY_SOFTRESET>, 21 resets = <&softreset STIH407_PICOPHY_SOFTRESET>,
28 <&picophyreset STIH407_PICOPHY0_RESET>; 22 <&picophyreset STIH407_PICOPHY0_RESET>;
29 reset-names = "global", "port"; 23 reset-names = "global", "port";
diff --git a/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt
index 93ce12eb422a..fdd8046e650a 100644
--- a/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt
@@ -11,6 +11,7 @@ Required properties:
11 "allwinner,sun5i-a10s-pinctrl" 11 "allwinner,sun5i-a10s-pinctrl"
12 "allwinner,sun5i-a13-pinctrl" 12 "allwinner,sun5i-a13-pinctrl"
13 "allwinner,sun6i-a31-pinctrl" 13 "allwinner,sun6i-a31-pinctrl"
14 "allwinner,sun6i-a31s-pinctrl"
14 "allwinner,sun6i-a31-r-pinctrl" 15 "allwinner,sun6i-a31-r-pinctrl"
15 "allwinner,sun7i-a20-pinctrl" 16 "allwinner,sun7i-a20-pinctrl"
16 "allwinner,sun8i-a23-pinctrl" 17 "allwinner,sun8i-a23-pinctrl"
diff --git a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-pinmux.txt b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-pinmux.txt
index 189814e7cdc7..ecb5c0d25218 100644
--- a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-pinmux.txt
+++ b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-pinmux.txt
@@ -6,7 +6,8 @@ nvidia,tegra30-pinmux.txt. In fact, this document assumes that binding as
6a baseline, and only documents the differences between the two bindings. 6a baseline, and only documents the differences between the two bindings.
7 7
8Required properties: 8Required properties:
9- compatible: "nvidia,tegra124-pinmux" 9- compatible: For Tegra124, must contain "nvidia,tegra124-pinmux". For
10 Tegra132, must contain '"nvidia,tegra132-pinmux", "nvidia-tegra124-pinmux"'.
10- reg: Should contain a list of base address and size pairs for: 11- reg: Should contain a list of base address and size pairs for:
11 -- first entry - the drive strength and pad control registers. 12 -- first entry - the drive strength and pad control registers.
12 -- second entry - the pinmux registers 13 -- second entry - the pinmux registers
diff --git a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-xusb-padctl.txt b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-xusb-padctl.txt
index 2f9c0bd66457..30676ded85bb 100644
--- a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-xusb-padctl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-xusb-padctl.txt
@@ -13,7 +13,9 @@ how to describe and reference PHYs in device trees.
13 13
14Required properties: 14Required properties:
15-------------------- 15--------------------
16- compatible: should be "nvidia,tegra124-xusb-padctl" 16- compatible: For Tegra124, must contain "nvidia,tegra124-xusb-padctl".
17 Otherwise, must contain '"nvidia,<chip>-xusb-padctl",
18 "nvidia-tegra124-xusb-padctl"', where <chip> is tegra132 or tegra210.
17- reg: Physical base address and length of the controller's registers. 19- reg: Physical base address and length of the controller's registers.
18- resets: Must contain an entry for each entry in reset-names. 20- resets: Must contain an entry for each entry in reset-names.
19 See ../reset/reset.txt for details. 21 See ../reset/reset.txt for details.
diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,msm8916-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,msm8916-pinctrl.txt
new file mode 100644
index 000000000000..498caff6029e
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/qcom,msm8916-pinctrl.txt
@@ -0,0 +1,186 @@
1Qualcomm MSM8916 TLMM block
2
3This binding describes the Top Level Mode Multiplexer block found in the
4MSM8916 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
43Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for
44a general description of GPIO and interrupt bindings.
45
46Please refer to pinctrl-bindings.txt in this directory for details of the
47common pinctrl bindings used by client devices, including the meaning of the
48phrase "pin configuration node".
49
50The pin configuration nodes act as a container for an arbitrary number of
51subnodes. Each of these subnodes represents some desired configuration for a
52pin, a group, or a list of pins or groups. This configuration can include the
53mux function to select on those pin(s)/group(s), and various pin configuration
54parameters, such as pull-up, drive strength, etc.
55
56
57PIN CONFIGURATION NODES:
58
59The name of each subnode is not important; all subnodes should be enumerated
60and processed purely based on their content.
61
62Each subnode only affects those parameters that are explicitly listed. In
63other words, a subnode that lists a mux function but no pin configuration
64parameters implies no information about any pin configuration parameters.
65Similarly, a pin subnode that describes a pullup parameter implies no
66information about e.g. the mux function.
67
68
69The following generic properties as defined in pinctrl-bindings.txt are valid
70to 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
157Example:
158
159 tlmm: pinctrl@1000000 {
160 compatible = "qcom,msm8916-pinctrl";
161 reg = <0x1000000 0x300000>;
162 interrupts = <0 208 0>;
163 gpio-controller;
164 #gpio-cells = <2>;
165 interrupt-controller;
166 #interrupt-cells = <2>;
167
168 uart2: uart2-default {
169 mux {
170 pins = "gpio4", "gpio5";
171 function = "blsp_uart2";
172 };
173
174 tx {
175 pins = "gpio4";
176 drive-strength = <4>;
177 bias-disable;
178 };
179
180 rx {
181 pins = "gpio5";
182 drive-strength = <2>;
183 bias-pull-up;
184 };
185 };
186 };
diff --git a/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt
index daef6fad6a5f..bfe72ec055e3 100644
--- a/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt
@@ -1,7 +1,7 @@
1* Renesas Pin Function Controller (GPIO and Pin Mux/Config) 1* Renesas Pin Function Controller (GPIO and Pin Mux/Config)
2 2
3The Pin Function Controller (PFC) is a Pin Mux/Config controller. On SH7372, 3The Pin Function Controller (PFC) is a Pin Mux/Config controller. On SH73A0,
4SH73A0, R8A73A4 and R8A7740 it also acts as a GPIO controller. 4R8A73A4 and R8A7740 it also acts as a GPIO controller.
5 5
6 6
7Pin Control 7Pin Control
@@ -10,13 +10,13 @@ Pin Control
10Required Properties: 10Required Properties:
11 11
12 - compatible: should be one of the following. 12 - compatible: should be one of the following.
13 - "renesas,pfc-emev2": for EMEV2 (EMMA Mobile EV2) compatible pin-controller.
13 - "renesas,pfc-r8a73a4": for R8A73A4 (R-Mobile APE6) compatible pin-controller. 14 - "renesas,pfc-r8a73a4": for R8A73A4 (R-Mobile APE6) compatible pin-controller.
14 - "renesas,pfc-r8a7740": for R8A7740 (R-Mobile A1) compatible pin-controller. 15 - "renesas,pfc-r8a7740": for R8A7740 (R-Mobile A1) compatible pin-controller.
15 - "renesas,pfc-r8a7778": for R8A7778 (R-Mobile M1) compatible pin-controller. 16 - "renesas,pfc-r8a7778": for R8A7778 (R-Mobile M1) compatible pin-controller.
16 - "renesas,pfc-r8a7779": for R8A7779 (R-Car H1) compatible pin-controller. 17 - "renesas,pfc-r8a7779": for R8A7779 (R-Car H1) compatible pin-controller.
17 - "renesas,pfc-r8a7790": for R8A7790 (R-Car H2) compatible pin-controller. 18 - "renesas,pfc-r8a7790": for R8A7790 (R-Car H2) compatible pin-controller.
18 - "renesas,pfc-r8a7791": for R8A7791 (R-Car M2) compatible pin-controller. 19 - "renesas,pfc-r8a7791": for R8A7791 (R-Car M2) compatible pin-controller.
19 - "renesas,pfc-sh7372": for SH7372 (SH-Mobile AP4) compatible pin-controller.
20 - "renesas,pfc-sh73a0": for SH73A0 (SH-Mobile AG5) compatible pin-controller. 20 - "renesas,pfc-sh73a0": for SH73A0 (SH-Mobile AG5) compatible pin-controller.
21 21
22 - reg: Base address and length of each memory resource used by the pin 22 - reg: Base address and length of each memory resource used by the pin
@@ -75,8 +75,7 @@ bias-disable, bias-pull-up and bias-pull-down.
75GPIO 75GPIO
76---- 76----
77 77
78On SH7372, SH73A0, R8A73A4 and R8A7740 the PFC node is also a GPIO controller 78On SH73A0, R8A73A4 and R8A7740 the PFC node is also a GPIO controller node.
79node.
80 79
81Required Properties: 80Required Properties:
82 81
diff --git a/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt
index 8425838a6dff..9d2a995293e6 100644
--- a/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt
@@ -171,6 +171,18 @@ Aliases:
171All the pin controller nodes should be represented in the aliases node using 171All the pin controller nodes should be represented in the aliases node using
172the following format 'pinctrl{n}' where n is a unique number for the alias. 172the following format 'pinctrl{n}' where n is a unique number for the alias.
173 173
174Aliases 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
174Example: A pin-controller node with pin banks: 186Example: A pin-controller node with pin banks:
175 187
176 pinctrl_0: pinctrl@11400000 { 188 pinctrl_0: pinctrl@11400000 {
diff --git a/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt b/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt
index 6b33b9f18e88..f63fcb3ed352 100644
--- a/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt
+++ b/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt
@@ -16,17 +16,22 @@ mux function to select on those pin(s)/group(s), and various pin configuration
16parameters, such as input, output, pull up, pull down... 16parameters, such as input, output, pull up, pull down...
17 17
18The name of each subnode is not important; all subnodes should be enumerated 18The name of each subnode is not important; all subnodes should be enumerated
19and processed purely based on their content. 19and processed purely based on their content. The subnodes use the generic
20pin multiplexing node layout from the standard pin control bindings
21(see pinctrl-bindings.txt):
20 22
21Required subnode-properties: 23Required pin multiplexing subnode properties:
22- ste,pins : An array of strings. Each string contains the name of a pin or 24- function: A string containing the name of the function to mux to the
23 group.
24
25Optional subnode-properties:
26- ste,function: A string containing the name of the function to mux to the
27 pin or group. 25 pin or group.
26- groups : An array of strings. Each string contains the name of a pin
27 group that will be combined with the function to form a multiplexing
28 set-up.
28 29
29- ste,config: Handle of pin configuration node (e.g. ste,config = <&slpm_in_wkup_pdis>) 30Required pin configuration subnode properties:
31- pins: A string array describing the pins affected by the configuration
32 in the node.
33- ste,config: Handle of pin configuration node
34 (e.g. ste,config = <&slpm_in_wkup_pdis>)
30 35
31- ste,input : <0/1/2> 36- ste,input : <0/1/2>
32 0: input with no pull 37 0: input with no pull
@@ -97,32 +102,32 @@ Example board file extract:
97 uart0 { 102 uart0 {
98 uart0_default_mux: uart0_mux { 103 uart0_default_mux: uart0_mux {
99 u0_default_mux { 104 u0_default_mux {
100 ste,function = "u0"; 105 function = "u0";
101 ste,pins = "u0_a_1"; 106 pins = "u0_a_1";
102 }; 107 };
103 }; 108 };
104 uart0_default_mode: uart0_default { 109 uart0_default_mode: uart0_default {
105 uart0_default_cfg1 { 110 uart0_default_cfg1 {
106 ste,pins = "GPIO0", "GPIO2"; 111 pins = "GPIO0", "GPIO2";
107 ste,input = <1>; 112 ste,input = <1>;
108 }; 113 };
109 114
110 uart0_default_cfg2 { 115 uart0_default_cfg2 {
111 ste,pins = "GPIO1", "GPIO3"; 116 pins = "GPIO1", "GPIO3";
112 ste,output = <1>; 117 ste,output = <1>;
113 }; 118 };
114 }; 119 };
115 uart0_sleep_mode: uart0_sleep { 120 uart0_sleep_mode: uart0_sleep {
116 uart0_sleep_cfg1 { 121 uart0_sleep_cfg1 {
117 ste,pins = "GPIO0", "GPIO2"; 122 pins = "GPIO0", "GPIO2";
118 ste,config = <&slpm_in_wkup_pdis>; 123 ste,config = <&slpm_in_wkup_pdis>;
119 }; 124 };
120 uart0_sleep_cfg2 { 125 uart0_sleep_cfg2 {
121 ste,pins = "GPIO1"; 126 pins = "GPIO1";
122 ste,config = <&slpm_out_hi_wkup_pdis>; 127 ste,config = <&slpm_out_hi_wkup_pdis>;
123 }; 128 };
124 uart0_sleep_cfg3 { 129 uart0_sleep_cfg3 {
125 ste,pins = "GPIO3"; 130 pins = "GPIO3";
126 ste,config = <&slpm_out_wkup_pdis>; 131 ste,config = <&slpm_out_wkup_pdis>;
127 }; 132 };
128 }; 133 };
diff --git a/Documentation/devicetree/bindings/pinctrl/xlnx,zynq-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/xlnx,zynq-pinctrl.txt
new file mode 100644
index 000000000000..b7b55a964f65
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/xlnx,zynq-pinctrl.txt
@@ -0,0 +1,104 @@
1 Binding for Xilinx Zynq Pinctrl
2
3Required properties:
4- compatible: "xlnx,zynq-pinctrl"
5- syscon: phandle to SLCR
6- reg: Offset and length of pinctrl space in SLCR
7
8Please refer to pinctrl-bindings.txt in this directory for details of the
9common pinctrl bindings used by client devices, including the meaning of the
10phrase "pin configuration node".
11
12Zynq's pin configuration nodes act as a container for an arbitrary number of
13subnodes. Each of these subnodes represents some desired configuration for a
14pin, a group, or a list of pins or groups. This configuration can include the
15mux function to select on those pin(s)/group(s), and various pin configuration
16parameters, such as pull-up, slew rate, etc.
17
18Each configuration node can consist of multiple nodes describing the pinmux and
19pinconf options. Those nodes can be pinmux nodes or pinconf nodes.
20
21The name of each subnode is not important; all subnodes should be enumerated
22and processed purely based on their content.
23
24Required 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
29Required properties for configuration nodes:
30One of:
31 - pins: a list of pin names
32 - groups: A list of pinmux groups.
33
34The following generic properties as defined in pinctrl-bindings.txt are valid
35to specify in a pinmux subnode:
36 groups, function
37
38The following generic properties as defined in pinctrl-bindings.txt are valid
39to 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
67The following driver-specific properties as defined here are valid to specify in
68a 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
76Example:
77 pinctrl0: pinctrl@700 {
78 compatible = "xlnx,pinctrl-zynq";
79 reg = <0x700 0x200>;
80 syscon = <&slcr>;
81
82 pinctrl_uart1_default: uart1-default {
83 mux {
84 groups = "uart1_10_grp";
85 function = "uart1";
86 };
87
88 conf {
89 groups = "uart1_10_grp";
90 slew-rate = <0>;
91 io-standard = <1>;
92 };
93
94 conf-rx {
95 pins = "MIO49";
96 bias-high-impedance;
97 };
98
99 conf-tx {
100 pins = "MIO48";
101 bias-disable;
102 };
103 };
104 };
diff --git a/Documentation/devicetree/bindings/power/ltc2941.txt b/Documentation/devicetree/bindings/power/ltc2941.txt
new file mode 100644
index 000000000000..ea42ae12d924
--- /dev/null
+++ b/Documentation/devicetree/bindings/power/ltc2941.txt
@@ -0,0 +1,27 @@
1binding for LTC2941 and LTC2943 battery gauges
2
3Both the LTC2941 and LTC2943 measure battery capacity.
4The LTC2943 is compatible with the LTC2941, it adds voltage and
5temperature monitoring, and uses a slightly different conversion
6formula for the charge counter.
7
8Required 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
20Example from the Topic Miami Florida board:
21
22 fuelgauge: ltc2943@64 {
23 compatible = "ltc2943";
24 reg = <0x64>;
25 lltc,resistor-sense = <15>;
26 lltc,prescaler-exponent = <5>; /* 2^(2*5) = 1024 */
27 };
diff --git a/Documentation/devicetree/bindings/power/reset/ltc2952-poweroff.txt b/Documentation/devicetree/bindings/power/reset/ltc2952-poweroff.txt
index 0c94c637f63b..cd2d7f58a9d7 100644
--- a/Documentation/devicetree/bindings/power/reset/ltc2952-poweroff.txt
+++ b/Documentation/devicetree/bindings/power/reset/ltc2952-poweroff.txt
@@ -1,20 +1,23 @@
1Binding for the LTC2952 PowerPath controller 1Binding for the LTC2952 PowerPath controller
2 2
3This chip is used to externally trigger a system shut down. Once the trigger has 3This chip is used to externally trigger a system shut down. Once the trigger has
4been sent, the chips' watchdog has to be reset to gracefully shut down. 4been sent, the chip's watchdog has to be reset to gracefully shut down.
5If the Linux systems decides to shut down it powers off the platform via the 5A full powerdown can be triggered via the kill signal.
6kill signal.
7 6
8Required properties: 7Required properties:
9 8
10- compatible: Must contain: "lltc,ltc2952" 9- compatible: Must contain: "lltc,ltc2952"
11- trigger-gpios: phandle + gpio-specifier for the GPIO connected to the
12 chip's trigger line
13- watchdog-gpios: phandle + gpio-specifier for the GPIO connected to the 10- watchdog-gpios: phandle + gpio-specifier for the GPIO connected to the
14 chip's watchdog line 11 chip's watchdog line
15- kill-gpios: phandle + gpio-specifier for the GPIO connected to the 12- kill-gpios: phandle + gpio-specifier for the GPIO connected to the
16 chip's kill line 13 chip's kill line
17 14
15Optional 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
18Example: 21Example:
19 22
20ltc2952 { 23ltc2952 {
diff --git a/Documentation/devicetree/bindings/power/rockchip-io-domain.txt b/Documentation/devicetree/bindings/power/rockchip-io-domain.txt
index 6fbf6e7ecde6..8b70db103ca7 100644
--- a/Documentation/devicetree/bindings/power/rockchip-io-domain.txt
+++ b/Documentation/devicetree/bindings/power/rockchip-io-domain.txt
@@ -37,7 +37,7 @@ Required properties:
37 37
38 38
39You specify supplies using the standard regulator bindings by including 39You specify supplies using the standard regulator bindings by including
40a phandle the the relevant regulator. All specified supplies must be able 40a phandle the relevant regulator. All specified supplies must be able
41to report their voltage. The IO Voltage Domain for any non-specified 41to report their voltage. The IO Voltage Domain for any non-specified
42supplies will be not be touched. 42supplies will be not be touched.
43 43
diff --git a/Documentation/devicetree/bindings/powerpc/fsl/fman.txt b/Documentation/devicetree/bindings/powerpc/fsl/fman.txt
index edeea160ca39..edda55f74004 100644
--- a/Documentation/devicetree/bindings/powerpc/fsl/fman.txt
+++ b/Documentation/devicetree/bindings/powerpc/fsl/fman.txt
@@ -7,6 +7,7 @@ CONTENTS
7 - FMan MURAM Node 7 - FMan MURAM Node
8 - FMan dTSEC/XGEC/mEMAC Node 8 - FMan dTSEC/XGEC/mEMAC Node
9 - FMan IEEE 1588 Node 9 - FMan IEEE 1588 Node
10 - FMan MDIO Node
10 - Example 11 - Example
11 12
12============================================================================= 13=============================================================================
@@ -357,6 +358,69 @@ ptp-timer@fe000 {
357}; 358};
358 359
359============================================================================= 360=============================================================================
361FMan MDIO Node
362
363DESCRIPTION
364
365The MDIO is a bus to which the PHY devices are connected.
366
367PROPERTIES
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
405EXAMPLE
406
407Example for FMan v2 external MDIO:
408
409mdio@f1000 {
410 compatible = "fsl,fman-xmdio";
411 reg = <0xf1000 0x1000>;
412 interrupts = <101 2 0 0>;
413};
414
415Example for FMan v3 internal MDIO:
416
417mdio@f1000 {
418 compatible = "fsl,fman-memac-mdio";
419 reg = <0xf1000 0x1000>;
420 fsl,fman-internal-mdio;
421};
422
423=============================================================================
360Example 424Example
361 425
362fman@400000 { 426fman@400000 {
@@ -531,4 +595,10 @@ fman@400000 {
531 compatible = "fsl,fman-ptp-timer"; 595 compatible = "fsl,fman-ptp-timer";
532 reg = <0xfe000 0x1000>; 596 reg = <0xfe000 0x1000>;
533 }; 597 };
598
599 mdio@f1000 {
600 compatible = "fsl,fman-xmdio";
601 reg = <0xf1000 0x1000>;
602 interrupts = <101 2 0 0>;
603 };
534}; 604};
diff --git a/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt b/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt
index c7ea9d4a988b..c52f03b5032f 100644
--- a/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt
+++ b/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt
@@ -1,9 +1,10 @@
1Tegra SoC PWFM controller 1Tegra SoC PWFM controller
2 2
3Required properties: 3Required properties:
4- compatible: should be one of: 4- compatible: For Tegra20, must contain "nvidia,tegra20-pwm". For Tegra30,
5 - "nvidia,tegra20-pwm" 5 must contain "nvidia,tegra30-pwm". Otherwise, must contain
6 - "nvidia,tegra30-pwm" 6 "nvidia,<chip>-pwm", plus one of the above, where <chip> is tegra114,
7 tegra124, tegra132, or tegra210.
7- reg: physical base address and length of the controller's registers 8- reg: physical base address and length of the controller's registers
8- #pwm-cells: should be 2. See pwm.txt in this directory for a description of 9- #pwm-cells: should be 2. See pwm.txt in this directory for a description of
9 the cells format. 10 the cells format.
diff --git a/Documentation/devicetree/bindings/regulator/da9211.txt b/Documentation/devicetree/bindings/regulator/da9211.txt
index 240019a82f9a..eb618907c7de 100644
--- a/Documentation/devicetree/bindings/regulator/da9211.txt
+++ b/Documentation/devicetree/bindings/regulator/da9211.txt
@@ -11,6 +11,7 @@ Required properties:
11 BUCKA and BUCKB. 11 BUCKA and BUCKB.
12 12
13Optional properties: 13Optional properties:
14- enable-gpios: platform gpio for control of BUCKA/BUCKB.
14- Any optional property defined in regulator.txt 15- Any optional property defined in regulator.txt
15 16
16Example 1) DA9211 17Example 1) DA9211
@@ -27,6 +28,7 @@ Example 1) DA9211
27 regulator-max-microvolt = <1570000>; 28 regulator-max-microvolt = <1570000>;
28 regulator-min-microamp = <2000000>; 29 regulator-min-microamp = <2000000>;
29 regulator-max-microamp = <5000000>; 30 regulator-max-microamp = <5000000>;
31 enable-gpios = <&gpio 27 0>;
30 }; 32 };
31 BUCKB { 33 BUCKB {
32 regulator-name = "VBUCKB"; 34 regulator-name = "VBUCKB";
@@ -34,11 +36,12 @@ Example 1) DA9211
34 regulator-max-microvolt = <1570000>; 36 regulator-max-microvolt = <1570000>;
35 regulator-min-microamp = <2000000>; 37 regulator-min-microamp = <2000000>;
36 regulator-max-microamp = <5000000>; 38 regulator-max-microamp = <5000000>;
39 enable-gpios = <&gpio 17 0>;
37 }; 40 };
38 }; 41 };
39 }; 42 };
40 43
41Example 2) DA92113 44Example 2) DA9213
42 pmic: da9213@68 { 45 pmic: da9213@68 {
43 compatible = "dlg,da9213"; 46 compatible = "dlg,da9213";
44 reg = <0x68>; 47 reg = <0x68>;
@@ -51,6 +54,7 @@ Example 2) DA92113
51 regulator-max-microvolt = <1570000>; 54 regulator-max-microvolt = <1570000>;
52 regulator-min-microamp = <3000000>; 55 regulator-min-microamp = <3000000>;
53 regulator-max-microamp = <6000000>; 56 regulator-max-microamp = <6000000>;
57 enable-gpios = <&gpio 27 0>;
54 }; 58 };
55 BUCKB { 59 BUCKB {
56 regulator-name = "VBUCKB"; 60 regulator-name = "VBUCKB";
@@ -58,6 +62,7 @@ Example 2) DA92113
58 regulator-max-microvolt = <1570000>; 62 regulator-max-microvolt = <1570000>;
59 regulator-min-microamp = <3000000>; 63 regulator-min-microamp = <3000000>;
60 regulator-max-microamp = <6000000>; 64 regulator-max-microamp = <6000000>;
65 enable-gpios = <&gpio 17 0>;
61 }; 66 };
62 }; 67 };
63 }; 68 };
diff --git a/Documentation/devicetree/bindings/regulator/isl9305.txt b/Documentation/devicetree/bindings/regulator/isl9305.txt
index a626fc1bbf0d..d6e7c9ec9413 100644
--- a/Documentation/devicetree/bindings/regulator/isl9305.txt
+++ b/Documentation/devicetree/bindings/regulator/isl9305.txt
@@ -2,7 +2,7 @@ Intersil ISL9305/ISL9305H voltage regulator
2 2
3Required properties: 3Required properties:
4 4
5- compatible: "isl,isl9305" or "isl,isl9305h" 5- compatible: "isil,isl9305" or "isil,isl9305h"
6- reg: I2C slave address, usually 0x68. 6- reg: I2C slave address, usually 0x68.
7- regulators: A node that houses a sub-node for each regulator within the 7- regulators: A node that houses a sub-node for each regulator within the
8 device. Each sub-node is identified using the node's name, with valid 8 device. Each sub-node is identified using the node's name, with valid
@@ -19,7 +19,7 @@ Optional properties:
19Example 19Example
20 20
21 pmic: isl9305@68 { 21 pmic: isl9305@68 {
22 compatible = "isl,isl9305"; 22 compatible = "isil,isl9305";
23 reg = <0x68>; 23 reg = <0x68>;
24 24
25 VINDCD1-supply = <&system_power>; 25 VINDCD1-supply = <&system_power>;
diff --git a/Documentation/devicetree/bindings/regulator/mt6397-regulator.txt b/Documentation/devicetree/bindings/regulator/mt6397-regulator.txt
new file mode 100644
index 000000000000..a42b1d6e9863
--- /dev/null
+++ b/Documentation/devicetree/bindings/regulator/mt6397-regulator.txt
@@ -0,0 +1,217 @@
1Mediatek MT6397 Regulator Driver
2
3Required 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
10The valid names for regulators are::
11BUCK:
12 buck_vpca15, buck_vpca7, buck_vsramca15, buck_vsramca7, buck_vcore, buck_vgpu,
13 buck_vdrm, buck_vio18
14LDO:
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
19Example:
20 pmic {
21 compatible = "mediatek,mt6397";
22
23 mt6397regulator: mt6397regulator {
24 compatible = "mediatek,mt6397-regulator";
25
26 mt6397_vpca15_reg: buck_vpca15 {
27 regulator-compatible = "buck_vpca15";
28 regulator-name = "vpca15";
29 regulator-min-microvolt = < 850000>;
30 regulator-max-microvolt = <1350000>;
31 regulator-ramp-delay = <12500>;
32 regulator-enable-ramp-delay = <200>;
33 };
34
35 mt6397_vpca7_reg: buck_vpca7 {
36 regulator-compatible = "buck_vpca7";
37 regulator-name = "vpca7";
38 regulator-min-microvolt = < 850000>;
39 regulator-max-microvolt = <1350000>;
40 regulator-ramp-delay = <12500>;
41 regulator-enable-ramp-delay = <115>;
42 };
43
44 mt6397_vsramca15_reg: buck_vsramca15 {
45 regulator-compatible = "buck_vsramca15";
46 regulator-name = "vsramca15";
47 regulator-min-microvolt = < 850000>;
48 regulator-max-microvolt = <1350000>;
49 regulator-ramp-delay = <12500>;
50 regulator-enable-ramp-delay = <115>;
51
52 };
53
54 mt6397_vsramca7_reg: buck_vsramca7 {
55 regulator-compatible = "buck_vsramca7";
56 regulator-name = "vsramca7";
57 regulator-min-microvolt = < 850000>;
58 regulator-max-microvolt = <1350000>;
59 regulator-ramp-delay = <12500>;
60 regulator-enable-ramp-delay = <115>;
61
62 };
63
64 mt6397_vcore_reg: buck_vcore {
65 regulator-compatible = "buck_vcore";
66 regulator-name = "vcore";
67 regulator-min-microvolt = < 850000>;
68 regulator-max-microvolt = <1350000>;
69 regulator-ramp-delay = <12500>;
70 regulator-enable-ramp-delay = <115>;
71 };
72
73 mt6397_vgpu_reg: buck_vgpu {
74 regulator-compatible = "buck_vgpu";
75 regulator-name = "vgpu";
76 regulator-min-microvolt = < 700000>;
77 regulator-max-microvolt = <1350000>;
78 regulator-ramp-delay = <12500>;
79 regulator-enable-ramp-delay = <115>;
80 };
81
82 mt6397_vdrm_reg: buck_vdrm {
83 regulator-compatible = "buck_vdrm";
84 regulator-name = "vdrm";
85 regulator-min-microvolt = < 800000>;
86 regulator-max-microvolt = <1400000>;
87 regulator-ramp-delay = <12500>;
88 regulator-enable-ramp-delay = <500>;
89 };
90
91 mt6397_vio18_reg: buck_vio18 {
92 regulator-compatible = "buck_vio18";
93 regulator-name = "vio18";
94 regulator-min-microvolt = <1500000>;
95 regulator-max-microvolt = <2120000>;
96 regulator-ramp-delay = <12500>;
97 regulator-enable-ramp-delay = <500>;
98 };
99
100 mt6397_vtcxo_reg: ldo_vtcxo {
101 regulator-compatible = "ldo_vtcxo";
102 regulator-name = "vtcxo";
103 regulator-min-microvolt = <2800000>;
104 regulator-max-microvolt = <2800000>;
105 regulator-enable-ramp-delay = <90>;
106 };
107
108 mt6397_va28_reg: ldo_va28 {
109 regulator-compatible = "ldo_va28";
110 regulator-name = "va28";
111 /* fixed output 2.8 V */
112 regulator-enable-ramp-delay = <218>;
113 };
114
115 mt6397_vcama_reg: ldo_vcama {
116 regulator-compatible = "ldo_vcama";
117 regulator-name = "vcama";
118 regulator-min-microvolt = <1500000>;
119 regulator-max-microvolt = <2800000>;
120 regulator-enable-ramp-delay = <218>;
121 };
122
123 mt6397_vio28_reg: ldo_vio28 {
124 regulator-compatible = "ldo_vio28";
125 regulator-name = "vio28";
126 /* fixed output 2.8 V */
127 regulator-enable-ramp-delay = <240>;
128 };
129
130 mt6397_usb_reg: ldo_vusb {
131 regulator-compatible = "ldo_vusb";
132 regulator-name = "vusb";
133 /* fixed output 3.3 V */
134 regulator-enable-ramp-delay = <218>;
135 };
136
137 mt6397_vmc_reg: ldo_vmc {
138 regulator-compatible = "ldo_vmc";
139 regulator-name = "vmc";
140 regulator-min-microvolt = <1800000>;
141 regulator-max-microvolt = <3300000>;
142 regulator-enable-ramp-delay = <218>;
143 };
144
145 mt6397_vmch_reg: ldo_vmch {
146 regulator-compatible = "ldo_vmch";
147 regulator-name = "vmch";
148 regulator-min-microvolt = <3000000>;
149 regulator-max-microvolt = <3300000>;
150 regulator-enable-ramp-delay = <218>;
151 };
152
153 mt6397_vemc_3v3_reg: ldo_vemc3v3 {
154 regulator-compatible = "ldo_vemc3v3";
155 regulator-name = "vemc_3v3";
156 regulator-min-microvolt = <3000000>;
157 regulator-max-microvolt = <3300000>;
158 regulator-enable-ramp-delay = <218>;
159 };
160
161 mt6397_vgp1_reg: ldo_vgp1 {
162 regulator-compatible = "ldo_vgp1";
163 regulator-name = "vcamd";
164 regulator-min-microvolt = <1220000>;
165 regulator-max-microvolt = <3300000>;
166 regulator-enable-ramp-delay = <240>;
167 };
168
169 mt6397_vgp2_reg: ldo_vgp2 {
170 egulator-compatible = "ldo_vgp2";
171 regulator-name = "vcamio";
172 regulator-min-microvolt = <1000000>;
173 regulator-max-microvolt = <3300000>;
174 regulator-enable-ramp-delay = <218>;
175 };
176
177 mt6397_vgp3_reg: ldo_vgp3 {
178 regulator-compatible = "ldo_vgp3";
179 regulator-name = "vcamaf";
180 regulator-min-microvolt = <1200000>;
181 regulator-max-microvolt = <3300000>;
182 regulator-enable-ramp-delay = <218>;
183 };
184
185 mt6397_vgp4_reg: ldo_vgp4 {
186 regulator-compatible = "ldo_vgp4";
187 regulator-name = "vgp4";
188 regulator-min-microvolt = <1200000>;
189 regulator-max-microvolt = <3300000>;
190 regulator-enable-ramp-delay = <218>;
191 };
192
193 mt6397_vgp5_reg: ldo_vgp5 {
194 regulator-compatible = "ldo_vgp5";
195 regulator-name = "vgp5";
196 regulator-min-microvolt = <1200000>;
197 regulator-max-microvolt = <3000000>;
198 regulator-enable-ramp-delay = <218>;
199 };
200
201 mt6397_vgp6_reg: ldo_vgp6 {
202 regulator-compatible = "ldo_vgp6";
203 regulator-name = "vgp6";
204 regulator-min-microvolt = <1200000>;
205 regulator-max-microvolt = <3300000>;
206 regulator-enable-ramp-delay = <218>;
207 };
208
209 mt6397_vibr_reg: ldo_vibr {
210 regulator-compatible = "ldo_vibr";
211 regulator-name = "vibr";
212 regulator-min-microvolt = <1200000>;
213 regulator-max-microvolt = <3300000>;
214 regulator-enable-ramp-delay = <218>;
215 };
216 };
217 };
diff --git a/Documentation/devicetree/bindings/regulator/pfuze100.txt b/Documentation/devicetree/bindings/regulator/pfuze100.txt
index 34ef5d16d0f1..9b40db88f637 100644
--- a/Documentation/devicetree/bindings/regulator/pfuze100.txt
+++ b/Documentation/devicetree/bindings/regulator/pfuze100.txt
@@ -1,7 +1,7 @@
1PFUZE100 family of regulators 1PFUZE100 family of regulators
2 2
3Required properties: 3Required properties:
4- compatible: "fsl,pfuze100" or "fsl,pfuze200" 4- compatible: "fsl,pfuze100", "fsl,pfuze200", "fsl,pfuze3000"
5- reg: I2C slave address 5- reg: I2C slave address
6 6
7Required child node: 7Required child node:
@@ -14,6 +14,8 @@ Required child node:
14 sw1ab,sw1c,sw2,sw3a,sw3b,sw4,swbst,vsnvs,vrefddr,vgen1~vgen6 14 sw1ab,sw1c,sw2,sw3a,sw3b,sw4,swbst,vsnvs,vrefddr,vgen1~vgen6
15 --PFUZE200 15 --PFUZE200
16 sw1ab,sw2,sw3a,sw3b,swbst,vsnvs,vrefddr,vgen1~vgen6 16 sw1ab,sw2,sw3a,sw3b,swbst,vsnvs,vrefddr,vgen1~vgen6
17 --PFUZE3000
18 sw1a,sw1b,sw2,sw3,swbst,vsnvs,vrefddr,vldo1,vldo2,vccsd,v33,vldo3,vldo4
17 19
18Each regulator is defined using the standard binding for regulators. 20Each regulator is defined using the standard binding for regulators.
19 21
@@ -205,3 +207,93 @@ Example 2: PFUZE200
205 }; 207 };
206 }; 208 };
207 }; 209 };
210
211Example 3: PFUZE3000
212
213 pmic: pfuze3000@08 {
214 compatible = "fsl,pfuze3000";
215 reg = <0x08>;
216
217 regulators {
218 sw1a_reg: sw1a {
219 regulator-min-microvolt = <700000>;
220 regulator-max-microvolt = <1475000>;
221 regulator-boot-on;
222 regulator-always-on;
223 regulator-ramp-delay = <6250>;
224 };
225 /* use sw1c_reg to align with pfuze100/pfuze200 */
226 sw1c_reg: sw1b {
227 regulator-min-microvolt = <700000>;
228 regulator-max-microvolt = <1475000>;
229 regulator-boot-on;
230 regulator-always-on;
231 regulator-ramp-delay = <6250>;
232 };
233
234 sw2_reg: sw2 {
235 regulator-min-microvolt = <2500000>;
236 regulator-max-microvolt = <3300000>;
237 regulator-boot-on;
238 regulator-always-on;
239 };
240
241 sw3a_reg: sw3 {
242 regulator-min-microvolt = <900000>;
243 regulator-max-microvolt = <1650000>;
244 regulator-boot-on;
245 regulator-always-on;
246 };
247
248 swbst_reg: swbst {
249 regulator-min-microvolt = <5000000>;
250 regulator-max-microvolt = <5150000>;
251 };
252
253 snvs_reg: vsnvs {
254 regulator-min-microvolt = <1000000>;
255 regulator-max-microvolt = <3000000>;
256 regulator-boot-on;
257 regulator-always-on;
258 };
259
260 vref_reg: vrefddr {
261 regulator-boot-on;
262 regulator-always-on;
263 };
264
265 vgen1_reg: vldo1 {
266 regulator-min-microvolt = <1800000>;
267 regulator-max-microvolt = <3300000>;
268 regulator-always-on;
269 };
270
271 vgen2_reg: vldo2 {
272 regulator-min-microvolt = <800000>;
273 regulator-max-microvolt = <1550000>;
274 };
275
276 vgen3_reg: vccsd {
277 regulator-min-microvolt = <2850000>;
278 regulator-max-microvolt = <3300000>;
279 regulator-always-on;
280 };
281
282 vgen4_reg: v33 {
283 regulator-min-microvolt = <2850000>;
284 regulator-max-microvolt = <3300000>;
285 };
286
287 vgen5_reg: vldo3 {
288 regulator-min-microvolt = <1800000>;
289 regulator-max-microvolt = <3300000>;
290 regulator-always-on;
291 };
292
293 vgen6_reg: vldo4 {
294 regulator-min-microvolt = <1800000>;
295 regulator-max-microvolt = <3300000>;
296 regulator-always-on;
297 };
298 };
299 };
diff --git a/Documentation/devicetree/bindings/rtc/nvidia,tegra20-rtc.txt b/Documentation/devicetree/bindings/rtc/nvidia,tegra20-rtc.txt
index 652d1ff2e8be..b7d98ed3e098 100644
--- a/Documentation/devicetree/bindings/rtc/nvidia,tegra20-rtc.txt
+++ b/Documentation/devicetree/bindings/rtc/nvidia,tegra20-rtc.txt
@@ -6,7 +6,9 @@ state.
6 6
7Required properties: 7Required properties:
8 8
9- compatible : should be "nvidia,tegra20-rtc". 9- compatible : For Tegra20, must contain "nvidia,tegra20-rtc". Otherwise,
10 must contain '"nvidia,<chip>-rtc", "nvidia,tegra20-rtc"', where <chip>
11 can be tegra30, tegra114, tegra124, or tegra132.
10- reg : Specifies base physical address and size of the registers. 12- reg : Specifies base physical address and size of the registers.
11- interrupts : A single interrupt specifier. 13- interrupts : A single interrupt specifier.
12- clocks : Must contain one entry, for the module clock. 14- clocks : Must contain one entry, for the module clock.
diff --git a/Documentation/devicetree/bindings/security/tpm/st33zp24-i2c.txt b/Documentation/devicetree/bindings/security/tpm/st33zp24-i2c.txt
new file mode 100644
index 000000000000..3ad115efed1e
--- /dev/null
+++ b/Documentation/devicetree/bindings/security/tpm/st33zp24-i2c.txt
@@ -0,0 +1,36 @@
1* STMicroelectronics SAS. ST33ZP24 TPM SoC
2
3Required properties:
4- compatible: Should be "st,st33zp24-i2c".
5- clock-frequency: I²C work frequency.
6- reg: address on the bus
7
8Optional 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.
12If set, power must be present when the platform is going into sleep/hibernate mode.
13
14Optional SoC Specific Properties:
15- pinctrl-names: Contains only one value - "default".
16- pintctrl-0: Specifies the pin control groups used for this controller.
17
18Example (for ARM-based BeagleBoard xM with ST33ZP24 on I2C2):
19
20&i2c2 {
21
22 status = "okay";
23
24 st33zp24: st33zp24@13 {
25
26 compatible = "st,st33zp24-i2c";
27
28 reg = <0x13>;
29 clock-frequency = <400000>;
30
31 interrupt-parent = <&gpio5>;
32 interrupts = <7 IRQ_TYPE_LEVEL_HIGH>;
33
34 lpcpd-gpios = <&gpio5 15 GPIO_ACTIVE_HIGH>;
35 };
36};
diff --git a/Documentation/devicetree/bindings/serial/of-serial.txt b/Documentation/devicetree/bindings/serial/of-serial.txt
index b52b98234b9b..bea60ef6cdc5 100644
--- a/Documentation/devicetree/bindings/serial/of-serial.txt
+++ b/Documentation/devicetree/bindings/serial/of-serial.txt
@@ -8,7 +8,10 @@ Required properties:
8 - "ns16550" 8 - "ns16550"
9 - "ns16750" 9 - "ns16750"
10 - "ns16850" 10 - "ns16850"
11 - "nvidia,tegra20-uart" 11 - For Tegra20, must contain "nvidia,tegra20-uart"
12 - For other Tegra, must contain '"nvidia,<chip>-uart",
13 "nvidia,tegra20-uart"' where <chip> is tegra30, tegra114, tegra124,
14 tegra132, or tegra210.
12 - "nxp,lpc3220-uart" 15 - "nxp,lpc3220-uart"
13 - "ralink,rt2880-uart" 16 - "ralink,rt2880-uart"
14 - "ibm,qpace-nwp-serial" 17 - "ibm,qpace-nwp-serial"
diff --git a/Documentation/devicetree/bindings/serio/allwinner,sun4i-ps2.txt b/Documentation/devicetree/bindings/serio/allwinner,sun4i-ps2.txt
new file mode 100644
index 000000000000..362a76925bcd
--- /dev/null
+++ b/Documentation/devicetree/bindings/serio/allwinner,sun4i-ps2.txt
@@ -0,0 +1,23 @@
1* Device tree bindings for Allwinner A10, A20 PS2 host controller
2
3A20 PS2 is dual role controller (PS2 host and PS2 device). These bindings are
4for PS2 A10/A20 host controller. IBM compliant IBM PS2 and AT-compatible keyboard
5and mouse can be connected.
6
7Required 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
16Example:
17 ps20: ps2@0x01c2a000 {
18 compatible = "allwinner,sun4i-a10-ps2";
19 reg = <0x01c2a000 0x400>;
20 interrupts = <0 62 4>;
21 clocks = <&apb1_gates 6>;
22 status = "disabled";
23 };
diff --git a/Documentation/devicetree/bindings/soc/fsl/bman.txt b/Documentation/devicetree/bindings/soc/fsl/bman.txt
index 9f80bf8709ac..47ac834414d8 100644
--- a/Documentation/devicetree/bindings/soc/fsl/bman.txt
+++ b/Documentation/devicetree/bindings/soc/fsl/bman.txt
@@ -36,6 +36,11 @@ are located at offsets 0xbf8 and 0xbfc
36 Value type: <prop-encoded-array> 36 Value type: <prop-encoded-array>
37 Definition: Standard property. The error interrupt 37 Definition: Standard property. The error interrupt
38 38
39- fsl,bman-portals
40 Usage: Required
41 Value type: <phandle>
42 Definition: Phandle to this BMan instance's portals
43
39- fsl,liodn 44- fsl,liodn
40 Usage: See pamu.txt 45 Usage: See pamu.txt
41 Value type: <prop-encoded-array> 46 Value type: <prop-encoded-array>
@@ -96,7 +101,7 @@ The example below shows a BMan FBPR dynamic allocation memory node
96 101
97 bman_fbpr: bman-fbpr { 102 bman_fbpr: bman-fbpr {
98 compatible = "fsl,bman-fbpr"; 103 compatible = "fsl,bman-fbpr";
99 alloc-ranges = <0 0 0xf 0xffffffff>; 104 alloc-ranges = <0 0 0x10 0>;
100 size = <0 0x1000000>; 105 size = <0 0x1000000>;
101 alignment = <0 0x1000000>; 106 alignment = <0 0x1000000>;
102 }; 107 };
@@ -104,6 +109,10 @@ The example below shows a BMan FBPR dynamic allocation memory node
104 109
105The example below shows a (P4080) BMan CCSR-space node 110The example below shows a (P4080) BMan CCSR-space node
106 111
112 bportals: bman-portals@ff4000000 {
113 ...
114 };
115
107 crypto@300000 { 116 crypto@300000 {
108 ... 117 ...
109 fsl,bman = <&bman, 2>; 118 fsl,bman = <&bman, 2>;
@@ -115,6 +124,7 @@ The example below shows a (P4080) BMan CCSR-space node
115 reg = <0x31a000 0x1000>; 124 reg = <0x31a000 0x1000>;
116 interrupts = <16 2 1 2>; 125 interrupts = <16 2 1 2>;
117 fsl,liodn = <0x17>; 126 fsl,liodn = <0x17>;
127 fsl,bman-portals = <&bportals>;
118 memory-region = <&bman_fbpr>; 128 memory-region = <&bman_fbpr>;
119 }; 129 };
120 130
diff --git a/Documentation/devicetree/bindings/soc/fsl/qman.txt b/Documentation/devicetree/bindings/soc/fsl/qman.txt
index 063e3a0b9d04..556ebb8be75d 100644
--- a/Documentation/devicetree/bindings/soc/fsl/qman.txt
+++ b/Documentation/devicetree/bindings/soc/fsl/qman.txt
@@ -38,6 +38,11 @@ are located at offsets 0xbf8 and 0xbfc
38 Value type: <prop-encoded-array> 38 Value type: <prop-encoded-array>
39 Definition: Standard property. The error interrupt 39 Definition: Standard property. The error interrupt
40 40
41- fsl,qman-portals
42 Usage: Required
43 Value type: <phandle>
44 Definition: Phandle to this QMan instance's portals
45
41- fsl,liodn 46- fsl,liodn
42 Usage: See pamu.txt 47 Usage: See pamu.txt
43 Value type: <prop-encoded-array> 48 Value type: <prop-encoded-array>
@@ -113,13 +118,13 @@ The example below shows a QMan FQD and a PFDR dynamic allocation memory nodes
113 118
114 qman_fqd: qman-fqd { 119 qman_fqd: qman-fqd {
115 compatible = "fsl,qman-fqd"; 120 compatible = "fsl,qman-fqd";
116 alloc-ranges = <0 0 0xf 0xffffffff>; 121 alloc-ranges = <0 0 0x10 0>;
117 size = <0 0x400000>; 122 size = <0 0x400000>;
118 alignment = <0 0x400000>; 123 alignment = <0 0x400000>;
119 }; 124 };
120 qman_pfdr: qman-pfdr { 125 qman_pfdr: qman-pfdr {
121 compatible = "fsl,qman-pfdr"; 126 compatible = "fsl,qman-pfdr";
122 alloc-ranges = <0 0 0xf 0xffffffff>; 127 alloc-ranges = <0 0 0x10 0>;
123 size = <0 0x2000000>; 128 size = <0 0x2000000>;
124 alignment = <0 0x2000000>; 129 alignment = <0 0x2000000>;
125 }; 130 };
@@ -127,6 +132,10 @@ The example below shows a QMan FQD and a PFDR dynamic allocation memory nodes
127 132
128The example below shows a (P4080) QMan CCSR-space node 133The example below shows a (P4080) QMan CCSR-space node
129 134
135 qportals: qman-portals@ff4200000 {
136 ...
137 };
138
130 clockgen: global-utilities@e1000 { 139 clockgen: global-utilities@e1000 {
131 ... 140 ...
132 sysclk: sysclk { 141 sysclk: sysclk {
@@ -154,6 +163,7 @@ The example below shows a (P4080) QMan CCSR-space node
154 reg = <0x318000 0x1000>; 163 reg = <0x318000 0x1000>;
155 interrupts = <16 2 1 3> 164 interrupts = <16 2 1 3>
156 fsl,liodn = <0x16>; 165 fsl,liodn = <0x16>;
166 fsl,qman-portals = <&qportals>;
157 memory-region = <&qman_fqd &qman_pfdr>; 167 memory-region = <&qman_fqd &qman_pfdr>;
158 clocks = <&platform_pll 1>; 168 clocks = <&platform_pll 1>;
159 }; 169 };
diff --git a/Documentation/devicetree/bindings/sound/cdns,xtfpga-i2s.txt b/Documentation/devicetree/bindings/sound/cdns,xtfpga-i2s.txt
new file mode 100644
index 000000000000..befd125d18bb
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/cdns,xtfpga-i2s.txt
@@ -0,0 +1,18 @@
1Bindings for I2S controller built into xtfpga Xtensa bitstreams.
2
3Required 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
10Examples:
11
12 i2s0: xtfpga-i2s@0d080000 {
13 #sound-dai-cells = <0>;
14 compatible = "cdns,xtfpga-i2s";
15 reg = <0x0d080000 0x40>;
16 interrupts = <2 1>;
17 clocks = <&cdce706 4>;
18 };
diff --git a/Documentation/devicetree/bindings/sound/designware-i2s.txt b/Documentation/devicetree/bindings/sound/designware-i2s.txt
new file mode 100644
index 000000000000..7bb54247f8e8
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/designware-i2s.txt
@@ -0,0 +1,31 @@
1DesignWare I2S controller
2
3Required 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
15For more details on the 'dma', 'dma-names', 'clock' and 'clock-names'
16properties please check:
17 * resource-names.txt
18 * clock/clock-bindings.txt
19 * dma/dma.txt
20
21Example:
22
23 soc_i2s: i2s@7ff90000 {
24 compatible = "snps,designware-i2s";
25 reg = <0x0 0x7ff90000 0x0 0x1000>;
26 clocks = <&scpi_i2sclk 0>;
27 clock-names = "i2sclk";
28 #sound-dai-cells = <0>;
29 dmas = <&dma0 5>;
30 dma-names = "tx";
31 };
diff --git a/Documentation/devicetree/bindings/sound/ingenic,jz4740-i2s.txt b/Documentation/devicetree/bindings/sound/ingenic,jz4740-i2s.txt
new file mode 100644
index 000000000000..b41433386e2f
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/ingenic,jz4740-i2s.txt
@@ -0,0 +1,23 @@
1Ingenic JZ4740 I2S controller
2
3Required 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
11Example:
12
13i2s: i2s@10020000 {
14 compatible = "ingenic,jz4740-i2s";
15 reg = <0x10020000 0x94>;
16
17 clocks = <&cgu JZ4740_CLK_AIC>, <&cgu JZ4740_CLK_I2SPLL>;
18 clock-names = "aic", "i2s";
19
20 dmas = <&dma 2>, <&dma 3>;
21 dma-names = "tx", "rx";
22
23};
diff --git a/Documentation/devicetree/bindings/sound/max98357a.txt b/Documentation/devicetree/bindings/sound/max98357a.txt
new file mode 100644
index 000000000000..a7a149a236e5
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/max98357a.txt
@@ -0,0 +1,14 @@
1Maxim MAX98357A audio DAC
2
3This node models the Maxim MAX98357A DAC.
4
5Required properties:
6- compatible : "maxim,max98357a"
7- sdmode-gpios : GPIO specifier for the GPIO -> DAC SDMODE pin
8
9Example:
10
11max98357a {
12 compatible = "maxim,max98357a";
13 sdmode-gpios = <&qcom_pinmux 25 0>;
14};
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5677.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5677.txt
new file mode 100644
index 000000000000..a4589cda214e
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5677.txt
@@ -0,0 +1,67 @@
1NVIDIA Tegra audio complex, with RT5677 CODEC
2
3Required 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
29Optional 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
35Example:
36
37sound {
38 compatible = "nvidia,tegra-audio-rt5677-ryu",
39 "nvidia,tegra-audio-rt5677";
40 nvidia,model = "NVIDIA Tegra Ryu";
41
42 nvidia,audio-routing =
43 "Headphone", "LOUT2",
44 "Headphone", "LOUT1",
45 "Headset Mic", "MICBIAS1",
46 "IN1P", "Headset Mic",
47 "IN1N", "Headset Mic",
48 "DMIC L1", "Internal Mic 1",
49 "DMIC R1", "Internal Mic 1",
50 "DMIC L2", "Internal Mic 2",
51 "DMIC R2", "Internal Mic 2",
52 "Speaker", "PDM1L",
53 "Speaker", "PDM1R";
54
55 nvidia,i2s-controller = <&tegra_i2s1>;
56 nvidia,audio-codec = <&rt5677>;
57
58 nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(R, 7) GPIO_ACTIVE_HIGH>;
59 nvidia,mic-present-gpios = <&gpio TEGRA_GPIO(O, 5) GPIO_ACTIVE_LOW>;
60 nvidia,hp-en-gpios = <&rt5677 1 GPIO_ACTIVE_HIGH>;
61 nvidia,dmic-clk-en-gpios = <&rt5677 2 GPIO_ACTIVE_HIGH>;
62
63 clocks = <&tegra_car TEGRA124_CLK_PLL_A>,
64 <&tegra_car TEGRA124_CLK_PLL_A_OUT0>,
65 <&tegra_car TEGRA124_CLK_EXTERN1>;
66 clock-names = "pll_a", "pll_a_out0", "mclk";
67};
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt
index 946e2ac46091..0e9a1895d7fb 100644
--- a/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt
@@ -1,7 +1,10 @@
1NVIDIA Tegra30 AHUB (Audio Hub) 1NVIDIA Tegra30 AHUB (Audio Hub)
2 2
3Required properties: 3Required properties:
4- compatible : "nvidia,tegra30-ahub", "nvidia,tegra114-ahub", etc. 4- compatible : For Tegra30, must contain "nvidia,tegra30-ahub". For Tegra114,
5 must contain "nvidia,tegra114-ahub". For Tegra124, must contain
6 "nvidia,tegra124-ahub". Otherwise, must contain "nvidia,<chip>-ahub",
7 plus at least one of the above, where <chip> is tegra132.
5- reg : Should contain the register physical address and length for each of 8- reg : Should contain the register physical address and length for each of
6 the AHUB's register blocks. 9 the AHUB's register blocks.
7 - Tegra30 requires 2 entries, for the APBIF and AHUB/AUDIO register blocks. 10 - Tegra30 requires 2 entries, for the APBIF and AHUB/AUDIO register blocks.
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra30-hda.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra30-hda.txt
index b4730c2822bc..13e2ef496724 100644
--- a/Documentation/devicetree/bindings/sound/nvidia,tegra30-hda.txt
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra30-hda.txt
@@ -1,7 +1,9 @@
1NVIDIA Tegra30 HDA controller 1NVIDIA Tegra30 HDA controller
2 2
3Required properties: 3Required properties:
4- compatible : "nvidia,tegra30-hda" 4- compatible : For Tegra30, must contain "nvidia,tegra30-hda". Otherwise,
5 must contain '"nvidia,<chip>-hda", "nvidia,tegra30-hda"', where <chip> is
6 tegra114, tegra124, or tegra132.
5- reg : Should contain the HDA registers location and length. 7- reg : Should contain the HDA registers location and length.
6- interrupts : The interrupt from the HDA controller. 8- interrupts : The interrupt from the HDA controller.
7- clocks : Must contain an entry for each required entry in clock-names. 9- clocks : Must contain an entry for each required entry in clock-names.
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt
index 0c113ffe3814..38caa936f6f8 100644
--- a/Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt
@@ -1,7 +1,10 @@
1NVIDIA Tegra30 I2S controller 1NVIDIA Tegra30 I2S controller
2 2
3Required properties: 3Required properties:
4- compatible : "nvidia,tegra30-i2s" 4- compatible : For Tegra30, must contain "nvidia,tegra30-i2s". For Tegra124,
5 must contain "nvidia,tegra124-i2s". Otherwise, must contain
6 "nvidia,<chip>-i2s" plus at least one of the above, where <chip> is
7 tegra114 or tegra132.
5- reg : Should contain I2S registers location and length 8- reg : Should contain I2S registers location and length
6- clocks : Must contain one entry, for the module clock. 9- clocks : Must contain one entry, for the module clock.
7 See ../clocks/clock-bindings.txt for details. 10 See ../clocks/clock-bindings.txt for details.
diff --git a/Documentation/devicetree/bindings/sound/pcm512x.txt b/Documentation/devicetree/bindings/sound/pcm512x.txt
index faff75e64573..3aae3b41bd8e 100644
--- a/Documentation/devicetree/bindings/sound/pcm512x.txt
+++ b/Documentation/devicetree/bindings/sound/pcm512x.txt
@@ -5,7 +5,8 @@ on the board).
5 5
6Required properties: 6Required properties:
7 7
8 - compatible : One of "ti,pcm5121" or "ti,pcm5122" 8 - compatible : One of "ti,pcm5121", "ti,pcm5122", "ti,pcm5141" or
9 "ti,pcm5142"
9 10
10 - reg : the I2C address of the device for I2C, the chip select 11 - reg : the I2C address of the device for I2C, the chip select
11 number for SPI. 12 number for SPI.
@@ -16,9 +17,16 @@ Required properties:
16Optional properties: 17Optional properties:
17 18
18 - clocks : A clock specifier for the clock connected as SCLK. If this 19 - clocks : A clock specifier for the clock connected as SCLK. If this
19 is absent the device will be configured to clock from BCLK. 20 is absent the device will be configured to clock from BCLK. If pll-in
21 and pll-out are specified in addition to a clock, the device is
22 configured to accept clock input on a specified gpio pin.
20 23
21Example: 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
29Examples:
22 30
23 pcm5122: pcm5122@4c { 31 pcm5122: pcm5122@4c {
24 compatible = "ti,pcm5122"; 32 compatible = "ti,pcm5122";
@@ -28,3 +36,17 @@ Example:
28 DVDD-supply = <&reg_1v8>; 36 DVDD-supply = <&reg_1v8>;
29 CPVDD-supply = <&reg_3v3>; 37 CPVDD-supply = <&reg_3v3>;
30 }; 38 };
39
40
41 pcm5142: pcm5142@4c {
42 compatible = "ti,pcm5142";
43 reg = <0x4c>;
44
45 AVDD-supply = <&reg_3v3_analog>;
46 DVDD-supply = <&reg_1v8>;
47 CPVDD-supply = <&reg_3v3>;
48
49 clocks = <&sck>;
50 pll-in = <3>;
51 pll-out = <6>;
52 };
diff --git a/Documentation/devicetree/bindings/sound/samsung-i2s.txt b/Documentation/devicetree/bindings/sound/samsung-i2s.txt
index d188296bb6ec..09e0e18591ae 100644
--- a/Documentation/devicetree/bindings/sound/samsung-i2s.txt
+++ b/Documentation/devicetree/bindings/sound/samsung-i2s.txt
@@ -33,6 +33,25 @@ Required SoC Specific Properties:
33 "iis" is the i2s bus clock and i2s_opclk0, i2s_opclk1 are sources of the root 33 "iis" is the i2s bus clock and i2s_opclk0, i2s_opclk1 are sources of the root
34 clk. i2s0 has internal mux to select the source of root clk and i2s1 and i2s2 34 clk. i2s0 has internal mux to select the source of root clk and i2s1 and i2s2
35 doesn't have any such mux. 35 doesn't have any such mux.
36- #clock-cells: should be 1, this property must be present if the I2S device
37 is a clock provider in terms of the common clock bindings, described in
38 ../clock/clock-bindings.txt.
39- clock-output-names: from the common clock bindings, names of the CDCLK
40 I2S output clocks, suggested values are "i2s_cdclk0", "i2s_cdclk1",
41 "i2s_cdclk3" for the I2S0, I2S1, I2S2 devices recpectively.
42
43There 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
50Refer to the SoC datasheet for availability of the above clocks.
51The CLK_I2S_RCLK_PSR and CLK_I2S_RCLK_SRC clocks are usually only available
52in the IIS Multi Audio Interface (I2S0).
53Note: Old DTs may not have the #clock-cells, clock-output-names properties
54and then not use the I2S node as a clock supplier.
36 55
37Optional SoC Specific Properties: 56Optional SoC Specific Properties:
38 57
@@ -41,6 +60,7 @@ Optional SoC Specific Properties:
41- pinctrl-0: Should specify pin control groups used for this controller. 60- pinctrl-0: Should specify pin control groups used for this controller.
42- pinctrl-names: Should contain only one value - "default". 61- pinctrl-names: Should contain only one value - "default".
43 62
63
44Example: 64Example:
45 65
46i2s0: i2s@03830000 { 66i2s0: i2s@03830000 {
@@ -54,6 +74,8 @@ i2s0: i2s@03830000 {
54 <&clock_audss EXYNOS_I2S_BUS>, 74 <&clock_audss EXYNOS_I2S_BUS>,
55 <&clock_audss EXYNOS_SCLK_I2S>; 75 <&clock_audss EXYNOS_SCLK_I2S>;
56 clock-names = "iis", "i2s_opclk0", "i2s_opclk1"; 76 clock-names = "iis", "i2s_opclk0", "i2s_opclk1";
77 #clock-cells;
78 clock-output-names = "i2s_cdclk0";
57 samsung,idma-addr = <0x03000000>; 79 samsung,idma-addr = <0x03000000>;
58 pinctrl-names = "default"; 80 pinctrl-names = "default";
59 pinctrl-0 = <&i2s0_bus>; 81 pinctrl-0 = <&i2s0_bus>;
diff --git a/Documentation/devicetree/bindings/sound/simple-card.txt b/Documentation/devicetree/bindings/sound/simple-card.txt
index c3cba600bf11..73bf314f7240 100644
--- a/Documentation/devicetree/bindings/sound/simple-card.txt
+++ b/Documentation/devicetree/bindings/sound/simple-card.txt
@@ -75,6 +75,11 @@ Optional CPU/CODEC subnodes properties:
75 it can be specified via "clocks" if system has 75 it can be specified via "clocks" if system has
76 clock node (= common clock), or "system-clock-frequency" 76 clock node (= common clock), or "system-clock-frequency"
77 (if system doens't support common clock) 77 (if system doens't support common clock)
78 If a clock is specified, it is
79 enabled with clk_prepare_enable()
80 in dai startup() and disabled with
81 clk_disable_unprepare() in dai
82 shutdown().
78 83
79Example 1 - single DAI link: 84Example 1 - single DAI link:
80 85
diff --git a/Documentation/devicetree/bindings/sound/st,sta32x.txt b/Documentation/devicetree/bindings/sound/st,sta32x.txt
new file mode 100644
index 000000000000..255de3ae5b2f
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/st,sta32x.txt
@@ -0,0 +1,92 @@
1STA32X audio CODEC
2
3The driver for this device only supports I2C.
4
5Required 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
20Optional 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
74Example:
75
76codec: sta32x@38 {
77 compatible = "st,sta32x";
78 reg = <0x1c>;
79 reset-gpios = <&gpio1 19 0>;
80 power-down-gpios = <&gpio1 16 0>;
81 st,output-conf = /bits/ 8 <0x3>; // set output to 2-channel
82 // (full-bridge) power,
83 // 2-channel data-out
84 st,ch1-output-mapping = /bits/ 8 <0>; // set channel 1 output ch 1
85 st,ch2-output-mapping = /bits/ 8 <0>; // set channel 2 output ch 1
86 st,ch3-output-mapping = /bits/ 8 <0>; // set channel 3 output ch 1
87 st,max-power-correction; // enables power bridge
88 // correction for THD reduction
89 // near maximum power output
90 st,invalid-input-detect-mute; // mute if no valid digital
91 // audio signal is provided.
92};
diff --git a/Documentation/devicetree/bindings/sound/tlv320aic3x.txt b/Documentation/devicetree/bindings/sound/tlv320aic3x.txt
index 5e6040c2c2e9..47a213c411ce 100644
--- a/Documentation/devicetree/bindings/sound/tlv320aic3x.txt
+++ b/Documentation/devicetree/bindings/sound/tlv320aic3x.txt
@@ -9,6 +9,7 @@ Required properties:
9 "ti,tlv320aic33" - TLV320AIC33 9 "ti,tlv320aic33" - TLV320AIC33
10 "ti,tlv320aic3007" - TLV320AIC3007 10 "ti,tlv320aic3007" - TLV320AIC3007
11 "ti,tlv320aic3106" - TLV320AIC3106 11 "ti,tlv320aic3106" - TLV320AIC3106
12 "ti,tlv320aic3104" - TLV320AIC3104
12 13
13 14
14- reg - <int> - I2C slave address 15- reg - <int> - I2C slave address
@@ -18,6 +19,7 @@ Optional properties:
18 19
19- gpio-reset - gpio pin number used for codec reset 20- gpio-reset - gpio pin number used for codec reset
20- ai3x-gpio-func - <array of 2 int> - AIC3X_GPIO1 & AIC3X_GPIO2 Functionality 21- ai3x-gpio-func - <array of 2 int> - AIC3X_GPIO1 & AIC3X_GPIO2 Functionality
22 - Not supported on tlv320aic3104
21- ai3x-micbias-vg - MicBias Voltage required. 23- ai3x-micbias-vg - MicBias Voltage required.
22 1 - MICBIAS output is powered to 2.0V, 24 1 - MICBIAS output is powered to 2.0V,
23 2 - MICBIAS output is powered to 2.5V, 25 2 - MICBIAS output is powered to 2.5V,
@@ -36,7 +38,13 @@ CODEC output pins:
36 * HPLCOM 38 * HPLCOM
37 * HPRCOM 39 * HPRCOM
38 40
39CODEC input pins: 41CODEC input pins for TLV320AIC3104:
42 * MIC2L
43 * MIC2R
44 * LINE1L
45 * LINE1R
46
47CODEC input pins for other compatible codecs:
40 * MIC3L 48 * MIC3L
41 * MIC3R 49 * MIC3R
42 * LINE1L 50 * LINE1L
diff --git a/Documentation/devicetree/bindings/sound/ts3a227e.txt b/Documentation/devicetree/bindings/sound/ts3a227e.txt
index e8bf23eb1803..a836881d9608 100644
--- a/Documentation/devicetree/bindings/sound/ts3a227e.txt
+++ b/Documentation/devicetree/bindings/sound/ts3a227e.txt
@@ -13,6 +13,11 @@ Required properties:
13 - interrupt-parent: The parent interrupt controller 13 - interrupt-parent: The parent interrupt controller
14 - interrupts: Interrupt number for /INT pin from the 227e 14 - interrupts: Interrupt number for /INT pin from the 227e
15 15
16Optional 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
17Examples: 22Examples:
18 23
diff --git a/Documentation/devicetree/bindings/sound/wm8904.txt b/Documentation/devicetree/bindings/sound/wm8904.txt
index e99f4097c83c..66bf261423b9 100644
--- a/Documentation/devicetree/bindings/sound/wm8904.txt
+++ b/Documentation/devicetree/bindings/sound/wm8904.txt
@@ -3,7 +3,7 @@ WM8904 audio CODEC
3This device supports I2C only. 3This device supports I2C only.
4 4
5Required properties: 5Required properties:
6 - compatible: "wlf,wm8904" 6 - compatible: "wlf,wm8904" or "wlf,wm8912"
7 - reg: the I2C address of the device. 7 - reg: the I2C address of the device.
8 - clock-names: "mclk" 8 - clock-names: "mclk"
9 - clocks: reference to 9 - clocks: reference to
diff --git a/Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.txt b/Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.txt
index 7ea701e07dc2..b785976fe98a 100644
--- a/Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.txt
+++ b/Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.txt
@@ -1,7 +1,9 @@
1NVIDIA Tegra114 SPI controller. 1NVIDIA Tegra114 SPI controller.
2 2
3Required properties: 3Required properties:
4- compatible : should be "nvidia,tegra114-spi". 4- compatible : For Tegra114, must contain "nvidia,tegra114-spi".
5 Otherwise, must contain '"nvidia,<chip>-spi", "nvidia,tegra114-spi"' where
6 <chip> is tegra124, tegra132, or tegra210.
5- reg: Should contain SPI registers location and length. 7- reg: Should contain SPI registers location and length.
6- interrupts: Should contain SPI interrupts. 8- interrupts: Should contain SPI interrupts.
7- clock-names : Must include the following entries: 9- clock-names : Must include the following entries:
diff --git a/Documentation/devicetree/bindings/spi/sh-msiof.txt b/Documentation/devicetree/bindings/spi/sh-msiof.txt
index d11c3721e7cd..4c388bb2f0a2 100644
--- a/Documentation/devicetree/bindings/spi/sh-msiof.txt
+++ b/Documentation/devicetree/bindings/spi/sh-msiof.txt
@@ -30,6 +30,22 @@ Optional properties:
30 specifiers, one for transmission, and one for 30 specifiers, one for transmission, and one for
31 reception. 31 reception.
32- dma-names : Must contain a list of two DMA names, "tx" and "rx". 32- dma-names : Must contain a list of two DMA names, "tx" and "rx".
33- renesas,dtdl : delay sync signal (setup) in transmit mode.
34 Must contain one of the following values:
35 0 (no bit delay)
36 50 (0.5-clock-cycle delay)
37 100 (1-clock-cycle delay)
38 150 (1.5-clock-cycle delay)
39 200 (2-clock-cycle delay)
40
41- renesas,syncdl : delay sync signal (hold) in transmit mode.
42 Must contain one of the following values:
43 0 (no bit delay)
44 50 (0.5-clock-cycle delay)
45 100 (1-clock-cycle delay)
46 150 (1.5-clock-cycle delay)
47 200 (2-clock-cycle delay)
48 300 (3-clock-cycle delay)
33 49
34Optional properties, deprecated for soctype-specific bindings: 50Optional properties, deprecated for soctype-specific bindings:
35- renesas,tx-fifo-size : Overrides the default tx fifo size given in words 51- renesas,tx-fifo-size : Overrides the default tx fifo size given in words
diff --git a/Documentation/devicetree/bindings/spi/spi-sirf.txt b/Documentation/devicetree/bindings/spi/spi-sirf.txt
new file mode 100644
index 000000000000..4c7adb8f777c
--- /dev/null
+++ b/Documentation/devicetree/bindings/spi/spi-sirf.txt
@@ -0,0 +1,41 @@
1* CSR SiRFprimaII Serial Peripheral Interface
2
3Required 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
22Optional 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
28Example:
29
30spi0: spi@b00d0000 {
31 compatible = "sirf,prima2-spi";
32 reg = <0xb00d0000 0x10000>;
33 interrupts = <15>;
34 dmas = <&dmac1 9>,
35 <&dmac1 4>;
36 dma-names = "rx", "tx";
37 #address-cells = <1>;
38 #size-cells = <0>;
39 clocks = <&clks 19>;
40 resets = <&rstc 26>;
41};
diff --git a/Documentation/devicetree/bindings/spi/spi-st-ssc.txt b/Documentation/devicetree/bindings/spi/spi-st-ssc.txt
new file mode 100644
index 000000000000..fe54959ec957
--- /dev/null
+++ b/Documentation/devicetree/bindings/spi/spi-st-ssc.txt
@@ -0,0 +1,40 @@
1STMicroelectronics SSC (SPI) Controller
2---------------------------------------
3
4Required 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
14Optional properties:
15- cs-gpios : List of GPIO chip selects
16 See ../spi/spi-bus.txt
17
18Child nodes represent devices on the SPI bus
19 See ../spi/spi-bus.txt
20
21Example:
22 spi@9840000 {
23 compatible = "st,comms-ssc4-spi";
24 reg = <0x9840000 0x110>;
25 interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
26 clocks = <&clk_s_c0_flexgen CLK_EXT2F_A9>;
27 clock-names = "ssc";
28 pinctrl-0 = <&pinctrl_spi0_default>;
29 pinctrl-names = "default";
30 cs-gpios = <&pio17 5 0>;
31 #address-cells = <1>;
32 #size-cells = <0>;
33
34 st95hf@0{
35 compatible = "st,st95hf";
36 reg = <0>;
37 spi-max-frequency = <1000000>;
38 interrupts = <2 IRQ_TYPE_EDGE_FALLING>;
39 };
40 };
diff --git a/Documentation/devicetree/bindings/submitting-patches.txt b/Documentation/devicetree/bindings/submitting-patches.txt
index b7ba01ad1426..56742bc70218 100644
--- a/Documentation/devicetree/bindings/submitting-patches.txt
+++ b/Documentation/devicetree/bindings/submitting-patches.txt
@@ -15,6 +15,29 @@ I. For patch submitters
15 3) The Documentation/ portion of the patch should come in the series before 15 3) The Documentation/ portion of the patch should come in the series before
16 the code implementing the binding. 16 the code implementing the binding.
17 17
18 4) Any compatible strings used in a chip or board DTS file must be
19 previously documented in the corresponding DT binding text file
20 in Documentation/devicetree/bindings. This rule applies even if
21 the Linux device driver does not yet match on the compatible
22 string. [ checkpatch will emit warnings if this step is not
23 followed as of commit bff5da4335256513497cc8c79f9a9d1665e09864
24 ("checkpatch: add DT compatible string documentation checks"). ]
25
26 5) The wildcard "<chip>" may be used in compatible strings, as in
27 the following example:
28
29 - compatible: Must contain '"nvidia,<chip>-pcie",
30 "nvidia,tegra20-pcie"' where <chip> is tegra30, tegra132, ...
31
32 As in the above example, the known values of "<chip>" should be
33 documented if it is used.
34
35 6) If a documented compatible string is not yet matched by the
36 driver, the documentation should also include a compatible
37 string that is matched by the driver (as in the "nvidia,tegra20-pcie"
38 example above).
39
40
18II. For kernel maintainers 41II. For kernel maintainers
19 42
20 1) If you aren't comfortable reviewing a given binding, reply to it and ask 43 1) If you aren't comfortable reviewing a given binding, reply to it and ask
diff --git a/Documentation/devicetree/bindings/thermal/tegra-soctherm.txt b/Documentation/devicetree/bindings/thermal/tegra-soctherm.txt
index ecf3ed76cd46..6b68cd150405 100644
--- a/Documentation/devicetree/bindings/thermal/tegra-soctherm.txt
+++ b/Documentation/devicetree/bindings/thermal/tegra-soctherm.txt
@@ -7,7 +7,9 @@ notifications. It is also used to manage emergency shutdown in an
7overheating situation. 7overheating situation.
8 8
9Required properties : 9Required properties :
10- compatible : "nvidia,tegra124-soctherm". 10- compatible : For Tegra124, must contain "nvidia,tegra124-soctherm".
11 For Tegra132, must contain "nvidia,tegra132-soctherm".
12 For Tegra210, must contain "nvidia,tegra210-soctherm".
11- reg : Should contain 1 entry: 13- reg : Should contain 1 entry:
12 - SOCTHERM register set 14 - SOCTHERM register set
13- interrupts : Defines the interrupt used by SOCTHERM 15- interrupts : Defines the interrupt used by SOCTHERM
diff --git a/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt b/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt
index b5082a1cf461..1761f53ee36f 100644
--- a/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt
+++ b/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt
@@ -6,7 +6,9 @@ trigger a legacy watchdog reset.
6 6
7Required properties: 7Required properties:
8 8
9- compatible : should be "nvidia,tegra30-timer", "nvidia,tegra20-timer". 9- compatible : For Tegra30, must contain "nvidia,tegra30-timer". Otherwise,
10 must contain '"nvidia,<chip>-timer", "nvidia,tegra30-timer"' where
11 <chip> is tegra124 or tegra132.
10- reg : Specifies base physical address and size of the registers. 12- reg : Specifies base physical address and size of the registers.
11- interrupts : A list of 6 interrupts; one per each of timer channels 1 13- interrupts : A list of 6 interrupts; one per each of timer channels 1
12 through 5, and one for the shared interrupt for the remaining channels. 14 through 5, and one for the shared interrupt for the remaining channels.
diff --git a/Documentation/devicetree/bindings/unittest.txt b/Documentation/devicetree/bindings/unittest.txt
index 0f92a22fddfa..8933211f32f9 100644
--- a/Documentation/devicetree/bindings/unittest.txt
+++ b/Documentation/devicetree/bindings/unittest.txt
@@ -1,4 +1,4 @@
1* OF selftest platform device 11) OF selftest platform device
2 2
3** selftest 3** selftest
4 4
@@ -12,3 +12,60 @@ Example:
12 compatible = "selftest"; 12 compatible = "selftest";
13 status = "okay"; 13 status = "okay";
14 }; 14 };
15
162) OF selftest i2c adapter platform device
17
18** platform device unittest adapter
19
20Required properties:
21- compatible: must be selftest-i2c-bus
22
23Children nodes contain selftest i2c devices.
24
25Example:
26 selftest-i2c-bus {
27 compatible = "selftest-i2c-bus";
28 status = "okay";
29 };
30
313) OF selftest i2c device
32
33** I2C selftest device
34
35Required properties:
36- compatible: must be selftest-i2c-dev
37
38All other properties are optional
39
40Example:
41 selftest-i2c-dev {
42 compatible = "selftest-i2c-dev";
43 status = "okay";
44 };
45
464) OF selftest i2c mux device
47
48** I2C selftest mux
49
50Required properties:
51- compatible: must be selftest-i2c-mux
52
53Children nodes contain selftest i2c bus nodes per channel.
54
55Example:
56 selftest-i2c-mux {
57 compatible = "selftest-i2c-mux";
58 status = "okay";
59 #address-cells = <1>;
60 #size-cells = <0>;
61 channel-0 {
62 reg = <0>;
63 #address-cells = <1>;
64 #size-cells = <0>;
65 i2c-dev {
66 reg = <8>;
67 compatible = "selftest-i2c-dev";
68 status = "okay";
69 };
70 };
71 };
diff --git a/Documentation/devicetree/bindings/usb/nvidia,tegra20-ehci.txt b/Documentation/devicetree/bindings/usb/nvidia,tegra20-ehci.txt
index 3dc9140e3dfb..f60785f73d3d 100644
--- a/Documentation/devicetree/bindings/usb/nvidia,tegra20-ehci.txt
+++ b/Documentation/devicetree/bindings/usb/nvidia,tegra20-ehci.txt
@@ -6,7 +6,10 @@ Practice : Universal Serial Bus" with the following modifications
6and additions : 6and additions :
7 7
8Required properties : 8Required properties :
9 - compatible : Should be "nvidia,tegra20-ehci". 9 - compatible : For Tegra20, must contain "nvidia,tegra20-ehci".
10 For Tegra30, must contain "nvidia,tegra30-ehci". Otherwise, must contain
11 "nvidia,<chip>-ehci" plus at least one of the above, where <chip> is
12 tegra114, tegra124, tegra132, or tegra210.
10 - nvidia,phy : phandle of the PHY that the controller is connected to. 13 - nvidia,phy : phandle of the PHY that the controller is connected to.
11 - clocks : Must contain one entry, for the module clock. 14 - clocks : Must contain one entry, for the module clock.
12 See ../clocks/clock-bindings.txt for details. 15 See ../clocks/clock-bindings.txt for details.
diff --git a/Documentation/devicetree/bindings/usb/nvidia,tegra20-usb-phy.txt b/Documentation/devicetree/bindings/usb/nvidia,tegra20-usb-phy.txt
index c9205fbf26e2..a9aa79fb90ed 100644
--- a/Documentation/devicetree/bindings/usb/nvidia,tegra20-usb-phy.txt
+++ b/Documentation/devicetree/bindings/usb/nvidia,tegra20-usb-phy.txt
@@ -3,7 +3,10 @@ Tegra SOC USB PHY
3The device node for Tegra SOC USB PHY: 3The device node for Tegra SOC USB PHY:
4 4
5Required properties : 5Required properties :
6 - compatible : Should be "nvidia,tegra<chip>-usb-phy". 6 - compatible : For Tegra20, must contain "nvidia,tegra20-usb-phy".
7 For Tegra30, must contain "nvidia,tegra30-usb-phy". Otherwise, must contain
8 "nvidia,<chip>-usb-phy" plus at least one of the above, where <chip> is
9 tegra114, tegra124, tegra132, or tegra210.
7 - reg : Defines the following set of registers, in the order listed: 10 - reg : Defines the following set of registers, in the order listed:
8 - The PHY's own register set. 11 - The PHY's own register set.
9 Always present. 12 Always present.
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt
index d443279c95dc..7075698abd8c 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.txt
+++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
@@ -7,6 +7,7 @@ abilis Abilis Systems
7active-semi Active-Semi International Inc 7active-semi Active-Semi International Inc
8ad Avionic Design GmbH 8ad Avionic Design GmbH
9adapteva Adapteva, Inc. 9adapteva Adapteva, Inc.
10adh AD Holdings Plc.
10adi Analog Devices, Inc. 11adi Analog Devices, Inc.
11aeroflexgaisler Aeroflex Gaisler AB 12aeroflexgaisler Aeroflex Gaisler AB
12allwinner Allwinner Technology Co., Ltd. 13allwinner Allwinner Technology Co., Ltd.
@@ -54,8 +55,10 @@ epcos EPCOS AG
54epfl Ecole Polytechnique Fédérale de Lausanne 55epfl Ecole Polytechnique Fédérale de Lausanne
55epson Seiko Epson Corp. 56epson Seiko Epson Corp.
56est ESTeem Wireless Modems 57est ESTeem Wireless Modems
58ettus NI Ettus Research
57eukrea Eukréa Electromatique 59eukrea Eukréa Electromatique
58everest Everest Semiconductor Co. Ltd. 60everest Everest Semiconductor Co. Ltd.
61everspin Everspin Technologies, Inc.
59excito Excito 62excito Excito
60fcs Fairchild Semiconductor 63fcs Fairchild Semiconductor
61fsl Freescale Semiconductor 64fsl Freescale Semiconductor
@@ -69,6 +72,7 @@ gumstix Gumstix, Inc.
69gw Gateworks Corporation 72gw Gateworks Corporation
70hannstar HannStar Display Corporation 73hannstar HannStar Display Corporation
71haoyu Haoyu Microelectronic Co. Ltd. 74haoyu Haoyu Microelectronic Co. Ltd.
75himax Himax Technologies, Inc.
72hisilicon Hisilicon Limited. 76hisilicon Hisilicon Limited.
73hit Hitachi Ltd. 77hit Hitachi Ltd.
74honeywell Honeywell 78honeywell Honeywell
@@ -82,8 +86,7 @@ innolux Innolux Corporation
82intel Intel Corporation 86intel Intel Corporation
83intercontrol Inter Control Group 87intercontrol Inter Control Group
84isee ISEE 2007 S.L. 88isee ISEE 2007 S.L.
85isil Intersil (deprecated, use isl) 89isil Intersil
86isl Intersil
87karo Ka-Ro electronics GmbH 90karo Ka-Ro electronics GmbH
88keymile Keymile GmbH 91keymile Keymile GmbH
89lacie LaCie 92lacie LaCie
@@ -118,6 +121,7 @@ nvidia NVIDIA
118nxp NXP Semiconductors 121nxp NXP Semiconductors
119onnn ON Semiconductor Corp. 122onnn ON Semiconductor Corp.
120opencores OpenCores.org 123opencores OpenCores.org
124ovti OmniVision Technologies
121panasonic Panasonic Corporation 125panasonic Panasonic Corporation
122pericom Pericom Technology Inc. 126pericom Pericom Technology Inc.
123phytec PHYTEC Messtechnik GmbH 127phytec PHYTEC Messtechnik GmbH
@@ -142,8 +146,10 @@ sandisk Sandisk Corporation
142sbs Smart Battery System 146sbs Smart Battery System
143schindler Schindler 147schindler Schindler
144seagate Seagate Technology PLC 148seagate Seagate Technology PLC
149semtech Semtech Corporation
145sil Silicon Image 150sil Silicon Image
146silabs Silicon Laboratories 151silabs Silicon Laboratories
152siliconmitus Silicon Mitus, Inc.
147simtek 153simtek
148sii Seiko Instruments, Inc. 154sii Seiko Instruments, Inc.
149silergy Silergy Corp. 155silergy Silergy Corp.
@@ -165,6 +171,7 @@ tlm Trusted Logic Mobility
165toradex Toradex AG 171toradex Toradex AG
166toshiba Toshiba Corporation 172toshiba Toshiba Corporation
167toumaz Toumaz 173toumaz Toumaz
174truly Truly Semiconductors Limited
168usi Universal Scientific Industrial Co., Ltd. 175usi Universal Scientific Industrial Co., Ltd.
169v3 V3 Semiconductor 176v3 V3 Semiconductor
170variscite Variscite Ltd. 177variscite Variscite Ltd.
diff --git a/Documentation/devicetree/bindings/video/ti,dra7-dss.txt b/Documentation/devicetree/bindings/video/ti,dra7-dss.txt
new file mode 100644
index 000000000000..f33a05137b0e
--- /dev/null
+++ b/Documentation/devicetree/bindings/video/ti,dra7-dss.txt
@@ -0,0 +1,69 @@
1Texas Instruments DRA7x Display Subsystem
2=========================================
3
4See Documentation/devicetree/bindings/video/ti,omap-dss.txt for generic
5description about OMAP Display Subsystem bindings.
6
7DSS Core
8--------
9
10Required 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
18Optional properties:
19
20Some DRA7xx SoCs have one dedicated video PLL, some have two. These properties
21can 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
28Required nodes:
29- DISPC
30
31Optional nodes:
32- DSS Submodules: HDMI
33- Video port for DPI output
34
35DPI Endpoint required properties:
36- data-lines: number of lines used
37
38
39DISPC
40-----
41
42Required 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
50HDMI
51----
52
53Required 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
64Optional nodes:
65- Video port for HDMI output
66
67HDMI Endpoint optional properties:
68- lanes: list of 8 pin numbers for the HDMI lanes: CLK+, CLK-, D0+, D0-,
69 D1+, D1-, D2+, D2-. (default: 0,1,2,3,4,5,6,7)
diff --git a/Documentation/devicetree/bindings/video/ti,opa362.txt b/Documentation/devicetree/bindings/video/ti,opa362.txt
new file mode 100644
index 000000000000..f96083c0bd17
--- /dev/null
+++ b/Documentation/devicetree/bindings/video/ti,opa362.txt
@@ -0,0 +1,38 @@
1OPA362 analog video amplifier
2
3Required properties:
4- compatible: "ti,opa362"
5- enable-gpios: enable/disable output gpio
6
7Required node:
8- Video port 0 for opa362 input
9- Video port 1 for opa362 output
10
11Example:
12
13tv_amp: opa362 {
14 compatible = "ti,opa362";
15 enable-gpios = <&gpio1 23 0>; /* GPIO to enable video out amplifier */
16
17 ports {
18 #address-cells = <1>;
19 #size-cells = <0>;
20
21 port@0 {
22 reg = <0>;
23 opa_in: endpoint@0 {
24 remote-endpoint = <&venc_out>;
25 };
26 };
27
28 port@1 {
29 reg = <1>;
30 opa_out: endpoint@0 {
31 remote-endpoint = <&tv_connector_in>;
32 };
33 };
34 };
35};
36
37
38
diff --git a/Documentation/devicetree/overlay-notes.txt b/Documentation/devicetree/overlay-notes.txt
index 30ae758e3eef..d418a6ce9812 100644
--- a/Documentation/devicetree/overlay-notes.txt
+++ b/Documentation/devicetree/overlay-notes.txt
@@ -10,7 +10,7 @@ How overlays work
10----------------- 10-----------------
11 11
12A Device Tree's overlay purpose is to modify the kernel's live tree, and 12A Device Tree's overlay purpose is to modify the kernel's live tree, and
13have the modification affecting the state of the the kernel in a way that 13have the modification affecting the state of the kernel in a way that
14is reflecting the changes. 14is reflecting the changes.
15Since the kernel mainly deals with devices, any new device node that result 15Since the kernel mainly deals with devices, any new device node that result
16in an active device should have it created while if the device node is either 16in an active device should have it created while if the device node is either
@@ -80,7 +80,7 @@ result in foo+bar.dts
80 }; 80 };
81---- foo+bar.dts ------------------------------------------------------------- 81---- foo+bar.dts -------------------------------------------------------------
82 82
83As a result of the the overlay, a new device node (bar) has been created 83As a result of the overlay, a new device node (bar) has been created
84so a bar platform device will be registered and if a matching device driver 84so a bar platform device will be registered and if a matching device driver
85is loaded the device will be created as expected. 85is loaded the device will be created as expected.
86 86
diff --git a/Documentation/dmaengine/00-INDEX b/Documentation/dmaengine/00-INDEX
new file mode 100644
index 000000000000..07de6573d22b
--- /dev/null
+++ b/Documentation/dmaengine/00-INDEX
@@ -0,0 +1,8 @@
100-INDEX
2 - this file.
3client.txt
4 -the DMA Engine API Guide.
5dmatest.txt
6 - how to compile, configure and use the dmatest system.
7provider.txt
8 - the DMA controller API. \ No newline at end of file
diff --git a/Documentation/driver-model/bus.txt b/Documentation/driver-model/bus.txt
index 6754b2df8aa1..b577a45b93ea 100644
--- a/Documentation/driver-model/bus.txt
+++ b/Documentation/driver-model/bus.txt
@@ -45,7 +45,7 @@ them are inherently bus-specific. Drivers typically declare an array
45of device IDs of devices they support that reside in a bus-specific 45of device IDs of devices they support that reside in a bus-specific
46driver structure. 46driver structure.
47 47
48The purpose of the match callback is provide the bus an opportunity to 48The purpose of the match callback is to give the bus an opportunity to
49determine if a particular driver supports a particular device by 49determine if a particular driver supports a particular device by
50comparing the device IDs the driver supports with the device ID of a 50comparing the device IDs the driver supports with the device ID of a
51particular device, without sacrificing bus-specific functionality or 51particular device, without sacrificing bus-specific functionality or
diff --git a/Documentation/filesystems/fiemap.txt b/Documentation/filesystems/fiemap.txt
index 1b805a0efbb0..f6d9c99103a4 100644
--- a/Documentation/filesystems/fiemap.txt
+++ b/Documentation/filesystems/fiemap.txt
@@ -196,7 +196,8 @@ struct fiemap_extent_info {
196}; 196};
197 197
198It is intended that the file system should not need to access any of this 198It is intended that the file system should not need to access any of this
199structure directly. 199structure directly. Filesystem handlers should be tolerant to signals and return
200EINTR once fatal signal received.
200 201
201 202
202Flag checking should be done at the beginning of the ->fiemap callback via the 203Flag checking should be done at the beginning of the ->fiemap callback via the
diff --git a/Documentation/filesystems/inotify.txt b/Documentation/filesystems/inotify.txt
index cfd02712b83e..51f61db787fb 100644
--- a/Documentation/filesystems/inotify.txt
+++ b/Documentation/filesystems/inotify.txt
@@ -4,201 +4,10 @@
4 4
5 5
6Document started 15 Mar 2005 by Robert Love <rml@novell.com> 6Document started 15 Mar 2005 by Robert Love <rml@novell.com>
7Document updated 4 Jan 2015 by Zhang Zhen <zhenzhang.zhang@huawei.com>
8 --Deleted obsoleted interface, just refer to manpages for user interface.
7 9
8 10(i) Rationale
9(i) User Interface
10
11Inotify is controlled by a set of three system calls and normal file I/O on a
12returned file descriptor.
13
14First step in using inotify is to initialise an inotify instance:
15
16 int fd = inotify_init ();
17
18Each instance is associated with a unique, ordered queue.
19
20Change events are managed by "watches". A watch is an (object,mask) pair where
21the object is a file or directory and the mask is a bit mask of one or more
22inotify events that the application wishes to receive. See <linux/inotify.h>
23for valid events. A watch is referenced by a watch descriptor, or wd.
24
25Watches are added via a path to the file.
26
27Watches on a directory will return events on any files inside of the directory.
28
29Adding a watch is simple:
30
31 int wd = inotify_add_watch (fd, path, mask);
32
33Where "fd" is the return value from inotify_init(), path is the path to the
34object to watch, and mask is the watch mask (see <linux/inotify.h>).
35
36You can update an existing watch in the same manner, by passing in a new mask.
37
38An existing watch is removed via
39
40 int ret = inotify_rm_watch (fd, wd);
41
42Events are provided in the form of an inotify_event structure that is read(2)
43from a given inotify instance. The filename is of dynamic length and follows
44the struct. It is of size len. The filename is padded with null bytes to
45ensure proper alignment. This padding is reflected in len.
46
47You can slurp multiple events by passing a large buffer, for example
48
49 size_t len = read (fd, buf, BUF_LEN);
50
51Where "buf" is a pointer to an array of "inotify_event" structures at least
52BUF_LEN bytes in size. The above example will return as many events as are
53available and fit in BUF_LEN.
54
55Each inotify instance fd is also select()- and poll()-able.
56
57You can find the size of the current event queue via the standard FIONREAD
58ioctl on the fd returned by inotify_init().
59
60All watches are destroyed and cleaned up on close.
61
62
63(ii)
64
65Prototypes:
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
74Inotify's kernel API consists a set of functions for managing watches and an
75event callback.
76
77To use the kernel API, you must first initialize an inotify instance with a set
78of inotify_operations. You are given an opaque inotify_handle, which you use
79for any further calls to inotify.
80
81 struct inotify_handle *ih = inotify_init(my_event_handler);
82
83You must provide a function for processing events and a function for destroying
84the 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
98You may add watches by providing a pre-allocated and initialized inotify_watch
99structure and specifying the inode to watch along with an inotify event mask.
100You must pin the inode during the call. You will likely wish to embed the
101inotify_watch structure in a structure of your own which contains other
102information about the watch. Once you add an inotify watch, it is immediately
103subject to removal depending on filesystem events. You must grab a reference if
104you 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
111You may use the watch descriptor (wd) or the address of the inotify_watch for
112other inotify operations. You must not directly read or manipulate data in the
113inotify_watch. Additionally, you must not call inotify_add_watch() more than
114once for a given inotify_watch structure, unless you have first called either
115inotify_rm_watch() or inotify_rm_wd().
116
117To determine if you have already registered a watch for a given inode, you may
118call inotify_find_watch(), which gives you both the wd and the watch pointer for
119the inotify_watch, or an error if the watch does not exist.
120
121 wd = inotify_find_watch(ih, inode, &watchp);
122
123You may use container_of() on the watch pointer to access your own data
124associated with a given watch. When an existing watch is found,
125inotify_find_watch() bumps the refcount before releasing its locks. You must
126put that reference with:
127
128 put_inotify_watch(watchp);
129
130Call inotify_find_update_watch() to update the event mask for an existing watch.
131inotify_find_update_watch() returns the wd of the updated watch, or an error if
132the watch does not exist.
133
134 wd = inotify_find_update_watch(ih, inode, mask);
135
136An existing watch may be removed by calling either inotify_rm_watch() or
137inotify_rm_wd().
138
139 int ret = inotify_rm_watch(ih, &my_watch->iwatch);
140 int ret = inotify_rm_wd(ih, wd);
141
142A watch may be removed while executing your event handler with the following:
143
144 inotify_remove_watch_locked(ih, iwatch);
145
146Call inotify_destroy() to remove all watches from your inotify instance and
147release it. If there are no outstanding references, inotify_destroy() will call
148your destroy_watch op for each watch.
149
150 inotify_destroy(ih);
151
152When inotify removes a watch, it sends an IN_IGNORED event to your callback.
153You may use this event as an indication to free the watch memory. Note that
154inotify may remove a watch due to filesystem events, as well as by your request.
155If you use IN_ONESHOT, inotify will remove the watch after the first event, at
156which 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
190Each inotify instance is represented by an inotify_handle structure.
191Inotify's userspace consumers also have an inotify_device which is
192associated with the inotify_handle, and on which events are queued.
193
194Each watch is associated with an inotify_watch structure. Watches are chained
195off of each associated inotify_handle and each associated inode.
196
197See fs/notify/inotify/inotify_fsnotify.c and fs/notify/inotify/inotify_user.c
198for the locking and lifetime rules.
199
200
201(vi) Rationale
202 11
203Q: What is the design decision behind not tying the watch to the open fd of 12Q: What is the design decision behind not tying the watch to the open fd of
204 the watched object? 13 the watched object?
diff --git a/Documentation/filesystems/nfs/pnfs.txt b/Documentation/filesystems/nfs/pnfs.txt
index adc81a35fe2d..44a9f2493a88 100644
--- a/Documentation/filesystems/nfs/pnfs.txt
+++ b/Documentation/filesystems/nfs/pnfs.txt
@@ -57,15 +57,16 @@ bit is set, preventing any new lsegs from being added.
57layout drivers 57layout drivers
58-------------- 58--------------
59 59
60PNFS utilizes what is called layout drivers. The STD defines 3 basic 60PNFS utilizes what is called layout drivers. The STD defines 4 basic
61layout types: "files" "objects" and "blocks". For each of these types 61layout types: "files", "objects", "blocks", and "flexfiles". For each
62there is a layout-driver with a common function-vectors table which 62of these types there is a layout-driver with a common function-vectors
63are called by the nfs-client pnfs-core to implement the different layout 63table which are called by the nfs-client pnfs-core to implement the
64types. 64different layout types.
65 65
66Files-layout-driver code is in: fs/nfs/nfs4filelayout.c && nfs4filelayoutdev.c 66Files-layout-driver code is in: fs/nfs/filelayout/.. directory
67Objects-layout-deriver code is in: fs/nfs/objlayout/.. directory 67Objects-layout-deriver code is in: fs/nfs/objlayout/.. directory
68Blocks-layout-deriver code is in: fs/nfs/blocklayout/.. directory 68Blocks-layout-deriver code is in: fs/nfs/blocklayout/.. directory
69Flexfiles-layout-driver code is in: fs/nfs/flexfilelayout/.. directory
69 70
70objects-layout setup 71objects-layout setup
71-------------------- 72--------------------
diff --git a/Documentation/filesystems/ocfs2.txt b/Documentation/filesystems/ocfs2.txt
index 7618a287aa41..28f8c08201e2 100644
--- a/Documentation/filesystems/ocfs2.txt
+++ b/Documentation/filesystems/ocfs2.txt
@@ -100,3 +100,7 @@ coherency=full (*) Disallow concurrent O_DIRECT writes, cluster inode
100coherency=buffered Allow concurrent O_DIRECT writes without EX lock among 100coherency=buffered Allow concurrent O_DIRECT writes without EX lock among
101 nodes, which gains high performance at risk of getting 101 nodes, which gains high performance at risk of getting
102 stale data on other nodes. 102 stale data on other nodes.
103journal_async_commit Commit block can be written to disk without waiting
104 for descriptor blocks. If enabled older kernels cannot
105 mount the device. This will enable 'journal_checksum'
106 internally.
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt
index aae9dd13c91f..cf8fc2f0b34b 100644
--- a/Documentation/filesystems/proc.txt
+++ b/Documentation/filesystems/proc.txt
@@ -28,7 +28,7 @@ Table of Contents
28 1.6 Parallel port info in /proc/parport 28 1.6 Parallel port info in /proc/parport
29 1.7 TTY info in /proc/tty 29 1.7 TTY info in /proc/tty
30 1.8 Miscellaneous kernel statistics in /proc/stat 30 1.8 Miscellaneous kernel statistics in /proc/stat
31 1.9 Ext4 file system parameters 31 1.9 Ext4 file system parameters
32 32
33 2 Modifying System Parameters 33 2 Modifying System Parameters
34 34
@@ -42,6 +42,7 @@ Table of Contents
42 3.6 /proc/<pid>/comm & /proc/<pid>/task/<tid>/comm 42 3.6 /proc/<pid>/comm & /proc/<pid>/task/<tid>/comm
43 3.7 /proc/<pid>/task/<tid>/children - Information about task children 43 3.7 /proc/<pid>/task/<tid>/children - Information about task children
44 3.8 /proc/<pid>/fdinfo/<fd> - Information about opened file 44 3.8 /proc/<pid>/fdinfo/<fd> - Information about opened file
45 3.9 /proc/<pid>/map_files - Information about memory mapped files
45 46
46 4 Configuring procfs 47 4 Configuring procfs
47 4.1 Mount options 48 4.1 Mount options
@@ -1763,6 +1764,28 @@ pair provide additional information particular to the objects they represent.
1763 with TIMER_ABSTIME option which will be shown in 'settime flags', but 'it_value' 1764 with TIMER_ABSTIME option which will be shown in 'settime flags', but 'it_value'
1764 still exhibits timer's remaining time. 1765 still exhibits timer's remaining time.
1765 1766
17673.9 /proc/<pid>/map_files - Information about memory mapped files
1768---------------------------------------------------------------------
1769This directory contains symbolic links which represent memory mapped files
1770the process is maintaining. Example output:
1771
1772 | lr-------- 1 root root 64 Jan 27 11:24 333c600000-333c620000 -> /usr/lib64/ld-2.18.so
1773 | lr-------- 1 root root 64 Jan 27 11:24 333c81f000-333c820000 -> /usr/lib64/ld-2.18.so
1774 | lr-------- 1 root root 64 Jan 27 11:24 333c820000-333c821000 -> /usr/lib64/ld-2.18.so
1775 | ...
1776 | lr-------- 1 root root 64 Jan 27 11:24 35d0421000-35d0422000 -> /usr/lib64/libselinux.so.1
1777 | lr-------- 1 root root 64 Jan 27 11:24 400000-41a000 -> /usr/bin/ls
1778
1779The name of a link represents the virtual memory bounds of a mapping, i.e.
1780vm_area_struct::vm_start-vm_area_struct::vm_end.
1781
1782The main purpose of the map_files is to retrieve a set of memory mapped
1783files in a fast way instead of parsing /proc/<pid>/maps or
1784/proc/<pid>/smaps, both of which contain many more records. At the same
1785time one can open(2) mappings from the listings of two processes and
1786comparing their inode numbers to figure out which anonymous memory areas
1787are actually shared.
1788
1766------------------------------------------------------------------------------ 1789------------------------------------------------------------------------------
1767Configuring procfs 1790Configuring procfs
1768------------------------------------------------------------------------------ 1791------------------------------------------------------------------------------
diff --git a/Documentation/filesystems/seq_file.txt b/Documentation/filesystems/seq_file.txt
index b797ed38de46..9de4303201e1 100644
--- a/Documentation/filesystems/seq_file.txt
+++ b/Documentation/filesystems/seq_file.txt
@@ -194,16 +194,16 @@ which is in the string esc will be represented in octal form in the output.
194 194
195There are also a pair of functions for printing filenames: 195There are also a pair of functions for printing filenames:
196 196
197 int seq_path(struct seq_file *m, struct path *path, char *esc); 197 int seq_path(struct seq_file *m, const struct path *path,
198 int seq_path_root(struct seq_file *m, struct path *path, 198 const char *esc);
199 struct path *root, char *esc) 199 int seq_path_root(struct seq_file *m, const struct path *path,
200 const struct path *root, const char *esc)
200 201
201Here, path indicates the file of interest, and esc is a set of characters 202Here, path indicates the file of interest, and esc is a set of characters
202which should be escaped in the output. A call to seq_path() will output 203which should be escaped in the output. A call to seq_path() will output
203the path relative to the current process's filesystem root. If a different 204the path relative to the current process's filesystem root. If a different
204root is desired, it can be used with seq_path_root(). Note that, if it 205root is desired, it can be used with seq_path_root(). If it turns out that
205turns out that path cannot be reached from root, the value of root will be 206path cannot be reached from root, seq_path_root() returns SEQ_SKIP.
206changed in seq_file_root() to a root which *does* work.
207 207
208A function producing complicated output may want to check 208A function producing complicated output may want to check
209 bool seq_has_overflowed(struct seq_file *m); 209 bool seq_has_overflowed(struct seq_file *m);
diff --git a/Documentation/filesystems/xfs.txt b/Documentation/filesystems/xfs.txt
index 5be51fd888bd..0bfafe108357 100644
--- a/Documentation/filesystems/xfs.txt
+++ b/Documentation/filesystems/xfs.txt
@@ -287,9 +287,9 @@ The following sysctls are available for the XFS filesystem:
287 XFS_ERRLEVEL_LOW: 1 287 XFS_ERRLEVEL_LOW: 1
288 XFS_ERRLEVEL_HIGH: 5 288 XFS_ERRLEVEL_HIGH: 5
289 289
290 fs.xfs.panic_mask (Min: 0 Default: 0 Max: 127) 290 fs.xfs.panic_mask (Min: 0 Default: 0 Max: 255)
291 Causes certain error conditions to call BUG(). Value is a bitmask; 291 Causes certain error conditions to call BUG(). Value is a bitmask;
292 AND together the tags which represent errors which should cause panics: 292 OR together the tags which represent errors which should cause panics:
293 293
294 XFS_NO_PTAG 0 294 XFS_NO_PTAG 0
295 XFS_PTAG_IFLUSH 0x00000001 295 XFS_PTAG_IFLUSH 0x00000001
@@ -299,6 +299,7 @@ The following sysctls are available for the XFS filesystem:
299 XFS_PTAG_SHUTDOWN_CORRUPT 0x00000010 299 XFS_PTAG_SHUTDOWN_CORRUPT 0x00000010
300 XFS_PTAG_SHUTDOWN_IOERROR 0x00000020 300 XFS_PTAG_SHUTDOWN_IOERROR 0x00000020
301 XFS_PTAG_SHUTDOWN_LOGERROR 0x00000040 301 XFS_PTAG_SHUTDOWN_LOGERROR 0x00000040
302 XFS_PTAG_FSBLOCK_ZERO 0x00000080
302 303
303 This option is intended for debugging only. 304 This option is intended for debugging only.
304 305
@@ -348,16 +349,13 @@ The following sysctls are available for the XFS filesystem:
348Deprecated Sysctls 349Deprecated Sysctls
349================== 350==================
350 351
351 fs.xfs.xfsbufd_centisecs (Min: 50 Default: 100 Max: 3000) 352None at present.
352 Dirty metadata is now tracked by the log subsystem and
353 flushing is driven by log space and idling demands. The
354 xfsbufd no longer exists, so this syctl does nothing.
355 353
356 Due for removal in 3.14.
357 354
358 fs.xfs.age_buffer_centisecs (Min: 100 Default: 1500 Max: 720000) 355Removed Sysctls
359 Dirty metadata is now tracked by the log subsystem and 356===============
360 flushing is driven by log space and idling demands. The
361 xfsbufd no longer exists, so this syctl does nothing.
362 357
363 Due for removal in 3.14. 358 Name Removed
359 ---- -------
360 fs.xfs.xfsbufd_centisec v3.20
361 fs.xfs.age_buffer_centisecs v3.20
diff --git a/Documentation/futex-requeue-pi.txt b/Documentation/futex-requeue-pi.txt
index 31b16610c416..77b36f59d16b 100644
--- a/Documentation/futex-requeue-pi.txt
+++ b/Documentation/futex-requeue-pi.txt
@@ -98,7 +98,7 @@ rt_mutex_start_proxy_lock() and rt_mutex_finish_proxy_lock(), which
98allow the requeue code to acquire an uncontended rt_mutex on behalf 98allow the requeue code to acquire an uncontended rt_mutex on behalf
99of the waiter and to enqueue the waiter on a contended rt_mutex. 99of the waiter and to enqueue the waiter on a contended rt_mutex.
100Two new system calls provide the kernel<->user interface to 100Two new system calls provide the kernel<->user interface to
101requeue_pi: FUTEX_WAIT_REQUEUE_PI and FUTEX_REQUEUE_CMP_PI. 101requeue_pi: FUTEX_WAIT_REQUEUE_PI and FUTEX_CMP_REQUEUE_PI.
102 102
103FUTEX_WAIT_REQUEUE_PI is called by the waiter (pthread_cond_wait() 103FUTEX_WAIT_REQUEUE_PI is called by the waiter (pthread_cond_wait()
104and pthread_cond_timedwait()) to block on the initial futex and wait 104and 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
107futex_lock_pi(), with some extra logic to check for the additional 107futex_lock_pi(), with some extra logic to check for the additional
108wake-up scenarios. 108wake-up scenarios.
109 109
110FUTEX_REQUEUE_CMP_PI is called by the waker 110FUTEX_CMP_REQUEUE_PI is called by the waker
111(pthread_cond_broadcast() and pthread_cond_signal()) to requeue and 111(pthread_cond_broadcast() and pthread_cond_signal()) to requeue and
112possibly wake the waiting tasks. Internally, this system call is 112possibly wake the waiting tasks. Internally, this system call is
113still handled by futex_requeue (by passing requeue_pi=1). Before 113still 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
120the lock can be acquired at this stage as well, if so, the next 120the lock can be acquired at this stage as well, if so, the next
121waiter is woken to finish the acquisition of the lock. 121waiter is woken to finish the acquisition of the lock.
122 122
123FUTEX_REQUEUE_PI accepts nr_wake and nr_requeue as arguments, but 123FUTEX_CMP_REQUEUE_PI accepts nr_wake and nr_requeue as arguments, but
124their sum is all that really matters. futex_requeue() will wake or 124their sum is all that really matters. futex_requeue() will wake or
125requeue up to nr_wake + nr_requeue tasks. It will wake only as many 125requeue up to nr_wake + nr_requeue tasks. It will wake only as many
126tasks as it can acquire the lock for, which in the majority of cases 126tasks as it can acquire the lock for, which in the majority of cases
127should be 0 as good programming practice dictates that the caller of 127should be 0 as good programming practice dictates that the caller of
128either pthread_cond_broadcast() or pthread_cond_signal() acquire the 128either pthread_cond_broadcast() or pthread_cond_signal() acquire the
129mutex prior to making the call. FUTEX_REQUEUE_PI requires that 129mutex prior to making the call. FUTEX_CMP_REQUEUE_PI requires that
130nr_wake=1. nr_requeue should be INT_MAX for broadcast and 0 for 130nr_wake=1. nr_requeue should be INT_MAX for broadcast and 0 for
131signal. 131signal.
diff --git a/Documentation/gpio/board.txt b/Documentation/gpio/board.txt
index 4452786225b8..8b35f51fe7b6 100644
--- a/Documentation/gpio/board.txt
+++ b/Documentation/gpio/board.txt
@@ -31,7 +31,7 @@ through gpiod_get(). For example:
31 <&gpio 16 GPIO_ACTIVE_HIGH>, /* green */ 31 <&gpio 16 GPIO_ACTIVE_HIGH>, /* green */
32 <&gpio 17 GPIO_ACTIVE_HIGH>; /* blue */ 32 <&gpio 17 GPIO_ACTIVE_HIGH>; /* blue */
33 33
34 power-gpio = <&gpio 1 GPIO_ACTIVE_LOW>; 34 power-gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
35 }; 35 };
36 36
37This property will make GPIOs 15, 16 and 17 available to the driver under the 37This property will make GPIOs 15, 16 and 17 available to the driver under the
diff --git a/Documentation/hwmon/ina2xx b/Documentation/hwmon/ina2xx
index 4223c2d3b508..cfd31d94c872 100644
--- a/Documentation/hwmon/ina2xx
+++ b/Documentation/hwmon/ina2xx
@@ -26,6 +26,12 @@ Supported chips:
26 Datasheet: Publicly available at the Texas Instruments website 26 Datasheet: Publicly available at the Texas Instruments website
27 http://www.ti.com/ 27 http://www.ti.com/
28 28
29 * Texas Instruments INA231
30 Prefix: 'ina231'
31 Addresses: I2C 0x40 - 0x4f
32 Datasheet: Publicly available at the Texas Instruments website
33 http://www.ti.com/
34
29Author: Lothar Felten <l-felten@ti.com> 35Author: Lothar Felten <l-felten@ti.com>
30 36
31Description 37Description
@@ -41,9 +47,18 @@ interface. The INA220 monitors both shunt drop and supply voltage.
41The INA226 is a current shunt and power monitor with an I2C interface. 47The INA226 is a current shunt and power monitor with an I2C interface.
42The INA226 monitors both a shunt voltage drop and bus supply voltage. 48The INA226 monitors both a shunt voltage drop and bus supply voltage.
43 49
44The INA230 is a high or low side current shunt and power monitor with an I2C 50INA230 and INA231 are high or low side current shunt and power monitors
45interface. The INA230 monitors both a shunt voltage drop and bus supply voltage. 51with an I2C interface. The chips monitor both a shunt voltage drop and
52bus supply voltage.
46 53
47The shunt value in micro-ohms can be set via platform data or device tree. 54The shunt value in micro-ohms can be set via platform data or device tree at
48Please refer to the Documentation/devicetree/bindings/i2c/ina2xx.txt for bindings 55compile-time or via the shunt_resistor attribute in sysfs at run-time. Please
56refer to the Documentation/devicetree/bindings/i2c/ina2xx.txt for bindings
49if the device tree is used. 57if the device tree is used.
58
59Additionally ina226 supports update_interval attribute as described in
60Documentation/hwmon/sysfs-interface. Internally the interval is the sum of
61bus and shunt voltage conversion times multiplied by the averaging rate. We
62don't touch the conversion times and only modify the number of averages. The
63lower limit of the update_interval is 2 ms, the upper limit is 2253 ms.
64The actual programmed interval may vary from the desired value.
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 176d4fe4f076..a89e32637570 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1470,6 +1470,9 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
1470 no_hwp 1470 no_hwp
1471 Do not enable hardware P state control (HWP) 1471 Do not enable hardware P state control (HWP)
1472 if available. 1472 if available.
1473 hwp_only
1474 Only load intel_pstate on systems which support
1475 hardware P state control (HWP) if available.
1473 1476
1474 intremap= [X86-64, Intel-IOMMU] 1477 intremap= [X86-64, Intel-IOMMU]
1475 on enable Interrupt Remapping (default) 1478 on enable Interrupt Remapping (default)
@@ -1494,6 +1497,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
1494 forcesac 1497 forcesac
1495 soft 1498 soft
1496 pt [x86, IA-64] 1499 pt [x86, IA-64]
1500 nobypass [PPC/POWERNV]
1501 Disable IOMMU bypass, using IOMMU for PCI devices.
1497 1502
1498 1503
1499 io7= [HW] IO7 for Marvel based alpha systems 1504 io7= [HW] IO7 for Marvel based alpha systems
@@ -3207,6 +3212,18 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
3207 3212
3208 retain_initrd [RAM] Keep initrd memory after extraction 3213 retain_initrd [RAM] Keep initrd memory after extraction
3209 3214
3215 rfkill.default_state=
3216 0 "airplane mode". All wifi, bluetooth, wimax, gps, fm,
3217 etc. communication is blocked by default.
3218 1 Unblocked.
3219
3220 rfkill.master_switch_mode=
3221 0 The "airplane mode" button does nothing.
3222 1 The "airplane mode" button toggles between everything
3223 blocked and the previous configuration.
3224 2 The "airplane mode" button toggles between everything
3225 blocked and everything unblocked.
3226
3210 rhash_entries= [KNL,NET] 3227 rhash_entries= [KNL,NET]
3211 Set number of hash buckets for route cache 3228 Set number of hash buckets for route cache
3212 3229
diff --git a/Documentation/kprobes.txt b/Documentation/kprobes.txt
index 4227ec2e3ab2..1488b6525eb6 100644
--- a/Documentation/kprobes.txt
+++ b/Documentation/kprobes.txt
@@ -702,7 +702,8 @@ a virtual address that is no longer valid (module init sections, module
702virtual addresses that correspond to modules that've been unloaded), 702virtual addresses that correspond to modules that've been unloaded),
703such probes are marked with [GONE]. If the probe is temporarily disabled, 703such probes are marked with [GONE]. If the probe is temporarily disabled,
704such probes are marked with [DISABLED]. If the probe is optimized, it is 704such probes are marked with [DISABLED]. If the probe is optimized, it is
705marked with [OPTIMIZED]. 705marked with [OPTIMIZED]. If the probe is ftrace-based, it is marked with
706[FTRACE].
706 707
707/sys/kernel/debug/kprobes/enabled: Turn kprobes ON/OFF forcibly. 708/sys/kernel/debug/kprobes/enabled: Turn kprobes ON/OFF forcibly.
708 709
diff --git a/Documentation/locking/00-INDEX b/Documentation/locking/00-INDEX
new file mode 100644
index 000000000000..c256c9bee2a4
--- /dev/null
+++ b/Documentation/locking/00-INDEX
@@ -0,0 +1,16 @@
100-INDEX
2 - this file.
3lockdep-design.txt
4 - documentation on the runtime locking correctness validator.
5lockstat.txt
6 - info on collecting statistics on locks (and contention).
7mutex-design.txt
8 - info on the generic mutex subsystem.
9rt-mutex-design.txt
10 - description of the RealTime mutex implementation design.
11rt-mutex.txt
12 - desc. of RT-mutex subsystem with PI (Priority Inheritance) support.
13spinlocks.txt
14 - info on using spinlocks to provide exclusive access in kernel.
15ww-mutex-design.txt
16 - Intro to Mutex wait/would deadlock handling.s
diff --git a/Documentation/locking/lockdep-design.txt b/Documentation/locking/lockdep-design.txt
index 5dbc99c04f6e..5001280e9d82 100644
--- a/Documentation/locking/lockdep-design.txt
+++ b/Documentation/locking/lockdep-design.txt
@@ -34,7 +34,7 @@ The validator tracks lock-class usage history into 4n + 1 separate state bits:
34- 'ever held with STATE enabled' 34- 'ever held with STATE enabled'
35- 'ever held as readlock with STATE enabled' 35- 'ever held as readlock with STATE enabled'
36 36
37Where STATE can be either one of (kernel/lockdep_states.h) 37Where STATE can be either one of (kernel/locking/lockdep_states.h)
38 - hardirq 38 - hardirq
39 - softirq 39 - softirq
40 - reclaim_fs 40 - reclaim_fs
diff --git a/Documentation/locking/lockstat.txt b/Documentation/locking/lockstat.txt
index 7428773a1e69..568bbbacee91 100644
--- a/Documentation/locking/lockstat.txt
+++ b/Documentation/locking/lockstat.txt
@@ -121,6 +121,11 @@ show the header with column descriptions. Lines 05-18 and 20-31 show the actual
121statistics. These statistics come in two parts; the actual stats separated by a 121statistics. These statistics come in two parts; the actual stats separated by a
122short separator (line 08, 13) from the contention points. 122short separator (line 08, 13) from the contention points.
123 123
124Lines 09-12 show the first 4 recorded contention points (the code
125which tries to get the lock) and lines 14-17 show the first 4 recorded
126contended points (the lock holder). It is possible that the max
127con-bounces point is missing in the statistics.
128
124The first lock (05-18) is a read/write lock, and shows two lines above the 129The first lock (05-18) is a read/write lock, and shows two lines above the
125short separator. The contention points don't match the column descriptors, 130short separator. The contention points don't match the column descriptors,
126they have two: contentions and [<IP>] symbol. The second set of contention 131they have two: contentions and [<IP>] symbol. The second set of contention
diff --git a/Documentation/memory-barriers.txt b/Documentation/memory-barriers.txt
index 70a09f8a0383..ca2387ef27ab 100644
--- a/Documentation/memory-barriers.txt
+++ b/Documentation/memory-barriers.txt
@@ -269,6 +269,50 @@ And there are a number of things that _must_ or _must_not_ be assumed:
269 STORE *(A + 4) = Y; STORE *A = X; 269 STORE *(A + 4) = Y; STORE *A = X;
270 STORE {*A, *(A + 4) } = {X, Y}; 270 STORE {*A, *(A + 4) } = {X, Y};
271 271
272And 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=========================
274WHAT ARE MEMORY BARRIERS? 318WHAT ARE MEMORY BARRIERS?
@@ -750,7 +794,7 @@ In summary:
750 However, they do -not- guarantee any other sort of ordering: 794 However, they do -not- guarantee any other sort of ordering:
751 Not prior loads against later loads, nor prior stores against 795 Not prior loads against later loads, nor prior stores against
752 later anything. If you need these other forms of ordering, 796 later anything. If you need these other forms of ordering,
753 use smb_rmb(), smp_wmb(), or, in the case of prior stores and 797 use smp_rmb(), smp_wmb(), or, in the case of prior stores and
754 later loads, smp_mb(). 798 later loads, smp_mb().
755 799
756 (*) If both legs of the "if" statement begin with identical stores 800 (*) If both legs of the "if" statement begin with identical stores
diff --git a/Documentation/misc-devices/mei/mei-client-bus.txt b/Documentation/misc-devices/mei/mei-client-bus.txt
index f83910a8ce76..743be4ec8989 100644
--- a/Documentation/misc-devices/mei/mei-client-bus.txt
+++ b/Documentation/misc-devices/mei/mei-client-bus.txt
@@ -1,9 +1,10 @@
1Intel(R) Management Engine (ME) Client bus API 1Intel(R) Management Engine (ME) Client bus API
2=============================================== 2==============================================
3 3
4 4
5Rationale 5Rationale
6========= 6=========
7
7MEI misc character device is useful for dedicated applications to send and receive 8MEI misc character device is useful for dedicated applications to send and receive
8data to the many FW appliance found in Intel's ME from the user space. 9data to the many FW appliance found in Intel's ME from the user space.
9However for some of the ME functionalities it make sense to leverage existing software 10However for some of the ME functionalities it make sense to leverage existing software
@@ -17,7 +18,8 @@ the existing code.
17 18
18 19
19MEI CL bus API 20MEI CL bus API
20=========== 21==============
22
21A driver implementation for an MEI Client is very similar to existing bus 23A driver implementation for an MEI Client is very similar to existing bus
22based device drivers. The driver registers itself as an MEI CL bus driver through 24based device drivers. The driver registers itself as an MEI CL bus driver through
23the mei_cl_driver structure: 25the mei_cl_driver structure:
@@ -55,6 +57,7 @@ received buffers.
55 57
56Example 58Example
57======= 59=======
60
58As a theoretical example let's pretend the ME comes with a "contact" NFC IP. 61As a theoretical example let's pretend the ME comes with a "contact" NFC IP.
59The driver init and exit routines for this device would look like: 62The 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[] = {
69MODULE_DEVICE_TABLE(mei_cl, contact_mei_cl_tbl); 72MODULE_DEVICE_TABLE(mei_cl, contact_mei_cl_tbl);
70 73
71static struct mei_cl_driver contact_driver = { 74static struct mei_cl_driver contact_driver = {
72 .id_table = contact_mei_tbl, 75 .id_table = contact_mei_tbl,
73 .name = CONTACT_DRIVER_NAME, 76 .name = CONTACT_DRIVER_NAME,
74 77
75 .probe = contact_probe, 78 .probe = contact_probe,
76 .remove = contact_remove, 79 .remove = contact_remove,
77}; 80};
78 81
79static int contact_init(void) 82static int contact_init(void)
@@ -109,7 +112,7 @@ int contact_probe(struct mei_cl_device *dev, struct mei_cl_device_id *id)
109 mei_cl_register_event_cb(dev, contact_event_cb, contact); 112 mei_cl_register_event_cb(dev, contact_event_cb, contact);
110 113
111 return 0; 114 return 0;
112 } 115}
113 116
114In the probe routine the driver first enable the MEI device and then registers 117In the probe routine the driver first enable the MEI device and then registers
115an ME bus event handler which is as close as it can get to registering a 118an ME bus event handler which is as close as it can get to registering a
diff --git a/Documentation/misc-devices/mei/mei.txt b/Documentation/misc-devices/mei/mei.txt
index 15bba1aeba9a..8d47501bba0a 100644
--- a/Documentation/misc-devices/mei/mei.txt
+++ b/Documentation/misc-devices/mei/mei.txt
@@ -1,8 +1,8 @@
1Intel(R) Management Engine Interface (Intel(R) MEI) 1Intel(R) Management Engine Interface (Intel(R) MEI)
2======================= 2===================================================
3 3
4Introduction 4Introduction
5======================= 5============
6 6
7The Intel Management Engine (Intel ME) is an isolated and protected computing 7The Intel Management Engine (Intel ME) is an isolated and protected computing
8resource (Co-processor) residing inside certain Intel chipsets. The Intel ME 8resource (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
19header and payload up to 512 bytes. 19header and payload up to 512 bytes.
20 20
21Prominent usage of the Intel ME Interface is to communicate with Intel(R) 21Prominent usage of the Intel ME Interface is to communicate with Intel(R)
22Active Management Technology (Intel AMT)implemented in firmware running on 22Active Management Technology (Intel AMT) implemented in firmware running on
23the Intel ME. 23the Intel ME.
24 24
25Intel AMT provides the ability to manage a host remotely out-of-band (OOB) 25Intel 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.
44For more information about Intel AMT: 44For more information about Intel AMT:
45http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide 45http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide
46 46
47
47Intel MEI Driver 48Intel MEI Driver
48======================= 49================
49 50
50The driver exposes a misc device called /dev/mei. 51The driver exposes a misc device called /dev/mei.
51 52
@@ -91,8 +92,10 @@ A code snippet for an application communicating with Intel AMTHI client:
91 [...] 92 [...]
92 close(fd); 93 close(fd);
93 94
94IOCTL: 95
95====== 96IOCTL
97=====
98
96The Intel MEI Driver supports the following IOCTL command: 99The Intel MEI Driver supports the following IOCTL command:
97 IOCTL_MEI_CONNECT_CLIENT Connect to firmware Feature (client). 100 IOCTL_MEI_CONNECT_CLIENT Connect to firmware Feature (client).
98 101
@@ -122,58 +125,61 @@ The Intel MEI Driver supports the following IOCTL command:
122 data that can be sent or received. (e.g. if MTU=2K, can send 125 data that can be sent or received. (e.g. if MTU=2K, can send
123 requests up to bytes 2k and received responses up to 2k bytes). 126 requests up to bytes 2k and received responses up to 2k bytes).
124 127
125Intel ME Applications: 128
126============== 129Intel ME Applications
127 130=====================
1281) Intel Local Management Service (Intel LMS) 131
129 132 1) Intel Local Management Service (Intel LMS)
130 Applications running locally on the platform communicate with Intel AMT Release 133
131 2.0 and later releases in the same way that network applications do via SOAP 134 Applications running locally on the platform communicate with Intel AMT Release
132 over HTTP (deprecated starting with Release 6.0) or with WS-Management over 135 2.0 and later releases in the same way that network applications do via SOAP
133 SOAP over HTTP. This means that some Intel AMT features can be accessed from a 136 over HTTP (deprecated starting with Release 6.0) or with WS-Management over
134 local application using the same network interface as a remote application 137 SOAP over HTTP. This means that some Intel AMT features can be accessed from a
135 communicating with Intel AMT over the network. 138 local application using the same network interface as a remote application
136 139 communicating with Intel AMT over the network.
137 When a local application sends a message addressed to the local Intel AMT host 140
138 name, the Intel LMS, which listens for traffic directed to the host name, 141 When a local application sends a message addressed to the local Intel AMT host
139 intercepts the message and routes it to the Intel MEI. 142 name, the Intel LMS, which listens for traffic directed to the host name,
140 For more information: 143 intercepts the message and routes it to the Intel MEI.
141 http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide 144 For more information:
142 Under "About Intel AMT" => "Local Access" 145 http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide
143 146 Under "About Intel AMT" => "Local Access"
144 For downloading Intel LMS: 147
145 http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/ 148 For downloading Intel LMS:
146 149 http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/
147 The Intel LMS opens a connection using the Intel MEI driver to the Intel LMS 150
148 firmware feature using a defined UUID and then communicates with the feature 151 The Intel LMS opens a connection using the Intel MEI driver to the Intel LMS
149 using a protocol called Intel AMT Port Forwarding Protocol(Intel APF protocol). 152 firmware feature using a defined UUID and then communicates with the feature
150 The protocol is used to maintain multiple sessions with Intel AMT from a 153 using a protocol called Intel AMT Port Forwarding Protocol (Intel APF protocol).
151 single application. 154 The protocol is used to maintain multiple sessions with Intel AMT from a
152 155 single application.
153 See the protocol specification in the Intel AMT Software Development Kit(SDK) 156
154 http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide 157 See the protocol specification in the Intel AMT Software Development Kit (SDK)
155 Under "SDK Resources" => "Intel(R) vPro(TM) Gateway(MPS)" 158 http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide
156 => "Information for Intel(R) vPro(TM) Gateway Developers" 159 Under "SDK Resources" => "Intel(R) vPro(TM) Gateway (MPS)"
157 => "Description of the Intel AMT Port Forwarding (APF)Protocol" 160 => "Information for Intel(R) vPro(TM) Gateway Developers"
158 161 => "Description of the Intel AMT Port Forwarding (APF) Protocol"
159 2) Intel AMT Remote configuration using a Local Agent 162
160 A Local Agent enables IT personnel to configure Intel AMT out-of-the-box 163 2) Intel AMT Remote configuration using a Local Agent
161 without requiring installing additional data to enable setup. The remote 164
162 configuration process may involve an ISV-developed remote configuration 165 A Local Agent enables IT personnel to configure Intel AMT out-of-the-box
163 agent that runs on the host. 166 without requiring installing additional data to enable setup. The remote
164 For more information: 167 configuration process may involve an ISV-developed remote configuration
165 http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide 168 agent that runs on the host.
166 Under "Setup and Configuration of Intel AMT" => 169 For more information:
167 "SDK Tools Supporting Setup and Configuration" => 170 http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide
168 "Using the Local Agent Sample" 171 Under "Setup and Configuration of Intel AMT" =>
169 172 "SDK Tools Supporting Setup and Configuration" =>
170 An open source Intel AMT configuration utility, implementing a local agent 173 "Using the Local Agent Sample"
171 that accesses the Intel MEI driver, can be found here: 174
172 http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/ 175 An open source Intel AMT configuration utility, implementing a local agent
173 176 that accesses the Intel MEI driver, can be found here:
174 177 http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/
175Intel AMT OS Health Watchdog: 178
176============================= 179
180Intel AMT OS Health Watchdog
181============================
182
177The Intel AMT Watchdog is an OS Health (Hang/Crash) watchdog. 183The Intel AMT Watchdog is an OS Health (Hang/Crash) watchdog.
178Whenever the OS hangs or crashes, Intel AMT will send an event 184Whenever the OS hangs or crashes, Intel AMT will send an event
179to any subscriber to this event. This mechanism means that 185to any subscriber to this event. This mechanism means that
@@ -192,8 +198,10 @@ watchdog is 120 seconds.
192If the Intel AMT Watchdog feature does not exist (i.e. the connection failed), 198If the Intel AMT Watchdog feature does not exist (i.e. the connection failed),
193the Intel MEI driver will disable the sending of heartbeats. 199the Intel MEI driver will disable the sending of heartbeats.
194 200
195Supported Chipsets: 201
202Supported Chipsets
196================== 203==================
204
1977 Series Chipset Family 2057 Series Chipset Family
1986 Series Chipset Family 2066 Series Chipset Family
1995 Series Chipset Family 2075 Series Chipset Family
diff --git a/Documentation/networking/00-INDEX b/Documentation/networking/00-INDEX
index 557b6ef70c26..df27a1a50776 100644
--- a/Documentation/networking/00-INDEX
+++ b/Documentation/networking/00-INDEX
@@ -1,7 +1,5 @@
100-INDEX 100-INDEX
2 - this file 2 - this file
33c505.txt
4 - information on the 3Com EtherLink Plus (3c505) driver.
53c509.txt 33c509.txt
6 - information on the 3Com Etherlink III Series Ethernet cards. 4 - information on the 3Com Etherlink III Series Ethernet cards.
76pack.txt 56pack.txt
@@ -24,6 +22,8 @@ README.sb1000
24 - info on General Instrument/NextLevel SURFboard1000 cable modem. 22 - info on General Instrument/NextLevel SURFboard1000 cable modem.
25alias.txt 23alias.txt
26 - info on using alias network devices. 24 - info on using alias network devices.
25altera_tse.txt
26 - Altera Triple-Speed Ethernet controller.
27arcnet-hardware.txt 27arcnet-hardware.txt
28 - tons of info on ARCnet, hubs, jumper settings for ARCnet cards, etc. 28 - tons of info on ARCnet, hubs, jumper settings for ARCnet cards, etc.
29arcnet.txt 29arcnet.txt
@@ -42,6 +42,8 @@ bridge.txt
42 - where to get user space programs for ethernet bridging with Linux. 42 - where to get user space programs for ethernet bridging with Linux.
43can.txt 43can.txt
44 - documentation on CAN protocol family. 44 - documentation on CAN protocol family.
45cdc_mbim.txt
46 - 3G/LTE USB modem (Mobile Broadband Interface Model)
45cops.txt 47cops.txt
46 - info on the COPS LocalTalk Linux driver 48 - info on the COPS LocalTalk Linux driver
47cs89x0.txt 49cs89x0.txt
@@ -54,6 +56,8 @@ cxgb.txt
54 - Release Notes for the Chelsio N210 Linux device driver. 56 - Release Notes for the Chelsio N210 Linux device driver.
55dccp.txt 57dccp.txt
56 - the Datagram Congestion Control Protocol (DCCP) (RFC 4340..42). 58 - the Datagram Congestion Control Protocol (DCCP) (RFC 4340..42).
59dctcp.txt
60 - DataCenter TCP congestion control
57de4x5.txt 61de4x5.txt
58 - the Digital EtherWORKS DE4?? and DE5?? PCI Ethernet driver 62 - the Digital EtherWORKS DE4?? and DE5?? PCI Ethernet driver
59decnet.txt 63decnet.txt
diff --git a/Documentation/networking/can.txt b/Documentation/networking/can.txt
index 2236d6dcb7da..0a2859a8ee7e 100644
--- a/Documentation/networking/can.txt
+++ b/Documentation/networking/can.txt
@@ -234,7 +234,7 @@ solution for a couple of reasons:
234 mechanisms. Inside this filter definition the (interested) type of 234 mechanisms. Inside this filter definition the (interested) type of
235 errors may be selected. The reception of error messages is disabled 235 errors may be selected. The reception of error messages is disabled
236 by default. The format of the CAN error message frame is briefly 236 by default. The format of the CAN error message frame is briefly
237 described in the Linux header file "include/linux/can/error.h". 237 described in the Linux header file "include/uapi/linux/can/error.h".
238 238
2394. How to use SocketCAN 2394. How to use SocketCAN
240------------------------ 240------------------------
diff --git a/Documentation/networking/filter.txt b/Documentation/networking/filter.txt
index 58d08f8d8d80..9930ecfbb465 100644
--- a/Documentation/networking/filter.txt
+++ b/Documentation/networking/filter.txt
@@ -279,8 +279,8 @@ Possible BPF extensions are shown in the following table:
279 hatype skb->dev->type 279 hatype skb->dev->type
280 rxhash skb->hash 280 rxhash skb->hash
281 cpu raw_smp_processor_id() 281 cpu raw_smp_processor_id()
282 vlan_tci vlan_tx_tag_get(skb) 282 vlan_tci skb_vlan_tag_get(skb)
283 vlan_pr vlan_tx_tag_present(skb) 283 vlan_pr skb_vlan_tag_present(skb)
284 rand prandom_u32() 284 rand prandom_u32()
285 285
286These extensions can also be prefixed with '#'. 286These extensions can also be prefixed with '#'.
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt
index 85b022179104..1b8c964b0d17 100644
--- a/Documentation/networking/ip-sysctl.txt
+++ b/Documentation/networking/ip-sysctl.txt
@@ -290,6 +290,28 @@ tcp_frto - INTEGER
290 290
291 By default it's enabled with a non-zero value. 0 disables F-RTO. 291 By default it's enabled with a non-zero value. 0 disables F-RTO.
292 292
293tcp_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
293tcp_keepalive_time - INTEGER 315tcp_keepalive_time - INTEGER
294 How often TCP sends out keepalive messages when keepalive is enabled. 316 How often TCP sends out keepalive messages when keepalive is enabled.
295 Default: 2hours. 317 Default: 2hours.
@@ -1287,6 +1309,13 @@ accept_ra_rtr_pref - BOOLEAN
1287 Functional default: enabled if accept_ra is enabled. 1309 Functional default: enabled if accept_ra is enabled.
1288 disabled if accept_ra is disabled. 1310 disabled if accept_ra is disabled.
1289 1311
1312accept_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
1290accept_redirects - BOOLEAN 1319accept_redirects - BOOLEAN
1291 Accept Redirects. 1320 Accept Redirects.
1292 1321
diff --git a/Documentation/networking/netlink_mmap.txt b/Documentation/networking/netlink_mmap.txt
index c6af4bac5aa8..54f10478e8e3 100644
--- a/Documentation/networking/netlink_mmap.txt
+++ b/Documentation/networking/netlink_mmap.txt
@@ -199,16 +199,9 @@ frame header.
199TX limitations 199TX limitations
200-------------- 200--------------
201 201
202Kernel processing usually involves validation of the message received by 202As of Jan 2015 the message is always copied from the ring frame to an
203user-space, then processing its contents. The kernel must assure that 203allocated buffer due to unresolved security concerns.
204userspace is not able to modify the message contents after they have been 204See commit 4682a0358639b29cf ("netlink: Always copy on mmap TX.").
205validated. In order to do so, the message is copied from the ring frame
206to 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
211This means that for threaded programs, the kernel will fall back to copying.
212 205
213Example 206Example
214------- 207-------
diff --git a/Documentation/networking/nf_conntrack-sysctl.txt b/Documentation/networking/nf_conntrack-sysctl.txt
index 70da5086153d..f55599c62c9d 100644
--- a/Documentation/networking/nf_conntrack-sysctl.txt
+++ b/Documentation/networking/nf_conntrack-sysctl.txt
@@ -11,7 +11,8 @@ nf_conntrack_buckets - INTEGER (read-only)
11 Size of hash table. If not specified as parameter during module 11 Size of hash table. If not specified as parameter during module
12 loading, the default size is calculated by dividing total memory 12 loading, the default size is calculated by dividing total memory
13 by 16384 to determine the number of buckets but the hash table will 13 by 16384 to determine the number of buckets but the hash table will
14 never have fewer than 32 or more than 16384 buckets. 14 never have fewer than 32 and limited to 16384 buckets. For systems
15 with more than 4GB of memory it will be 65536 buckets.
15 16
16nf_conntrack_checksum - BOOLEAN 17nf_conntrack_checksum - BOOLEAN
17 0 - disabled 18 0 - disabled
diff --git a/Documentation/networking/openvswitch.txt b/Documentation/networking/openvswitch.txt
index 37c20ee2455e..b3b9ac61d29d 100644
--- a/Documentation/networking/openvswitch.txt
+++ b/Documentation/networking/openvswitch.txt
@@ -131,6 +131,19 @@ performs best-effort detection of overlapping wildcarded flows and may reject
131some but not all of them. However, this behavior may change in future versions. 131some but not all of them. However, this behavior may change in future versions.
132 132
133 133
134Unique flow identifiers
135-----------------------
136
137An alternative to using the original match portion of a key as the handle for
138flow identification is a unique flow identifier, or "UFID". UFIDs are optional
139for both the kernel and user space program.
140
141User space programs that support UFID are expected to provide it during flow
142setup in addition to the flow, then refer to the flow using the UFID for all
143future operations. The kernel is not required to index flows by the original
144flow key if a UFID is specified.
145
146
134Basic rule for evolving flow keys 147Basic rule for evolving flow keys
135--------------------------------- 148---------------------------------
136 149
diff --git a/Documentation/networking/timestamping.txt b/Documentation/networking/timestamping.txt
index a5c784c89312..5f0922613f1a 100644
--- a/Documentation/networking/timestamping.txt
+++ b/Documentation/networking/timestamping.txt
@@ -162,6 +162,27 @@ SOF_TIMESTAMPING_OPT_CMSG:
162 option IP_PKTINFO simultaneously. 162 option IP_PKTINFO simultaneously.
163 163
164 164
165SOF_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
175New applications are encouraged to pass SOF_TIMESTAMPING_OPT_ID to
176disambiguate timestamps and SOF_TIMESTAMPING_OPT_TSONLY to operate
177regardless of the setting of sysctl net.core.tstamp_allow_data.
178
179An exception is when a process needs additional cmsg data, for
180instance SOL_IP/IP_PKTINFO to detect the egress network interface.
181Then pass option SOF_TIMESTAMPING_OPT_CMSG. This option depends on
182having access to the contents of the original packet, so cannot be
183combined with SOF_TIMESTAMPING_OPT_TSONLY.
184
185
1651.4 Bytestream Timestamps 1861.4 Bytestream Timestamps
166 187
167The SO_TIMESTAMPING interface supports timestamping of bytes in a 188The SO_TIMESTAMPING interface supports timestamping of bytes in a
diff --git a/Documentation/networking/timestamping/txtimestamp.c b/Documentation/networking/timestamping/txtimestamp.c
index 876f71c5625a..8217510d3842 100644
--- a/Documentation/networking/timestamping/txtimestamp.c
+++ b/Documentation/networking/timestamping/txtimestamp.c
@@ -30,6 +30,8 @@
30 * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. 30 * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
31 */ 31 */
32 32
33#define _GNU_SOURCE
34
33#include <arpa/inet.h> 35#include <arpa/inet.h>
34#include <asm/types.h> 36#include <asm/types.h>
35#include <error.h> 37#include <error.h>
@@ -59,14 +61,6 @@
59#include <time.h> 61#include <time.h>
60#include <unistd.h> 62#include <unistd.h>
61 63
62/* ugly hack to work around netinet/in.h and linux/ipv6.h conflicts */
63#ifndef in6_pktinfo
64struct in6_pktinfo {
65 struct in6_addr ipi6_addr;
66 int ipi6_ifindex;
67};
68#endif
69
70/* command line parameters */ 64/* command line parameters */
71static int cfg_proto = SOCK_STREAM; 65static int cfg_proto = SOCK_STREAM;
72static int cfg_ipproto = IPPROTO_TCP; 66static int cfg_ipproto = IPPROTO_TCP;
@@ -76,6 +70,7 @@ static int do_ipv6 = 1;
76static int cfg_payload_len = 10; 70static int cfg_payload_len = 10;
77static bool cfg_show_payload; 71static bool cfg_show_payload;
78static bool cfg_do_pktinfo; 72static bool cfg_do_pktinfo;
73static bool cfg_loop_nodata;
79static uint16_t dest_port = 9000; 74static uint16_t dest_port = 9000;
80 75
81static struct sockaddr_in daddr; 76static struct sockaddr_in daddr;
@@ -147,6 +142,9 @@ static void print_payload(char *data, int len)
147{ 142{
148 int i; 143 int i;
149 144
145 if (!len)
146 return;
147
150 if (len > 70) 148 if (len > 70)
151 len = 70; 149 len = 70;
152 150
@@ -183,6 +181,7 @@ static void __recv_errmsg_cmsg(struct msghdr *msg, int payload_len)
183 struct sock_extended_err *serr = NULL; 181 struct sock_extended_err *serr = NULL;
184 struct scm_timestamping *tss = NULL; 182 struct scm_timestamping *tss = NULL;
185 struct cmsghdr *cm; 183 struct cmsghdr *cm;
184 int batch = 0;
186 185
187 for (cm = CMSG_FIRSTHDR(msg); 186 for (cm = CMSG_FIRSTHDR(msg);
188 cm && cm->cmsg_len; 187 cm && cm->cmsg_len;
@@ -215,10 +214,18 @@ static void __recv_errmsg_cmsg(struct msghdr *msg, int payload_len)
215 } else 214 } else
216 fprintf(stderr, "unknown cmsg %d,%d\n", 215 fprintf(stderr, "unknown cmsg %d,%d\n",
217 cm->cmsg_level, cm->cmsg_type); 216 cm->cmsg_level, cm->cmsg_type);
217
218 if (serr && tss) {
219 print_timestamp(tss, serr->ee_info, serr->ee_data,
220 payload_len);
221 serr = NULL;
222 tss = NULL;
223 batch++;
224 }
218 } 225 }
219 226
220 if (serr && tss) 227 if (batch > 1)
221 print_timestamp(tss, serr->ee_info, serr->ee_data, payload_len); 228 fprintf(stderr, "batched %d timestamps\n", batch);
222} 229}
223 230
224static int recv_errmsg(int fd) 231static int recv_errmsg(int fd)
@@ -250,7 +257,7 @@ static int recv_errmsg(int fd)
250 if (ret == -1 && errno != EAGAIN) 257 if (ret == -1 && errno != EAGAIN)
251 error(1, errno, "recvmsg"); 258 error(1, errno, "recvmsg");
252 259
253 if (ret > 0) { 260 if (ret >= 0) {
254 __recv_errmsg_cmsg(&msg, ret); 261 __recv_errmsg_cmsg(&msg, ret);
255 if (cfg_show_payload) 262 if (cfg_show_payload)
256 print_payload(data, cfg_payload_len); 263 print_payload(data, cfg_payload_len);
@@ -315,6 +322,9 @@ static void do_test(int family, unsigned int opt)
315 opt |= SOF_TIMESTAMPING_SOFTWARE | 322 opt |= SOF_TIMESTAMPING_SOFTWARE |
316 SOF_TIMESTAMPING_OPT_CMSG | 323 SOF_TIMESTAMPING_OPT_CMSG |
317 SOF_TIMESTAMPING_OPT_ID; 324 SOF_TIMESTAMPING_OPT_ID;
325 if (cfg_loop_nodata)
326 opt |= SOF_TIMESTAMPING_OPT_TSONLY;
327
318 if (setsockopt(fd, SOL_SOCKET, SO_TIMESTAMPING, 328 if (setsockopt(fd, SOL_SOCKET, SO_TIMESTAMPING,
319 (char *) &opt, sizeof(opt))) 329 (char *) &opt, sizeof(opt)))
320 error(1, 0, "setsockopt timestamping"); 330 error(1, 0, "setsockopt timestamping");
@@ -384,6 +394,7 @@ static void __attribute__((noreturn)) usage(const char *filepath)
384 " -h: show this message\n" 394 " -h: show this message\n"
385 " -I: request PKTINFO\n" 395 " -I: request PKTINFO\n"
386 " -l N: send N bytes at a time\n" 396 " -l N: send N bytes at a time\n"
397 " -n: set no-payload option\n"
387 " -r: use raw\n" 398 " -r: use raw\n"
388 " -R: use raw (IP_HDRINCL)\n" 399 " -R: use raw (IP_HDRINCL)\n"
389 " -p N: connect to port N\n" 400 " -p N: connect to port N\n"
@@ -398,7 +409,7 @@ static void parse_opt(int argc, char **argv)
398 int proto_count = 0; 409 int proto_count = 0;
399 char c; 410 char c;
400 411
401 while ((c = getopt(argc, argv, "46hIl:p:rRux")) != -1) { 412 while ((c = getopt(argc, argv, "46hIl:np:rRux")) != -1) {
402 switch (c) { 413 switch (c) {
403 case '4': 414 case '4':
404 do_ipv6 = 0; 415 do_ipv6 = 0;
@@ -409,6 +420,9 @@ static void parse_opt(int argc, char **argv)
409 case 'I': 420 case 'I':
410 cfg_do_pktinfo = true; 421 cfg_do_pktinfo = true;
411 break; 422 break;
423 case 'n':
424 cfg_loop_nodata = true;
425 break;
412 case 'r': 426 case 'r':
413 proto_count++; 427 proto_count++;
414 cfg_proto = SOCK_RAW; 428 cfg_proto = SOCK_RAW;
diff --git a/Documentation/oops-tracing.txt b/Documentation/oops-tracing.txt
index beefb9f82902..f3ac05cc23e4 100644
--- a/Documentation/oops-tracing.txt
+++ b/Documentation/oops-tracing.txt
@@ -270,6 +270,8 @@ characters, each representing a particular tainted value.
270 270
271 15: 'L' if a soft lockup has previously occurred on the system. 271 15: 'L' if a soft lockup has previously occurred on the system.
272 272
273 16: 'K' if the kernel has been live patched.
274
273The primary reason for the 'Tainted: ' string is to tell kernel 275The primary reason for the 'Tainted: ' string is to tell kernel
274debuggers if this is a clean kernel or if anything unusual has 276debuggers if this is a clean kernel or if anything unusual has
275occurred. Tainting is permanent: even if an offending module is 277occurred. Tainting is permanent: even if an offending module is
diff --git a/Documentation/power/s2ram.txt b/Documentation/power/s2ram.txt
index 1bdfa0443773..4685aee197fd 100644
--- a/Documentation/power/s2ram.txt
+++ b/Documentation/power/s2ram.txt
@@ -69,6 +69,10 @@ Reason for this is that the RTC is the only reliably available piece of
69hardware during resume operations where a value can be set that will 69hardware during resume operations where a value can be set that will
70survive a reboot. 70survive a reboot.
71 71
72pm_trace is not compatible with asynchronous suspend, so it turns
73asynchronous suspend off (which may work around timing or
74ordering-sensitive bugs).
75
72Consequence is that after a resume (even if it is successful) your system 76Consequence is that after a resume (even if it is successful) your system
73clock will have a value corresponding to the magic number instead of the 77clock will have a value corresponding to the magic number instead of the
74correct date/time! It is therefore advisable to use a program like ntp-date 78correct date/time! It is therefore advisable to use a program like ntp-date
diff --git a/Documentation/rfkill.txt b/Documentation/rfkill.txt
index 427e89712f4a..2ee6ef9a6554 100644
--- a/Documentation/rfkill.txt
+++ b/Documentation/rfkill.txt
@@ -25,6 +25,9 @@ whether they can be changed or not:
25 - soft block: writable radio block (need not be readable) that is set by 25 - soft block: writable radio block (need not be readable) that is set by
26 the system software. 26 the system software.
27 27
28The rfkill subsystem has two parameters, rfkill.default_state and
29rfkill.master_switch_mode, which are documented in kernel-parameters.txt.
30
28 31
292. Implementation details 322. Implementation details
30 33
diff --git a/Documentation/s390/Debugging390.txt b/Documentation/s390/Debugging390.txt
index 08911b5c6b0e..3df8babcdc41 100644
--- a/Documentation/s390/Debugging390.txt
+++ b/Documentation/s390/Debugging390.txt
@@ -1,14 +1,14 @@
1 1
2 Debugging on Linux for s/390 & z/Architecture 2 Debugging on Linux for s/390 & z/Architecture
3 by 3 by
4 Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com) 4 Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com)
5 Copyright (C) 2000-2001 IBM Deutschland Entwicklung GmbH, IBM Corporation 5 Copyright (C) 2000-2001 IBM Deutschland Entwicklung GmbH, IBM Corporation
6 Best viewed with fixed width fonts 6 Best viewed with fixed width fonts
7 7
8Overview of Document: 8Overview of Document:
9===================== 9=====================
10This document is intended to give a good overview of how to debug 10This document is intended to give a good overview of how to debug Linux for
11Linux for s/390 & z/Architecture. It isn't intended as a complete reference & not a 11s/390 and z/Architecture. It is not intended as a complete reference and not a
12tutorial on the fundamentals of C & assembly. It doesn't go into 12tutorial on the fundamentals of C & assembly. It doesn't go into
13390 IO in any detail. It is intended to complement the documents in the 13390 IO in any detail. It is intended to complement the documents in the
14reference section below & any other worthwhile references you get. 14reference section below & any other worthwhile references you get.
@@ -35,7 +35,6 @@ Examining core dumps
35ldd 35ldd
36Debugging modules 36Debugging modules
37The proc file system 37The proc file system
38Starting points for debugging scripting languages etc.
39SysRq 38SysRq
40References 39References
41Special Thanks 40Special Thanks
@@ -44,18 +43,20 @@ Register Set
44============ 43============
45The current architectures have the following registers. 44The current architectures have the following registers.
46 45
4716 General propose registers, 32 bit on s/390 64 bit on z/Architecture, r0-r15 or gpr0-gpr15 used for arithmetic & addressing. 4616 General propose registers, 32 bit on s/390 and 64 bit on z/Architecture,
48 47r0-r15 (or gpr0-gpr15), used for arithmetic and addressing.
4916 Control registers, 32 bit on s/390 64 bit on z/Architecture, ( cr0-cr15 kernel usage only ) used for memory management, 48
50interrupt control,debugging control etc. 4916 Control registers, 32 bit on s/390 and 64 bit on z/Architecture, cr0-cr15,
51 50kernel usage only, used for memory management, interrupt control, debugging
5216 Access registers ( ar0-ar15 ) 32 bit on s/390 & z/Architecture 51control etc.
53not used by normal programs but potentially could 52
54be used as temporary storage. Their main purpose is their 1 to 1 5316 Access registers (ar0-ar15), 32 bit on both s/390 and z/Architecture,
55association with general purpose registers and are used in 54normally not used by normal programs but potentially could be used as
56the kernel for copying data between kernel & user address spaces. 55temporary storage. These registers have a 1:1 association with general
57Access register 0 ( & access register 1 on z/Architecture ( needs 64 bit 56purpose registers and are designed to be used in the so-called access
58pointer ) ) is currently used by the pthread library as a pointer to 57register mode to select different address spaces.
58Access register 0 (and access register 1 on z/Architecture, which needs a
5964 bit pointer) is currently used by the pthread library as a pointer to
59the current running threads private area. 60the current running threads private area.
60 61
6116 64 bit floating point registers (fp0-fp15 ) IEEE & HFP floating 6216 64 bit floating point registers (fp0-fp15 ) IEEE & HFP floating
@@ -90,18 +91,19 @@ s/390 z/Architecture
90 91
916 6 Input/Output interrupt Mask 926 6 Input/Output interrupt Mask
92 93
937 7 External interrupt Mask used primarily for interprocessor signalling & 947 7 External interrupt Mask used primarily for interprocessor
94 clock interrupts. 95 signalling and clock interrupts.
95 96
968-11 8-11 PSW Key used for complex memory protection mechanism not used under linux 978-11 8-11 PSW Key used for complex memory protection mechanism
98 (not used under linux)
97 99
9812 12 1 on s/390 0 on z/Architecture 10012 12 1 on s/390 0 on z/Architecture
99 101
10013 13 Machine Check Mask 1=enable machine check interrupts 10213 13 Machine Check Mask 1=enable machine check interrupts
101 103
10214 14 Wait State set this to 1 to stop the processor except for interrupts & give 10414 14 Wait State. Set this to 1 to stop the processor except for
103 time to other LPARS used in CPU idle in the kernel to increase overall 105 interrupts and give time to other LPARS. Used in CPU idle in
104 usage of processor resources. 106 the kernel to increase overall usage of processor resources.
105 107
10615 15 Problem state ( if set to 1 certain instructions are disabled ) 10815 15 Problem state ( if set to 1 certain instructions are disabled )
107 all linux user programs run with this bit 1 109 all linux user programs run with this bit 1
@@ -165,21 +167,23 @@ s/390 z/Architecture
165 when loading the address with LPSWE otherwise a 167 when loading the address with LPSWE otherwise a
166 specification exception occurs, LPSW is fully backward 168 specification exception occurs, LPSW is fully backward
167 compatible. 169 compatible.
168 170
169 171
170Prefix Page(s) 172Prefix Page(s)
171-------------- 173--------------
172This per cpu memory area is too intimately tied to the processor not to mention. 174This per cpu memory area is too intimately tied to the processor not to mention.
173It exists between the real addresses 0-4096 on s/390 & 0-8192 z/Architecture & is exchanged 175It exists between the real addresses 0-4096 on s/390 and between 0-8192 on
174with a 1 page on s/390 or 2 pages on z/Architecture in absolute storage by the set 176z/Architecture and is exchanged with one page on s/390 or two pages on
175prefix instruction in linux'es startup. 177z/Architecture in absolute storage by the set prefix instruction during Linux
176This page is mapped to a different prefix for each processor in an SMP configuration 178startup.
177( assuming the os designer is sane of course :-) ). 179This page is mapped to a different prefix for each processor in an SMP
178Bytes 0-512 ( 200 hex ) on s/390 & 0-512,4096-4544,4604-5119 currently on z/Architecture 180configuration (assuming the OS designer is sane of course).
179are used by the processor itself for holding such information as exception indications & 181Bytes 0-512 (200 hex) on s/390 and 0-512, 4096-4544, 4604-5119 currently on
180entry points for exceptions. 182z/Architecture are used by the processor itself for holding such information
181Bytes after 0xc00 hex are used by linux for per processor globals on s/390 & z/Architecture 183as exception indications and entry points for exceptions.
182( there is a gap on z/Architecture too currently between 0xc00 & 1000 which linux uses ). 184Bytes after 0xc00 hex are used by linux for per processor globals on s/390 and
185z/Architecture (there is a gap on z/Architecture currently between 0xc00 and
1860x1000, too, which is used by Linux).
183The closest thing to this on traditional architectures is the interrupt 187The closest thing to this on traditional architectures is the interrupt
184vector table. This is a good thing & does simplify some of the kernel coding 188vector table. This is a good thing & does simplify some of the kernel coding
185however it means that we now cannot catch stray NULL pointers in the 189however it means that we now cannot catch stray NULL pointers in the
@@ -192,26 +196,26 @@ Address Spaces on Intel Linux
192 196
193The traditional Intel Linux is approximately mapped as follows forgive 197The traditional Intel Linux is approximately mapped as follows forgive
194the ascii art. 198the ascii art.
1950xFFFFFFFF 4GB Himem ***************** 1990xFFFFFFFF 4GB Himem *****************
196 * * 200 * *
197 * Kernel Space * 201 * Kernel Space *
198 * * 202 * *
199 ***************** **************** 203 ***************** ****************
200User Space Himem (typically 0xC0000000 3GB )* User Stack * * * 204User Space Himem * User Stack * * *
201 ***************** * * 205(typically 0xC0000000 3GB ) ***************** * *
202 * Shared Libs * * Next Process * 206 * Shared Libs * * Next Process *
203 ***************** * to * 207 ***************** * to *
204 * * <== * Run * <== 208 * * <== * Run * <==
205 * User Program * * * 209 * User Program * * *
206 * Data BSS * * * 210 * Data BSS * * *
207 * Text * * * 211 * Text * * *
208 * Sections * * * 212 * Sections * * *
2090x00000000 ***************** **************** 2130x00000000 ***************** ****************
210 214
211Now it is easy to see that on Intel it is quite easy to recognise a kernel address 215Now it is easy to see that on Intel it is quite easy to recognise a kernel
212as being one greater than user space himem ( in this case 0xC0000000). 216address 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 217and addresses of less than this are the ones in the current running program on
214processor ( if an smp box ). 218this processor (if an smp box).
215If using the virtual machine ( VM ) as a debugger it is quite difficult to 219If using the virtual machine ( VM ) as a debugger it is quite difficult to
216know which user process is running as the address space you are looking at 220know which user process is running as the address space you are looking at
217could be from any process in the run queue. 221could be from any process in the run queue.
@@ -247,8 +251,8 @@ Our addressing scheme is basically as follows:
247Himem 0x7fffffff 2GB on s/390 ***************** **************** 251Himem 0x7fffffff 2GB on s/390 ***************** ****************
248currently 0x3ffffffffff (2^42)-1 * User Stack * * * 252currently 0x3ffffffffff (2^42)-1 * User Stack * * *
249on z/Architecture. ***************** * * 253on z/Architecture. ***************** * *
250 * Shared Libs * * * 254 * Shared Libs * * *
251 ***************** * * 255 ***************** * *
252 * * * Kernel * 256 * * * Kernel *
253 * User Program * * * 257 * User Program * * *
254 * Data BSS * * * 258 * Data BSS * * *
@@ -301,10 +305,10 @@ Virtual Addresses on s/390 & z/Architecture
301=========================================== 305===========================================
302 306
303A virtual address on s/390 is made up of 3 parts 307A virtual address on s/390 is made up of 3 parts
304The SX ( segment index, roughly corresponding to the PGD & PMD in linux terminology ) 308The SX (segment index, roughly corresponding to the PGD & PMD in Linux
305being bits 1-11. 309terminology) being bits 1-11.
306The PX ( page index, corresponding to the page table entry (pte) in linux terminology ) 310The PX (page index, corresponding to the page table entry (pte) in Linux
307being bits 12-19. 311terminology) being bits 12-19.
308The remaining bits BX (the byte index are the offset in the page ) 312The remaining bits BX (the byte index are the offset in the page )
309i.e. bits 20 to 31. 313i.e. bits 20 to 31.
310 314
@@ -368,9 +372,9 @@ each processor as follows.
368 * ( 8K ) * 372 * ( 8K ) *
36916K aligned ************************ 37316K aligned ************************
370 374
371What this means is that we don't need to dedicate any register or global variable 375What this means is that we don't need to dedicate any register or global
372to point to the current running process & can retrieve it with the following 376variable to point to the current running process & can retrieve it with the
373very simple construct for s/390 & one very similar for z/Architecture. 377following very simple construct for s/390 & one very similar for z/Architecture.
374 378
375static inline struct task_struct * get_current(void) 379static inline struct task_struct * get_current(void)
376{ 380{
@@ -403,8 +407,8 @@ Note: To follow stackframes requires a knowledge of C or Pascal &
403limited knowledge of one assembly language. 407limited knowledge of one assembly language.
404 408
405It should be noted that there are some differences between the 409It should be noted that there are some differences between the
406s/390 & z/Architecture stack layouts as the z/Architecture stack layout didn't have 410s/390 and z/Architecture stack layouts as the z/Architecture stack layout
407to maintain compatibility with older linkage formats. 411didn't have to maintain compatibility with older linkage formats.
408 412
409Glossary: 413Glossary:
410--------- 414---------
@@ -440,7 +444,7 @@ The code generated by the compiler to return to the caller.
440 444
441frameless-function 445frameless-function
442A frameless function in Linux for s390 & z/Architecture is one which doesn't 446A frameless function in Linux for s390 & z/Architecture is one which doesn't
443need more than the register save area ( 96 bytes on s/390, 160 on z/Architecture ) 447need more than the register save area (96 bytes on s/390, 160 on z/Architecture)
444given to it by the caller. 448given to it by the caller.
445A frameless function never: 449A frameless function never:
4461) Sets up a back chain. 4501) Sets up a back chain.
@@ -588,8 +592,8 @@ A sample program with comments.
588 592
589Comments on the function test 593Comments on the function test
590----------------------------- 594-----------------------------
5911) It didn't need to set up a pointer to the constant pool gpr13 as it isn't used 5951) It didn't need to set up a pointer to the constant pool gpr13 as it is not
592( :-( ). 596used ( :-( ).
5932) This is a frameless function & no stack is bought. 5972) This is a frameless function & no stack is bought.
5943) The compiler was clever enough to recognise that it could return the 5983) The compiler was clever enough to recognise that it could return the
595value in r2 as well as use it for the passed in parameter ( :-) ). 599value in r2 as well as use it for the passed in parameter ( :-) ).
@@ -743,35 +747,34 @@ Debugging under VM
743Notes 747Notes
744----- 748-----
745Addresses & values in the VM debugger are always hex never decimal 749Addresses & values in the VM debugger are always hex never decimal
746Address ranges are of the format <HexValue1>-<HexValue2> or <HexValue1>.<HexValue2> 750Address ranges are of the format <HexValue1>-<HexValue2> or
747e.g. The address range 0x2000 to 0x3000 can be described as 2000-3000 or 2000.1000 751<HexValue1>.<HexValue2>
752For example, the address range 0x2000 to 0x3000 can be described as 2000-3000
753or 2000.1000
748 754
749The VM Debugger is case insensitive. 755The VM Debugger is case insensitive.
750 756
751VM's strengths are usually other debuggers weaknesses you can get at any resource 757VM's strengths are usually other debuggers weaknesses you can get at any
752no matter how sensitive e.g. memory management resources,change address translation 758resource no matter how sensitive e.g. memory management resources, change
753in the PSW. For kernel hacking you will reap dividends if you get good at it. 759address translation in the PSW. For kernel hacking you will reap dividends if
754 760you get good at it.
755The VM Debugger displays operators but not operands, probably because some 761
756of it was written when memory was expensive & the programmer was probably proud that 762The VM Debugger displays operators but not operands, and also the debugger
757it fitted into 2k of memory & the programmers & didn't want to shock hardcore VM'ers by 763displays useful information on the same line as the author of the code probably
758changing the interface :-), also the debugger displays useful information on the same line & 764felt that it was a good idea not to go over the 80 columns on the screen.
759the author of the code probably felt that it was a good idea not to go over 765This isn't as unintuitive as it may seem as the s/390 instructions are easy to
760the 80 columns on the screen. 766decode mentally and you can make a good guess at a lot of them as all the
761 767operands are nibble (half byte aligned).
762As some of you are probably in a panic now this isn't as unintuitive as it may seem 768So if you have an objdump listing by hand, it is quite easy to follow, and if
763as the 390 instructions are easy to decode mentally & you can make a good guess at a lot 769you don't have an objdump listing keep a copy of the s/390 Reference Summary
764of them as all the operands are nibble ( half byte aligned ) & if you have an objdump listing 770or alternatively the s/390 principles of operation next to you.
765also it is quite easy to follow, if you don't have an objdump listing keep a copy of
766the s/390 Reference Summary & look at between pages 2 & 7 or alternatively the
767s/390 principles of operation.
768e.g. even I can guess that 771e.g. even I can guess that
7690001AFF8' LR 180F CC 0 7720001AFF8' LR 180F CC 0
770is a ( load register ) lr r0,r15 773is a ( load register ) lr r0,r15
771 774
772Also it is very easy to tell the length of a 390 instruction from the 2 most significant 775Also it is very easy to tell the length of a 390 instruction from the 2 most
773bits in the instruction ( not that this info is really useful except if you are trying to 776significant bits in the instruction (not that this info is really useful except
774make sense of a hexdump of code ). 777if you are trying to make sense of a hexdump of code).
775Here is a table 778Here is a table
776Bits Instruction Length 779Bits Instruction Length
777------------------------------------------ 780------------------------------------------
@@ -780,9 +783,6 @@ Bits Instruction Length
78010 4 Bytes 78310 4 Bytes
78111 6 Bytes 78411 6 Bytes
782 785
783
784
785
786The debugger also displays other useful info on the same line such as the 786The debugger also displays other useful info on the same line such as the
787addresses being operated on destination addresses of branches & condition codes. 787addresses being operated on destination addresses of branches & condition codes.
788e.g. 788e.g.
@@ -853,8 +853,8 @@ Displaying & modifying Registers
853-------------------------------- 853--------------------------------
854D G will display all the gprs 854D G will display all the gprs
855Adding a extra G to all the commands is necessary to access the full 64 bit 855Adding a extra G to all the commands is necessary to access the full 64 bit
856content in VM on z/Architecture obviously this isn't required for access registers 856content in VM on z/Architecture. Obviously this isn't required for access
857as these are still 32 bit. 857registers as these are still 32 bit.
858e.g. DGG instead of DG 858e.g. DGG instead of DG
859D X will display all the control registers 859D X will display all the control registers
860D AR will display all the access registers 860D AR will display all the access registers
@@ -870,10 +870,11 @@ Displaying Memory
870----------------- 870-----------------
871To display memory mapped using the current PSW's mapping try 871To display memory mapped using the current PSW's mapping try
872D <range> 872D <range>
873To make VM display a message each time it hits a particular address & continue try 873To make VM display a message each time it hits a particular address and
874continue try
874D I<range> will disassemble/display a range of instructions. 875D I<range> will disassemble/display a range of instructions.
875ST addr 32 bit word will store a 32 bit aligned address 876ST addr 32 bit word will store a 32 bit aligned address
876D T<range> will display the EBCDIC in an address ( if you are that way inclined ) 877D T<range> will display the EBCDIC in an address (if you are that way inclined)
877D R<range> will display real addresses ( without DAT ) but with prefixing. 878D R<range> will display real addresses ( without DAT ) but with prefixing.
878There are other complex options to display if you need to get at say home space 879There are other complex options to display if you need to get at say home space
879but are in primary space the easiest thing to do is to temporarily 880but are in primary space the easiest thing to do is to temporarily
@@ -884,8 +885,8 @@ restore it.
884 885
885Hints 886Hints
886----- 887-----
887If you want to issue a debugger command without halting your virtual machine with the 888If you want to issue a debugger command without halting your virtual machine
888PA1 key try prefixing the command with #CP e.g. 889with the PA1 key try prefixing the command with #CP e.g.
889#cp tr i pswa 2000 890#cp tr i pswa 2000
890also suffixing most debugger commands with RUN will cause them not 891also suffixing most debugger commands with RUN will cause them not
891to stop just display the mnemonic at the current instruction on the console. 892to 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.
903script with breakpoints on every kernel procedure, this isn't a good idea 904script with breakpoints on every kernel procedure, this isn't a good idea
904because there are thousands of these routines & VM can only set 255 breakpoints 905because there are thousands of these routines & VM can only set 255 breakpoints
905at a time so you nearly had to spend as long pruning the file down as you would 906at a time so you nearly had to spend as long pruning the file down as you would
906entering the msg's by hand ),however, the trick might be useful for a single object file. 907entering the msgs by hand), however, the trick might be useful for a single
907On linux'es 3270 emulator x3270 there is a very useful option under the file ment 908object file. In the 3270 terminal emulator x3270 there is a very useful option
908Save Screens In File this is very good of keeping a copy of traces. 909in the file menu called "Save Screen In File" - this is very good for keeping a
910copy of traces.
909 911
910From CMS help <command name> will give you online help on a particular command. 912From CMS help <command name> will give you online help on a particular command.
911e.g. 913e.g.
@@ -920,7 +922,8 @@ SET PF9 IMM B
920This does a single step in VM on pressing F8. 922This does a single step in VM on pressing F8.
921SET PF10 ^ 923SET PF10 ^
922This sets up the ^ key. 924This sets up the ^ key.
923which can be used for ^c (ctrl-c),^z (ctrl-z) which can't be typed directly into some 3270 consoles. 925which can be used for ^c (ctrl-c),^z (ctrl-z) which can't be typed directly
926into some 3270 consoles.
924SET PF11 ^- 927SET PF11 ^-
925This types the starting keystrokes for a sysrq see SysRq below. 928This types the starting keystrokes for a sysrq see SysRq below.
926SET PF12 RETRIEVE 929SET PF12 RETRIEVE
@@ -1014,8 +1017,8 @@ Tracing Program Exceptions
1014-------------------------- 1017--------------------------
1015If you get a crash which says something like 1018If you get a crash which says something like
1016illegal operation or specification exception followed by a register dump 1019illegal operation or specification exception followed by a register dump
1017You can restart linux & trace these using the tr prog <range or value> trace option. 1020You can restart linux & trace these using the tr prog <range or value> trace
1018 1021option.
1019 1022
1020 1023
1021The most common ones you will normally be tracing for is 1024The most common ones you will normally be tracing for is
@@ -1057,9 +1060,10 @@ TR GOTO INITIAL
1057 1060
1058Tracing linux syscalls under VM 1061Tracing linux syscalls under VM
1059------------------------------- 1062-------------------------------
1060Syscalls are implemented on Linux for S390 by the Supervisor call instruction (SVC) there 256 1063Syscalls are implemented on Linux for S390 by the Supervisor call instruction
1061possibilities of these as the instruction is made up of a 0xA opcode & the second byte being 1064(SVC). There 256 possibilities of these as the instruction is made up of a 0xA
1062the syscall number. They are traced using the simple command. 1065opcode and the second byte being the syscall number. They are traced using the
1066simple command:
1063TR SVC <Optional value or range> 1067TR SVC <Optional value or range>
1064the syscalls are defined in linux/arch/s390/include/asm/unistd.h 1068the syscalls are defined in linux/arch/s390/include/asm/unistd.h
1065e.g. to trace all file opens just do 1069e.g. to trace all file opens just do
@@ -1070,12 +1074,12 @@ SMP Specific commands
1070--------------------- 1074---------------------
1071To find out how many cpus you have 1075To find out how many cpus you have
1072Q CPUS displays all the CPU's available to your virtual machine 1076Q CPUS displays all the CPU's available to your virtual machine
1073To find the cpu that the current cpu VM debugger commands are being directed at do 1077To find the cpu that the current cpu VM debugger commands are being directed at
1074Q CPU to change the current cpu VM debugger commands are being directed at do 1078do Q CPU to change the current cpu VM debugger commands are being directed at do
1075CPU <desired cpu no> 1079CPU <desired cpu no>
1076 1080
1077On a SMP guest issue a command to all CPUs try prefixing the command with cpu all. 1081On a SMP guest issue a command to all CPUs try prefixing the command with cpu
1078To issue a command to a particular cpu try cpu <cpu number> e.g. 1082all. To issue a command to a particular cpu try cpu <cpu number> e.g.
1079CPU 01 TR I R 2000.3000 1083CPU 01 TR I R 2000.3000
1080If you are running on a guest with several cpus & you have a IO related problem 1084If you are running on a guest with several cpus & you have a IO related problem
1081& cannot follow the flow of code but you know it isn't smp related. 1085& cannot follow the flow of code but you know it isn't smp related.
@@ -1101,10 +1105,10 @@ D TX0.100
1101 1105
1102Alternatively 1106Alternatively
1103============= 1107=============
1104Under older VM debuggers ( I love EBDIC too ) you can use this little program I wrote which 1108Under older VM debuggers (I love EBDIC too) you can use following little
1105will convert a command line of hex digits to ascii text which can be compiled under linux & 1109program which converts a command line of hex digits to ascii text. It can be
1106you can copy the hex digits from your x3270 terminal to your xterm if you are debugging 1110compiled under linux and you can copy the hex digits from your x3270 terminal
1107from a linuxbox. 1111to your xterm if you are debugging from a linuxbox.
1108 1112
1109This is quite useful when looking at a parameter passed in as a text string 1113This is quite useful when looking at a parameter passed in as a text string
1110under VM ( unless you are good at decoding ASCII in your head ). 1114under VM ( unless you are good at decoding ASCII in your head ).
@@ -1114,14 +1118,14 @@ TR SVC 5
1114We have stopped at a breakpoint 1118We have stopped at a breakpoint
1115000151B0' SVC 0A05 -> 0001909A' CC 0 1119000151B0' SVC 0A05 -> 0001909A' CC 0
1116 1120
1117D 20.8 to check the SVC old psw in the prefix area & see was it from userspace 1121D 20.8 to check the SVC old psw in the prefix area and see was it from userspace
1118( for the layout of the prefix area consult P18 of the s/390 390 Reference Summary 1122(for the layout of the prefix area consult the "Fixed Storage Locations"
1119if you have it available ). 1123chapter of the s/390 Reference Summary if you have it available).
1120V00000020 070C2000 800151B2 1124V00000020 070C2000 800151B2
1121The problem state bit wasn't set & it's also too early in the boot sequence 1125The problem state bit wasn't set & it's also too early in the boot sequence
1122for it to be a userspace SVC if it was we would have to temporarily switch the 1126for it to be a userspace SVC if it was we would have to temporarily switch the
1123psw to user space addressing so we could get at the first parameter of the open in 1127psw to user space addressing so we could get at the first parameter of the open
1124gpr2. 1128in gpr2.
1125Next do a 1129Next do a
1126D G2 1130D G2
1127GPR 2 = 00014CB4 1131GPR 2 = 00014CB4
@@ -1208,9 +1212,9 @@ Here are the tricks I use 9 out of 10 times it works pretty well,
1208 1212
1209When your backchain reaches a dead end 1213When your backchain reaches a dead end
1210-------------------------------------- 1214--------------------------------------
1211This can happen when an exception happens in the kernel & the kernel is entered twice 1215This can happen when an exception happens in the kernel and the kernel is
1212if you reach the NULL pointer at the end of the back chain you should be 1216entered twice. If you reach the NULL pointer at the end of the back chain you
1213able to sniff further back if you follow the following tricks. 1217should be able to sniff further back if you follow the following tricks.
12141) A kernel address should be easy to recognise since it is in 12181) A kernel address should be easy to recognise since it is in
1215primary space & the problem state bit isn't set & also 1219primary space & the problem state bit isn't set & also
1216The Hi bit of the address is set. 1220The Hi bit of the address is set.
@@ -1260,8 +1264,8 @@ V000FFFD0 00010400 80010802 8001085A 000FFFA0
1260 1264
1261our 3rd return address is 8001085A 1265our 3rd return address is 8001085A
1262 1266
1263as the 04B52002 looks suspiciously like rubbish it is fair to assume that the kernel entry routines 1267as the 04B52002 looks suspiciously like rubbish it is fair to assume that the
1264for the sake of optimisation don't set up a backchain. 1268kernel entry routines for the sake of optimisation don't set up a backchain.
1265 1269
1266now look at System.map to see if the addresses make any sense. 1270now 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.
1289s/390 & z/Architecture IO Overview 1293s/390 & z/Architecture IO Overview
1290================================== 1294==================================
1291 1295
1292I am not going to give a course in 390 IO architecture as this would take me quite a 1296I am not going to give a course in 390 IO architecture as this would take me
1293while & I'm no expert. Instead I'll give a 390 IO architecture summary for Dummies if you have 1297quite a while and I'm no expert. Instead I'll give a 390 IO architecture
1294the s/390 principles of operation available read this instead. If nothing else you may find a few 1298summary for Dummies. If you have the s/390 principles of operation available
1295useful keywords in here & be able to use them on a web search engine like altavista to find 1299read this instead. If nothing else you may find a few useful keywords in here
1296more useful information. 1300and be able to use them on a web search engine to find more useful information.
1297 1301
1298Unlike other bus architectures modern 390 systems do their IO using mostly 1302Unlike other bus architectures modern 390 systems do their IO using mostly
1299fibre optics & devices such as tapes & disks can be shared between several mainframes, 1303fibre optics and devices such as tapes and disks can be shared between several
1300also S390 can support up to 65536 devices while a high end PC based system might be choking 1304mainframes. Also S390 can support up to 65536 devices while a high end PC based
1301with around 64. Here is some of the common IO terminology 1305system might be choking with around 64.
1302 1306
1303Subchannel: 1307Here is some of the common IO terminology:
1304This is the logical number most IO commands use to talk to an IO device there can be up to
13050x10000 (65536) of these in a configuration typically there is a few hundred. Under VM
1306for simplicity they are allocated contiguously, however on the native hardware they are not
1307they typically stay consistent between boots provided no new hardware is inserted or removed.
1308Under Linux for 390 we use these as IRQ's & also when issuing an IO command (CLEAR SUBCHANNEL,
1309HALT SUBCHANNEL,MODIFY SUBCHANNEL,RESUME SUBCHANNEL,START SUBCHANNEL,STORE SUBCHANNEL &
1310TEST SUBCHANNEL ) we use this as the ID of the device we wish to talk to, the most
1311important of these instructions are START SUBCHANNEL ( to start IO ), TEST SUBCHANNEL ( to check
1312whether the IO completed successfully ), & HALT SUBCHANNEL ( to kill IO ), a subchannel
1313can have up to 8 channel paths to a device this offers redundancy if one is not available.
1314 1308
1309Subchannel:
1310This is the logical number most IO commands use to talk to an IO device. There
1311can be up to 0x10000 (65536) of these in a configuration, typically there are a
1312few hundred. Under VM for simplicity they are allocated contiguously, however
1313on the native hardware they are not. They typically stay consistent between
1314boots provided no new hardware is inserted or removed.
1315Under 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,
1317START SUBCHANNEL, STORE SUBCHANNEL and TEST SUBCHANNEL). We use this as the ID
1318of the device we wish to talk to. The most important of these instructions are
1319START SUBCHANNEL (to start IO), TEST SUBCHANNEL (to check whether the IO
1320completed successfully) and HALT SUBCHANNEL (to kill IO). A subchannel can have
1321up to 8 channel paths to a device, this offers redundancy if one is not
1322available.
1315 1323
1316Device Number: 1324Device Number:
1317This number remains static & Is closely tied to the hardware, there are 65536 of these 1325This number remains static and is closely tied to the hardware. There are 65536
1318also they are made up of a CHPID ( Channel Path ID, the most significant 8 bits ) 1326of these, made up of a CHPID (Channel Path ID, the most significant 8 bits) and
1319& another lsb 8 bits. These remain static even if more devices are inserted or removed 1327another lsb 8 bits. These remain static even if more devices are inserted or
1320from the hardware, there is a 1 to 1 mapping between Subchannels & Device Numbers provided 1328removed from the hardware. There is a 1 to 1 mapping between subchannels and
1321devices aren't inserted or removed. 1329device numbers, provided devices aren't inserted or removed.
1322 1330
1323Channel Control Words: 1331Channel Control Words:
1324CCWS are linked lists of instructions initially pointed to by an operation request block (ORB), 1332CCWs are linked lists of instructions initially pointed to by an operation
1325which is initially given to Start Subchannel (SSCH) command along with the subchannel number 1333request block (ORB), which is initially given to Start Subchannel (SSCH)
1326for the IO subsystem to process while the CPU continues executing normal code. 1334command along with the subchannel number for the IO subsystem to process
1327These come in two flavours, Format 0 ( 24 bit for backward ) 1335while the CPU continues executing normal code.
1328compatibility & Format 1 ( 31 bit ). These are typically used to issue read & write 1336CCWs come in two flavours, Format 0 (24 bit for backward compatibility) and
1329( & many other instructions ) they consist of a length field & an absolute address field. 1337Format 1 (31 bit). These are typically used to issue read and write (and many
1330For each IO typically get 1 or 2 interrupts one for channel end ( primary status ) when the 1338other) instructions. They consist of a length field and an absolute address
1331channel is idle & the second for device end ( secondary status ) sometimes you get both 1339field.
1332concurrently, you check how the IO went on by issuing a TEST SUBCHANNEL at each interrupt, 1340Each IO typically gets 1 or 2 interrupts, one for channel end (primary status)
1333from which you receive an Interruption response block (IRB). If you get channel & device end 1341when the channel is idle, and the second for device end (secondary status).
1334status in the IRB without channel checks etc. your IO probably went okay. If you didn't you 1342Sometimes you get both concurrently. You check how the IO went on by issuing a
1335probably need a doctor to examine the IRB & extended status word etc. 1343TEST SUBCHANNEL at each interrupt, from which you receive an Interruption
1344response block (IRB). If you get channel and device end status in the IRB
1345without channel checks etc. your IO probably went okay. If you didn't you
1346probably need to examine the IRB, extended status word etc.
1336If an error occurs, more sophisticated control units have a facility known as 1347If an error occurs, more sophisticated control units have a facility known as
1337concurrent sense this means that if an error occurs Extended sense information will 1348concurrent sense. This means that if an error occurs Extended sense information
1338be presented in the Extended status word in the IRB if not you have to issue a 1349will be presented in the Extended status word in the IRB. If not you have to
1339subsequent SENSE CCW command after the test subchannel. 1350issue a subsequent SENSE CCW command after the test subchannel.
1340 1351
1341 1352
1342TPI( Test pending interrupt) can also be used for polled IO but in multitasking multiprocessor 1353TPI (Test pending interrupt) can also be used for polled IO, but in
1343systems it isn't recommended except for checking special cases ( i.e. non looping checks for 1354multitasking multiprocessor systems it isn't recommended except for
1344pending IO etc. ). 1355checking special cases (i.e. non looping checks for pending IO etc.).
1345 1356
1346Store Subchannel & Modify Subchannel can be used to examine & modify operating characteristics 1357Store Subchannel and Modify Subchannel can be used to examine and modify
1347of a subchannel ( e.g. channel paths ). 1358operating characteristics of a subchannel (e.g. channel paths).
1348 1359
1349Other IO related Terms: 1360Other IO related Terms:
1350Sysplex: S390's Clustering Technology 1361Sysplex: S390's Clustering Technology
1351QDIO: S390's new high speed IO architecture to support devices such as gigabit ethernet, 1362QDIO: S390's new high speed IO architecture to support devices such as gigabit
1352this architecture is also designed to be forward compatible with up & coming 64 bit machines. 1363ethernet, this architecture is also designed to be forward compatible with
1364upcoming 64 bit machines.
1353 1365
1354 1366
1355General Concepts 1367General Concepts
@@ -1406,37 +1418,40 @@ sometimes called Bus-and Tag & sometimes Original Equipment Manufacturers
1406Interface (OEMI). 1418Interface (OEMI).
1407 1419
1408This byte wide Parallel channel path/bus has parity & data on the "Bus" cable 1420This 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 1421and control lines on the "Tag" cable. These can operate in byte multiplex mode
1410sharing between several slow devices or burst mode & monopolize the channel for the 1422for sharing between several slow devices or burst mode and monopolize the
1411whole burst. Up to 256 devices can be addressed on one of these cables. These cables are 1423channel for the whole burst. Up to 256 devices can be addressed on one of these
1412about one inch in diameter. The maximum unextended length supported by these cables is 1424cables. These cables are about one inch in diameter. The maximum unextended
1413125 Meters but this can be extended up to 2km with a fibre optic channel extended 1425length supported by these cables is 125 Meters but this can be extended up to
1414such as a 3044. The maximum burst speed supported is 4.5 megabytes per second however 14262km with a fibre optic channel extended such as a 3044. The maximum burst speed
1415some really old processors support only transfer rates of 3.0, 2.0 & 1.0 MB/sec. 1427supported is 4.5 megabytes per second. However, some really old processors
1428support only transfer rates of 3.0, 2.0 & 1.0 MB/sec.
1416One of these paths can be daisy chained to up to 8 control units. 1429One of these paths can be daisy chained to up to 8 control units.
1417 1430
1418 1431
1419ESCON if fibre optic it is also called FICON 1432ESCON if fibre optic it is also called FICON
1420Was introduced by IBM in 1990. Has 2 fibre optic cables & uses either leds or lasers 1433Was introduced by IBM in 1990. Has 2 fibre optic cables and uses either leds or
1421for communication at a signaling rate of up to 200 megabits/sec. As 10bits are transferred 1434lasers for communication at a signaling rate of up to 200 megabits/sec. As
1422for every 8 bits info this drops to 160 megabits/sec & to 18.6 Megabytes/sec once 143510bits are transferred for every 8 bits info this drops to 160 megabits/sec
1423control info & CRC are added. ESCON only operates in burst mode. 1436and to 18.6 Megabytes/sec once control info and CRC are added. ESCON only
1437operates in burst mode.
1424 1438
1425ESCONs typical max cable length is 3km for the led version & 20km for the laser version 1439ESCONs typical max cable length is 3km for the led version and 20km for the
1426known as XDF ( extended distance facility ). This can be further extended by using an 1440laser version known as XDF (extended distance facility). This can be further
1427ESCON director which triples the above mentioned ranges. Unlike Bus & Tag as ESCON is 1441extended by using an ESCON director which triples the above mentioned ranges.
1428serial it uses a packet switching architecture the standard Bus & Tag control protocol 1442Unlike Bus & Tag as ESCON is serial it uses a packet switching architecture,
1429is however present within the packets. Up to 256 devices can be attached to each control 1443the standard Bus & Tag control protocol is however present within the packets.
1430unit that uses one of these interfaces. 1444Up to 256 devices can be attached to each control unit that uses one of these
1445interfaces.
1431 1446
1432Common 390 Devices include: 1447Common 390 Devices include:
1433Network adapters typically OSA2,3172's,2116's & OSA-E gigabit ethernet adapters, 1448Network adapters typically OSA2,3172's,2116's & OSA-E gigabit ethernet adapters,
1434Consoles 3270 & 3215 ( a teletype emulated under linux for a line mode console ). 1449Consoles 3270 & 3215 (a teletype emulated under linux for a line mode console).
1435DASD's direct access storage devices ( otherwise known as hard disks ). 1450DASD's direct access storage devices ( otherwise known as hard disks ).
1436Tape Drives. 1451Tape Drives.
1437CTC ( Channel to Channel Adapters ), 1452CTC ( Channel to Channel Adapters ),
1438ESCON or Parallel Cables used as a very high speed serial link 1453ESCON or Parallel Cables used as a very high speed serial link
1439between 2 machines. We use 2 cables under linux to do a bi-directional serial link. 1454between 2 machines.
1440 1455
1441 1456
1442Debugging IO on s/390 & z/Architecture under VM 1457Debugging IO on s/390 & z/Architecture under VM
@@ -1475,9 +1490,9 @@ or the halt subchannels
1475or TR HSCH 7C08-7C09 1490or TR HSCH 7C08-7C09
1476MSCH's ,STSCH's I think you can guess the rest 1491MSCH's ,STSCH's I think you can guess the rest
1477 1492
1478Ingo's favourite trick is tracing all the IO's & CCWS & spooling them into the reader of another 1493A good trick is tracing all the IO's and CCWS and spooling them into the reader
1479VM guest so he can ftp the logfile back to his own machine.I'll do a small bit of this & give you 1494of another VM guest so he can ftp the logfile back to his own machine. I'll do
1480 a look at the output. 1495a small bit of this and give you a look at the output.
1481 1496
14821) Spool stdout to VM reader 14971) Spool stdout to VM reader
1483SP PRT TO (another vm guest ) or * for the local vm guest 1498SP PRT TO (another vm guest ) or * for the local vm guest
@@ -1593,8 +1608,8 @@ undisplay : undo's display's
1593 1608
1594info breakpoints: shows all current breakpoints 1609info breakpoints: shows all current breakpoints
1595 1610
1596info stack: shows stack back trace ( if this doesn't work too well, I'll show you the 1611info stack: shows stack back trace (if this doesn't work too well, I'll show
1597stacktrace by hand below ). 1612you the stacktrace by hand below).
1598 1613
1599info locals: displays local variables. 1614info locals: displays local variables.
1600 1615
@@ -1619,7 +1634,8 @@ next: like step except this will not step into subroutines
1619stepi: steps a single machine code instruction. 1634stepi: steps a single machine code instruction.
1620e.g. stepi 100 1635e.g. stepi 100
1621 1636
1622nexti: steps a single machine code instruction but will not step into subroutines. 1637nexti: steps a single machine code instruction but will not step into
1638subroutines.
1623 1639
1624finish: will run until exit of the current routine 1640finish: will run until exit of the current routine
1625 1641
@@ -1721,7 +1737,8 @@ e.g.
1721outputs: 1737outputs:
1722$1 = 11 1738$1 = 11
1723 1739
1724You might now be thinking that the line above didn't work, something extra had to be done. 1740You might now be thinking that the line above didn't work, something extra had
1741to be done.
1725(gdb) call fflush(stdout) 1742(gdb) call fflush(stdout)
1726hello world$2 = 0 1743hello world$2 = 0
1727As an aside the debugger also calls malloc & free under the hood 1744As an aside the debugger also calls malloc & free under the hood
@@ -1804,26 +1821,17 @@ man gdb or info gdb.
1804core dumps 1821core dumps
1805---------- 1822----------
1806What a core dump ?, 1823What a core dump ?,
1807A core dump is a file generated by the kernel ( if allowed ) which contains the registers, 1824A core dump is a file generated by the kernel (if allowed) which contains the
1808& all active pages of the program which has crashed. 1825registers and all active pages of the program which has crashed.
1809From this file gdb will allow you to look at the registers & stack trace & memory of the 1826From this file gdb will allow you to look at the registers, stack trace and
1810program as if it just crashed on your system, it is usually called core & created in the 1827memory of the program as if it just crashed on your system. It is usually
1811current working directory. 1828called core and created in the current working directory.
1812This is very useful in that a customer can mail a core dump to a technical support department 1829This is very useful in that a customer can mail a core dump to a technical
1813& the technical support department can reconstruct what happened. 1830support department and the technical support department can reconstruct what
1814Provided they have an identical copy of this program with debugging symbols compiled in & 1831happened. Provided they have an identical copy of this program with debugging
1815the source base of this build is available. 1832symbols compiled in and the source base of this build is available.
1816In short it is far more useful than something like a crash log could ever hope to be. 1833In short it is far more useful than something like a crash log could ever hope
1817 1834to be.
1818In theory all that is missing to restart a core dumped program is a kernel patch which
1819will do the following.
18201) Make a new kernel task structure
18212) Reload all the dumped pages back into the kernel's memory management structures.
18223) Do the required clock fixups
18234) Get all files & network connections for the process back into an identical state ( really difficult ).
18245) A few more difficult things I haven't thought of.
1825
1826
1827 1835
1828Why have I never seen one ?. 1836Why have I never seen one ?.
1829Probably because you haven't used the command 1837Probably because you haven't used the command
@@ -1868,7 +1876,7 @@ Breakpoint 2 at 0x4d87a4: file top.c, line 2609.
1868#3 0x5167e6 in readline_internal_char () at readline.c:454 1876#3 0x5167e6 in readline_internal_char () at readline.c:454
1869#4 0x5168ee in readline_internal_charloop () at readline.c:507 1877#4 0x5168ee in readline_internal_charloop () at readline.c:507
1870#5 0x51692c in readline_internal () at readline.c:521 1878#5 0x51692c in readline_internal () at readline.c:521
1871#6 0x5164fe in readline (prompt=0x7ffff810 "\177ÿøx\177ÿ÷Ø\177ÿøxÀ") 1879#6 0x5164fe in readline (prompt=0x7ffff810)
1872 at readline.c:349 1880 at readline.c:349
1873#7 0x4d7a8a in command_line_input (prompt=0x564420 "(gdb) ", repeat=1, 1881#7 0x4d7a8a in command_line_input (prompt=0x564420 "(gdb) ", repeat=1,
1874 annotation_suffix=0x4d6b44 "prompt") at top.c:2091 1882 annotation_suffix=0x4d6b44 "prompt") at top.c:2091
@@ -1929,8 +1937,8 @@ cat /proc/sys/net/ipv4/ip_forward
1929On my machine now outputs 1937On my machine now outputs
19301 19381
1931IP forwarding is on. 1939IP forwarding is on.
1932There is a lot of useful info in here best found by going in & having a look around, 1940There is a lot of useful info in here best found by going in and having a look
1933so I'll take you through some entries I consider important. 1941around, so I'll take you through some entries I consider important.
1934 1942
1935All the processes running on the machine have their own entry defined by 1943All the processes running on the machine have their own entry defined by
1936/proc/<pid> 1944/proc/<pid>
@@ -2060,7 +2068,8 @@ if the device doesn't say up
2060try 2068try
2061/etc/rc.d/init.d/network start 2069/etc/rc.d/init.d/network start
2062( this starts the network stack & hopefully calls ifconfig tr0 up ). 2070( this starts the network stack & hopefully calls ifconfig tr0 up ).
2063ifconfig looks at the output of /proc/net/dev & presents it in a more presentable form 2071ifconfig looks at the output of /proc/net/dev and presents it in a more
2072presentable form.
2064Now ping the device from a machine in the same subnet. 2073Now ping the device from a machine in the same subnet.
2065if the RX packets count & TX packets counts don't increment you probably 2074if the RX packets count & TX packets counts don't increment you probably
2066have problems. 2075have problems.
@@ -2086,34 +2095,6 @@ of the device.
2086See the manpage chandev.8 &type cat /proc/chandev for more info. 2095See the manpage chandev.8 &type cat /proc/chandev for more info.
2087 2096
2088 2097
2089
2090Starting points for debugging scripting languages etc.
2091======================================================
2092
2093bash/sh
2094
2095bash -x <scriptname>
2096e.g. bash -x /usr/bin/bashbug
2097displays 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
2107perl -d <scriptname> runs the perlscript in a fully interactive debugger
2108<like gdb>.
2109Type 'h' in the debugger for help.
2110
2111for debugging java type
2112jdb <filename> another fully interactive gdb style debugger.
2113& type ? in the debugger for help.
2114
2115
2116
2117SysRq 2098SysRq
2118===== 2099=====
2119This is now supported by linux for s/390 & z/Architecture. 2100This is now supported by linux for s/390 & z/Architecture.
diff --git a/Documentation/scheduler/completion.txt b/Documentation/scheduler/completion.txt
new file mode 100644
index 000000000000..f77651eca31e
--- /dev/null
+++ b/Documentation/scheduler/completion.txt
@@ -0,0 +1,236 @@
1completions - wait for completion handling
2==========================================
3
4This document was originally written based on 3.18.0 (linux-next)
5
6Introduction:
7-------------
8
9If you have one or more threads of execution that must wait for some process
10to have reached a point or a specific state, completions can provide a race
11free solution to this problem. Semantically they are somewhat like a
12pthread_barriers and have similar use-cases.
13
14Completions are a code synchronization mechanism that is preferable to any
15misuse of locks. Any time you think of using yield() or some quirky
16msleep(1); loop to allow something else to proceed, you probably want to
17look into using one of the wait_for_completion*() calls instead. The
18advantage of using completions is clear intent of the code but also more
19efficient code as both threads can continue until the result is actually
20needed.
21
22Completions are built on top of the generic event infrastructure in Linux,
23with the event reduced to a simple flag appropriately called "done" in
24struct completion, that tells the waiting threads of execution if they
25can continue safely.
26
27As completions are scheduling related the code is found in
28kernel/sched/completion.c - for details on completion design and
29implementation see completions-design.txt
30
31
32Usage:
33------
34
35There are three parts to the using completions, the initialization of the
36struct completion, the waiting part through a call to one of the variants of
37wait_for_completion() and the signaling side through a call to complete(),
38or complete_all(). Further there are some helper functions for checking the
39state of completions.
40
41To use completions one needs to include <linux/completion.h> and
42create a variable of type struct completion. The structure used for
43handling of completions is:
44
45 struct completion {
46 unsigned int done;
47 wait_queue_head_t wait;
48 };
49
50providing the wait queue to place tasks on for waiting and the flag for
51indicating the state of affairs.
52
53Completions should be named to convey the intent of the waiter. A good
54example is:
55
56 wait_for_completion(&early_console_added);
57
58 complete(&early_console_added);
59
60Good naming (as always) helps code readability.
61
62
63Initializing completions:
64-------------------------
65
66Initialization of dynamically allocated completions, often embedded in
67other structures, is done with:
68
69 void init_completion(&done);
70
71Initialization is accomplished by initializing the wait queue and setting
72the default state to "not available", that is, "done" is set to 0.
73
74The re-initialization function, reinit_completion(), simply resets the
75done element to "not available", thus again to 0, without touching the
76wait queue. Calling init_completion() on the same completions object is
77most likely a bug as it re-initializes the queue to an empty queue and
78enqueued tasks could get "lost" - use reinit_completion() in that case.
79
80For static declaration and initialization, macros are available. These are:
81
82 static DECLARE_COMPLETION(setup_done)
83
84used for static declarations in file scope. Within functions the static
85initialization should always use:
86
87 DECLARE_COMPLETION_ONSTACK(setup_done)
88
89suitable for automatic/local variables on the stack and will make lockdep
90happy. Note also that one needs to making *sure* the completion passt to
91work threads remains in-scope, and no references remain to on-stack data
92when the initiating function returns.
93
94
95Waiting for completions:
96------------------------
97
98For a thread of execution to wait for some concurrent work to finish, it
99calls wait_for_completion() on the initialized completion structure.
100A 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
110This is not implying any temporal order of wait_for_completion() and the
111call to complete() - if the call to complete() happened before the call
112to wait_for_completion() then the waiting side simply will continue
113immediately as all dependencies are satisfied.
114
115Note that wait_for_completion() is calling spin_lock_irq/spin_unlock_irq
116so it can only be called safely when you know that interrupts are enabled.
117Calling it from hard-irq context will result in hard to detect spurious
118enabling of interrupts.
119
120wait_for_completion():
121
122 void wait_for_completion(struct completion *done):
123
124The default behavior is to wait without a timeout and mark the task as
125uninterruptible. wait_for_completion() and its variants are only safe
126in soft-interrupt or process context but not in hard-irq context.
127As all variants of wait_for_completion() can (obviously) block for a long
128time, you probably don't want to call this with held locks - see also
129try_wait_for_completion() below.
130
131
132Variants available:
133-------------------
134
135The below variants all return status and this status should be checked in
136most(/all) cases - in cases where the status is deliberately not checked you
137probably want to make a note explaining this (e.g. see
138arch/arm/kernel/smp.c:__cpu_up()).
139
140A common problem that occurs is to have unclean assignment of return types,
141so care should be taken with assigning return-values to variables of proper
142type. Checking for the specific meaning of return values also has been found
143to be quite inaccurate e.g. constructs like
144if(!wait_for_completion_interruptible_timeout(...)) would execute the same
145code path for successful completion and for the interrupted case - which is
146probably not what you want.
147
148 int wait_for_completion_interruptible(struct completion *done)
149
150marking the task TASK_INTERRUPTIBLE. If a signal was received while waiting.
151It will return -ERESTARTSYS and 0 otherwise.
152
153 unsigned long wait_for_completion_timeout(struct completion *done,
154 unsigned long timeout)
155
156The 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
158jiffies (but at least 1). Timeouts are preferably passed by msecs_to_jiffies()
159or usecs_to_jiffies(). If the returned timeout value is deliberately ignored
160a comment should probably explain why (e.g. see drivers/mfd/wm8350-core.c
161wm8350_read_auxadc())
162
163 long wait_for_completion_interruptible_timeout(
164 struct completion *done, unsigned long timeout)
165
166passing a timeout in jiffies and marking the task as TASK_INTERRUPTIBLE. If a
167signal was received it will return -ERESTARTSYS, 0 if completion timed-out and
168the remaining time in jiffies if completion occurred.
169
170Further variants include _killable which passes TASK_KILLABLE as the
171designated tasks state and will return a -ERESTARTSYS if interrupted or
172else 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
178The _io variants wait_for_completion_io behave the same as the non-_io
179variants, except for accounting waiting time as waiting on IO, which has
180an 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
187Signaling completions:
188----------------------
189
190A thread of execution that wants to signal that the conditions for
191continuation have been achieved calls complete() to signal exactly one
192of the waiters that it can continue.
193
194 void complete(struct completion *done)
195
196or calls complete_all to signal all current and future waiters.
197
198 void complete_all(struct completion *done)
199
200The signaling will work as expected even if completions are signaled before
201a thread starts waiting. This is achieved by the waiter "consuming"
202(decrementing) the done element of struct completion. Waiting threads
203wakeup order is the same in which they were enqueued (FIFO order).
204
205If complete() is called multiple times then this will allow for that number
206of waiters to continue - each call to complete() will simply increment the
207done element. Calling complete_all() multiple times is a bug though. Both
208complete() and complete_all() can be called in hard-irq context safely.
209
210There only can be one thread calling complete() or complete_all() on a
211particular struct completions at any time - serialized through the wait
212queue spinlock. Any such concurrent calls to complete() or complete_all()
213probably are a design bug.
214
215Signaling completion from hard-irq context is fine as it will appropriately
216lock with spin_lock_irqsave/spin_unlock_irqrestore.
217
218
219try_wait_for_completion()/completion_done():
220--------------------------------------------
221
222The try_wait_for_completion will not put the thread on the wait queue but
223rather returns false if it would need to enqueue (block) the thread, else it
224consumes any posted completions and returns true.
225
226 bool try_wait_for_completion(struct completion *done)
227
228Finally to check state of a completions without changing it in any way is
229provided by completion_done() returning false if there are any posted
230completion that was not yet consumed by waiters implying that there are
231waiters and true otherwise;
232
233 bool completion_done(struct completion *done)
234
235Both try_wait_for_completion() and completion_done() are safe to be called in
236hard-irq context.
diff --git a/Documentation/security/keys.txt b/Documentation/security/keys.txt
index 821c936e1a63..c9e7f4f223a5 100644
--- a/Documentation/security/keys.txt
+++ b/Documentation/security/keys.txt
@@ -323,8 +323,6 @@ about the status of the key service:
323 U Under construction by callback to userspace 323 U Under construction by callback to userspace
324 N Negative key 324 N Negative key
325 325
326 This file must be enabled at kernel configuration time as it allows anyone
327 to list the keys database.
328 326
329 (*) /proc/key-users 327 (*) /proc/key-users
330 328
diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt
index 75511efefc64..83ab25660fc9 100644
--- a/Documentation/sysctl/kernel.txt
+++ b/Documentation/sysctl/kernel.txt
@@ -843,6 +843,7 @@ can be ORed together:
8438192 - An unsigned module has been loaded in a kernel supporting module 8438192 - An unsigned module has been loaded in a kernel supporting module
844 signature. 844 signature.
84516384 - A soft lockup has previously occurred on the system. 84516384 - A soft lockup has previously occurred on the system.
84632768 - The kernel has been live patched.
846 847
847============================================================== 848==============================================================
848 849
diff --git a/Documentation/sysctl/net.txt b/Documentation/sysctl/net.txt
index 666594b43cff..6294b5186ae5 100644
--- a/Documentation/sysctl/net.txt
+++ b/Documentation/sysctl/net.txt
@@ -97,6 +97,14 @@ rmem_max
97 97
98The maximum receive socket buffer size in bytes. 98The maximum receive socket buffer size in bytes.
99 99
100tstamp_allow_data
101-----------------
102Allow processes to receive tx timestamps looped together with the original
103packet contents. If disabled, transmit timestamp requests from unprivileged
104processes are dropped unless socket option SOF_TIMESTAMPING_OPT_TSONLY is set.
105Default: 1 (on)
106
107
100wmem_default 108wmem_default
101------------ 109------------
102 110
diff --git a/Documentation/sysctl/vm.txt b/Documentation/sysctl/vm.txt
index 4415aa915681..902b4574acfb 100644
--- a/Documentation/sysctl/vm.txt
+++ b/Documentation/sysctl/vm.txt
@@ -555,12 +555,12 @@ this is causing problems for your system/application.
555 555
556oom_dump_tasks 556oom_dump_tasks
557 557
558Enables a system-wide task dump (excluding kernel threads) to be 558Enables a system-wide task dump (excluding kernel threads) to be produced
559produced when the kernel performs an OOM-killing and includes such 559when the kernel performs an OOM-killing and includes such information as
560information as pid, uid, tgid, vm size, rss, nr_ptes, swapents, 560pid, uid, tgid, vm size, rss, nr_ptes, nr_pmds, swapents, oom_score_adj
561oom_score_adj score, and name. This is helpful to determine why the 561score, and name. This is helpful to determine why the OOM killer was
562OOM killer was invoked, to identify the rogue task that caused it, 562invoked, to identify the rogue task that caused it, and to determine why
563and to determine why the OOM killer chose the task it did to kill. 563the OOM killer chose the task it did to kill.
564 564
565If this is set to zero, this information is suppressed. On very 565If this is set to zero, this information is suppressed. On very
566large systems with thousands of tasks it may not be feasible to dump 566large systems with thousands of tasks it may not be feasible to dump
@@ -728,7 +728,7 @@ The default value is 60.
728 728
729- user_reserve_kbytes 729- user_reserve_kbytes
730 730
731When overcommit_memory is set to 2, "never overommit" mode, reserve 731When overcommit_memory is set to 2, "never overcommit" mode, reserve
732min(3% of current process size, user_reserve_kbytes) of free memory. 732min(3% of current process size, user_reserve_kbytes) of free memory.
733This is intended to prevent a user from starting a single memory hogging 733This is intended to prevent a user from starting a single memory hogging
734process, such that they cannot recover (kill the hog). 734process, such that they cannot recover (kill the hog).
diff --git a/Documentation/trace/ftrace.txt b/Documentation/trace/ftrace.txt
index 8408e040f06f..572ca923631a 100644
--- a/Documentation/trace/ftrace.txt
+++ b/Documentation/trace/ftrace.txt
@@ -1740,7 +1740,7 @@ no pid
1740 yum-updatesd-3111 [003] 1637.254683: lock_hrtimer_base <-hrtimer_try_to_cancel 1740 yum-updatesd-3111 [003] 1637.254683: lock_hrtimer_base <-hrtimer_try_to_cancel
1741 yum-updatesd-3111 [003] 1637.254685: fget_light <-do_sys_poll 1741 yum-updatesd-3111 [003] 1637.254685: fget_light <-do_sys_poll
1742 yum-updatesd-3111 [003] 1637.254686: pipe_poll <-do_sys_poll 1742 yum-updatesd-3111 [003] 1637.254686: pipe_poll <-do_sys_poll
1743# echo -1 > set_ftrace_pid 1743# echo > set_ftrace_pid
1744# cat trace |head 1744# cat trace |head
1745 # tracer: function 1745 # tracer: function
1746 # 1746 #
diff --git a/Documentation/usb/usbmon.txt b/Documentation/usb/usbmon.txt
index c42bb9cd3b43..7587d84ebd16 100644
--- a/Documentation/usb/usbmon.txt
+++ b/Documentation/usb/usbmon.txt
@@ -231,7 +231,7 @@ number. Number zero (/dev/usbmon0) is special and means "all buses".
231Note that specific naming policy is set by your Linux distribution. 231Note that specific naming policy is set by your Linux distribution.
232 232
233If you create /dev/usbmon0 by hand, make sure that it is owned by root 233If you create /dev/usbmon0 by hand, make sure that it is owned by root
234and has mode 0600. Otherwise, unpriviledged users will be able to snoop 234and has mode 0600. Otherwise, unprivileged users will be able to snoop
235keyboard traffic. 235keyboard traffic.
236 236
237The following ioctl calls are available, with MON_IOC_MAGIC 0x92: 237The following ioctl calls are available, with MON_IOC_MAGIC 0x92:
diff --git a/Documentation/video4linux/CQcam.txt b/Documentation/video4linux/CQcam.txt
deleted file mode 100644
index 0b69e4ee8e31..000000000000
--- a/Documentation/video4linux/CQcam.txt
+++ /dev/null
@@ -1,205 +0,0 @@
1c-qcam - Connectix Color QuickCam video4linux kernel driver
2
3Copyright (C) 1999 Dave Forrest <drf5n@virginia.edu>
4 released under GNU GPL.
5
61999-12-08 Dave Forrest, written with kernel version 2.2.12 in mind
7
8
9Table of Contents
10
111.0 Introduction
122.0 Compilation, Installation, and Configuration
133.0 Troubleshooting
144.0 Future Work / current work arounds
159.0 Sample Program, v4lgrab
1610.0 Other Information
17
18
191.0 Introduction
20
21 The file ../../drivers/media/parport/c-qcam.c is a device driver for
22the Logitech (nee Connectix) parallel port interface color CCD camera.
23This is a fairly inexpensive device for capturing images. Logitech
24does not currently provide information for developers, but many people
25have engineered several solutions for non-Microsoft use of the Color
26Quickcam.
27
281.1 Motivation
29
30 I spent a number of hours trying to get my camera to work, and I
31hope this document saves you some time. My camera will not work with
32the 2.2.13 kernel as distributed, but with a few patches to the
33module, I was able to grab some frames. See 4.0, Future Work.
34
35
36
372.0 Compilation, Installation, and Configuration
38
39 The c-qcam depends on parallel port support, video4linux, and the
40Color Quickcam. It is also nice to have the parallel port readback
41support enabled. I enabled these as modules during the kernel
42configuration. 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.
51To 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
59But that is my personal preference.
60
612.2 Configuration
62
63 The configuration requires module configuration and device
64configuration. The following sections detail these procedures.
65
66
672.1 Module Configuration
68
69 Using modules requires a bit of work to install and pass the
70parameters. 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
772.2 Device Configuration
78
79 At this point, we need to ensure that the device files exist.
80Video4linux used the /dev/video* files, and we want to attach the
81Quickcam to one of these.
82
83 ls -lad /dev/video* # should produce a list of the video devices
84
85If 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
96your 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
102special character files with the right major and minor numbers. All
103of the special device files are listed in ../devices.txt. If you
104would like the c-qcam readable by non-root users, you will need to
105change the permissions.
106
1073.0 Troubleshooting
108
109 If the sample program below, v4lgrab, gives you output then
110everything 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
117system (CONFIG_PROC_FS), the parallel printer support
118(CONFIG_PRINTER), the IEEE 1284 system,(CONFIG_PRINTER_READBACK), you
119should 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
124Returns:
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
130and well. A common problem is that the current driver does not
131reliably detect a c-qcam, even though one is attached. In this case,
132
133 modprobe -v c-qcam
134or
135 insmod -v c-qcam
136
137 Returns a message saying "Device or resource busy" Development is
138currently underway, but a workaround is to patch the module to skip
139the detection code and attach to a defined port. Check the
140video4linux mailing list and archive for more current information.
141
1423.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
1614.0 Future Work / current workarounds
162
163 It is hoped that this section will soon become obsolete, but if it
164isn't, you might try patching the c-qcam module to add a parport=xxx
165option as in the bw-qcam module so you can specify the parallel port:
166
167 insmod -v c-qcam parport=0
168
169And bypass the detection code, see ../../drivers/char/c-qcam.c and
170look for the 'qc_detect' code and call.
171
172 Note that there is work in progress to change the video4linux API,
173this work is documented at the video4linux2 site listed below.
174
175
1769.0 --- A sample program using v4lgrabber,
177
178v4lgrab is a simple image grabber that will copy a frame from the
179first video device, /dev/video0 to standard output in portable pixmap
180format (.ppm) To produce .jpg output, you can use it like this:
181'v4lgrab | convert - c-qcam.jpg'
182
183
18410.0 --- Other Information
185
186Use the ../../Maintainers file, particularly the VIDEO FOR LINUX and PARALLEL
187PORT SUPPORT sections
188
189The video4linux page:
190 http://linuxtv.org
191
192The V4L2 API spec:
193 http://v4l2spec.bytesex.org/
194
195Some web pages about the quickcams:
196 http://www.pingouin-land.com/howto/QuickCam-HOWTO.html
197
198 http://www.crynwr.com/qcpc/ QuickCam Third-Party Drivers
199 http://www.crynwr.com/qcpc/re.html Some Reverse Engineering
200 http://www.wirelesscouch.net/software/gqcam/ v4l client
201 http://phobos.illtel.denver.co.us/pub/qcread/ doesn't use v4l
202 ftp://ftp.cs.unm.edu/pub/chris/quickcam/ Has lots of drivers
203 http://www.cs.duke.edu/~reynolds/quickcam/ Has lots of information
204
205
diff --git a/Documentation/video4linux/README.tlg2300 b/Documentation/video4linux/README.tlg2300
deleted file mode 100644
index 416ccb93d8c9..000000000000
--- a/Documentation/video4linux/README.tlg2300
+++ /dev/null
@@ -1,47 +0,0 @@
1tlg2300 release notes
2====================
3
4This is a v4l2/dvb device driver for the tlg2300 chip.
5
6
7current status
8==============
9
10video
11 - support mmap and read().(no overlay)
12
13audio
14 - The driver will register a ALSA card for the audio input.
15
16vbi
17 - Works for almost TV norms.
18
19dvb-t
20 - works for DVB-T
21
22FM
23 - Works for radio.
24
25---------------------------------------------------------------------------
26TESTED 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---------------------------------------------------------------------------
39KNOWN PROBLEMS:
40about preemphasis:
41 You can set the preemphasis for radio by the following command:
42 #v4l2-ctl -d /dev/radio0 --set-ctrl=pre_emphasis_settings=1
43
44 "pre_emphasis_settings=1" means that you select the 50us. If you want
45 to select the 75us, please use "pre_emphasis_settings=2"
46
47
diff --git a/Documentation/video4linux/v4l2-framework.txt b/Documentation/video4linux/v4l2-framework.txt
index a11dff07ef71..f586e29ce221 100644
--- a/Documentation/video4linux/v4l2-framework.txt
+++ b/Documentation/video4linux/v4l2-framework.txt
@@ -793,8 +793,10 @@ video_register_device_no_warn() instead.
793 793
794Whenever a device node is created some attributes are also created for you. 794Whenever a device node is created some attributes are also created for you.
795If you look in /sys/class/video4linux you see the devices. Go into e.g. 795If you look in /sys/class/video4linux you see the devices. Go into e.g.
796video0 and you will see 'name' and 'index' attributes. The 'name' attribute 796video0 and you will see 'name', 'debug' and 'index' attributes. The 'name'
797is the 'name' field of the video_device struct. 797attribute is the 'name' field of the video_device struct. The 'debug' attribute
798can be used to enable core debugging. See the next section for more detailed
799information on this.
798 800
799The 'index' attribute is the index of the device node: for each call to 801The 'index' attribute is the index of the device node: for each call to
800video_register_device() the index is just increased by 1. The first video 802video_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
816be called if the registration failed, nor should you ever attempt to 818be called if the registration failed, nor should you ever attempt to
817unregister the device if the registration failed. 819unregister the device if the registration failed.
818 820
821video device debugging
822----------------------
823
824The 'debug' attribute that is created for each video, vbi, radio or swradio
825device in /sys/class/video4linux/<devX>/ allows you to enable logging of
826file operations.
827
828It is a bitmask and the following bits can be set:
829
8300x01: Log the ioctl name and error code. VIDIOC_(D)QBUF ioctls are only logged
831 if bit 0x08 is also set.
8320x02: Log the ioctl name arguments and error code. VIDIOC_(D)QBUF ioctls are
833 only logged if bit 0x08 is also set.
8340x04: 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.
8370x08: Log the read and write file operations and the VIDIOC_QBUF and
838 VIDIOC_DQBUF ioctls.
8390x10: Log the poll file operation.
819 840
820video_device cleanup 841video_device cleanup
821-------------------- 842--------------------
diff --git a/Documentation/video4linux/w9966.txt b/Documentation/video4linux/w9966.txt
deleted file mode 100644
index 855024525fd2..000000000000
--- a/Documentation/video4linux/w9966.txt
+++ /dev/null
@@ -1,33 +0,0 @@
1W9966 Camera driver, written by Jakob Kemi (jakob.kemi@telia.com)
2
3After a lot of work in softice & wdasm, reading .pdf-files and tiresome
4trial-and-error work I've finally got everything to work. I needed vision for a
5robotics project so I borrowed this camera from a friend and started hacking.
6Anyway I've converted my original code from the AVR 8bit RISC C/ASM code into
7a working Linux driver.
8
9To get it working simply configure your kernel to support
10parport, ieee1284, video4linux and w9966
11
12If w9966 is statically linked it will always perform aggressive probing for
13the camera. If built as a module you'll have more configuration options.
14
15Options:
16 modprobe w9966.o pardev=parport0(or whatever) parmode=0 (0=auto, 1=ecp, 2=epp)
17voila!
18
19you can also type 'modinfo -p w9966.o' for option usage
20(or checkout w9966.c)
21
22The only thing to keep in mind is that the image format is in Y-U-Y-V format
23where every two pixels take 4 bytes. In SDL (www.libsdl.org) this format
24is called VIDEO_PALETTE_YUV422 (16 bpp).
25
26A minimal test application (with source) is available from:
27 http://www.slackwaresupport.com/howtos/Webcam-HOWTO
28
29The slow framerate is due to missing DMA ECP read support in the
30parport drivers. I might add working EPP support later.
31
32Good luck!
33 /Jakob Kemi
diff --git a/Documentation/vm/cleancache.txt b/Documentation/vm/cleancache.txt
index 142fbb0f325a..01d76282444e 100644
--- a/Documentation/vm/cleancache.txt
+++ b/Documentation/vm/cleancache.txt
@@ -85,7 +85,7 @@ lock the page to ensure serial behavior.
85CLEANCACHE PERFORMANCE METRICS 85CLEANCACHE PERFORMANCE METRICS
86 86
87If properly configured, monitoring of cleancache is done via debugfs in 87If properly configured, monitoring of cleancache is done via debugfs in
88the /sys/kernel/debug/mm/cleancache directory. The effectiveness of cleancache 88the /sys/kernel/debug/cleancache directory. The effectiveness of cleancache
89can be measured (across all filesystems) with: 89can be measured (across all filesystems) with:
90 90
91succ_gets - number of gets that were successful 91succ_gets - number of gets that were successful
diff --git a/Documentation/vm/pagemap.txt b/Documentation/vm/pagemap.txt
index 5948e455c4d2..6fbd55ef6b45 100644
--- a/Documentation/vm/pagemap.txt
+++ b/Documentation/vm/pagemap.txt
@@ -62,6 +62,8 @@ There are three components to pagemap:
62 20. NOPAGE 62 20. NOPAGE
63 21. KSM 63 21. KSM
64 22. THP 64 22. THP
65 23. BALLOON
66 24. ZERO_PAGE
65 67
66Short descriptions to the page flags: 68Short descriptions to the page flags:
67 69
@@ -102,6 +104,12 @@ Short descriptions to the page flags:
10222. THP 10422. THP
103 contiguous pages which construct transparent hugepages 105 contiguous pages which construct transparent hugepages
104 106
10723. BALLOON
108 balloon compaction page
109
11024. ZERO_PAGE
111 zero page for pfn_zero or huge_zero page
112
105 [IO related page flags] 113 [IO related page flags]
106 1. ERROR IO error occurred 114 1. ERROR IO error occurred
107 3. UPTODATE page has up-to-date data 115 3. UPTODATE page has up-to-date data
diff --git a/Documentation/vm/remap_file_pages.txt b/Documentation/vm/remap_file_pages.txt
index 560e4363a55d..f609142f406a 100644
--- a/Documentation/vm/remap_file_pages.txt
+++ b/Documentation/vm/remap_file_pages.txt
@@ -18,10 +18,9 @@ on 32-bit systems to map files bigger than can linearly fit into 32-bit
18virtual address space. This use-case is not critical anymore since 64-bit 18virtual address space. This use-case is not critical anymore since 64-bit
19systems are widely available. 19systems are widely available.
20 20
21The plan is to deprecate the syscall and replace it with an emulation. 21The syscall is deprecated and replaced it with an emulation now. The
22The emulation will create new VMAs instead of nonlinear mappings. It's 22emulation creates new VMAs instead of nonlinear mappings. It's going to
23going to work slower for rare users of remap_file_pages() but ABI is 23work slower for rare users of remap_file_pages() but ABI is preserved.
24preserved.
25 24
26One side effect of emulation (apart from performance) is that user can hit 25One side effect of emulation (apart from performance) is that user can hit
27vm.max_map_count limit more easily due to additional VMAs. See comment for 26vm.max_map_count limit more easily due to additional VMAs. See comment for
diff --git a/Documentation/x86/entry_64.txt b/Documentation/x86/entry_64.txt
index 4a1c5c2dc5a9..9132b86176a3 100644
--- a/Documentation/x86/entry_64.txt
+++ b/Documentation/x86/entry_64.txt
@@ -78,9 +78,6 @@ The expensive (paranoid) way is to read back the MSR_GS_BASE value
78 xorl %ebx,%ebx 78 xorl %ebx,%ebx
791: ret 791: ret
80 80
81and the whole paranoid non-paranoid macro complexity is about whether
82to suffer that RDMSR cost.
83
84If we are at an interrupt or user-trap/gate-alike boundary then we can 81If we are at an interrupt or user-trap/gate-alike boundary then we can
85use the faster check: the stack will be a reliable indicator of 82use the faster check: the stack will be a reliable indicator of
86whether SWAPGS was already done: if we see that we are a secondary 83whether SWAPGS was already done: if we see that we are a secondary
@@ -93,6 +90,15 @@ which might have triggered right after a normal entry wrote CS to the
93stack but before we executed SWAPGS, then the only safe way to check 90stack but before we executed SWAPGS, then the only safe way to check
94for GS is the slower method: the RDMSR. 91for GS is the slower method: the RDMSR.
95 92
96So we try only to mark those entry methods 'paranoid' that absolutely 93Therefore, super-atomic entries (except NMI, which is handled separately)
97need the more expensive check for the GS base - and we generate all 94must use idtentry with paranoid=1 to handle gsbase correctly. This
98'normal' entry points with the regular (faster) entry macros. 95triggers three main behavior changes:
96
97 - Interrupt entry will use the slower gsbase check.
98 - Interrupt entry from user mode will switch off the IST stack.
99 - Interrupt exit to kernel mode will not attempt to reschedule.
100
101We try to only use IST entries and the paranoid entry code for vectors
102that absolutely need the more expensive check for the GS base - and we
103generate all 'normal' entry points with the regular (faster) paranoid=0
104variant.
diff --git a/Documentation/x86/x86_64/kernel-stacks b/Documentation/x86/x86_64/kernel-stacks
index a01eec5d1d0b..e3c8a49d1a2f 100644
--- a/Documentation/x86/x86_64/kernel-stacks
+++ b/Documentation/x86/x86_64/kernel-stacks
@@ -40,9 +40,11 @@ An IST is selected by a non-zero value in the IST field of an
40interrupt-gate descriptor. When an interrupt occurs and the hardware 40interrupt-gate descriptor. When an interrupt occurs and the hardware
41loads such a descriptor, the hardware automatically sets the new stack 41loads such a descriptor, the hardware automatically sets the new stack
42pointer based on the IST value, then invokes the interrupt handler. If 42pointer based on the IST value, then invokes the interrupt handler. If
43software wants to allow nested IST interrupts then the handler must 43the interrupt came from user mode, then the interrupt handler prologue
44adjust the IST values on entry to and exit from the interrupt handler. 44will switch back to the per-thread stack. If software wants to allow
45(This is occasionally done, e.g. for debug exceptions.) 45nested IST interrupts then the handler must adjust the IST values on
46entry to and exit from the interrupt handler. (This is occasionally
47done, e.g. for debug exceptions.)
46 48
47Events with different IST codes (i.e. with different stacks) can be 49Events with different IST codes (i.e. with different stacks) can be
48nested. For example, a debug interrupt can safely be interrupted by an 50nested. For example, a debug interrupt can safely be interrupted by an