aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/ABI/testing/sysfs-block-dm22
-rw-r--r--Documentation/ABI/testing/sysfs-class-cxl2
-rw-r--r--Documentation/ABI/testing/sysfs-class-mtd10
-rw-r--r--Documentation/ABI/testing/sysfs-driver-toshiba_acpi93
-rw-r--r--Documentation/ABI/testing/sysfs-platform-dell-laptop69
-rw-r--r--Documentation/CodingStyle162
-rw-r--r--Documentation/DocBook/drm.tmpl31
-rw-r--r--Documentation/DocBook/media/v4l/biblio.xml11
-rw-r--r--Documentation/DocBook/media/v4l/compat.xml2
-rw-r--r--Documentation/DocBook/media/v4l/dev-sliced-vbi.xml2
-rw-r--r--Documentation/DocBook/media/v4l/media-ioc-enum-entities.xml92
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml79
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-sgrbg8.xml16
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-srggb10p.xml2
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml4
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt.xml110
-rw-r--r--Documentation/DocBook/media/v4l/subdev-formats.xml1105
-rw-r--r--Documentation/DocBook/media/v4l/v4l2.xml9
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-cropcap.xml9
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-dqevent.xml121
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-crop.xml5
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml18
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml4
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-selection.xml4
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml2
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-querycap.xml8
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-queryctrl.xml12
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-interval.xml13
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-size.xml13
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-subdev-enum-mbus-code.xml11
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml111
-rw-r--r--Documentation/IRQ-domain.txt3
-rw-r--r--Documentation/Makefile2
-rw-r--r--Documentation/PCI/MSI-HOWTO.txt21
-rw-r--r--Documentation/PCI/pci-error-recovery.txt2
-rw-r--r--Documentation/PCI/pcieaer-howto.txt4
-rw-r--r--Documentation/SubmittingPatches4
-rw-r--r--Documentation/arm/00-INDEX2
-rw-r--r--Documentation/arm/Booting9
-rw-r--r--Documentation/arm/Makefile1
-rw-r--r--Documentation/arm/Marvell/README5
-rw-r--r--Documentation/arm/README15
-rw-r--r--Documentation/arm/SH-Mobile/Makefile7
-rw-r--r--Documentation/arm/SH-Mobile/vrl4.c170
-rw-r--r--Documentation/arm/SH-Mobile/zboot-rom-mmcif.txt29
-rw-r--r--Documentation/arm/SH-Mobile/zboot-rom-sdhi.txt42
-rw-r--r--Documentation/arm/msm/gpiomux.txt176
-rw-r--r--Documentation/arm64/acpi_object_usage.txt593
-rw-r--r--Documentation/arm64/arm-acpi.txt505
-rw-r--r--Documentation/blackfin/Makefile2
-rw-r--r--Documentation/block/biodoc.txt36
-rw-r--r--Documentation/blockdev/nbd.txt48
-rw-r--r--Documentation/cgroups/memory.txt8
-rw-r--r--Documentation/cpu-hotplug.txt2
-rw-r--r--Documentation/device-mapper/dm-crypt.txt4
-rw-r--r--Documentation/device-mapper/log-writes.txt140
-rw-r--r--Documentation/device-mapper/switch.txt4
-rw-r--r--Documentation/device-mapper/thin-provisioning.txt3
-rw-r--r--Documentation/device-mapper/verity.txt21
-rw-r--r--Documentation/devicetree/bindings/arc/pct.txt20
-rw-r--r--Documentation/devicetree/bindings/arc/pmu.txt24
-rw-r--r--Documentation/devicetree/bindings/arm/al,alpine.txt88
-rw-r--r--Documentation/devicetree/bindings/arm/altera.txt14
-rw-r--r--Documentation/devicetree/bindings/arm/amlogic.txt4
-rw-r--r--Documentation/devicetree/bindings/arm/arch_timer.txt8
-rw-r--r--Documentation/devicetree/bindings/arm/armada-39x.txt20
-rw-r--r--Documentation/devicetree/bindings/arm/atmel-at91.txt4
-rw-r--r--Documentation/devicetree/bindings/arm/bcm/brcm,bcm11351-cpu-method.txt (renamed from Documentation/devicetree/bindings/arm/bcm/brcm,bcm11351-cpu-method)0
-rw-r--r--Documentation/devicetree/bindings/arm/bcm/brcm,bcm11351.txt (renamed from Documentation/devicetree/bindings/arm/bcm/bcm11351.txt)0
-rw-r--r--Documentation/devicetree/bindings/arm/bcm/brcm,bcm21664.txt (renamed from Documentation/devicetree/bindings/arm/bcm/bcm21664.txt)0
-rw-r--r--Documentation/devicetree/bindings/arm/bcm/brcm,bcm2835.txt (renamed from Documentation/devicetree/bindings/arm/bcm2835.txt)0
-rw-r--r--Documentation/devicetree/bindings/arm/bcm/brcm,bcm4708.txt (renamed from Documentation/devicetree/bindings/arm/bcm4708.txt)0
-rw-r--r--Documentation/devicetree/bindings/arm/bcm/brcm,bcm63138.txt (renamed from Documentation/devicetree/bindings/arm/bcm/bcm63138.txt)0
-rw-r--r--Documentation/devicetree/bindings/arm/bcm/brcm,brcmstb.txt (renamed from Documentation/devicetree/bindings/arm/brcm-brcmstb.txt)0
-rw-r--r--Documentation/devicetree/bindings/arm/bcm/brcm,cygnus.txt (renamed from Documentation/devicetree/bindings/arm/bcm/cygnus.txt)0
-rw-r--r--Documentation/devicetree/bindings/arm/cci.txt7
-rw-r--r--Documentation/devicetree/bindings/arm/coresight.txt1
-rw-r--r--Documentation/devicetree/bindings/arm/cpu-enable-method/al,alpine-smp52
-rw-r--r--Documentation/devicetree/bindings/arm/cpus.txt1
-rw-r--r--Documentation/devicetree/bindings/arm/exynos/power_domain.txt3
-rw-r--r--Documentation/devicetree/bindings/arm/geniatech.txt5
-rw-r--r--Documentation/devicetree/bindings/arm/gic.txt2
-rw-r--r--Documentation/devicetree/bindings/arm/marvell,kirkwood.txt1
-rw-r--r--Documentation/devicetree/bindings/arm/msm/qcom,idle-state.txt84
-rw-r--r--Documentation/devicetree/bindings/arm/msm/qcom,saw2.txt40
-rw-r--r--Documentation/devicetree/bindings/arm/msm/timer.txt16
-rw-r--r--Documentation/devicetree/bindings/arm/omap/ctrl.txt79
-rw-r--r--Documentation/devicetree/bindings/arm/omap/l4.txt26
-rw-r--r--Documentation/devicetree/bindings/arm/omap/prcm.txt6
-rw-r--r--Documentation/devicetree/bindings/arm/pmu.txt7
-rw-r--r--Documentation/devicetree/bindings/arm/rockchip.txt4
-rw-r--r--Documentation/devicetree/bindings/arm/shmobile.txt8
-rw-r--r--Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-actmon.txt32
-rw-r--r--Documentation/devicetree/bindings/bus/brcm,bus-axi.txt (renamed from Documentation/devicetree/bindings/bus/bcma.txt)0
-rw-r--r--Documentation/devicetree/bindings/bus/omap-ocp2scp.txt3
-rw-r--r--Documentation/devicetree/bindings/bus/renesas,bsc.txt46
-rw-r--r--Documentation/devicetree/bindings/bus/simple-pm-bus.txt44
-rw-r--r--Documentation/devicetree/bindings/clock/brcm,kona-ccu.txt (renamed from Documentation/devicetree/bindings/clock/bcm-kona-clock.txt)0
-rw-r--r--Documentation/devicetree/bindings/clock/exynos3250-clock.txt8
-rw-r--r--Documentation/devicetree/bindings/clock/exynos5433-clock.txt462
-rw-r--r--Documentation/devicetree/bindings/clock/fujitsu,mb86s70-crg11.txt26
-rw-r--r--Documentation/devicetree/bindings/clock/mvebu-core-clock.txt9
-rw-r--r--Documentation/devicetree/bindings/clock/mvebu-gated-clock.txt15
-rw-r--r--Documentation/devicetree/bindings/clock/pistachio-clock.txt123
-rw-r--r--Documentation/devicetree/bindings/clock/pwm-clock.txt26
-rw-r--r--Documentation/devicetree/bindings/clock/qcom,gcc.txt1
-rw-r--r--Documentation/devicetree/bindings/clock/renesas,r8a7778-cpg-clocks.txt25
-rw-r--r--Documentation/devicetree/bindings/clock/sunxi.txt3
-rw-r--r--Documentation/devicetree/bindings/common-properties.txt60
-rw-r--r--Documentation/devicetree/bindings/cris/axis.txt9
-rw-r--r--Documentation/devicetree/bindings/cris/boards.txt8
-rw-r--r--Documentation/devicetree/bindings/cris/interrupts.txt23
-rw-r--r--Documentation/devicetree/bindings/dma/apm-xgene-dma.txt47
-rw-r--r--Documentation/devicetree/bindings/dma/brcm,bcm2835-dma.txt (renamed from Documentation/devicetree/bindings/dma/bcm2835-dma.txt)0
-rw-r--r--Documentation/devicetree/bindings/dma/jz4780-dma.txt56
-rw-r--r--Documentation/devicetree/bindings/dma/qcom_bam_dma.txt1
-rw-r--r--Documentation/devicetree/bindings/dma/rcar-audmapp.txt29
-rw-r--r--Documentation/devicetree/bindings/dma/renesas,usb-dmac.txt37
-rw-r--r--Documentation/devicetree/bindings/drm/imx/ldb.txt62
-rw-r--r--Documentation/devicetree/bindings/extcon/extcon-usb-gpio.txt18
-rw-r--r--Documentation/devicetree/bindings/gpio/brcm,kona-gpio.txt (renamed from Documentation/devicetree/bindings/gpio/gpio-bcm-kona.txt)0
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio-altera.txt43
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio.txt30
-rw-r--r--Documentation/devicetree/bindings/gpio/mrvl-gpio.txt2
-rw-r--r--Documentation/devicetree/bindings/i2c/brcm,kona-i2c.txt (renamed from Documentation/devicetree/bindings/i2c/i2c-bcm-kona.txt)0
-rw-r--r--Documentation/devicetree/bindings/i2c/trivial-devices.txt1
-rw-r--r--Documentation/devicetree/bindings/interrupt-controller/brcm,bcm3380-l2-intc.txt41
-rw-r--r--Documentation/devicetree/bindings/interrupt-controller/brcm,bcm7038-l1-intc.txt52
-rw-r--r--Documentation/devicetree/bindings/interrupt-controller/brcm,bcm7120-l2-intc.txt12
-rw-r--r--Documentation/devicetree/bindings/interrupt-controller/cdns,xtensa-mx.txt18
-rw-r--r--Documentation/devicetree/bindings/interrupt-controller/cdns,xtensa-pic.txt25
-rw-r--r--Documentation/devicetree/bindings/interrupt-controller/mips-gic.txt5
-rw-r--r--Documentation/devicetree/bindings/mailbox/arm-mhu.txt43
-rw-r--r--Documentation/devicetree/bindings/media/exynos-jpeg-codec.txt2
-rw-r--r--Documentation/devicetree/bindings/media/i2c/mt9v032.txt39
-rw-r--r--Documentation/devicetree/bindings/media/i2c/ov2640.txt46
-rw-r--r--Documentation/devicetree/bindings/media/i2c/ov2659.txt38
-rw-r--r--Documentation/devicetree/bindings/media/ti,omap3isp.txt71
-rw-r--r--Documentation/devicetree/bindings/media/video-interfaces.txt6
-rw-r--r--Documentation/devicetree/bindings/media/xilinx/video.txt35
-rw-r--r--Documentation/devicetree/bindings/media/xilinx/xlnx,v-tc.txt33
-rw-r--r--Documentation/devicetree/bindings/media/xilinx/xlnx,v-tpg.txt71
-rw-r--r--Documentation/devicetree/bindings/media/xilinx/xlnx,video.txt55
-rw-r--r--Documentation/devicetree/bindings/memory-controllers/ingenic,jz4780-nemc.txt75
-rw-r--r--Documentation/devicetree/bindings/mfd/brcm,bcm59056.txt (renamed from Documentation/devicetree/bindings/mfd/bcm590xx.txt)0
-rw-r--r--Documentation/devicetree/bindings/mfd/qcom,tcsr.txt22
-rw-r--r--Documentation/devicetree/bindings/mips/brcm/bcm3384-intc.txt37
-rw-r--r--Documentation/devicetree/bindings/mips/brcm/brcm,bmips.txt (renamed from Documentation/devicetree/bindings/mips/brcm/bmips.txt)0
-rw-r--r--Documentation/devicetree/bindings/mips/brcm/cm-dsl.txt11
-rw-r--r--Documentation/devicetree/bindings/mips/brcm/soc.txt12
-rw-r--r--Documentation/devicetree/bindings/mips/img/pistachio.txt42
-rw-r--r--Documentation/devicetree/bindings/misc/brcm,kona-smc.txt (renamed from Documentation/devicetree/bindings/misc/smc.txt)0
-rw-r--r--Documentation/devicetree/bindings/misc/lis302.txt9
-rw-r--r--Documentation/devicetree/bindings/mmc/brcm,kona-sdhci.txt (renamed from Documentation/devicetree/bindings/mmc/kona-sdhci.txt)0
-rw-r--r--Documentation/devicetree/bindings/mtd/m25p80.txt13
-rw-r--r--Documentation/devicetree/bindings/mtd/pxa3xx-nand.txt2
-rw-r--r--Documentation/devicetree/bindings/mtd/sunxi-nand.txt2
-rw-r--r--Documentation/devicetree/bindings/net/brcm,bcm7445-switch-v4.0.txt (renamed from Documentation/devicetree/bindings/net/broadcom-sf2.txt)0
-rw-r--r--Documentation/devicetree/bindings/net/brcm,bcmgenet.txt (renamed from Documentation/devicetree/bindings/net/broadcom-bcmgenet.txt)0
-rw-r--r--Documentation/devicetree/bindings/net/brcm,systemport.txt (renamed from Documentation/devicetree/bindings/net/broadcom-systemport.txt)0
-rw-r--r--Documentation/devicetree/bindings/net/brcm,unimac-mdio.txt (renamed from Documentation/devicetree/bindings/net/broadcom-mdio-unimac.txt)0
-rw-r--r--Documentation/devicetree/bindings/net/ethernet.txt6
-rw-r--r--Documentation/devicetree/bindings/net/stmmac.txt4
-rw-r--r--Documentation/devicetree/bindings/net/wireless/ti,wlcore.txt47
-rw-r--r--Documentation/devicetree/bindings/panel/ampire,am800480r3tmqwa1h.txt7
-rw-r--r--Documentation/devicetree/bindings/panel/auo,b101ean01.txt7
-rw-r--r--Documentation/devicetree/bindings/panel/innolux,at043tn24.txt7
-rw-r--r--Documentation/devicetree/bindings/panel/innolux,zj070na-01p.txt7
-rw-r--r--Documentation/devicetree/bindings/panel/ortustech,com43h4m85ulc.txt7
-rw-r--r--Documentation/devicetree/bindings/panel/samsung,ltn140at29-301.txt7
-rw-r--r--Documentation/devicetree/bindings/panel/shelly,sca07010-bfn-lnn.txt7
-rw-r--r--Documentation/devicetree/bindings/phy/brcm,kona-usb2-phy.txt (renamed from Documentation/devicetree/bindings/phy/bcm-phy.txt)0
-rw-r--r--Documentation/devicetree/bindings/power/fsl,imx-gpc.txt59
-rw-r--r--Documentation/devicetree/bindings/power/renesas,sysc-rmobile.txt1
-rw-r--r--Documentation/devicetree/bindings/pwm/brcm,kona-pwm.txt (renamed from Documentation/devicetree/bindings/pwm/bcm-kona-pwm.txt)0
-rw-r--r--Documentation/devicetree/bindings/pwm/imx-pwm.txt12
-rw-r--r--Documentation/devicetree/bindings/reset/brcm,bcm21664-resetmgr.txt (renamed from Documentation/devicetree/bindings/arm/bcm/kona-resetmgr.txt)0
-rw-r--r--Documentation/devicetree/bindings/rtc/digicolor-rtc.txt17
-rw-r--r--Documentation/devicetree/bindings/rtc/stmp3xxx-rtc.txt5
-rw-r--r--Documentation/devicetree/bindings/serial/atmel-usart.txt3
-rw-r--r--Documentation/devicetree/bindings/serial/brcm,bcm6345-uart.txt (renamed from Documentation/devicetree/bindings/serial/bcm63xx-uart.txt)0
-rw-r--r--Documentation/devicetree/bindings/serial/omap_serial.txt20
-rw-r--r--Documentation/devicetree/bindings/soc/mediatek/pwrap.txt58
-rw-r--r--Documentation/devicetree/bindings/soc/qcom/qcom,gsbi.txt30
-rw-r--r--Documentation/devicetree/bindings/sound/brcm,bcm2835-i2s.txt (renamed from Documentation/devicetree/bindings/sound/bcm2835-i2s.txt)0
-rw-r--r--Documentation/devicetree/bindings/sound/omap-twl4030.txt3
-rw-r--r--Documentation/devicetree/bindings/spmi/qcom,spmi-pmic-arb.txt6
-rw-r--r--Documentation/devicetree/bindings/timer/brcm,kona-timer.txt (renamed from Documentation/devicetree/bindings/arm/bcm/kona-timer.txt)0
-rw-r--r--Documentation/devicetree/bindings/unittest.txt44
-rw-r--r--Documentation/devicetree/bindings/usb/brcm,bcm3384-usb.txt (renamed from Documentation/devicetree/bindings/mips/brcm/usb.txt)0
-rw-r--r--Documentation/devicetree/bindings/vendor-prefixes.txt7
-rw-r--r--Documentation/devicetree/bindings/video/atmel,lcdc.txt12
-rw-r--r--Documentation/devicetree/bindings/video/ti,omap-dss.txt4
-rw-r--r--Documentation/devicetree/bindings/watchdog/brcm,kona-wdt.txt (renamed from Documentation/devicetree/bindings/arm/bcm/kona-wdt.txt)0
-rw-r--r--Documentation/devicetree/booting-without-of.txt28
-rw-r--r--Documentation/devicetree/of_unittest.txt (renamed from Documentation/devicetree/of_selftest.txt)28
-rw-r--r--Documentation/dma-buf-sharing.txt23
-rw-r--r--Documentation/driver-model/devres.txt1
-rw-r--r--Documentation/email-clients.txt11
-rw-r--r--Documentation/filesystems/Locking2
-rw-r--r--Documentation/filesystems/f2fs.txt6
-rw-r--r--Documentation/filesystems/nfs/nfs-rdma.txt9
-rw-r--r--Documentation/filesystems/proc.txt21
-rw-r--r--Documentation/filesystems/vfs.txt2
-rw-r--r--Documentation/filesystems/xfs.txt29
-rw-r--r--Documentation/gpio/board.txt41
-rw-r--r--Documentation/gpio/consumer.txt65
-rw-r--r--Documentation/i2o/README63
-rw-r--r--Documentation/i2o/ioctl394
-rw-r--r--Documentation/input/alps.txt13
-rw-r--r--Documentation/input/event-codes.txt2
-rw-r--r--Documentation/input/gpio-tilt.txt2
-rw-r--r--Documentation/input/iforce-protocol.txt2
-rw-r--r--Documentation/input/walkera0701.txt2
-rw-r--r--Documentation/input/yealink.txt2
-rw-r--r--Documentation/ioctl/ioctl-number.txt1
-rw-r--r--Documentation/kernel-parameters.txt41
-rw-r--r--Documentation/kmemcheck.txt4
-rw-r--r--Documentation/kprobes.txt4
-rw-r--r--Documentation/laptops/thinkpad-acpi.txt18
-rw-r--r--Documentation/md-cluster.txt176
-rw-r--r--Documentation/memory-barriers.txt2
-rw-r--r--Documentation/memory-hotplug.txt47
-rw-r--r--Documentation/powerpc/pci_iov_resource_on_powernv.txt301
-rw-r--r--Documentation/powerpc/transactional_memory.txt36
-rw-r--r--Documentation/printk-formats.txt12
-rw-r--r--Documentation/scheduler/completion.txt132
-rw-r--r--Documentation/spi/spidev_test.c4
-rw-r--r--Documentation/sysctl/kernel.txt21
-rwxr-xr-xDocumentation/target/tcm_mod_builder.py79
-rw-r--r--Documentation/target/tcmu-design.txt43
-rw-r--r--Documentation/trace/coresight.txt2
-rw-r--r--Documentation/video4linux/v4l2-controls.txt4
-rw-r--r--Documentation/video4linux/v4l2-framework.txt6
-rw-r--r--Documentation/video4linux/vivid.txt5
-rw-r--r--Documentation/virtual/kvm/api.txt17
-rw-r--r--Documentation/vm/pagemap.txt3
-rw-r--r--Documentation/vm/transhuge.txt11
-rw-r--r--Documentation/zh_CN/arm64/booting.txt54
-rw-r--r--Documentation/zh_CN/arm64/legacy_instructions.txt72
-rw-r--r--Documentation/zh_CN/arm64/memory.txt65
241 files changed, 6681 insertions, 2212 deletions
diff --git a/Documentation/ABI/testing/sysfs-block-dm b/Documentation/ABI/testing/sysfs-block-dm
index 87ca5691e29b..f9f2339b9a0a 100644
--- a/Documentation/ABI/testing/sysfs-block-dm
+++ b/Documentation/ABI/testing/sysfs-block-dm
@@ -23,3 +23,25 @@ Description: Device-mapper device suspend state.
23 Contains the value 1 while the device is suspended. 23 Contains the value 1 while the device is suspended.
24 Otherwise it contains 0. Read-only attribute. 24 Otherwise it contains 0. Read-only attribute.
25Users: util-linux, device-mapper udev rules 25Users: util-linux, device-mapper udev rules
26
27What: /sys/block/dm-<num>/dm/rq_based_seq_io_merge_deadline
28Date: March 2015
29KernelVersion: 4.1
30Contact: dm-devel@redhat.com
31Description: Allow control over how long a request that is a
32 reasonable merge candidate can be queued on the request
33 queue. The resolution of this deadline is in
34 microseconds (ranging from 1 to 100000 usecs).
35 Setting this attribute to 0 (the default) will disable
36 request-based DM's merge heuristic and associated extra
37 accounting. This attribute is not applicable to
38 bio-based DM devices so it will only ever report 0 for
39 them.
40
41What: /sys/block/dm-<num>/dm/use_blk_mq
42Date: March 2015
43KernelVersion: 4.1
44Contact: dm-devel@redhat.com
45Description: Request-based Device-mapper blk-mq I/O path mode.
46 Contains the value 1 if the device is using blk-mq.
47 Otherwise it contains 0. Read-only attribute.
diff --git a/Documentation/ABI/testing/sysfs-class-cxl b/Documentation/ABI/testing/sysfs-class-cxl
index 3680364b4048..d46bba801aac 100644
--- a/Documentation/ABI/testing/sysfs-class-cxl
+++ b/Documentation/ABI/testing/sysfs-class-cxl
@@ -100,7 +100,7 @@ Description: read only
100 Hexadecimal value of the device ID found in this AFU 100 Hexadecimal value of the device ID found in this AFU
101 configuration record. 101 configuration record.
102 102
103What: /sys/class/cxl/<afu>/cr<config num>/vendor 103What: /sys/class/cxl/<afu>/cr<config num>/class
104Date: February 2015 104Date: February 2015
105Contact: linuxppc-dev@lists.ozlabs.org 105Contact: linuxppc-dev@lists.ozlabs.org
106Description: read only 106Description: read only
diff --git a/Documentation/ABI/testing/sysfs-class-mtd b/Documentation/ABI/testing/sysfs-class-mtd
index 76ee192f80a0..3b5c3bca9186 100644
--- a/Documentation/ABI/testing/sysfs-class-mtd
+++ b/Documentation/ABI/testing/sysfs-class-mtd
@@ -222,3 +222,13 @@ Description:
222 The number of blocks that are marked as reserved, if any, in 222 The number of blocks that are marked as reserved, if any, in
223 this partition. These are typically used to store the in-flash 223 this partition. These are typically used to store the in-flash
224 bad block table (BBT). 224 bad block table (BBT).
225
226What: /sys/class/mtd/mtdX/offset
227Date: March 2015
228KernelVersion: 4.1
229Contact: linux-mtd@lists.infradead.org
230Description:
231 For a partition, the offset of that partition from the start
232 of the master device in bytes. This attribute is absent on
233 main devices, so it can be used to distinguish between
234 partitions and devices that aren't partitions.
diff --git a/Documentation/ABI/testing/sysfs-driver-toshiba_acpi b/Documentation/ABI/testing/sysfs-driver-toshiba_acpi
index ca9c71a531c5..eed922ef42e5 100644
--- a/Documentation/ABI/testing/sysfs-driver-toshiba_acpi
+++ b/Documentation/ABI/testing/sysfs-driver-toshiba_acpi
@@ -8,9 +8,11 @@ Description: This file controls the keyboard backlight operation mode, valid
8 * 0x2 -> AUTO (also called TIMER) 8 * 0x2 -> AUTO (also called TIMER)
9 * 0x8 -> ON 9 * 0x8 -> ON
10 * 0x10 -> OFF 10 * 0x10 -> OFF
11 Note that the kernel 3.16 onwards this file accepts all listed 11 Note that from kernel 3.16 onwards this file accepts all listed
12 parameters, kernel 3.15 only accepts the first two (FN-Z and 12 parameters, kernel 3.15 only accepts the first two (FN-Z and
13 AUTO). 13 AUTO).
14 Also note that toggling this value on type 1 devices, requires
15 a reboot for changes to take effect.
14Users: KToshiba 16Users: KToshiba
15 17
16What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/kbd_backlight_timeout 18What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/kbd_backlight_timeout
@@ -67,15 +69,72 @@ Description: This file shows the current keyboard backlight type,
67 * 2 -> Type 2, supporting modes TIMER, ON and OFF 69 * 2 -> Type 2, supporting modes TIMER, ON and OFF
68Users: KToshiba 70Users: KToshiba
69 71
72What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/usb_sleep_charge
73Date: January 23, 2015
74KernelVersion: 4.0
75Contact: Azael Avalos <coproscefalo@gmail.com>
76Description: This file controls the USB Sleep & Charge charging mode, which
77 can be:
78 * 0 -> Disabled (0x00)
79 * 1 -> Alternate (0x09)
80 * 2 -> Auto (0x21)
81 * 3 -> Typical (0x11)
82 Note that from kernel 4.1 onwards this file accepts all listed
83 values, kernel 4.0 only supports the first three.
84 Note that this feature only works when connected to power, if
85 you want to use it under battery, see the entry named
86 "sleep_functions_on_battery"
87Users: KToshiba
88
89What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/sleep_functions_on_battery
90Date: January 23, 2015
91KernelVersion: 4.0
92Contact: Azael Avalos <coproscefalo@gmail.com>
93Description: This file controls the USB Sleep Functions under battery, and
94 set the level at which point they will be disabled, accepted
95 values can be:
96 * 0 -> Disabled
97 * 1-100 -> Battery level to disable sleep functions
98 Currently it prints two values, the first one indicates if the
99 feature is enabled or disabled, while the second one shows the
100 current battery level set.
101 Note that when the value is set to disabled, the sleep function
102 will only work when connected to power.
103Users: KToshiba
104
105What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/usb_rapid_charge
106Date: January 23, 2015
107KernelVersion: 4.0
108Contact: Azael Avalos <coproscefalo@gmail.com>
109Description: This file controls the USB Rapid Charge state, which can be:
110 * 0 -> Disabled
111 * 1 -> Enabled
112 Note that toggling this value requires a reboot for changes to
113 take effect.
114Users: KToshiba
115
116What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/usb_sleep_music
117Date: January 23, 2015
118KernelVersion: 4.0
119Contact: Azael Avalos <coproscefalo@gmail.com>
120Description: This file controls the Sleep & Music state, which values can be:
121 * 0 -> Disabled
122 * 1 -> Enabled
123 Note that this feature only works when connected to power, if
124 you want to use it under battery, see the entry named
125 "sleep_functions_on_battery"
126Users: KToshiba
127
70What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/version 128What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/version
71Date: February, 2015 129Date: February 12, 2015
72KernelVersion: 3.20 130KernelVersion: 4.0
73Contact: Azael Avalos <coproscefalo@gmail.com> 131Contact: Azael Avalos <coproscefalo@gmail.com>
74Description: This file shows the current version of the driver 132Description: This file shows the current version of the driver
133Users: KToshiba
75 134
76What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/fan 135What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/fan
77Date: February, 2015 136Date: February 12, 2015
78KernelVersion: 3.20 137KernelVersion: 4.0
79Contact: Azael Avalos <coproscefalo@gmail.com> 138Contact: Azael Avalos <coproscefalo@gmail.com>
80Description: This file controls the state of the internal fan, valid 139Description: This file controls the state of the internal fan, valid
81 values are: 140 values are:
@@ -83,8 +142,8 @@ Description: This file controls the state of the internal fan, valid
83 * 1 -> ON 142 * 1 -> ON
84 143
85What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/kbd_function_keys 144What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/kbd_function_keys
86Date: February, 2015 145Date: February 12, 2015
87KernelVersion: 3.20 146KernelVersion: 4.0
88Contact: Azael Avalos <coproscefalo@gmail.com> 147Contact: Azael Avalos <coproscefalo@gmail.com>
89Description: This file controls the Special Functions (hotkeys) operation 148Description: This file controls the Special Functions (hotkeys) operation
90 mode, valid values are: 149 mode, valid values are:
@@ -94,21 +153,29 @@ Description: This file controls the Special Functions (hotkeys) operation
94 and the hotkeys are accessed via FN-F{1-12}. 153 and the hotkeys are accessed via FN-F{1-12}.
95 In the "Special Functions" mode, the F{1-12} keys trigger the 154 In the "Special Functions" mode, the F{1-12} keys trigger the
96 hotkey and the F{1-12} keys are accessed via FN-F{1-12}. 155 hotkey and the F{1-12} keys are accessed via FN-F{1-12}.
156 Note that toggling this value requires a reboot for changes to
157 take effect.
158Users: KToshiba
97 159
98What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/panel_power_on 160What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/panel_power_on
99Date: February, 2015 161Date: February 12, 2015
100KernelVersion: 3.20 162KernelVersion: 4.0
101Contact: Azael Avalos <coproscefalo@gmail.com> 163Contact: Azael Avalos <coproscefalo@gmail.com>
102Description: This file controls whether the laptop should turn ON whenever 164Description: This file controls whether the laptop should turn ON whenever
103 the LID is opened, valid values are: 165 the LID is opened, valid values are:
104 * 0 -> Disabled 166 * 0 -> Disabled
105 * 1 -> Enabled 167 * 1 -> Enabled
168 Note that toggling this value requires a reboot for changes to
169 take effect.
170Users: KToshiba
106 171
107What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/usb_three 172What: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/usb_three
108Date: February, 2015 173Date: February 12, 2015
109KernelVersion: 3.20 174KernelVersion: 4.0
110Contact: Azael Avalos <coproscefalo@gmail.com> 175Contact: Azael Avalos <coproscefalo@gmail.com>
111Description: This file controls whether the USB 3 functionality, valid 176Description: This file controls the USB 3 functionality, valid values are:
112 values are:
113 * 0 -> Disabled (Acts as a regular USB 2) 177 * 0 -> Disabled (Acts as a regular USB 2)
114 * 1 -> Enabled (Full USB 3 functionality) 178 * 1 -> Enabled (Full USB 3 functionality)
179 Note that toggling this value requires a reboot for changes to
180 take effect.
181Users: KToshiba
diff --git a/Documentation/ABI/testing/sysfs-platform-dell-laptop b/Documentation/ABI/testing/sysfs-platform-dell-laptop
new file mode 100644
index 000000000000..8c6a0b8e1131
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-platform-dell-laptop
@@ -0,0 +1,69 @@
1What: /sys/class/leds/dell::kbd_backlight/als_enabled
2Date: December 2014
3KernelVersion: 3.19
4Contact: Gabriele Mazzotta <gabriele.mzt@gmail.com>,
5 Pali Rohár <pali.rohar@gmail.com>
6Description:
7 This file allows to control the automatic keyboard
8 illumination mode on some systems that have an ambient
9 light sensor. Write 1 to this file to enable the auto
10 mode, 0 to disable it.
11
12What: /sys/class/leds/dell::kbd_backlight/als_setting
13Date: December 2014
14KernelVersion: 3.19
15Contact: Gabriele Mazzotta <gabriele.mzt@gmail.com>,
16 Pali Rohár <pali.rohar@gmail.com>
17Description:
18 This file allows to specifiy the on/off threshold value,
19 as reported by the ambient light sensor.
20
21What: /sys/class/leds/dell::kbd_backlight/start_triggers
22Date: December 2014
23KernelVersion: 3.19
24Contact: Gabriele Mazzotta <gabriele.mzt@gmail.com>,
25 Pali Rohár <pali.rohar@gmail.com>
26Description:
27 This file allows to control the input triggers that
28 turn on the keyboard backlight illumination that is
29 disabled because of inactivity.
30 Read the file to see the triggers available. The ones
31 enabled are preceded by '+', those disabled by '-'.
32
33 To enable a trigger, write its name preceded by '+' to
34 this file. To disable a trigger, write its name preceded
35 by '-' instead.
36
37 For example, to enable the keyboard as trigger run:
38 echo +keyboard > /sys/class/leds/dell::kbd_backlight/start_triggers
39 To disable it:
40 echo -keyboard > /sys/class/leds/dell::kbd_backlight/start_triggers
41
42 Note that not all the available triggers can be configured.
43
44What: /sys/class/leds/dell::kbd_backlight/stop_timeout
45Date: December 2014
46KernelVersion: 3.19
47Contact: Gabriele Mazzotta <gabriele.mzt@gmail.com>,
48 Pali Rohár <pali.rohar@gmail.com>
49Description:
50 This file allows to specify the interval after which the
51 keyboard illumination is disabled because of inactivity.
52 The timeouts are expressed in seconds, minutes, hours and
53 days, for which the symbols are 's', 'm', 'h' and 'd'
54 respectively.
55
56 To configure the timeout, write to this file a value along
57 with any the above units. If no unit is specified, the value
58 is assumed to be expressed in seconds.
59
60 For example, to set the timeout to 10 minutes run:
61 echo 10m > /sys/class/leds/dell::kbd_backlight/stop_timeout
62
63 Note that when this file is read, the returned value might be
64 expressed in a different unit than the one used when the timeout
65 was set.
66
67 Also note that only some timeouts are supported and that
68 some systems might fall back to a specific timeout in case
69 an invalid timeout is written to this file.
diff --git a/Documentation/CodingStyle b/Documentation/CodingStyle
index 449a8a19fc21..f4b78eafd92a 100644
--- a/Documentation/CodingStyle
+++ b/Documentation/CodingStyle
@@ -13,7 +13,7 @@ and NOT read it. Burn them, it's a great symbolic gesture.
13Anyway, here goes: 13Anyway, here goes:
14 14
15 15
16 Chapter 1: Indentation 16 Chapter 1: Indentation
17 17
18Tabs are 8 characters, and thus indentations are also 8 characters. 18Tabs are 8 characters, and thus indentations are also 8 characters.
19There are heretic movements that try to make indentations 4 (or even 2!) 19There are heretic movements that try to make indentations 4 (or even 2!)
@@ -56,7 +56,6 @@ instead of "double-indenting" the "case" labels. E.g.:
56 break; 56 break;
57 } 57 }
58 58
59
60Don't put multiple statements on a single line unless you have 59Don't put multiple statements on a single line unless you have
61something to hide: 60something to hide:
62 61
@@ -156,25 +155,25 @@ comments on.
156 155
157Do not unnecessarily use braces where a single statement will do. 156Do not unnecessarily use braces where a single statement will do.
158 157
159if (condition) 158 if (condition)
160 action(); 159 action();
161 160
162and 161and
163 162
164if (condition) 163 if (condition)
165 do_this(); 164 do_this();
166else 165 else
167 do_that(); 166 do_that();
168 167
169This does not apply if only one branch of a conditional statement is a single 168This does not apply if only one branch of a conditional statement is a single
170statement; in the latter case use braces in both branches: 169statement; in the latter case use braces in both branches:
171 170
172if (condition) { 171 if (condition) {
173 do_this(); 172 do_this();
174 do_that(); 173 do_that();
175} else { 174 } else {
176 otherwise(); 175 otherwise();
177} 176 }
178 177
179 3.1: Spaces 178 3.1: Spaces
180 179
@@ -186,8 +185,11 @@ although they are not required in the language, as in: "sizeof info" after
186"struct fileinfo info;" is declared). 185"struct fileinfo info;" is declared).
187 186
188So use a space after these keywords: 187So use a space after these keywords:
188
189 if, switch, case, for, do, while 189 if, switch, case, for, do, while
190
190but not with sizeof, typeof, alignof, or __attribute__. E.g., 191but not with sizeof, typeof, alignof, or __attribute__. E.g.,
192
191 s = sizeof(struct file); 193 s = sizeof(struct file);
192 194
193Do not add spaces around (inside) parenthesized expressions. This example is 195Do not add spaces around (inside) parenthesized expressions. This example is
@@ -209,12 +211,15 @@ such as any of these:
209 = + - < > * / % | & ^ <= >= == != ? : 211 = + - < > * / % | & ^ <= >= == != ? :
210 212
211but no space after unary operators: 213but no space after unary operators:
214
212 & * + - ~ ! sizeof typeof alignof __attribute__ defined 215 & * + - ~ ! sizeof typeof alignof __attribute__ defined
213 216
214no space before the postfix increment & decrement unary operators: 217no space before the postfix increment & decrement unary operators:
218
215 ++ -- 219 ++ --
216 220
217no space after the prefix increment & decrement unary operators: 221no space after the prefix increment & decrement unary operators:
222
218 ++ -- 223 ++ --
219 224
220and no space around the '.' and "->" structure member operators. 225and no space around the '.' and "->" structure member operators.
@@ -268,13 +273,11 @@ See chapter 6 (Functions).
268 Chapter 5: Typedefs 273 Chapter 5: Typedefs
269 274
270Please don't use things like "vps_t". 275Please don't use things like "vps_t".
271
272It's a _mistake_ to use typedef for structures and pointers. When you see a 276It's a _mistake_ to use typedef for structures and pointers. When you see a
273 277
274 vps_t a; 278 vps_t a;
275 279
276in the source, what does it mean? 280in the source, what does it mean?
277
278In contrast, if it says 281In contrast, if it says
279 282
280 struct virtual_container *a; 283 struct virtual_container *a;
@@ -372,11 +375,11 @@ In source files, separate functions with one blank line. If the function is
372exported, the EXPORT* macro for it should follow immediately after the closing 375exported, the EXPORT* macro for it should follow immediately after the closing
373function brace line. E.g.: 376function brace line. E.g.:
374 377
375int system_is_up(void) 378 int system_is_up(void)
376{ 379 {
377 return system_state == SYSTEM_RUNNING; 380 return system_state == SYSTEM_RUNNING;
378} 381 }
379EXPORT_SYMBOL(system_is_up); 382 EXPORT_SYMBOL(system_is_up);
380 383
381In function prototypes, include parameter names with their data types. 384In function prototypes, include parameter names with their data types.
382Although this is not required by the C language, it is preferred in Linux 385Although this is not required by the C language, it is preferred in Linux
@@ -405,34 +408,34 @@ The rationale for using gotos is:
405 modifications are prevented 408 modifications are prevented
406- saves the compiler work to optimize redundant code away ;) 409- saves the compiler work to optimize redundant code away ;)
407 410
408int fun(int a) 411 int fun(int a)
409{ 412 {
410 int result = 0; 413 int result = 0;
411 char *buffer; 414 char *buffer;
412 415
413 buffer = kmalloc(SIZE, GFP_KERNEL); 416 buffer = kmalloc(SIZE, GFP_KERNEL);
414 if (!buffer) 417 if (!buffer)
415 return -ENOMEM; 418 return -ENOMEM;
416 419
417 if (condition1) { 420 if (condition1) {
418 while (loop1) { 421 while (loop1) {
419 ... 422 ...
423 }
424 result = 1;
425 goto out_buffer;
420 } 426 }
421 result = 1; 427 ...
422 goto out_buffer; 428 out_buffer:
429 kfree(buffer);
430 return result;
423 } 431 }
424 ...
425out_buffer:
426 kfree(buffer);
427 return result;
428}
429 432
430A common type of bug to be aware of it "one err bugs" which look like this: 433A common type of bug to be aware of it "one err bugs" which look like this:
431 434
432err: 435 err:
433 kfree(foo->bar); 436 kfree(foo->bar);
434 kfree(foo); 437 kfree(foo);
435 return ret; 438 return ret;
436 439
437The bug in this code is that on some exit paths "foo" is NULL. Normally the 440The bug in this code is that on some exit paths "foo" is NULL. Normally the
438fix for this is to split it up into two error labels "err_bar:" and "err_foo:". 441fix for this is to split it up into two error labels "err_bar:" and "err_foo:".
@@ -503,9 +506,9 @@ values. To do the latter, you can stick the following in your .emacs file:
503(defun c-lineup-arglist-tabs-only (ignored) 506(defun c-lineup-arglist-tabs-only (ignored)
504 "Line up argument lists by tabs, not spaces" 507 "Line up argument lists by tabs, not spaces"
505 (let* ((anchor (c-langelem-pos c-syntactic-element)) 508 (let* ((anchor (c-langelem-pos c-syntactic-element))
506 (column (c-langelem-2nd-pos c-syntactic-element)) 509 (column (c-langelem-2nd-pos c-syntactic-element))
507 (offset (- (1+ column) anchor)) 510 (offset (- (1+ column) anchor))
508 (steps (floor offset c-basic-offset))) 511 (steps (floor offset c-basic-offset)))
509 (* (max steps 1) 512 (* (max steps 1)
510 c-basic-offset))) 513 c-basic-offset)))
511 514
@@ -612,7 +615,7 @@ have a reference count on it, you almost certainly have a bug.
612 615
613Names of macros defining constants and labels in enums are capitalized. 616Names of macros defining constants and labels in enums are capitalized.
614 617
615#define CONSTANT 0x12345 618 #define CONSTANT 0x12345
616 619
617Enums are preferred when defining several related constants. 620Enums are preferred when defining several related constants.
618 621
@@ -623,28 +626,28 @@ Generally, inline functions are preferable to macros resembling functions.
623 626
624Macros with multiple statements should be enclosed in a do - while block: 627Macros with multiple statements should be enclosed in a do - while block:
625 628
626#define macrofun(a, b, c) \ 629 #define macrofun(a, b, c) \
627 do { \ 630 do { \
628 if (a == 5) \ 631 if (a == 5) \
629 do_this(b, c); \ 632 do_this(b, c); \
630 } while (0) 633 } while (0)
631 634
632Things to avoid when using macros: 635Things to avoid when using macros:
633 636
6341) macros that affect control flow: 6371) macros that affect control flow:
635 638
636#define FOO(x) \ 639 #define FOO(x) \
637 do { \ 640 do { \
638 if (blah(x) < 0) \ 641 if (blah(x) < 0) \
639 return -EBUGGERED; \ 642 return -EBUGGERED; \
640 } while(0) 643 } while(0)
641 644
642is a _very_ bad idea. It looks like a function call but exits the "calling" 645is a _very_ bad idea. It looks like a function call but exits the "calling"
643function; don't break the internal parsers of those who will read the code. 646function; don't break the internal parsers of those who will read the code.
644 647
6452) macros that depend on having a local variable with a magic name: 6482) macros that depend on having a local variable with a magic name:
646 649
647#define FOO(val) bar(index, val) 650 #define FOO(val) bar(index, val)
648 651
649might look like a good thing, but it's confusing as hell when one reads the 652might look like a good thing, but it's confusing as hell when one reads the
650code and it's prone to breakage from seemingly innocent changes. 653code and it's prone to breakage from seemingly innocent changes.
@@ -656,8 +659,21 @@ bite you if somebody e.g. turns FOO into an inline function.
656must enclose the expression in parentheses. Beware of similar issues with 659must enclose the expression in parentheses. Beware of similar issues with
657macros using parameters. 660macros using parameters.
658 661
659#define CONSTANT 0x4000 662 #define CONSTANT 0x4000
660#define CONSTEXP (CONSTANT | 3) 663 #define CONSTEXP (CONSTANT | 3)
664
6655) namespace collisions when defining local variables in macros resembling
666functions:
667
668#define FOO(x) \
669({ \
670 typeof(x) ret; \
671 ret = calc_ret(x); \
672 (ret); \
673)}
674
675ret is a common name for a local variable - __foo_ret is less likely
676to collide with an existing variable.
661 677
662The cpp manual deals with macros exhaustively. The gcc internals manual also 678The cpp manual deals with macros exhaustively. The gcc internals manual also
663covers RTL which is used frequently with assembly language in the kernel. 679covers RTL which is used frequently with assembly language in the kernel.
@@ -796,11 +812,11 @@ you should use, rather than explicitly coding some variant of them yourself.
796For example, if you need to calculate the length of an array, take advantage 812For example, if you need to calculate the length of an array, take advantage
797of the macro 813of the macro
798 814
799 #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) 815 #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
800 816
801Similarly, if you need to calculate the size of some structure member, use 817Similarly, if you need to calculate the size of some structure member, use
802 818
803 #define FIELD_SIZEOF(t, f) (sizeof(((t*)0)->f)) 819 #define FIELD_SIZEOF(t, f) (sizeof(((t*)0)->f))
804 820
805There are also min() and max() macros that do strict type checking if you 821There are also min() and max() macros that do strict type checking if you
806need them. Feel free to peruse that header file to see what else is already 822need them. Feel free to peruse that header file to see what else is already
@@ -813,19 +829,19 @@ Some editors can interpret configuration information embedded in source files,
813indicated with special markers. For example, emacs interprets lines marked 829indicated with special markers. For example, emacs interprets lines marked
814like this: 830like this:
815 831
816-*- mode: c -*- 832 -*- mode: c -*-
817 833
818Or like this: 834Or like this:
819 835
820/* 836 /*
821Local Variables: 837 Local Variables:
822compile-command: "gcc -DMAGIC_DEBUG_FLAG foo.c" 838 compile-command: "gcc -DMAGIC_DEBUG_FLAG foo.c"
823End: 839 End:
824*/ 840 */
825 841
826Vim interprets markers that look like this: 842Vim interprets markers that look like this:
827 843
828/* vim:set sw=8 noet */ 844 /* vim:set sw=8 noet */
829 845
830Do not include any of these in source files. People have their own personal 846Do not include any of these in source files. People have their own personal
831editor configurations, and your source files should not override them. This 847editor configurations, and your source files should not override them. This
@@ -902,9 +918,9 @@ At the end of any non-trivial #if or #ifdef block (more than a few lines),
902place a comment after the #endif on the same line, noting the conditional 918place a comment after the #endif on the same line, noting the conditional
903expression used. For instance: 919expression used. For instance:
904 920
905#ifdef CONFIG_SOMETHING 921 #ifdef CONFIG_SOMETHING
906... 922 ...
907#endif /* CONFIG_SOMETHING */ 923 #endif /* CONFIG_SOMETHING */
908 924
909 925
910 Appendix I: References 926 Appendix I: References
diff --git a/Documentation/DocBook/drm.tmpl b/Documentation/DocBook/drm.tmpl
index 03f1985a4bd1..9765a4c0829d 100644
--- a/Documentation/DocBook/drm.tmpl
+++ b/Documentation/DocBook/drm.tmpl
@@ -1293,7 +1293,7 @@ int max_width, max_height;</synopsis>
1293 </para> 1293 </para>
1294 <para> 1294 <para>
1295 If a page flip can be successfully scheduled the driver must set the 1295 If a page flip can be successfully scheduled the driver must set the
1296 <code>drm_crtc-&lt;fb</code> field to the new framebuffer pointed to 1296 <code>drm_crtc-&gt;fb</code> field to the new framebuffer pointed to
1297 by <code>fb</code>. This is important so that the reference counting 1297 by <code>fb</code>. This is important so that the reference counting
1298 on framebuffers stays balanced. 1298 on framebuffers stays balanced.
1299 </para> 1299 </para>
@@ -3979,6 +3979,11 @@ int num_ioctls;</synopsis>
3979!Fdrivers/gpu/drm/i915/i915_irq.c intel_runtime_pm_disable_interrupts 3979!Fdrivers/gpu/drm/i915/i915_irq.c intel_runtime_pm_disable_interrupts
3980!Fdrivers/gpu/drm/i915/i915_irq.c intel_runtime_pm_enable_interrupts 3980!Fdrivers/gpu/drm/i915/i915_irq.c intel_runtime_pm_enable_interrupts
3981 </sect2> 3981 </sect2>
3982 <sect2>
3983 <title>Intel GVT-g Guest Support(vGPU)</title>
3984!Pdrivers/gpu/drm/i915/i915_vgpu.c Intel GVT-g guest support
3985!Idrivers/gpu/drm/i915/i915_vgpu.c
3986 </sect2>
3982 </sect1> 3987 </sect1>
3983 <sect1> 3988 <sect1>
3984 <title>Display Hardware Handling</title> 3989 <title>Display Hardware Handling</title>
@@ -4048,6 +4053,17 @@ int num_ioctls;</synopsis>
4048!Idrivers/gpu/drm/i915/intel_fbc.c 4053!Idrivers/gpu/drm/i915/intel_fbc.c
4049 </sect2> 4054 </sect2>
4050 <sect2> 4055 <sect2>
4056 <title>Display Refresh Rate Switching (DRRS)</title>
4057!Pdrivers/gpu/drm/i915/intel_dp.c Display Refresh Rate Switching (DRRS)
4058!Fdrivers/gpu/drm/i915/intel_dp.c intel_dp_set_drrs_state
4059!Fdrivers/gpu/drm/i915/intel_dp.c intel_edp_drrs_enable
4060!Fdrivers/gpu/drm/i915/intel_dp.c intel_edp_drrs_disable
4061!Fdrivers/gpu/drm/i915/intel_dp.c intel_edp_drrs_invalidate
4062!Fdrivers/gpu/drm/i915/intel_dp.c intel_edp_drrs_flush
4063!Fdrivers/gpu/drm/i915/intel_dp.c intel_dp_drrs_init
4064
4065 </sect2>
4066 <sect2>
4051 <title>DPIO</title> 4067 <title>DPIO</title>
4052!Pdrivers/gpu/drm/i915/i915_reg.h DPIO 4068!Pdrivers/gpu/drm/i915/i915_reg.h DPIO
4053 <table id="dpiox2"> 4069 <table id="dpiox2">
@@ -4168,7 +4184,7 @@ int num_ioctls;</synopsis>
4168 <sect2> 4184 <sect2>
4169 <title>Buffer Object Eviction</title> 4185 <title>Buffer Object Eviction</title>
4170 <para> 4186 <para>
4171 This section documents the interface function for evicting buffer 4187 This section documents the interface functions for evicting buffer
4172 objects to make space available in the virtual gpu address spaces. 4188 objects to make space available in the virtual gpu address spaces.
4173 Note that this is mostly orthogonal to shrinking buffer objects 4189 Note that this is mostly orthogonal to shrinking buffer objects
4174 caches, which has the goal to make main memory (shared with the gpu 4190 caches, which has the goal to make main memory (shared with the gpu
@@ -4176,6 +4192,17 @@ int num_ioctls;</synopsis>
4176 </para> 4192 </para>
4177!Idrivers/gpu/drm/i915/i915_gem_evict.c 4193!Idrivers/gpu/drm/i915/i915_gem_evict.c
4178 </sect2> 4194 </sect2>
4195 <sect2>
4196 <title>Buffer Object Memory Shrinking</title>
4197 <para>
4198 This section documents the interface function for shrinking memory
4199 usage of buffer object caches. Shrinking is used to make main memory
4200 available. Note that this is mostly orthogonal to evicting buffer
4201 objects, which has the goal to make space in gpu virtual address
4202 spaces.
4203 </para>
4204!Idrivers/gpu/drm/i915/i915_gem_shrinker.c
4205 </sect2>
4179 </sect1> 4206 </sect1>
4180 4207
4181 <sect1> 4208 <sect1>
diff --git a/Documentation/DocBook/media/v4l/biblio.xml b/Documentation/DocBook/media/v4l/biblio.xml
index 7ff01a23c2fe..fdee6b3f3eca 100644
--- a/Documentation/DocBook/media/v4l/biblio.xml
+++ b/Documentation/DocBook/media/v4l/biblio.xml
@@ -1,14 +1,13 @@
1 <bibliography> 1 <bibliography>
2 <title>References</title> 2 <title>References</title>
3 3
4 <biblioentry id="eia608"> 4 <biblioentry id="cea608">
5 <abbrev>EIA&nbsp;608-B</abbrev> 5 <abbrev>CEA&nbsp;608-E</abbrev>
6 <authorgroup> 6 <authorgroup>
7 <corpauthor>Electronic Industries Alliance (<ulink 7 <corpauthor>Consumer Electronics Association (<ulink
8url="http://www.eia.org">http://www.eia.org</ulink>)</corpauthor> 8url="http://www.ce.org">http://www.ce.org</ulink>)</corpauthor>
9 </authorgroup> 9 </authorgroup>
10 <title>EIA 608-B "Recommended Practice for Line 21 Data 10 <title>CEA-608-E R-2014 "Line 21 Data Services"</title>
11Service"</title>
12 </biblioentry> 11 </biblioentry>
13 12
14 <biblioentry id="en300294"> 13 <biblioentry id="en300294">
diff --git a/Documentation/DocBook/media/v4l/compat.xml b/Documentation/DocBook/media/v4l/compat.xml
index 350dfb3d71ea..a0aef85d33c1 100644
--- a/Documentation/DocBook/media/v4l/compat.xml
+++ b/Documentation/DocBook/media/v4l/compat.xml
@@ -2491,7 +2491,7 @@ that used it. It was originally scheduled for removal in 2.6.35.
2491 </listitem> 2491 </listitem>
2492 <listitem> 2492 <listitem>
2493 <para>Added <constant>V4L2_EVENT_CTRL_CH_RANGE</constant> control event 2493 <para>Added <constant>V4L2_EVENT_CTRL_CH_RANGE</constant> control event
2494 changes flag. See <xref linkend="changes-flags"/>.</para> 2494 changes flag. See <xref linkend="ctrl-changes-flags"/>.</para>
2495 </listitem> 2495 </listitem>
2496 </orderedlist> 2496 </orderedlist>
2497 </section> 2497 </section>
diff --git a/Documentation/DocBook/media/v4l/dev-sliced-vbi.xml b/Documentation/DocBook/media/v4l/dev-sliced-vbi.xml
index 7a8bf3011ee9..0aec62ed2bf8 100644
--- a/Documentation/DocBook/media/v4l/dev-sliced-vbi.xml
+++ b/Documentation/DocBook/media/v4l/dev-sliced-vbi.xml
@@ -254,7 +254,7 @@ ETS&nbsp;300&nbsp;231, lsb first transmitted.</entry>
254 <row> 254 <row>
255 <entry><constant>V4L2_SLICED_CAPTION_525</constant></entry> 255 <entry><constant>V4L2_SLICED_CAPTION_525</constant></entry>
256 <entry>0x1000</entry> 256 <entry>0x1000</entry>
257 <entry><xref linkend="eia608" /></entry> 257 <entry><xref linkend="cea608" /></entry>
258 <entry>NTSC line 21, 284 (second field 21)</entry> 258 <entry>NTSC line 21, 284 (second field 21)</entry>
259 <entry>Two bytes in transmission order, including parity 259 <entry>Two bytes in transmission order, including parity
260bit, lsb first transmitted.</entry> 260bit, lsb first transmitted.</entry>
diff --git a/Documentation/DocBook/media/v4l/media-ioc-enum-entities.xml b/Documentation/DocBook/media/v4l/media-ioc-enum-entities.xml
index 116c301656e0..5872f8bbf774 100644
--- a/Documentation/DocBook/media/v4l/media-ioc-enum-entities.xml
+++ b/Documentation/DocBook/media/v4l/media-ioc-enum-entities.xml
@@ -143,86 +143,28 @@
143 <row> 143 <row>
144 <entry></entry> 144 <entry></entry>
145 <entry>struct</entry> 145 <entry>struct</entry>
146 <entry><structfield>v4l</structfield></entry> 146 <entry><structfield>dev</structfield></entry>
147 <entry></entry> 147 <entry></entry>
148 <entry>Valid for V4L sub-devices and nodes only.</entry> 148 <entry>Valid for (sub-)devices that create a single device node.</entry>
149 </row> 149 </row>
150 <row> 150 <row>
151 <entry></entry> 151 <entry></entry>
152 <entry></entry> 152 <entry></entry>
153 <entry>__u32</entry> 153 <entry>__u32</entry>
154 <entry><structfield>major</structfield></entry> 154 <entry><structfield>major</structfield></entry>
155 <entry>V4L device node major number. For V4L sub-devices with no 155 <entry>Device node major number.</entry>
156 device node, set by the driver to 0.</entry>
157 </row> 156 </row>
158 <row> 157 <row>
159 <entry></entry> 158 <entry></entry>
160 <entry></entry> 159 <entry></entry>
161 <entry>__u32</entry> 160 <entry>__u32</entry>
162 <entry><structfield>minor</structfield></entry> 161 <entry><structfield>minor</structfield></entry>
163 <entry>V4L device node minor number. For V4L sub-devices with no 162 <entry>Device node minor number.</entry>
164 device node, set by the driver to 0.</entry>
165 </row>
166 <row>
167 <entry></entry>
168 <entry>struct</entry>
169 <entry><structfield>fb</structfield></entry>
170 <entry></entry>
171 <entry>Valid for frame buffer nodes only.</entry>
172 </row>
173 <row>
174 <entry></entry>
175 <entry></entry>
176 <entry>__u32</entry>
177 <entry><structfield>major</structfield></entry>
178 <entry>Frame buffer device node major number.</entry>
179 </row>
180 <row>
181 <entry></entry>
182 <entry></entry>
183 <entry>__u32</entry>
184 <entry><structfield>minor</structfield></entry>
185 <entry>Frame buffer device node minor number.</entry>
186 </row>
187 <row>
188 <entry></entry>
189 <entry>struct</entry>
190 <entry><structfield>alsa</structfield></entry>
191 <entry></entry>
192 <entry>Valid for ALSA devices only.</entry>
193 </row>
194 <row>
195 <entry></entry>
196 <entry></entry>
197 <entry>__u32</entry>
198 <entry><structfield>card</structfield></entry>
199 <entry>ALSA card number</entry>
200 </row>
201 <row>
202 <entry></entry>
203 <entry></entry>
204 <entry>__u32</entry>
205 <entry><structfield>device</structfield></entry>
206 <entry>ALSA device number</entry>
207 </row>
208 <row>
209 <entry></entry>
210 <entry></entry>
211 <entry>__u32</entry>
212 <entry><structfield>subdevice</structfield></entry>
213 <entry>ALSA sub-device number</entry>
214 </row>
215 <row>
216 <entry></entry>
217 <entry>int</entry>
218 <entry><structfield>dvb</structfield></entry>
219 <entry></entry>
220 <entry>DVB card number</entry>
221 </row> 163 </row>
222 <row> 164 <row>
223 <entry></entry> 165 <entry></entry>
224 <entry>__u8</entry> 166 <entry>__u8</entry>
225 <entry><structfield>raw</structfield>[180]</entry> 167 <entry><structfield>raw</structfield>[184]</entry>
226 <entry></entry> 168 <entry></entry>
227 <entry></entry> 169 <entry></entry>
228 </row> 170 </row>
@@ -253,8 +195,24 @@
253 <entry>ALSA card</entry> 195 <entry>ALSA card</entry>
254 </row> 196 </row>
255 <row> 197 <row>
256 <entry><constant>MEDIA_ENT_T_DEVNODE_DVB</constant></entry> 198 <entry><constant>MEDIA_ENT_T_DEVNODE_DVB_FE</constant></entry>
257 <entry>DVB card</entry> 199 <entry>DVB frontend devnode</entry>
200 </row>
201 <row>
202 <entry><constant>MEDIA_ENT_T_DEVNODE_DVB_DEMUX</constant></entry>
203 <entry>DVB demux devnode</entry>
204 </row>
205 <row>
206 <entry><constant>MEDIA_ENT_T_DEVNODE_DVB_DVR</constant></entry>
207 <entry>DVB DVR devnode</entry>
208 </row>
209 <row>
210 <entry><constant>MEDIA_ENT_T_DEVNODE_DVB_CA</constant></entry>
211 <entry>DVB CAM devnode</entry>
212 </row>
213 <row>
214 <entry><constant>MEDIA_ENT_T_DEVNODE_DVB_NET</constant></entry>
215 <entry>DVB network devnode</entry>
258 </row> 216 </row>
259 <row> 217 <row>
260 <entry><constant>MEDIA_ENT_T_V4L2_SUBDEV</constant></entry> 218 <entry><constant>MEDIA_ENT_T_V4L2_SUBDEV</constant></entry>
@@ -282,6 +240,10 @@
282 it in some digital video standard, with appropriate embedded timing 240 it in some digital video standard, with appropriate embedded timing
283 signals.</entry> 241 signals.</entry>
284 </row> 242 </row>
243 <row>
244 <entry><constant>MEDIA_ENT_T_V4L2_SUBDEV_TUNER</constant></entry>
245 <entry>TV and/or radio tuner</entry>
246 </row>
285 </tbody> 247 </tbody>
286 </tgroup> 248 </tgroup>
287 </table> 249 </table>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml b/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml
index 6ab4f0f3db64..b60fb935b91b 100644
--- a/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml
@@ -303,45 +303,6 @@ for a pixel lie next to each other in memory.</para>
303 <entry>b<subscript>1</subscript></entry> 303 <entry>b<subscript>1</subscript></entry>
304 <entry>b<subscript>0</subscript></entry> 304 <entry>b<subscript>0</subscript></entry>
305 </row> 305 </row>
306 <row id="V4L2-PIX-FMT-BGR666">
307 <entry><constant>V4L2_PIX_FMT_BGR666</constant></entry>
308 <entry>'BGRH'</entry>
309 <entry></entry>
310 <entry>b<subscript>5</subscript></entry>
311 <entry>b<subscript>4</subscript></entry>
312 <entry>b<subscript>3</subscript></entry>
313 <entry>b<subscript>2</subscript></entry>
314 <entry>b<subscript>1</subscript></entry>
315 <entry>b<subscript>0</subscript></entry>
316 <entry>g<subscript>5</subscript></entry>
317 <entry>g<subscript>4</subscript></entry>
318 <entry></entry>
319 <entry>g<subscript>3</subscript></entry>
320 <entry>g<subscript>2</subscript></entry>
321 <entry>g<subscript>1</subscript></entry>
322 <entry>g<subscript>0</subscript></entry>
323 <entry>r<subscript>5</subscript></entry>
324 <entry>r<subscript>4</subscript></entry>
325 <entry>r<subscript>3</subscript></entry>
326 <entry>r<subscript>2</subscript></entry>
327 <entry></entry>
328 <entry>r<subscript>1</subscript></entry>
329 <entry>r<subscript>0</subscript></entry>
330 <entry></entry>
331 <entry></entry>
332 <entry></entry>
333 <entry></entry>
334 <entry></entry>
335 <entry></entry>
336 <entry></entry>
337 <entry></entry>
338 <entry></entry>
339 <entry></entry>
340 <entry></entry>
341 <entry></entry>
342 <entry></entry>
343 <entry></entry>
344 </row>
345 <row id="V4L2-PIX-FMT-BGR24"> 306 <row id="V4L2-PIX-FMT-BGR24">
346 <entry><constant>V4L2_PIX_FMT_BGR24</constant></entry> 307 <entry><constant>V4L2_PIX_FMT_BGR24</constant></entry>
347 <entry>'BGR3'</entry> 308 <entry>'BGR3'</entry>
@@ -404,6 +365,46 @@ for a pixel lie next to each other in memory.</para>
404 <entry>b<subscript>1</subscript></entry> 365 <entry>b<subscript>1</subscript></entry>
405 <entry>b<subscript>0</subscript></entry> 366 <entry>b<subscript>0</subscript></entry>
406 </row> 367 </row>
368 <row id="V4L2-PIX-FMT-BGR666">
369 <entry><constant>V4L2_PIX_FMT_BGR666</constant></entry>
370 <entry>'BGRH'</entry>
371 <entry></entry>
372 <entry>b<subscript>5</subscript></entry>
373 <entry>b<subscript>4</subscript></entry>
374 <entry>b<subscript>3</subscript></entry>
375 <entry>b<subscript>2</subscript></entry>
376 <entry>b<subscript>1</subscript></entry>
377 <entry>b<subscript>0</subscript></entry>
378 <entry>g<subscript>5</subscript></entry>
379 <entry>g<subscript>4</subscript></entry>
380 <entry></entry>
381 <entry>g<subscript>3</subscript></entry>
382 <entry>g<subscript>2</subscript></entry>
383 <entry>g<subscript>1</subscript></entry>
384 <entry>g<subscript>0</subscript></entry>
385 <entry>r<subscript>5</subscript></entry>
386 <entry>r<subscript>4</subscript></entry>
387 <entry>r<subscript>3</subscript></entry>
388 <entry>r<subscript>2</subscript></entry>
389 <entry></entry>
390 <entry>r<subscript>1</subscript></entry>
391 <entry>r<subscript>0</subscript></entry>
392 <entry>-</entry>
393 <entry>-</entry>
394 <entry>-</entry>
395 <entry>-</entry>
396 <entry>-</entry>
397 <entry>-</entry>
398 <entry></entry>
399 <entry>-</entry>
400 <entry>-</entry>
401 <entry>-</entry>
402 <entry>-</entry>
403 <entry>-</entry>
404 <entry>-</entry>
405 <entry>-</entry>
406 <entry>-</entry>
407 </row>
407 <row id="V4L2-PIX-FMT-ABGR32"> 408 <row id="V4L2-PIX-FMT-ABGR32">
408 <entry><constant>V4L2_PIX_FMT_ABGR32</constant></entry> 409 <entry><constant>V4L2_PIX_FMT_ABGR32</constant></entry>
409 <entry>'AR24'</entry> 410 <entry>'AR24'</entry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-sgrbg8.xml b/Documentation/DocBook/media/v4l/pixfmt-sgrbg8.xml
index 19727ab4c757..7803b8c41b45 100644
--- a/Documentation/DocBook/media/v4l/pixfmt-sgrbg8.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-sgrbg8.xml
@@ -38,10 +38,10 @@ columns and rows.</para>
38 </row> 38 </row>
39 <row> 39 <row>
40 <entry>start&nbsp;+&nbsp;4:</entry> 40 <entry>start&nbsp;+&nbsp;4:</entry>
41 <entry>R<subscript>10</subscript></entry> 41 <entry>B<subscript>10</subscript></entry>
42 <entry>B<subscript>11</subscript></entry> 42 <entry>G<subscript>11</subscript></entry>
43 <entry>R<subscript>12</subscript></entry> 43 <entry>B<subscript>12</subscript></entry>
44 <entry>B<subscript>13</subscript></entry> 44 <entry>G<subscript>13</subscript></entry>
45 </row> 45 </row>
46 <row> 46 <row>
47 <entry>start&nbsp;+&nbsp;8:</entry> 47 <entry>start&nbsp;+&nbsp;8:</entry>
@@ -52,10 +52,10 @@ columns and rows.</para>
52 </row> 52 </row>
53 <row> 53 <row>
54 <entry>start&nbsp;+&nbsp;12:</entry> 54 <entry>start&nbsp;+&nbsp;12:</entry>
55 <entry>R<subscript>30</subscript></entry> 55 <entry>B<subscript>30</subscript></entry>
56 <entry>B<subscript>31</subscript></entry> 56 <entry>G<subscript>31</subscript></entry>
57 <entry>R<subscript>32</subscript></entry> 57 <entry>B<subscript>32</subscript></entry>
58 <entry>B<subscript>33</subscript></entry> 58 <entry>G<subscript>33</subscript></entry>
59 </row> 59 </row>
60 </tbody> 60 </tbody>
61 </tgroup> 61 </tgroup>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb10p.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb10p.xml
index 30aa63581fe3..a8cc102cde4f 100644
--- a/Documentation/DocBook/media/v4l/pixfmt-srggb10p.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-srggb10p.xml
@@ -38,7 +38,7 @@
38 <title>Byte Order.</title> 38 <title>Byte Order.</title>
39 <para>Each cell is one byte. 39 <para>Each cell is one byte.
40 <informaltable frame="topbot" colsep="1" rowsep="1"> 40 <informaltable frame="topbot" colsep="1" rowsep="1">
41 <tgroup cols="5" align="center" border="1"> 41 <tgroup cols="5" align="center">
42 <colspec align="left" colwidth="2*" /> 42 <colspec align="left" colwidth="2*" />
43 <tbody valign="top"> 43 <tbody valign="top">
44 <row> 44 <row>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml b/Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml
index 60308f1eefdf..e781cc61786c 100644
--- a/Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml
@@ -29,12 +29,12 @@ and Cr planes have half as many pad bytes after their rows. In other
29words, two Cx rows (including padding) is exactly as long as one Y row 29words, two Cx rows (including padding) is exactly as long as one Y row
30(including padding).</para> 30(including padding).</para>
31 31
32 <para><constant>V4L2_PIX_FMT_NV12M</constant> is intended to be 32 <para><constant>V4L2_PIX_FMT_YUV420M</constant> is intended to be
33used only in drivers and applications that support the multi-planar API, 33used only in drivers and applications that support the multi-planar API,
34described in <xref linkend="planar-apis"/>. </para> 34described in <xref linkend="planar-apis"/>. </para>
35 35
36 <example> 36 <example>
37 <title><constant>V4L2_PIX_FMT_YVU420M</constant> 4 &times; 4 37 <title><constant>V4L2_PIX_FMT_YUV420M</constant> 4 &times; 4
38pixel image</title> 38pixel image</title>
39 39
40 <formalpara> 40 <formalpara>
diff --git a/Documentation/DocBook/media/v4l/pixfmt.xml b/Documentation/DocBook/media/v4l/pixfmt.xml
index 5e0352c50324..fcde4e20205e 100644
--- a/Documentation/DocBook/media/v4l/pixfmt.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt.xml
@@ -80,9 +80,9 @@ padding bytes after the last line of an image cross a system page
80boundary. Input devices may write padding bytes, the value is 80boundary. Input devices may write padding bytes, the value is
81undefined. Output devices ignore the contents of padding 81undefined. Output devices ignore the contents of padding
82bytes.</para><para>When the image format is planar the 82bytes.</para><para>When the image format is planar the
83<structfield>bytesperline</structfield> value applies to the largest 83<structfield>bytesperline</structfield> value applies to the first
84plane and is divided by the same factor as the 84plane and is divided by the same factor as the
85<structfield>width</structfield> field for any smaller planes. For 85<structfield>width</structfield> field for the other planes. For
86example the Cb and Cr planes of a YUV 4:2:0 image have half as many 86example the Cb and Cr planes of a YUV 4:2:0 image have half as many
87padding bytes following each line as the Y plane. To avoid ambiguities 87padding bytes following each line as the Y plane. To avoid ambiguities
88drivers must return a <structfield>bytesperline</structfield> value 88drivers must return a <structfield>bytesperline</structfield> value
@@ -182,14 +182,14 @@ see <xref linkend="colorspaces" />.</entry>
182 </entry> 182 </entry>
183 </row> 183 </row>
184 <row> 184 <row>
185 <entry>__u16</entry> 185 <entry>__u32</entry>
186 <entry><structfield>bytesperline</structfield></entry> 186 <entry><structfield>bytesperline</structfield></entry>
187 <entry>Distance in bytes between the leftmost pixels in two adjacent 187 <entry>Distance in bytes between the leftmost pixels in two adjacent
188 lines. See &v4l2-pix-format;.</entry> 188 lines. See &v4l2-pix-format;.</entry>
189 </row> 189 </row>
190 <row> 190 <row>
191 <entry>__u16</entry> 191 <entry>__u16</entry>
192 <entry><structfield>reserved[7]</structfield></entry> 192 <entry><structfield>reserved[6]</structfield></entry>
193 <entry>Reserved for future extensions. Should be zeroed by the 193 <entry>Reserved for future extensions. Should be zeroed by the
194 application.</entry> 194 application.</entry>
195 </row> 195 </row>
@@ -483,8 +483,8 @@ is the Y'CbCr encoding identifier (&v4l2-ycbcr-encoding;) to specify non-standar
483Y'CbCr encodings and the third is the quantization identifier (&v4l2-quantization;) 483Y'CbCr encodings and the third is the quantization identifier (&v4l2-quantization;)
484to specify non-standard quantization methods. Most of the time only the colorspace 484to specify non-standard quantization methods. Most of the time only the colorspace
485field of &v4l2-pix-format; or &v4l2-pix-format-mplane; needs to be filled in. Note 485field of &v4l2-pix-format; or &v4l2-pix-format-mplane; needs to be filled in. Note
486that the default R'G'B' quantization is always full range for all colorspaces, 486that the default R'G'B' quantization is full range for all colorspaces except for
487so this won't be mentioned explicitly for each colorspace description.</para> 487BT.2020 which uses limited range R'G'B' quantization.</para>
488 488
489 <table pgwide="1" frame="none" id="v4l2-colorspace"> 489 <table pgwide="1" frame="none" id="v4l2-colorspace">
490 <title>V4L2 Colorspaces</title> 490 <title>V4L2 Colorspaces</title>
@@ -598,7 +598,8 @@ so this won't be mentioned explicitly for each colorspace description.</para>
598 <row> 598 <row>
599 <entry><constant>V4L2_QUANTIZATION_DEFAULT</constant></entry> 599 <entry><constant>V4L2_QUANTIZATION_DEFAULT</constant></entry>
600 <entry>Use the default quantization encoding as defined by the colorspace. 600 <entry>Use the default quantization encoding as defined by the colorspace.
601This is always full range for R'G'B' and usually limited range for Y'CbCr.</entry> 601This is always full range for R'G'B' (except for the BT.2020 colorspace) and usually
602limited range for Y'CbCr.</entry>
602 </row> 603 </row>
603 <row> 604 <row>
604 <entry><constant>V4L2_QUANTIZATION_FULL_RANGE</constant></entry> 605 <entry><constant>V4L2_QUANTIZATION_FULL_RANGE</constant></entry>
@@ -620,8 +621,8 @@ is mapped to [16&hellip;235]. Cb and Cr are mapped from [-0.5&hellip;0.5] to [16
620 621
621 <section> 622 <section>
622 <title>Detailed Colorspace Descriptions</title> 623 <title>Detailed Colorspace Descriptions</title>
623 <section> 624 <section id="col-smpte-170m">
624 <title id="col-smpte-170m">Colorspace SMPTE 170M (<constant>V4L2_COLORSPACE_SMPTE170M</constant>)</title> 625 <title>Colorspace SMPTE 170M (<constant>V4L2_COLORSPACE_SMPTE170M</constant>)</title>
625 <para>The <xref linkend="smpte170m" /> standard defines the colorspace used by NTSC and PAL and by SDTV 626 <para>The <xref linkend="smpte170m" /> standard defines the colorspace used by NTSC and PAL and by SDTV
626in general. The default Y'CbCr encoding is <constant>V4L2_YCBCR_ENC_601</constant>. 627in general. The default Y'CbCr encoding is <constant>V4L2_YCBCR_ENC_601</constant>.
627The default Y'CbCr quantization is limited range. The chromaticities of the primary colors and 628The default Y'CbCr quantization is limited range. The chromaticities of the primary colors and
@@ -666,8 +667,7 @@ as the SMPTE C set, so this colorspace is sometimes called SMPTE C as well.</par
666 <variablelist> 667 <variablelist>
667 <varlistentry> 668 <varlistentry>
668 <term>The transfer function defined for SMPTE 170M is the same as the 669 <term>The transfer function defined for SMPTE 170M is the same as the
669one defined in Rec. 709. Normally L is in the range [0&hellip;1], but for the extended 670one defined in Rec. 709.</term>
670gamut xvYCC encoding values outside that range are allowed.</term>
671 <listitem> 671 <listitem>
672 <para>L' = -1.099(-L)<superscript>0.45</superscript>&nbsp;+&nbsp;0.099&nbsp;for&nbsp;L&nbsp;&le;&nbsp;-0.018</para> 672 <para>L' = -1.099(-L)<superscript>0.45</superscript>&nbsp;+&nbsp;0.099&nbsp;for&nbsp;L&nbsp;&le;&nbsp;-0.018</para>
673 <para>L' = 4.5L&nbsp;for&nbsp;-0.018&nbsp;&lt;&nbsp;L&nbsp;&lt;&nbsp;0.018</para> 673 <para>L' = 4.5L&nbsp;for&nbsp;-0.018&nbsp;&lt;&nbsp;L&nbsp;&lt;&nbsp;0.018</para>
@@ -702,29 +702,10 @@ defined in the <xref linkend="itu601" /> standard and this colorspace is sometim
702though BT.601 does not mention any color primaries.</para> 702though BT.601 does not mention any color primaries.</para>
703 <para>The default quantization is limited range, but full range is possible although 703 <para>The default quantization is limited range, but full range is possible although
704rarely seen.</para> 704rarely seen.</para>
705 <para>The <constant>V4L2_YCBCR_ENC_601</constant> encoding as described above is the
706default for this colorspace, but it can be overridden with <constant>V4L2_YCBCR_ENC_709</constant>,
707in which case the Rec. 709 Y'CbCr encoding is used.</para>
708 <variablelist>
709 <varlistentry>
710 <term>The xvYCC 601 encoding (<constant>V4L2_YCBCR_ENC_XV601</constant>, <xref linkend="xvycc" />) is similar
711to the BT.601 encoding, but it allows for R', G' and B' values that are outside the range
712[0&hellip;1]. The resulting Y', Cb and Cr values are scaled and offset:</term>
713 <listitem>
714 <para>Y'&nbsp;=&nbsp;(219&nbsp;/&nbsp;255)&nbsp;*&nbsp;(0.299R'&nbsp;+&nbsp;0.587G'&nbsp;+&nbsp;0.114B')&nbsp;+&nbsp;(16&nbsp;/&nbsp;255)</para>
715 <para>Cb&nbsp;=&nbsp;(224&nbsp;/&nbsp;255)&nbsp;*&nbsp;(-0.169R'&nbsp;-&nbsp;0.331G'&nbsp;+&nbsp;0.5B')</para>
716 <para>Cr&nbsp;=&nbsp;(224&nbsp;/&nbsp;255)&nbsp;*&nbsp;(0.5R'&nbsp;-&nbsp;0.419G'&nbsp;-&nbsp;0.081B')</para>
717 </listitem>
718 </varlistentry>
719 </variablelist>
720 <para>Y' is clamped to the range [0&hellip;1] and Cb and Cr are clamped
721to the range [-0.5&hellip;0.5]. The non-standard xvYCC 709 encoding can also be used by selecting
722<constant>V4L2_YCBCR_ENC_XV709</constant>. The xvYCC encodings always use full range
723quantization.</para>
724 </section> 705 </section>
725 706
726 <section> 707 <section id="col-rec709">
727 <title id="col-rec709">Colorspace Rec. 709 (<constant>V4L2_COLORSPACE_REC709</constant>)</title> 708 <title>Colorspace Rec. 709 (<constant>V4L2_COLORSPACE_REC709</constant>)</title>
728 <para>The <xref linkend="itu709" /> standard defines the colorspace used by HDTV in general. The default 709 <para>The <xref linkend="itu709" /> standard defines the colorspace used by HDTV in general. The default
729Y'CbCr encoding is <constant>V4L2_YCBCR_ENC_709</constant>. The default Y'CbCr quantization is 710Y'CbCr encoding is <constant>V4L2_YCBCR_ENC_709</constant>. The default Y'CbCr quantization is
730limited range. The chromaticities of the primary colors and the white reference are:</para> 711limited range. The chromaticities of the primary colors and the white reference are:</para>
@@ -803,26 +784,39 @@ rarely seen.</para>
803 <para>The <constant>V4L2_YCBCR_ENC_709</constant> encoding described above is the default 784 <para>The <constant>V4L2_YCBCR_ENC_709</constant> encoding described above is the default
804for this colorspace, but it can be overridden with <constant>V4L2_YCBCR_ENC_601</constant>, in which 785for this colorspace, but it can be overridden with <constant>V4L2_YCBCR_ENC_601</constant>, in which
805case the BT.601 Y'CbCr encoding is used.</para> 786case the BT.601 Y'CbCr encoding is used.</para>
787 <para>Two additional extended gamut Y'CbCr encodings are also possible with this colorspace:</para>
806 <variablelist> 788 <variablelist>
807 <varlistentry> 789 <varlistentry>
808 <term>The xvYCC 709 encoding (<constant>V4L2_YCBCR_ENC_XV709</constant>, <xref linkend="xvycc" />) 790 <term>The xvYCC 709 encoding (<constant>V4L2_YCBCR_ENC_XV709</constant>, <xref linkend="xvycc" />)
809is similar to the Rec. 709 encoding, but it allows for R', G' and B' values that are outside the range 791is similar to the Rec. 709 encoding, but it allows for R', G' and B' values that are outside the range
810[0&hellip;1]. The resulting Y', Cb and Cr values are scaled and offset:</term> 792[0&hellip;1]. The resulting Y', Cb and Cr values are scaled and offset:</term>
811 <listitem> 793 <listitem>
812 <para>Y'&nbsp;=&nbsp;(219&nbsp;/&nbsp;255)&nbsp;*&nbsp;(0.2126R'&nbsp;+&nbsp;0.7152G'&nbsp;+&nbsp;0.0722B')&nbsp;+&nbsp;(16&nbsp;/&nbsp;255)</para> 794 <para>Y'&nbsp;=&nbsp;(219&nbsp;/&nbsp;256)&nbsp;*&nbsp;(0.2126R'&nbsp;+&nbsp;0.7152G'&nbsp;+&nbsp;0.0722B')&nbsp;+&nbsp;(16&nbsp;/&nbsp;256)</para>
813 <para>Cb&nbsp;=&nbsp;(224&nbsp;/&nbsp;255)&nbsp;*&nbsp;(-0.1146R'&nbsp;-&nbsp;0.3854G'&nbsp;+&nbsp;0.5B')</para> 795 <para>Cb&nbsp;=&nbsp;(224&nbsp;/&nbsp;256)&nbsp;*&nbsp;(-0.1146R'&nbsp;-&nbsp;0.3854G'&nbsp;+&nbsp;0.5B')</para>
814 <para>Cr&nbsp;=&nbsp;(224&nbsp;/&nbsp;255)&nbsp;*&nbsp;(0.5R'&nbsp;-&nbsp;0.4542G'&nbsp;-&nbsp;0.0458B')</para> 796 <para>Cr&nbsp;=&nbsp;(224&nbsp;/&nbsp;256)&nbsp;*&nbsp;(0.5R'&nbsp;-&nbsp;0.4542G'&nbsp;-&nbsp;0.0458B')</para>
797 </listitem>
798 </varlistentry>
799 </variablelist>
800 <variablelist>
801 <varlistentry>
802 <term>The xvYCC 601 encoding (<constant>V4L2_YCBCR_ENC_XV601</constant>, <xref linkend="xvycc" />) is similar
803to the BT.601 encoding, but it allows for R', G' and B' values that are outside the range
804[0&hellip;1]. The resulting Y', Cb and Cr values are scaled and offset:</term>
805 <listitem>
806 <para>Y'&nbsp;=&nbsp;(219&nbsp;/&nbsp;256)&nbsp;*&nbsp;(0.299R'&nbsp;+&nbsp;0.587G'&nbsp;+&nbsp;0.114B')&nbsp;+&nbsp;(16&nbsp;/&nbsp;256)</para>
807 <para>Cb&nbsp;=&nbsp;(224&nbsp;/&nbsp;256)&nbsp;*&nbsp;(-0.169R'&nbsp;-&nbsp;0.331G'&nbsp;+&nbsp;0.5B')</para>
808 <para>Cr&nbsp;=&nbsp;(224&nbsp;/&nbsp;256)&nbsp;*&nbsp;(0.5R'&nbsp;-&nbsp;0.419G'&nbsp;-&nbsp;0.081B')</para>
815 </listitem> 809 </listitem>
816 </varlistentry> 810 </varlistentry>
817 </variablelist> 811 </variablelist>
818 <para>Y' is clamped to the range [0&hellip;1] and Cb and Cr are clamped 812 <para>Y' is clamped to the range [0&hellip;1] and Cb and Cr are clamped
819to the range [-0.5&hellip;0.5]. The non-standard xvYCC 601 encoding can also be used by 813to the range [-0.5&hellip;0.5]. The non-standard xvYCC 709 or xvYCC 601 encodings can be used by
820selecting <constant>V4L2_YCBCR_ENC_XV601</constant>. The xvYCC encodings always use full 814selecting <constant>V4L2_YCBCR_ENC_XV709</constant> or <constant>V4L2_YCBCR_ENC_XV601</constant>.
821range quantization.</para> 815The xvYCC encodings always use full range quantization.</para>
822 </section> 816 </section>
823 817
824 <section> 818 <section id="col-srgb">
825 <title id="col-srgb">Colorspace sRGB (<constant>V4L2_COLORSPACE_SRGB</constant>)</title> 819 <title>Colorspace sRGB (<constant>V4L2_COLORSPACE_SRGB</constant>)</title>
826 <para>The <xref linkend="srgb" /> standard defines the colorspace used by most webcams and computer graphics. The 820 <para>The <xref linkend="srgb" /> standard defines the colorspace used by most webcams and computer graphics. The
827default Y'CbCr encoding is <constant>V4L2_YCBCR_ENC_SYCC</constant>. The default Y'CbCr quantization 821default Y'CbCr encoding is <constant>V4L2_YCBCR_ENC_SYCC</constant>. The default Y'CbCr quantization
828is full range. The chromaticities of the primary colors and the white reference are:</para> 822is full range. The chromaticities of the primary colors and the white reference are:</para>
@@ -898,8 +892,8 @@ encoding, it is not. The <constant>V4L2_YCBCR_ENC_XV601</constant> scales and of
898values before quantization, but this encoding does not do that.</para> 892values before quantization, but this encoding does not do that.</para>
899 </section> 893 </section>
900 894
901 <section> 895 <section id="col-adobergb">
902 <title id="col-adobergb">Colorspace Adobe RGB (<constant>V4L2_COLORSPACE_ADOBERGB</constant>)</title> 896 <title>Colorspace Adobe RGB (<constant>V4L2_COLORSPACE_ADOBERGB</constant>)</title>
903 <para>The <xref linkend="adobergb" /> standard defines the colorspace used by computer graphics 897 <para>The <xref linkend="adobergb" /> standard defines the colorspace used by computer graphics
904that use the AdobeRGB colorspace. This is also known as the <xref linkend="oprgb" /> standard. 898that use the AdobeRGB colorspace. This is also known as the <xref linkend="oprgb" /> standard.
905The default Y'CbCr encoding is <constant>V4L2_YCBCR_ENC_601</constant>. The default Y'CbCr 899The default Y'CbCr encoding is <constant>V4L2_YCBCR_ENC_601</constant>. The default Y'CbCr
@@ -970,12 +964,12 @@ clamped to the range [-0.5&hellip;0.5]. This transform is identical to one defin
970SMPTE 170M/BT.601. The Y'CbCr quantization is limited range.</para> 964SMPTE 170M/BT.601. The Y'CbCr quantization is limited range.</para>
971 </section> 965 </section>
972 966
973 <section> 967 <section id="col-bt2020">
974 <title id="col-bt2020">Colorspace BT.2020 (<constant>V4L2_COLORSPACE_BT2020</constant>)</title> 968 <title>Colorspace BT.2020 (<constant>V4L2_COLORSPACE_BT2020</constant>)</title>
975 <para>The <xref linkend="itu2020" /> standard defines the colorspace used by Ultra-high definition 969 <para>The <xref linkend="itu2020" /> standard defines the colorspace used by Ultra-high definition
976television (UHDTV). The default Y'CbCr encoding is <constant>V4L2_YCBCR_ENC_BT2020</constant>. 970television (UHDTV). The default Y'CbCr encoding is <constant>V4L2_YCBCR_ENC_BT2020</constant>.
977The default Y'CbCr quantization is limited range. The chromaticities of the primary colors and 971The default R'G'B' quantization is limited range (!), and so is the default Y'CbCr quantization.
978the white reference are:</para> 972The chromaticities of the primary colors and the white reference are:</para>
979 <table frame="none"> 973 <table frame="none">
980 <title>BT.2020 Chromaticities</title> 974 <title>BT.2020 Chromaticities</title>
981 <tgroup cols="3" align="left"> 975 <tgroup cols="3" align="left">
@@ -1032,7 +1026,7 @@ the white reference are:</para>
1032 <term>The luminance (Y') and color difference (Cb and Cr) are obtained with the 1026 <term>The luminance (Y') and color difference (Cb and Cr) are obtained with the
1033following <constant>V4L2_YCBCR_ENC_BT2020</constant> encoding:</term> 1027following <constant>V4L2_YCBCR_ENC_BT2020</constant> encoding:</term>
1034 <listitem> 1028 <listitem>
1035 <para>Y'&nbsp;=&nbsp;0.2627R'&nbsp;+&nbsp;0.6789G'&nbsp;+&nbsp;0.0593B'</para> 1029 <para>Y'&nbsp;=&nbsp;0.2627R'&nbsp;+&nbsp;0.6780G'&nbsp;+&nbsp;0.0593B'</para>
1036 <para>Cb&nbsp;=&nbsp;-0.1396R'&nbsp;-&nbsp;0.3604G'&nbsp;+&nbsp;0.5B'</para> 1030 <para>Cb&nbsp;=&nbsp;-0.1396R'&nbsp;-&nbsp;0.3604G'&nbsp;+&nbsp;0.5B'</para>
1037 <para>Cr&nbsp;=&nbsp;0.5R'&nbsp;-&nbsp;0.4598G'&nbsp;-&nbsp;0.0402B'</para> 1031 <para>Cr&nbsp;=&nbsp;0.5R'&nbsp;-&nbsp;0.4598G'&nbsp;-&nbsp;0.0402B'</para>
1038 </listitem> 1032 </listitem>
@@ -1046,7 +1040,7 @@ clamped to the range [-0.5&hellip;0.5]. The Y'CbCr quantization is limited range
1046 <varlistentry> 1040 <varlistentry>
1047 <term>Luma:</term> 1041 <term>Luma:</term>
1048 <listitem> 1042 <listitem>
1049 <para>Yc'&nbsp;=&nbsp;(0.2627R&nbsp;+&nbsp;0.6789G&nbsp;+&nbsp;0.0593B)'</para> 1043 <para>Yc'&nbsp;=&nbsp;(0.2627R&nbsp;+&nbsp;0.6780G&nbsp;+&nbsp;0.0593B)'</para>
1050 </listitem> 1044 </listitem>
1051 </varlistentry> 1045 </varlistentry>
1052 </variablelist> 1046 </variablelist>
@@ -1054,7 +1048,7 @@ clamped to the range [-0.5&hellip;0.5]. The Y'CbCr quantization is limited range
1054 <varlistentry> 1048 <varlistentry>
1055 <term>B'&nbsp;-&nbsp;Yc'&nbsp;&le;&nbsp;0:</term> 1049 <term>B'&nbsp;-&nbsp;Yc'&nbsp;&le;&nbsp;0:</term>
1056 <listitem> 1050 <listitem>
1057 <para>Cbc&nbsp;=&nbsp;(B'&nbsp;-&nbsp;Y')&nbsp;/&nbsp;1.9404</para> 1051 <para>Cbc&nbsp;=&nbsp;(B'&nbsp;-&nbsp;Yc')&nbsp;/&nbsp;1.9404</para>
1058 </listitem> 1052 </listitem>
1059 </varlistentry> 1053 </varlistentry>
1060 </variablelist> 1054 </variablelist>
@@ -1062,7 +1056,7 @@ clamped to the range [-0.5&hellip;0.5]. The Y'CbCr quantization is limited range
1062 <varlistentry> 1056 <varlistentry>
1063 <term>B'&nbsp;-&nbsp;Yc'&nbsp;&gt;&nbsp;0:</term> 1057 <term>B'&nbsp;-&nbsp;Yc'&nbsp;&gt;&nbsp;0:</term>
1064 <listitem> 1058 <listitem>
1065 <para>Cbc&nbsp;=&nbsp;(B'&nbsp;-&nbsp;Y')&nbsp;/&nbsp;1.5816</para> 1059 <para>Cbc&nbsp;=&nbsp;(B'&nbsp;-&nbsp;Yc')&nbsp;/&nbsp;1.5816</para>
1066 </listitem> 1060 </listitem>
1067 </varlistentry> 1061 </varlistentry>
1068 </variablelist> 1062 </variablelist>
@@ -1086,8 +1080,8 @@ clamped to the range [-0.5&hellip;0.5]. The Y'CbCr quantization is limited range
1086clamped to the range [-0.5&hellip;0.5]. The Yc'CbcCrc quantization is limited range.</para> 1080clamped to the range [-0.5&hellip;0.5]. The Yc'CbcCrc quantization is limited range.</para>
1087 </section> 1081 </section>
1088 1082
1089 <section> 1083 <section id="col-smpte-240m">
1090 <title id="col-smpte-240m">Colorspace SMPTE 240M (<constant>V4L2_COLORSPACE_SMPTE240M</constant>)</title> 1084 <title>Colorspace SMPTE 240M (<constant>V4L2_COLORSPACE_SMPTE240M</constant>)</title>
1091 <para>The <xref linkend="smpte240m" /> standard was an interim standard used during the early days of HDTV (1988-1998). 1085 <para>The <xref linkend="smpte240m" /> standard was an interim standard used during the early days of HDTV (1988-1998).
1092It has been superseded by Rec. 709. The default Y'CbCr encoding is <constant>V4L2_YCBCR_ENC_SMPTE240M</constant>. 1086It has been superseded by Rec. 709. The default Y'CbCr encoding is <constant>V4L2_YCBCR_ENC_SMPTE240M</constant>.
1093The default Y'CbCr quantization is limited range. The chromaticities of the primary colors and the 1087The default Y'CbCr quantization is limited range. The chromaticities of the primary colors and the
@@ -1159,8 +1153,8 @@ following <constant>V4L2_YCBCR_ENC_SMPTE240M</constant> encoding:</term>
1159clamped to the range [-0.5&hellip;0.5]. The Y'CbCr quantization is limited range.</para> 1153clamped to the range [-0.5&hellip;0.5]. The Y'CbCr quantization is limited range.</para>
1160 </section> 1154 </section>
1161 1155
1162 <section> 1156 <section id="col-sysm">
1163 <title id="col-sysm">Colorspace NTSC 1953 (<constant>V4L2_COLORSPACE_470_SYSTEM_M</constant>)</title> 1157 <title>Colorspace NTSC 1953 (<constant>V4L2_COLORSPACE_470_SYSTEM_M</constant>)</title>
1164 <para>This standard defines the colorspace used by NTSC in 1953. In practice this 1158 <para>This standard defines the colorspace used by NTSC in 1953. In practice this
1165colorspace is obsolete and SMPTE 170M should be used instead. The default Y'CbCr encoding 1159colorspace is obsolete and SMPTE 170M should be used instead. The default Y'CbCr encoding
1166is <constant>V4L2_YCBCR_ENC_601</constant>. The default Y'CbCr quantization is limited range. 1160is <constant>V4L2_YCBCR_ENC_601</constant>. The default Y'CbCr quantization is limited range.
@@ -1237,8 +1231,8 @@ clamped to the range [-0.5&hellip;0.5]. The Y'CbCr quantization is limited range
1237This transform is identical to one defined in SMPTE 170M/BT.601.</para> 1231This transform is identical to one defined in SMPTE 170M/BT.601.</para>
1238 </section> 1232 </section>
1239 1233
1240 <section> 1234 <section id="col-sysbg">
1241 <title id="col-sysbg">Colorspace EBU Tech. 3213 (<constant>V4L2_COLORSPACE_470_SYSTEM_BG</constant>)</title> 1235 <title>Colorspace EBU Tech. 3213 (<constant>V4L2_COLORSPACE_470_SYSTEM_BG</constant>)</title>
1242 <para>The <xref linkend="tech3213" /> standard defines the colorspace used by PAL/SECAM in 1975. In practice this 1236 <para>The <xref linkend="tech3213" /> standard defines the colorspace used by PAL/SECAM in 1975. In practice this
1243colorspace is obsolete and SMPTE 170M should be used instead. The default Y'CbCr encoding 1237colorspace is obsolete and SMPTE 170M should be used instead. The default Y'CbCr encoding
1244is <constant>V4L2_YCBCR_ENC_601</constant>. The default Y'CbCr quantization is limited range. 1238is <constant>V4L2_YCBCR_ENC_601</constant>. The default Y'CbCr quantization is limited range.
@@ -1311,8 +1305,8 @@ clamped to the range [-0.5&hellip;0.5]. The Y'CbCr quantization is limited range
1311This transform is identical to one defined in SMPTE 170M/BT.601.</para> 1305This transform is identical to one defined in SMPTE 170M/BT.601.</para>
1312 </section> 1306 </section>
1313 1307
1314 <section> 1308 <section id="col-jpeg">
1315 <title id="col-jpeg">Colorspace JPEG (<constant>V4L2_COLORSPACE_JPEG</constant>)</title> 1309 <title>Colorspace JPEG (<constant>V4L2_COLORSPACE_JPEG</constant>)</title>
1316 <para>This colorspace defines the colorspace used by most (Motion-)JPEG formats. The chromaticities 1310 <para>This colorspace defines the colorspace used by most (Motion-)JPEG formats. The chromaticities
1317of the primary colors and the white reference are identical to sRGB. The Y'CbCr encoding is 1311of the primary colors and the white reference are identical to sRGB. The Y'CbCr encoding is
1318<constant>V4L2_YCBCR_ENC_601</constant> with full range quantization where 1312<constant>V4L2_YCBCR_ENC_601</constant> with full range quantization where
diff --git a/Documentation/DocBook/media/v4l/subdev-formats.xml b/Documentation/DocBook/media/v4l/subdev-formats.xml
index c5ea868e3909..2588ad781242 100644
--- a/Documentation/DocBook/media/v4l/subdev-formats.xml
+++ b/Documentation/DocBook/media/v4l/subdev-formats.xml
@@ -91,7 +91,9 @@ see <xref linkend="colorspaces" />.</entry>
91 <listitem><para>For formats where the total number of bits per pixel is smaller 91 <listitem><para>For formats where the total number of bits per pixel is smaller
92 than the number of bus samples per pixel times the bus width, a padding 92 than the number of bus samples per pixel times the bus width, a padding
93 value stating if the bytes are padded in their most high order bits 93 value stating if the bytes are padded in their most high order bits
94 (PADHI) or low order bits (PADLO).</para></listitem> 94 (PADHI) or low order bits (PADLO). A "C" prefix is used for component-wise
95 padding in the most high order bits (CPADHI) or low order bits (CPADLO)
96 of each separate component.</para></listitem>
95 <listitem><para>For formats where the number of bus samples per pixel is larger 97 <listitem><para>For formats where the number of bus samples per pixel is larger
96 than 1, an endianness value stating if the pixel is transferred MSB first 98 than 1, an endianness value stating if the pixel is transferred MSB first
97 (BE) or LSB first (LE).</para></listitem> 99 (BE) or LSB first (LE).</para></listitem>
@@ -192,6 +194,24 @@ see <xref linkend="colorspaces" />.</entry>
192 </row> 194 </row>
193 </thead> 195 </thead>
194 <tbody valign="top"> 196 <tbody valign="top">
197 <row id="MEDIA-BUS-FMT-RGB444-1X12">
198 <entry>MEDIA_BUS_FMT_RGB444_1X12</entry>
199 <entry>0x1016</entry>
200 <entry></entry>
201 &dash-ent-20;
202 <entry>r<subscript>3</subscript></entry>
203 <entry>r<subscript>2</subscript></entry>
204 <entry>r<subscript>1</subscript></entry>
205 <entry>r<subscript>0</subscript></entry>
206 <entry>g<subscript>3</subscript></entry>
207 <entry>g<subscript>2</subscript></entry>
208 <entry>g<subscript>1</subscript></entry>
209 <entry>g<subscript>0</subscript></entry>
210 <entry>b<subscript>3</subscript></entry>
211 <entry>b<subscript>2</subscript></entry>
212 <entry>b<subscript>1</subscript></entry>
213 <entry>b<subscript>0</subscript></entry>
214 </row>
195 <row id="MEDIA-BUS-FMT-RGB444-2X8-PADHI-BE"> 215 <row id="MEDIA-BUS-FMT-RGB444-2X8-PADHI-BE">
196 <entry>MEDIA_BUS_FMT_RGB444_2X8_PADHI_BE</entry> 216 <entry>MEDIA_BUS_FMT_RGB444_2X8_PADHI_BE</entry>
197 <entry>0x1001</entry> 217 <entry>0x1001</entry>
@@ -304,6 +324,28 @@ see <xref linkend="colorspaces" />.</entry>
304 <entry>g<subscript>4</subscript></entry> 324 <entry>g<subscript>4</subscript></entry>
305 <entry>g<subscript>3</subscript></entry> 325 <entry>g<subscript>3</subscript></entry>
306 </row> 326 </row>
327 <row id="MEDIA-BUS-FMT-RGB565-1X16">
328 <entry>MEDIA_BUS_FMT_RGB565_1X16</entry>
329 <entry>0x1017</entry>
330 <entry></entry>
331 &dash-ent-16;
332 <entry>r<subscript>4</subscript></entry>
333 <entry>r<subscript>3</subscript></entry>
334 <entry>r<subscript>2</subscript></entry>
335 <entry>r<subscript>1</subscript></entry>
336 <entry>r<subscript>0</subscript></entry>
337 <entry>g<subscript>5</subscript></entry>
338 <entry>g<subscript>4</subscript></entry>
339 <entry>g<subscript>3</subscript></entry>
340 <entry>g<subscript>2</subscript></entry>
341 <entry>g<subscript>1</subscript></entry>
342 <entry>g<subscript>0</subscript></entry>
343 <entry>b<subscript>4</subscript></entry>
344 <entry>b<subscript>3</subscript></entry>
345 <entry>b<subscript>2</subscript></entry>
346 <entry>b<subscript>1</subscript></entry>
347 <entry>b<subscript>0</subscript></entry>
348 </row>
307 <row id="MEDIA-BUS-FMT-BGR565-2X8-BE"> 349 <row id="MEDIA-BUS-FMT-BGR565-2X8-BE">
308 <entry>MEDIA_BUS_FMT_BGR565_2X8_BE</entry> 350 <entry>MEDIA_BUS_FMT_BGR565_2X8_BE</entry>
309 <entry>0x1005</entry> 351 <entry>0x1005</entry>
@@ -440,6 +482,126 @@ see <xref linkend="colorspaces" />.</entry>
440 <entry>b<subscript>1</subscript></entry> 482 <entry>b<subscript>1</subscript></entry>
441 <entry>b<subscript>0</subscript></entry> 483 <entry>b<subscript>0</subscript></entry>
442 </row> 484 </row>
485 <row id="MEDIA-BUS-FMT-RBG888-1X24">
486 <entry>MEDIA_BUS_FMT_RBG888_1X24</entry>
487 <entry>0x100e</entry>
488 <entry></entry>
489 &dash-ent-8;
490 <entry>r<subscript>7</subscript></entry>
491 <entry>r<subscript>6</subscript></entry>
492 <entry>r<subscript>5</subscript></entry>
493 <entry>r<subscript>4</subscript></entry>
494 <entry>r<subscript>3</subscript></entry>
495 <entry>r<subscript>2</subscript></entry>
496 <entry>r<subscript>1</subscript></entry>
497 <entry>r<subscript>0</subscript></entry>
498 <entry>b<subscript>7</subscript></entry>
499 <entry>b<subscript>6</subscript></entry>
500 <entry>b<subscript>5</subscript></entry>
501 <entry>b<subscript>4</subscript></entry>
502 <entry>b<subscript>3</subscript></entry>
503 <entry>b<subscript>2</subscript></entry>
504 <entry>b<subscript>1</subscript></entry>
505 <entry>b<subscript>0</subscript></entry>
506 <entry>g<subscript>7</subscript></entry>
507 <entry>g<subscript>6</subscript></entry>
508 <entry>g<subscript>5</subscript></entry>
509 <entry>g<subscript>4</subscript></entry>
510 <entry>g<subscript>3</subscript></entry>
511 <entry>g<subscript>2</subscript></entry>
512 <entry>g<subscript>1</subscript></entry>
513 <entry>g<subscript>0</subscript></entry>
514 </row>
515 <row id="MEDIA-BUS-FMT-RGB666-1X24_CPADHI">
516 <entry>MEDIA_BUS_FMT_RGB666_1X24_CPADHI</entry>
517 <entry>0x1015</entry>
518 <entry></entry>
519 &dash-ent-8;
520 <entry>0</entry>
521 <entry>0</entry>
522 <entry>r<subscript>5</subscript></entry>
523 <entry>r<subscript>4</subscript></entry>
524 <entry>r<subscript>3</subscript></entry>
525 <entry>r<subscript>2</subscript></entry>
526 <entry>r<subscript>1</subscript></entry>
527 <entry>r<subscript>0</subscript></entry>
528 <entry>0</entry>
529 <entry>0</entry>
530 <entry>g<subscript>5</subscript></entry>
531 <entry>g<subscript>4</subscript></entry>
532 <entry>g<subscript>3</subscript></entry>
533 <entry>g<subscript>2</subscript></entry>
534 <entry>g<subscript>1</subscript></entry>
535 <entry>g<subscript>0</subscript></entry>
536 <entry>0</entry>
537 <entry>0</entry>
538 <entry>b<subscript>5</subscript></entry>
539 <entry>b<subscript>4</subscript></entry>
540 <entry>b<subscript>3</subscript></entry>
541 <entry>b<subscript>2</subscript></entry>
542 <entry>b<subscript>1</subscript></entry>
543 <entry>b<subscript>0</subscript></entry>
544 </row>
545 <row id="MEDIA-BUS-FMT-BGR888-1X24">
546 <entry>MEDIA_BUS_FMT_BGR888_1X24</entry>
547 <entry>0x1013</entry>
548 <entry></entry>
549 &dash-ent-8;
550 <entry>b<subscript>7</subscript></entry>
551 <entry>b<subscript>6</subscript></entry>
552 <entry>b<subscript>5</subscript></entry>
553 <entry>b<subscript>4</subscript></entry>
554 <entry>b<subscript>3</subscript></entry>
555 <entry>b<subscript>2</subscript></entry>
556 <entry>b<subscript>1</subscript></entry>
557 <entry>b<subscript>0</subscript></entry>
558 <entry>g<subscript>7</subscript></entry>
559 <entry>g<subscript>6</subscript></entry>
560 <entry>g<subscript>5</subscript></entry>
561 <entry>g<subscript>4</subscript></entry>
562 <entry>g<subscript>3</subscript></entry>
563 <entry>g<subscript>2</subscript></entry>
564 <entry>g<subscript>1</subscript></entry>
565 <entry>g<subscript>0</subscript></entry>
566 <entry>r<subscript>7</subscript></entry>
567 <entry>r<subscript>6</subscript></entry>
568 <entry>r<subscript>5</subscript></entry>
569 <entry>r<subscript>4</subscript></entry>
570 <entry>r<subscript>3</subscript></entry>
571 <entry>r<subscript>2</subscript></entry>
572 <entry>r<subscript>1</subscript></entry>
573 <entry>r<subscript>0</subscript></entry>
574 </row>
575 <row id="MEDIA-BUS-FMT-GBR888-1X24">
576 <entry>MEDIA_BUS_FMT_GBR888_1X24</entry>
577 <entry>0x1014</entry>
578 <entry></entry>
579 &dash-ent-8;
580 <entry>g<subscript>7</subscript></entry>
581 <entry>g<subscript>6</subscript></entry>
582 <entry>g<subscript>5</subscript></entry>
583 <entry>g<subscript>4</subscript></entry>
584 <entry>g<subscript>3</subscript></entry>
585 <entry>g<subscript>2</subscript></entry>
586 <entry>g<subscript>1</subscript></entry>
587 <entry>g<subscript>0</subscript></entry>
588 <entry>b<subscript>7</subscript></entry>
589 <entry>b<subscript>6</subscript></entry>
590 <entry>b<subscript>5</subscript></entry>
591 <entry>b<subscript>4</subscript></entry>
592 <entry>b<subscript>3</subscript></entry>
593 <entry>b<subscript>2</subscript></entry>
594 <entry>b<subscript>1</subscript></entry>
595 <entry>b<subscript>0</subscript></entry>
596 <entry>r<subscript>7</subscript></entry>
597 <entry>r<subscript>6</subscript></entry>
598 <entry>r<subscript>5</subscript></entry>
599 <entry>r<subscript>4</subscript></entry>
600 <entry>r<subscript>3</subscript></entry>
601 <entry>r<subscript>2</subscript></entry>
602 <entry>r<subscript>1</subscript></entry>
603 <entry>r<subscript>0</subscript></entry>
604 </row>
443 <row id="MEDIA-BUS-FMT-RGB888-1X24"> 605 <row id="MEDIA-BUS-FMT-RGB888-1X24">
444 <entry>MEDIA_BUS_FMT_RGB888_1X24</entry> 606 <entry>MEDIA_BUS_FMT_RGB888_1X24</entry>
445 <entry>0x100a</entry> 607 <entry>0x100a</entry>
@@ -579,6 +741,298 @@ see <xref linkend="colorspaces" />.</entry>
579 <entry>b<subscript>1</subscript></entry> 741 <entry>b<subscript>1</subscript></entry>
580 <entry>b<subscript>0</subscript></entry> 742 <entry>b<subscript>0</subscript></entry>
581 </row> 743 </row>
744 <row id="MEDIA-BUS-FMT-RGB888-1X32-PADHI">
745 <entry>MEDIA_BUS_FMT_RGB888_1X32_PADHI</entry>
746 <entry>0x100f</entry>
747 <entry></entry>
748 <entry>0</entry>
749 <entry>0</entry>
750 <entry>0</entry>
751 <entry>0</entry>
752 <entry>0</entry>
753 <entry>0</entry>
754 <entry>0</entry>
755 <entry>0</entry>
756 <entry>r<subscript>7</subscript></entry>
757 <entry>r<subscript>6</subscript></entry>
758 <entry>r<subscript>5</subscript></entry>
759 <entry>r<subscript>4</subscript></entry>
760 <entry>r<subscript>3</subscript></entry>
761 <entry>r<subscript>2</subscript></entry>
762 <entry>r<subscript>1</subscript></entry>
763 <entry>r<subscript>0</subscript></entry>
764 <entry>g<subscript>7</subscript></entry>
765 <entry>g<subscript>6</subscript></entry>
766 <entry>g<subscript>5</subscript></entry>
767 <entry>g<subscript>4</subscript></entry>
768 <entry>g<subscript>3</subscript></entry>
769 <entry>g<subscript>2</subscript></entry>
770 <entry>g<subscript>1</subscript></entry>
771 <entry>g<subscript>0</subscript></entry>
772 <entry>b<subscript>7</subscript></entry>
773 <entry>b<subscript>6</subscript></entry>
774 <entry>b<subscript>5</subscript></entry>
775 <entry>b<subscript>4</subscript></entry>
776 <entry>b<subscript>3</subscript></entry>
777 <entry>b<subscript>2</subscript></entry>
778 <entry>b<subscript>1</subscript></entry>
779 <entry>b<subscript>0</subscript></entry>
780 </row>
781 </tbody>
782 </tgroup>
783 </table>
784
785 <para>On LVDS buses, usually each sample is transferred serialized in
786 seven time slots per pixel clock, on three (18-bit) or four (24-bit)
787 differential data pairs at the same time. The remaining bits are used for
788 control signals as defined by SPWG/PSWG/VESA or JEIDA standards.
789 The 24-bit RGB format serialized in seven time slots on four lanes using
790 JEIDA defined bit mapping will be named
791 <constant>MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA</constant>, for example.
792 </para>
793
794 <table pgwide="0" frame="none" id="v4l2-mbus-pixelcode-rgb-lvds">
795 <title>LVDS RGB formats</title>
796 <tgroup cols="8">
797 <colspec colname="id" align="left" />
798 <colspec colname="code" align="center" />
799 <colspec colname="slot" align="center" />
800 <colspec colname="lane" />
801 <colspec colnum="5" colname="l03" align="center" />
802 <colspec colnum="6" colname="l02" align="center" />
803 <colspec colnum="7" colname="l01" align="center" />
804 <colspec colnum="8" colname="l00" align="center" />
805 <spanspec namest="l03" nameend="l00" spanname="l0" />
806 <thead>
807 <row>
808 <entry>Identifier</entry>
809 <entry>Code</entry>
810 <entry></entry>
811 <entry></entry>
812 <entry spanname="l0">Data organization</entry>
813 </row>
814 <row>
815 <entry></entry>
816 <entry></entry>
817 <entry>Timeslot</entry>
818 <entry>Lane</entry>
819 <entry>3</entry>
820 <entry>2</entry>
821 <entry>1</entry>
822 <entry>0</entry>
823 </row>
824 </thead>
825 <tbody valign="top">
826 <row id="MEDIA-BUS-FMT-RGB666-1X7X3-SPWG">
827 <entry>MEDIA_BUS_FMT_RGB666_1X7X3_SPWG</entry>
828 <entry>0x1010</entry>
829 <entry>0</entry>
830 <entry></entry>
831 <entry>-</entry>
832 <entry>d</entry>
833 <entry>b<subscript>1</subscript></entry>
834 <entry>g<subscript>0</subscript></entry>
835 </row>
836 <row>
837 <entry></entry>
838 <entry></entry>
839 <entry>1</entry>
840 <entry></entry>
841 <entry>-</entry>
842 <entry>d</entry>
843 <entry>b<subscript>0</subscript></entry>
844 <entry>r<subscript>5</subscript></entry>
845 </row>
846 <row>
847 <entry></entry>
848 <entry></entry>
849 <entry>2</entry>
850 <entry></entry>
851 <entry>-</entry>
852 <entry>d</entry>
853 <entry>g<subscript>5</subscript></entry>
854 <entry>r<subscript>4</subscript></entry>
855 </row>
856 <row>
857 <entry></entry>
858 <entry></entry>
859 <entry>3</entry>
860 <entry></entry>
861 <entry>-</entry>
862 <entry>b<subscript>5</subscript></entry>
863 <entry>g<subscript>4</subscript></entry>
864 <entry>r<subscript>3</subscript></entry>
865 </row>
866 <row>
867 <entry></entry>
868 <entry></entry>
869 <entry>4</entry>
870 <entry></entry>
871 <entry>-</entry>
872 <entry>b<subscript>4</subscript></entry>
873 <entry>g<subscript>3</subscript></entry>
874 <entry>r<subscript>2</subscript></entry>
875 </row>
876 <row>
877 <entry></entry>
878 <entry></entry>
879 <entry>5</entry>
880 <entry></entry>
881 <entry>-</entry>
882 <entry>b<subscript>3</subscript></entry>
883 <entry>g<subscript>2</subscript></entry>
884 <entry>r<subscript>1</subscript></entry>
885 </row>
886 <row>
887 <entry></entry>
888 <entry></entry>
889 <entry>6</entry>
890 <entry></entry>
891 <entry>-</entry>
892 <entry>b<subscript>2</subscript></entry>
893 <entry>g<subscript>1</subscript></entry>
894 <entry>r<subscript>0</subscript></entry>
895 </row>
896 <row id="MEDIA-BUS-FMT-RGB888-1X7X4-SPWG">
897 <entry>MEDIA_BUS_FMT_RGB888_1X7X4_SPWG</entry>
898 <entry>0x1011</entry>
899 <entry>0</entry>
900 <entry></entry>
901 <entry>d</entry>
902 <entry>d</entry>
903 <entry>b<subscript>1</subscript></entry>
904 <entry>g<subscript>0</subscript></entry>
905 </row>
906 <row>
907 <entry></entry>
908 <entry></entry>
909 <entry>1</entry>
910 <entry></entry>
911 <entry>b<subscript>7</subscript></entry>
912 <entry>d</entry>
913 <entry>b<subscript>0</subscript></entry>
914 <entry>r<subscript>5</subscript></entry>
915 </row>
916 <row>
917 <entry></entry>
918 <entry></entry>
919 <entry>2</entry>
920 <entry></entry>
921 <entry>b<subscript>6</subscript></entry>
922 <entry>d</entry>
923 <entry>g<subscript>5</subscript></entry>
924 <entry>r<subscript>4</subscript></entry>
925 </row>
926 <row>
927 <entry></entry>
928 <entry></entry>
929 <entry>3</entry>
930 <entry></entry>
931 <entry>g<subscript>7</subscript></entry>
932 <entry>b<subscript>5</subscript></entry>
933 <entry>g<subscript>4</subscript></entry>
934 <entry>r<subscript>3</subscript></entry>
935 </row>
936 <row>
937 <entry></entry>
938 <entry></entry>
939 <entry>4</entry>
940 <entry></entry>
941 <entry>g<subscript>6</subscript></entry>
942 <entry>b<subscript>4</subscript></entry>
943 <entry>g<subscript>3</subscript></entry>
944 <entry>r<subscript>2</subscript></entry>
945 </row>
946 <row>
947 <entry></entry>
948 <entry></entry>
949 <entry>5</entry>
950 <entry></entry>
951 <entry>r<subscript>7</subscript></entry>
952 <entry>b<subscript>3</subscript></entry>
953 <entry>g<subscript>2</subscript></entry>
954 <entry>r<subscript>1</subscript></entry>
955 </row>
956 <row>
957 <entry></entry>
958 <entry></entry>
959 <entry>6</entry>
960 <entry></entry>
961 <entry>r<subscript>6</subscript></entry>
962 <entry>b<subscript>2</subscript></entry>
963 <entry>g<subscript>1</subscript></entry>
964 <entry>r<subscript>0</subscript></entry>
965 </row>
966 <row id="MEDIA-BUS-FMT-RGB888-1X7X4-JEIDA">
967 <entry>MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA</entry>
968 <entry>0x1012</entry>
969 <entry>0</entry>
970 <entry></entry>
971 <entry>d</entry>
972 <entry>d</entry>
973 <entry>b<subscript>3</subscript></entry>
974 <entry>g<subscript>2</subscript></entry>
975 </row>
976 <row>
977 <entry></entry>
978 <entry></entry>
979 <entry>1</entry>
980 <entry></entry>
981 <entry>b<subscript>1</subscript></entry>
982 <entry>d</entry>
983 <entry>b<subscript>2</subscript></entry>
984 <entry>r<subscript>7</subscript></entry>
985 </row>
986 <row>
987 <entry></entry>
988 <entry></entry>
989 <entry>2</entry>
990 <entry></entry>
991 <entry>b<subscript>0</subscript></entry>
992 <entry>d</entry>
993 <entry>g<subscript>7</subscript></entry>
994 <entry>r<subscript>6</subscript></entry>
995 </row>
996 <row>
997 <entry></entry>
998 <entry></entry>
999 <entry>3</entry>
1000 <entry></entry>
1001 <entry>g<subscript>1</subscript></entry>
1002 <entry>b<subscript>7</subscript></entry>
1003 <entry>g<subscript>6</subscript></entry>
1004 <entry>r<subscript>5</subscript></entry>
1005 </row>
1006 <row>
1007 <entry></entry>
1008 <entry></entry>
1009 <entry>4</entry>
1010 <entry></entry>
1011 <entry>g<subscript>0</subscript></entry>
1012 <entry>b<subscript>6</subscript></entry>
1013 <entry>g<subscript>5</subscript></entry>
1014 <entry>r<subscript>4</subscript></entry>
1015 </row>
1016 <row>
1017 <entry></entry>
1018 <entry></entry>
1019 <entry>5</entry>
1020 <entry></entry>
1021 <entry>r<subscript>1</subscript></entry>
1022 <entry>b<subscript>5</subscript></entry>
1023 <entry>g<subscript>4</subscript></entry>
1024 <entry>r<subscript>3</subscript></entry>
1025 </row>
1026 <row>
1027 <entry></entry>
1028 <entry></entry>
1029 <entry>6</entry>
1030 <entry></entry>
1031 <entry>r<subscript>0</subscript></entry>
1032 <entry>b<subscript>4</subscript></entry>
1033 <entry>g<subscript>3</subscript></entry>
1034 <entry>r<subscript>2</subscript></entry>
1035 </row>
582 </tbody> 1036 </tbody>
583 </tgroup> 1037 </tgroup>
584 </table> 1038 </table>
@@ -2188,11 +2642,15 @@ see <xref linkend="colorspaces" />.</entry>
2188 <entry>y<subscript>1</subscript></entry> 2642 <entry>y<subscript>1</subscript></entry>
2189 <entry>y<subscript>0</subscript></entry> 2643 <entry>y<subscript>0</subscript></entry>
2190 </row> 2644 </row>
2191 <row id="MEDIA-BUS-FMT-UYVY8-1X16"> 2645 <row id="MEDIA-BUS-FMT-UYVY12-2X12">
2192 <entry>MEDIA_BUS_FMT_UYVY8_1X16</entry> 2646 <entry>MEDIA_BUS_FMT_UYVY12_2X12</entry>
2193 <entry>0x200f</entry> 2647 <entry>0x201c</entry>
2194 <entry></entry> 2648 <entry></entry>
2195 &dash-ent-16; 2649 &dash-ent-20;
2650 <entry>u<subscript>11</subscript></entry>
2651 <entry>u<subscript>10</subscript></entry>
2652 <entry>u<subscript>9</subscript></entry>
2653 <entry>u<subscript>8</subscript></entry>
2196 <entry>u<subscript>7</subscript></entry> 2654 <entry>u<subscript>7</subscript></entry>
2197 <entry>u<subscript>6</subscript></entry> 2655 <entry>u<subscript>6</subscript></entry>
2198 <entry>u<subscript>5</subscript></entry> 2656 <entry>u<subscript>5</subscript></entry>
@@ -2201,6 +2659,16 @@ see <xref linkend="colorspaces" />.</entry>
2201 <entry>u<subscript>2</subscript></entry> 2659 <entry>u<subscript>2</subscript></entry>
2202 <entry>u<subscript>1</subscript></entry> 2660 <entry>u<subscript>1</subscript></entry>
2203 <entry>u<subscript>0</subscript></entry> 2661 <entry>u<subscript>0</subscript></entry>
2662 </row>
2663 <row>
2664 <entry></entry>
2665 <entry></entry>
2666 <entry></entry>
2667 &dash-ent-20;
2668 <entry>y<subscript>11</subscript></entry>
2669 <entry>y<subscript>10</subscript></entry>
2670 <entry>y<subscript>9</subscript></entry>
2671 <entry>y<subscript>8</subscript></entry>
2204 <entry>y<subscript>7</subscript></entry> 2672 <entry>y<subscript>7</subscript></entry>
2205 <entry>y<subscript>6</subscript></entry> 2673 <entry>y<subscript>6</subscript></entry>
2206 <entry>y<subscript>5</subscript></entry> 2674 <entry>y<subscript>5</subscript></entry>
@@ -2214,7 +2682,11 @@ see <xref linkend="colorspaces" />.</entry>
2214 <entry></entry> 2682 <entry></entry>
2215 <entry></entry> 2683 <entry></entry>
2216 <entry></entry> 2684 <entry></entry>
2217 &dash-ent-16; 2685 &dash-ent-20;
2686 <entry>v<subscript>11</subscript></entry>
2687 <entry>v<subscript>10</subscript></entry>
2688 <entry>v<subscript>9</subscript></entry>
2689 <entry>v<subscript>8</subscript></entry>
2218 <entry>v<subscript>7</subscript></entry> 2690 <entry>v<subscript>7</subscript></entry>
2219 <entry>v<subscript>6</subscript></entry> 2691 <entry>v<subscript>6</subscript></entry>
2220 <entry>v<subscript>5</subscript></entry> 2692 <entry>v<subscript>5</subscript></entry>
@@ -2223,6 +2695,16 @@ see <xref linkend="colorspaces" />.</entry>
2223 <entry>v<subscript>2</subscript></entry> 2695 <entry>v<subscript>2</subscript></entry>
2224 <entry>v<subscript>1</subscript></entry> 2696 <entry>v<subscript>1</subscript></entry>
2225 <entry>v<subscript>0</subscript></entry> 2697 <entry>v<subscript>0</subscript></entry>
2698 </row>
2699 <row>
2700 <entry></entry>
2701 <entry></entry>
2702 <entry></entry>
2703 &dash-ent-20;
2704 <entry>y<subscript>11</subscript></entry>
2705 <entry>y<subscript>10</subscript></entry>
2706 <entry>y<subscript>9</subscript></entry>
2707 <entry>y<subscript>8</subscript></entry>
2226 <entry>y<subscript>7</subscript></entry> 2708 <entry>y<subscript>7</subscript></entry>
2227 <entry>y<subscript>6</subscript></entry> 2709 <entry>y<subscript>6</subscript></entry>
2228 <entry>y<subscript>5</subscript></entry> 2710 <entry>y<subscript>5</subscript></entry>
@@ -2232,11 +2714,15 @@ see <xref linkend="colorspaces" />.</entry>
2232 <entry>y<subscript>1</subscript></entry> 2714 <entry>y<subscript>1</subscript></entry>
2233 <entry>y<subscript>0</subscript></entry> 2715 <entry>y<subscript>0</subscript></entry>
2234 </row> 2716 </row>
2235 <row id="MEDIA-BUS-FMT-VYUY8-1X16"> 2717 <row id="MEDIA-BUS-FMT-VYUY12-2X12">
2236 <entry>MEDIA_BUS_FMT_VYUY8_1X16</entry> 2718 <entry>MEDIA_BUS_FMT_VYUY12_2X12</entry>
2237 <entry>0x2010</entry> 2719 <entry>0x201d</entry>
2238 <entry></entry> 2720 <entry></entry>
2239 &dash-ent-16; 2721 &dash-ent-20;
2722 <entry>v<subscript>11</subscript></entry>
2723 <entry>v<subscript>10</subscript></entry>
2724 <entry>v<subscript>9</subscript></entry>
2725 <entry>v<subscript>8</subscript></entry>
2240 <entry>v<subscript>7</subscript></entry> 2726 <entry>v<subscript>7</subscript></entry>
2241 <entry>v<subscript>6</subscript></entry> 2727 <entry>v<subscript>6</subscript></entry>
2242 <entry>v<subscript>5</subscript></entry> 2728 <entry>v<subscript>5</subscript></entry>
@@ -2245,6 +2731,16 @@ see <xref linkend="colorspaces" />.</entry>
2245 <entry>v<subscript>2</subscript></entry> 2731 <entry>v<subscript>2</subscript></entry>
2246 <entry>v<subscript>1</subscript></entry> 2732 <entry>v<subscript>1</subscript></entry>
2247 <entry>v<subscript>0</subscript></entry> 2733 <entry>v<subscript>0</subscript></entry>
2734 </row>
2735 <row>
2736 <entry></entry>
2737 <entry></entry>
2738 <entry></entry>
2739 &dash-ent-20;
2740 <entry>y<subscript>11</subscript></entry>
2741 <entry>y<subscript>10</subscript></entry>
2742 <entry>y<subscript>9</subscript></entry>
2743 <entry>y<subscript>8</subscript></entry>
2248 <entry>y<subscript>7</subscript></entry> 2744 <entry>y<subscript>7</subscript></entry>
2249 <entry>y<subscript>6</subscript></entry> 2745 <entry>y<subscript>6</subscript></entry>
2250 <entry>y<subscript>5</subscript></entry> 2746 <entry>y<subscript>5</subscript></entry>
@@ -2258,7 +2754,11 @@ see <xref linkend="colorspaces" />.</entry>
2258 <entry></entry> 2754 <entry></entry>
2259 <entry></entry> 2755 <entry></entry>
2260 <entry></entry> 2756 <entry></entry>
2261 &dash-ent-16; 2757 &dash-ent-20;
2758 <entry>u<subscript>11</subscript></entry>
2759 <entry>u<subscript>10</subscript></entry>
2760 <entry>u<subscript>9</subscript></entry>
2761 <entry>u<subscript>8</subscript></entry>
2262 <entry>u<subscript>7</subscript></entry> 2762 <entry>u<subscript>7</subscript></entry>
2263 <entry>u<subscript>6</subscript></entry> 2763 <entry>u<subscript>6</subscript></entry>
2264 <entry>u<subscript>5</subscript></entry> 2764 <entry>u<subscript>5</subscript></entry>
@@ -2267,6 +2767,16 @@ see <xref linkend="colorspaces" />.</entry>
2267 <entry>u<subscript>2</subscript></entry> 2767 <entry>u<subscript>2</subscript></entry>
2268 <entry>u<subscript>1</subscript></entry> 2768 <entry>u<subscript>1</subscript></entry>
2269 <entry>u<subscript>0</subscript></entry> 2769 <entry>u<subscript>0</subscript></entry>
2770 </row>
2771 <row>
2772 <entry></entry>
2773 <entry></entry>
2774 <entry></entry>
2775 &dash-ent-20;
2776 <entry>y<subscript>11</subscript></entry>
2777 <entry>y<subscript>10</subscript></entry>
2778 <entry>y<subscript>9</subscript></entry>
2779 <entry>y<subscript>8</subscript></entry>
2270 <entry>y<subscript>7</subscript></entry> 2780 <entry>y<subscript>7</subscript></entry>
2271 <entry>y<subscript>6</subscript></entry> 2781 <entry>y<subscript>6</subscript></entry>
2272 <entry>y<subscript>5</subscript></entry> 2782 <entry>y<subscript>5</subscript></entry>
@@ -2276,11 +2786,15 @@ see <xref linkend="colorspaces" />.</entry>
2276 <entry>y<subscript>1</subscript></entry> 2786 <entry>y<subscript>1</subscript></entry>
2277 <entry>y<subscript>0</subscript></entry> 2787 <entry>y<subscript>0</subscript></entry>
2278 </row> 2788 </row>
2279 <row id="MEDIA-BUS-FMT-YUYV8-1X16"> 2789 <row id="MEDIA-BUS-FMT-YUYV12-2X12">
2280 <entry>MEDIA_BUS_FMT_YUYV8_1X16</entry> 2790 <entry>MEDIA_BUS_FMT_YUYV12_2X12</entry>
2281 <entry>0x2011</entry> 2791 <entry>0x201e</entry>
2282 <entry></entry> 2792 <entry></entry>
2283 &dash-ent-16; 2793 &dash-ent-20;
2794 <entry>y<subscript>11</subscript></entry>
2795 <entry>y<subscript>10</subscript></entry>
2796 <entry>y<subscript>9</subscript></entry>
2797 <entry>y<subscript>8</subscript></entry>
2284 <entry>y<subscript>7</subscript></entry> 2798 <entry>y<subscript>7</subscript></entry>
2285 <entry>y<subscript>6</subscript></entry> 2799 <entry>y<subscript>6</subscript></entry>
2286 <entry>y<subscript>5</subscript></entry> 2800 <entry>y<subscript>5</subscript></entry>
@@ -2289,6 +2803,16 @@ see <xref linkend="colorspaces" />.</entry>
2289 <entry>y<subscript>2</subscript></entry> 2803 <entry>y<subscript>2</subscript></entry>
2290 <entry>y<subscript>1</subscript></entry> 2804 <entry>y<subscript>1</subscript></entry>
2291 <entry>y<subscript>0</subscript></entry> 2805 <entry>y<subscript>0</subscript></entry>
2806 </row>
2807 <row>
2808 <entry></entry>
2809 <entry></entry>
2810 <entry></entry>
2811 &dash-ent-20;
2812 <entry>u<subscript>11</subscript></entry>
2813 <entry>u<subscript>10</subscript></entry>
2814 <entry>u<subscript>9</subscript></entry>
2815 <entry>u<subscript>8</subscript></entry>
2292 <entry>u<subscript>7</subscript></entry> 2816 <entry>u<subscript>7</subscript></entry>
2293 <entry>u<subscript>6</subscript></entry> 2817 <entry>u<subscript>6</subscript></entry>
2294 <entry>u<subscript>5</subscript></entry> 2818 <entry>u<subscript>5</subscript></entry>
@@ -2302,7 +2826,11 @@ see <xref linkend="colorspaces" />.</entry>
2302 <entry></entry> 2826 <entry></entry>
2303 <entry></entry> 2827 <entry></entry>
2304 <entry></entry> 2828 <entry></entry>
2305 &dash-ent-16; 2829 &dash-ent-20;
2830 <entry>y<subscript>11</subscript></entry>
2831 <entry>y<subscript>10</subscript></entry>
2832 <entry>y<subscript>9</subscript></entry>
2833 <entry>y<subscript>8</subscript></entry>
2306 <entry>y<subscript>7</subscript></entry> 2834 <entry>y<subscript>7</subscript></entry>
2307 <entry>y<subscript>6</subscript></entry> 2835 <entry>y<subscript>6</subscript></entry>
2308 <entry>y<subscript>5</subscript></entry> 2836 <entry>y<subscript>5</subscript></entry>
@@ -2311,6 +2839,16 @@ see <xref linkend="colorspaces" />.</entry>
2311 <entry>y<subscript>2</subscript></entry> 2839 <entry>y<subscript>2</subscript></entry>
2312 <entry>y<subscript>1</subscript></entry> 2840 <entry>y<subscript>1</subscript></entry>
2313 <entry>y<subscript>0</subscript></entry> 2841 <entry>y<subscript>0</subscript></entry>
2842 </row>
2843 <row>
2844 <entry></entry>
2845 <entry></entry>
2846 <entry></entry>
2847 &dash-ent-20;
2848 <entry>v<subscript>11</subscript></entry>
2849 <entry>v<subscript>10</subscript></entry>
2850 <entry>v<subscript>9</subscript></entry>
2851 <entry>v<subscript>8</subscript></entry>
2314 <entry>v<subscript>7</subscript></entry> 2852 <entry>v<subscript>7</subscript></entry>
2315 <entry>v<subscript>6</subscript></entry> 2853 <entry>v<subscript>6</subscript></entry>
2316 <entry>v<subscript>5</subscript></entry> 2854 <entry>v<subscript>5</subscript></entry>
@@ -2320,11 +2858,15 @@ see <xref linkend="colorspaces" />.</entry>
2320 <entry>v<subscript>1</subscript></entry> 2858 <entry>v<subscript>1</subscript></entry>
2321 <entry>v<subscript>0</subscript></entry> 2859 <entry>v<subscript>0</subscript></entry>
2322 </row> 2860 </row>
2323 <row id="MEDIA-BUS-FMT-YVYU8-1X16"> 2861 <row id="MEDIA-BUS-FMT-YVYU12-2X12">
2324 <entry>MEDIA_BUS_FMT_YVYU8_1X16</entry> 2862 <entry>MEDIA_BUS_FMT_YVYU12_2X12</entry>
2325 <entry>0x2012</entry> 2863 <entry>0x201f</entry>
2326 <entry></entry> 2864 <entry></entry>
2327 &dash-ent-16; 2865 &dash-ent-20;
2866 <entry>y<subscript>11</subscript></entry>
2867 <entry>y<subscript>10</subscript></entry>
2868 <entry>y<subscript>9</subscript></entry>
2869 <entry>y<subscript>8</subscript></entry>
2328 <entry>y<subscript>7</subscript></entry> 2870 <entry>y<subscript>7</subscript></entry>
2329 <entry>y<subscript>6</subscript></entry> 2871 <entry>y<subscript>6</subscript></entry>
2330 <entry>y<subscript>5</subscript></entry> 2872 <entry>y<subscript>5</subscript></entry>
@@ -2333,6 +2875,16 @@ see <xref linkend="colorspaces" />.</entry>
2333 <entry>y<subscript>2</subscript></entry> 2875 <entry>y<subscript>2</subscript></entry>
2334 <entry>y<subscript>1</subscript></entry> 2876 <entry>y<subscript>1</subscript></entry>
2335 <entry>y<subscript>0</subscript></entry> 2877 <entry>y<subscript>0</subscript></entry>
2878 </row>
2879 <row>
2880 <entry></entry>
2881 <entry></entry>
2882 <entry></entry>
2883 &dash-ent-20;
2884 <entry>v<subscript>11</subscript></entry>
2885 <entry>v<subscript>10</subscript></entry>
2886 <entry>v<subscript>9</subscript></entry>
2887 <entry>v<subscript>8</subscript></entry>
2336 <entry>v<subscript>7</subscript></entry> 2888 <entry>v<subscript>7</subscript></entry>
2337 <entry>v<subscript>6</subscript></entry> 2889 <entry>v<subscript>6</subscript></entry>
2338 <entry>v<subscript>5</subscript></entry> 2890 <entry>v<subscript>5</subscript></entry>
@@ -2346,29 +2898,11 @@ see <xref linkend="colorspaces" />.</entry>
2346 <entry></entry> 2898 <entry></entry>
2347 <entry></entry> 2899 <entry></entry>
2348 <entry></entry> 2900 <entry></entry>
2349 &dash-ent-16; 2901 &dash-ent-20;
2350 <entry>y<subscript>7</subscript></entry> 2902 <entry>y<subscript>11</subscript></entry>
2351 <entry>y<subscript>6</subscript></entry> 2903 <entry>y<subscript>10</subscript></entry>
2352 <entry>y<subscript>5</subscript></entry> 2904 <entry>y<subscript>9</subscript></entry>
2353 <entry>y<subscript>4</subscript></entry> 2905 <entry>y<subscript>8</subscript></entry>
2354 <entry>y<subscript>3</subscript></entry>
2355 <entry>y<subscript>2</subscript></entry>
2356 <entry>y<subscript>1</subscript></entry>
2357 <entry>y<subscript>0</subscript></entry>
2358 <entry>u<subscript>7</subscript></entry>
2359 <entry>u<subscript>6</subscript></entry>
2360 <entry>u<subscript>5</subscript></entry>
2361 <entry>u<subscript>4</subscript></entry>
2362 <entry>u<subscript>3</subscript></entry>
2363 <entry>u<subscript>2</subscript></entry>
2364 <entry>u<subscript>1</subscript></entry>
2365 <entry>u<subscript>0</subscript></entry>
2366 </row>
2367 <row id="MEDIA-BUS-FMT-YDYUYDYV8-1X16">
2368 <entry>MEDIA_BUS_FMT_YDYUYDYV8_1X16</entry>
2369 <entry>0x2014</entry>
2370 <entry></entry>
2371 &dash-ent-16;
2372 <entry>y<subscript>7</subscript></entry> 2906 <entry>y<subscript>7</subscript></entry>
2373 <entry>y<subscript>6</subscript></entry> 2907 <entry>y<subscript>6</subscript></entry>
2374 <entry>y<subscript>5</subscript></entry> 2908 <entry>y<subscript>5</subscript></entry>
@@ -2377,28 +2911,16 @@ see <xref linkend="colorspaces" />.</entry>
2377 <entry>y<subscript>2</subscript></entry> 2911 <entry>y<subscript>2</subscript></entry>
2378 <entry>y<subscript>1</subscript></entry> 2912 <entry>y<subscript>1</subscript></entry>
2379 <entry>y<subscript>0</subscript></entry> 2913 <entry>y<subscript>0</subscript></entry>
2380 <entry>d</entry>
2381 <entry>d</entry>
2382 <entry>d</entry>
2383 <entry>d</entry>
2384 <entry>d</entry>
2385 <entry>d</entry>
2386 <entry>d</entry>
2387 <entry>d</entry>
2388 </row> 2914 </row>
2389 <row> 2915 <row>
2390 <entry></entry> 2916 <entry></entry>
2391 <entry></entry> 2917 <entry></entry>
2392 <entry></entry> 2918 <entry></entry>
2393 &dash-ent-16; 2919 &dash-ent-20;
2394 <entry>y<subscript>7</subscript></entry> 2920 <entry>u<subscript>11</subscript></entry>
2395 <entry>y<subscript>6</subscript></entry> 2921 <entry>u<subscript>10</subscript></entry>
2396 <entry>y<subscript>5</subscript></entry> 2922 <entry>u<subscript>9</subscript></entry>
2397 <entry>y<subscript>4</subscript></entry> 2923 <entry>u<subscript>8</subscript></entry>
2398 <entry>y<subscript>3</subscript></entry>
2399 <entry>y<subscript>2</subscript></entry>
2400 <entry>y<subscript>1</subscript></entry>
2401 <entry>y<subscript>0</subscript></entry>
2402 <entry>u<subscript>7</subscript></entry> 2924 <entry>u<subscript>7</subscript></entry>
2403 <entry>u<subscript>6</subscript></entry> 2925 <entry>u<subscript>6</subscript></entry>
2404 <entry>u<subscript>5</subscript></entry> 2926 <entry>u<subscript>5</subscript></entry>
@@ -2408,57 +2930,11 @@ see <xref linkend="colorspaces" />.</entry>
2408 <entry>u<subscript>1</subscript></entry> 2930 <entry>u<subscript>1</subscript></entry>
2409 <entry>u<subscript>0</subscript></entry> 2931 <entry>u<subscript>0</subscript></entry>
2410 </row> 2932 </row>
2411 <row> 2933 <row id="MEDIA-BUS-FMT-UYVY8-1X16">
2412 <entry></entry> 2934 <entry>MEDIA_BUS_FMT_UYVY8_1X16</entry>
2413 <entry></entry> 2935 <entry>0x200f</entry>
2414 <entry></entry>
2415 &dash-ent-16;
2416 <entry>y<subscript>7</subscript></entry>
2417 <entry>y<subscript>6</subscript></entry>
2418 <entry>y<subscript>5</subscript></entry>
2419 <entry>y<subscript>4</subscript></entry>
2420 <entry>y<subscript>3</subscript></entry>
2421 <entry>y<subscript>2</subscript></entry>
2422 <entry>y<subscript>1</subscript></entry>
2423 <entry>y<subscript>0</subscript></entry>
2424 <entry>d</entry>
2425 <entry>d</entry>
2426 <entry>d</entry>
2427 <entry>d</entry>
2428 <entry>d</entry>
2429 <entry>d</entry>
2430 <entry>d</entry>
2431 <entry>d</entry>
2432 </row>
2433 <row>
2434 <entry></entry>
2435 <entry></entry>
2436 <entry></entry> 2936 <entry></entry>
2437 &dash-ent-16; 2937 &dash-ent-16;
2438 <entry>y<subscript>7</subscript></entry>
2439 <entry>y<subscript>6</subscript></entry>
2440 <entry>y<subscript>5</subscript></entry>
2441 <entry>y<subscript>4</subscript></entry>
2442 <entry>y<subscript>3</subscript></entry>
2443 <entry>y<subscript>2</subscript></entry>
2444 <entry>y<subscript>1</subscript></entry>
2445 <entry>y<subscript>0</subscript></entry>
2446 <entry>v<subscript>7</subscript></entry>
2447 <entry>v<subscript>6</subscript></entry>
2448 <entry>v<subscript>5</subscript></entry>
2449 <entry>v<subscript>4</subscript></entry>
2450 <entry>v<subscript>3</subscript></entry>
2451 <entry>v<subscript>2</subscript></entry>
2452 <entry>v<subscript>1</subscript></entry>
2453 <entry>v<subscript>0</subscript></entry>
2454 </row>
2455 <row id="MEDIA-BUS-FMT-UYVY10-1X20">
2456 <entry>MEDIA_BUS_FMT_UYVY10_1X20</entry>
2457 <entry>0x201a</entry>
2458 <entry></entry>
2459 &dash-ent-12;
2460 <entry>u<subscript>9</subscript></entry>
2461 <entry>u<subscript>8</subscript></entry>
2462 <entry>u<subscript>7</subscript></entry> 2938 <entry>u<subscript>7</subscript></entry>
2463 <entry>u<subscript>6</subscript></entry> 2939 <entry>u<subscript>6</subscript></entry>
2464 <entry>u<subscript>5</subscript></entry> 2940 <entry>u<subscript>5</subscript></entry>
@@ -2467,8 +2943,6 @@ see <xref linkend="colorspaces" />.</entry>
2467 <entry>u<subscript>2</subscript></entry> 2943 <entry>u<subscript>2</subscript></entry>
2468 <entry>u<subscript>1</subscript></entry> 2944 <entry>u<subscript>1</subscript></entry>
2469 <entry>u<subscript>0</subscript></entry> 2945 <entry>u<subscript>0</subscript></entry>
2470 <entry>y<subscript>9</subscript></entry>
2471 <entry>y<subscript>8</subscript></entry>
2472 <entry>y<subscript>7</subscript></entry> 2946 <entry>y<subscript>7</subscript></entry>
2473 <entry>y<subscript>6</subscript></entry> 2947 <entry>y<subscript>6</subscript></entry>
2474 <entry>y<subscript>5</subscript></entry> 2948 <entry>y<subscript>5</subscript></entry>
@@ -2482,9 +2956,7 @@ see <xref linkend="colorspaces" />.</entry>
2482 <entry></entry> 2956 <entry></entry>
2483 <entry></entry> 2957 <entry></entry>
2484 <entry></entry> 2958 <entry></entry>
2485 &dash-ent-12; 2959 &dash-ent-16;
2486 <entry>v<subscript>9</subscript></entry>
2487 <entry>v<subscript>8</subscript></entry>
2488 <entry>v<subscript>7</subscript></entry> 2960 <entry>v<subscript>7</subscript></entry>
2489 <entry>v<subscript>6</subscript></entry> 2961 <entry>v<subscript>6</subscript></entry>
2490 <entry>v<subscript>5</subscript></entry> 2962 <entry>v<subscript>5</subscript></entry>
@@ -2493,8 +2965,6 @@ see <xref linkend="colorspaces" />.</entry>
2493 <entry>v<subscript>2</subscript></entry> 2965 <entry>v<subscript>2</subscript></entry>
2494 <entry>v<subscript>1</subscript></entry> 2966 <entry>v<subscript>1</subscript></entry>
2495 <entry>v<subscript>0</subscript></entry> 2967 <entry>v<subscript>0</subscript></entry>
2496 <entry>y<subscript>9</subscript></entry>
2497 <entry>y<subscript>8</subscript></entry>
2498 <entry>y<subscript>7</subscript></entry> 2968 <entry>y<subscript>7</subscript></entry>
2499 <entry>y<subscript>6</subscript></entry> 2969 <entry>y<subscript>6</subscript></entry>
2500 <entry>y<subscript>5</subscript></entry> 2970 <entry>y<subscript>5</subscript></entry>
@@ -2504,13 +2974,11 @@ see <xref linkend="colorspaces" />.</entry>
2504 <entry>y<subscript>1</subscript></entry> 2974 <entry>y<subscript>1</subscript></entry>
2505 <entry>y<subscript>0</subscript></entry> 2975 <entry>y<subscript>0</subscript></entry>
2506 </row> 2976 </row>
2507 <row id="MEDIA-BUS-FMT-VYUY10-1X20"> 2977 <row id="MEDIA-BUS-FMT-VYUY8-1X16">
2508 <entry>MEDIA_BUS_FMT_VYUY10_1X20</entry> 2978 <entry>MEDIA_BUS_FMT_VYUY8_1X16</entry>
2509 <entry>0x201b</entry> 2979 <entry>0x2010</entry>
2510 <entry></entry> 2980 <entry></entry>
2511 &dash-ent-12; 2981 &dash-ent-16;
2512 <entry>v<subscript>9</subscript></entry>
2513 <entry>v<subscript>8</subscript></entry>
2514 <entry>v<subscript>7</subscript></entry> 2982 <entry>v<subscript>7</subscript></entry>
2515 <entry>v<subscript>6</subscript></entry> 2983 <entry>v<subscript>6</subscript></entry>
2516 <entry>v<subscript>5</subscript></entry> 2984 <entry>v<subscript>5</subscript></entry>
@@ -2519,8 +2987,6 @@ see <xref linkend="colorspaces" />.</entry>
2519 <entry>v<subscript>2</subscript></entry> 2987 <entry>v<subscript>2</subscript></entry>
2520 <entry>v<subscript>1</subscript></entry> 2988 <entry>v<subscript>1</subscript></entry>
2521 <entry>v<subscript>0</subscript></entry> 2989 <entry>v<subscript>0</subscript></entry>
2522 <entry>y<subscript>9</subscript></entry>
2523 <entry>y<subscript>8</subscript></entry>
2524 <entry>y<subscript>7</subscript></entry> 2990 <entry>y<subscript>7</subscript></entry>
2525 <entry>y<subscript>6</subscript></entry> 2991 <entry>y<subscript>6</subscript></entry>
2526 <entry>y<subscript>5</subscript></entry> 2992 <entry>y<subscript>5</subscript></entry>
@@ -2534,9 +3000,7 @@ see <xref linkend="colorspaces" />.</entry>
2534 <entry></entry> 3000 <entry></entry>
2535 <entry></entry> 3001 <entry></entry>
2536 <entry></entry> 3002 <entry></entry>
2537 &dash-ent-12; 3003 &dash-ent-16;
2538 <entry>u<subscript>9</subscript></entry>
2539 <entry>u<subscript>8</subscript></entry>
2540 <entry>u<subscript>7</subscript></entry> 3004 <entry>u<subscript>7</subscript></entry>
2541 <entry>u<subscript>6</subscript></entry> 3005 <entry>u<subscript>6</subscript></entry>
2542 <entry>u<subscript>5</subscript></entry> 3006 <entry>u<subscript>5</subscript></entry>
@@ -2545,8 +3009,6 @@ see <xref linkend="colorspaces" />.</entry>
2545 <entry>u<subscript>2</subscript></entry> 3009 <entry>u<subscript>2</subscript></entry>
2546 <entry>u<subscript>1</subscript></entry> 3010 <entry>u<subscript>1</subscript></entry>
2547 <entry>u<subscript>0</subscript></entry> 3011 <entry>u<subscript>0</subscript></entry>
2548 <entry>y<subscript>9</subscript></entry>
2549 <entry>y<subscript>8</subscript></entry>
2550 <entry>y<subscript>7</subscript></entry> 3012 <entry>y<subscript>7</subscript></entry>
2551 <entry>y<subscript>6</subscript></entry> 3013 <entry>y<subscript>6</subscript></entry>
2552 <entry>y<subscript>5</subscript></entry> 3014 <entry>y<subscript>5</subscript></entry>
@@ -2556,13 +3018,11 @@ see <xref linkend="colorspaces" />.</entry>
2556 <entry>y<subscript>1</subscript></entry> 3018 <entry>y<subscript>1</subscript></entry>
2557 <entry>y<subscript>0</subscript></entry> 3019 <entry>y<subscript>0</subscript></entry>
2558 </row> 3020 </row>
2559 <row id="MEDIA-BUS-FMT-YUYV10-1X20"> 3021 <row id="MEDIA-BUS-FMT-YUYV8-1X16">
2560 <entry>MEDIA_BUS_FMT_YUYV10_1X20</entry> 3022 <entry>MEDIA_BUS_FMT_YUYV8_1X16</entry>
2561 <entry>0x200d</entry> 3023 <entry>0x2011</entry>
2562 <entry></entry> 3024 <entry></entry>
2563 &dash-ent-12; 3025 &dash-ent-16;
2564 <entry>y<subscript>9</subscript></entry>
2565 <entry>y<subscript>8</subscript></entry>
2566 <entry>y<subscript>7</subscript></entry> 3026 <entry>y<subscript>7</subscript></entry>
2567 <entry>y<subscript>6</subscript></entry> 3027 <entry>y<subscript>6</subscript></entry>
2568 <entry>y<subscript>5</subscript></entry> 3028 <entry>y<subscript>5</subscript></entry>
@@ -2571,8 +3031,6 @@ see <xref linkend="colorspaces" />.</entry>
2571 <entry>y<subscript>2</subscript></entry> 3031 <entry>y<subscript>2</subscript></entry>
2572 <entry>y<subscript>1</subscript></entry> 3032 <entry>y<subscript>1</subscript></entry>
2573 <entry>y<subscript>0</subscript></entry> 3033 <entry>y<subscript>0</subscript></entry>
2574 <entry>u<subscript>9</subscript></entry>
2575 <entry>u<subscript>8</subscript></entry>
2576 <entry>u<subscript>7</subscript></entry> 3034 <entry>u<subscript>7</subscript></entry>
2577 <entry>u<subscript>6</subscript></entry> 3035 <entry>u<subscript>6</subscript></entry>
2578 <entry>u<subscript>5</subscript></entry> 3036 <entry>u<subscript>5</subscript></entry>
@@ -2586,9 +3044,7 @@ see <xref linkend="colorspaces" />.</entry>
2586 <entry></entry> 3044 <entry></entry>
2587 <entry></entry> 3045 <entry></entry>
2588 <entry></entry> 3046 <entry></entry>
2589 &dash-ent-12; 3047 &dash-ent-16;
2590 <entry>y<subscript>9</subscript></entry>
2591 <entry>y<subscript>8</subscript></entry>
2592 <entry>y<subscript>7</subscript></entry> 3048 <entry>y<subscript>7</subscript></entry>
2593 <entry>y<subscript>6</subscript></entry> 3049 <entry>y<subscript>6</subscript></entry>
2594 <entry>y<subscript>5</subscript></entry> 3050 <entry>y<subscript>5</subscript></entry>
@@ -2597,8 +3053,6 @@ see <xref linkend="colorspaces" />.</entry>
2597 <entry>y<subscript>2</subscript></entry> 3053 <entry>y<subscript>2</subscript></entry>
2598 <entry>y<subscript>1</subscript></entry> 3054 <entry>y<subscript>1</subscript></entry>
2599 <entry>y<subscript>0</subscript></entry> 3055 <entry>y<subscript>0</subscript></entry>
2600 <entry>v<subscript>9</subscript></entry>
2601 <entry>v<subscript>8</subscript></entry>
2602 <entry>v<subscript>7</subscript></entry> 3056 <entry>v<subscript>7</subscript></entry>
2603 <entry>v<subscript>6</subscript></entry> 3057 <entry>v<subscript>6</subscript></entry>
2604 <entry>v<subscript>5</subscript></entry> 3058 <entry>v<subscript>5</subscript></entry>
@@ -2608,13 +3062,11 @@ see <xref linkend="colorspaces" />.</entry>
2608 <entry>v<subscript>1</subscript></entry> 3062 <entry>v<subscript>1</subscript></entry>
2609 <entry>v<subscript>0</subscript></entry> 3063 <entry>v<subscript>0</subscript></entry>
2610 </row> 3064 </row>
2611 <row id="MEDIA-BUS-FMT-YVYU10-1X20"> 3065 <row id="MEDIA-BUS-FMT-YVYU8-1X16">
2612 <entry>MEDIA_BUS_FMT_YVYU10_1X20</entry> 3066 <entry>MEDIA_BUS_FMT_YVYU8_1X16</entry>
2613 <entry>0x200e</entry> 3067 <entry>0x2012</entry>
2614 <entry></entry> 3068 <entry></entry>
2615 &dash-ent-12; 3069 &dash-ent-16;
2616 <entry>y<subscript>9</subscript></entry>
2617 <entry>y<subscript>8</subscript></entry>
2618 <entry>y<subscript>7</subscript></entry> 3070 <entry>y<subscript>7</subscript></entry>
2619 <entry>y<subscript>6</subscript></entry> 3071 <entry>y<subscript>6</subscript></entry>
2620 <entry>y<subscript>5</subscript></entry> 3072 <entry>y<subscript>5</subscript></entry>
@@ -2623,8 +3075,6 @@ see <xref linkend="colorspaces" />.</entry>
2623 <entry>y<subscript>2</subscript></entry> 3075 <entry>y<subscript>2</subscript></entry>
2624 <entry>y<subscript>1</subscript></entry> 3076 <entry>y<subscript>1</subscript></entry>
2625 <entry>y<subscript>0</subscript></entry> 3077 <entry>y<subscript>0</subscript></entry>
2626 <entry>v<subscript>9</subscript></entry>
2627 <entry>v<subscript>8</subscript></entry>
2628 <entry>v<subscript>7</subscript></entry> 3078 <entry>v<subscript>7</subscript></entry>
2629 <entry>v<subscript>6</subscript></entry> 3079 <entry>v<subscript>6</subscript></entry>
2630 <entry>v<subscript>5</subscript></entry> 3080 <entry>v<subscript>5</subscript></entry>
@@ -2638,9 +3088,7 @@ see <xref linkend="colorspaces" />.</entry>
2638 <entry></entry> 3088 <entry></entry>
2639 <entry></entry> 3089 <entry></entry>
2640 <entry></entry> 3090 <entry></entry>
2641 &dash-ent-12; 3091 &dash-ent-16;
2642 <entry>y<subscript>9</subscript></entry>
2643 <entry>y<subscript>8</subscript></entry>
2644 <entry>y<subscript>7</subscript></entry> 3092 <entry>y<subscript>7</subscript></entry>
2645 <entry>y<subscript>6</subscript></entry> 3093 <entry>y<subscript>6</subscript></entry>
2646 <entry>y<subscript>5</subscript></entry> 3094 <entry>y<subscript>5</subscript></entry>
@@ -2649,8 +3097,6 @@ see <xref linkend="colorspaces" />.</entry>
2649 <entry>y<subscript>2</subscript></entry> 3097 <entry>y<subscript>2</subscript></entry>
2650 <entry>y<subscript>1</subscript></entry> 3098 <entry>y<subscript>1</subscript></entry>
2651 <entry>y<subscript>0</subscript></entry> 3099 <entry>y<subscript>0</subscript></entry>
2652 <entry>u<subscript>9</subscript></entry>
2653 <entry>u<subscript>8</subscript></entry>
2654 <entry>u<subscript>7</subscript></entry> 3100 <entry>u<subscript>7</subscript></entry>
2655 <entry>u<subscript>6</subscript></entry> 3101 <entry>u<subscript>6</subscript></entry>
2656 <entry>u<subscript>5</subscript></entry> 3102 <entry>u<subscript>5</subscript></entry>
@@ -2660,14 +3106,11 @@ see <xref linkend="colorspaces" />.</entry>
2660 <entry>u<subscript>1</subscript></entry> 3106 <entry>u<subscript>1</subscript></entry>
2661 <entry>u<subscript>0</subscript></entry> 3107 <entry>u<subscript>0</subscript></entry>
2662 </row> 3108 </row>
2663 <row id="MEDIA-BUS-FMT-YUV10-1X30"> 3109 <row id="MEDIA-BUS-FMT-YDYUYDYV8-1X16">
2664 <entry>MEDIA_BUS_FMT_YUV10_1X30</entry> 3110 <entry>MEDIA_BUS_FMT_YDYUYDYV8_1X16</entry>
2665 <entry>0x2016</entry> 3111 <entry>0x2014</entry>
2666 <entry></entry> 3112 <entry></entry>
2667 <entry>-</entry> 3113 &dash-ent-16;
2668 <entry>-</entry>
2669 <entry>y<subscript>9</subscript></entry>
2670 <entry>y<subscript>8</subscript></entry>
2671 <entry>y<subscript>7</subscript></entry> 3114 <entry>y<subscript>7</subscript></entry>
2672 <entry>y<subscript>6</subscript></entry> 3115 <entry>y<subscript>6</subscript></entry>
2673 <entry>y<subscript>5</subscript></entry> 3116 <entry>y<subscript>5</subscript></entry>
@@ -2676,39 +3119,20 @@ see <xref linkend="colorspaces" />.</entry>
2676 <entry>y<subscript>2</subscript></entry> 3119 <entry>y<subscript>2</subscript></entry>
2677 <entry>y<subscript>1</subscript></entry> 3120 <entry>y<subscript>1</subscript></entry>
2678 <entry>y<subscript>0</subscript></entry> 3121 <entry>y<subscript>0</subscript></entry>
2679 <entry>u<subscript>9</subscript></entry> 3122 <entry>d</entry>
2680 <entry>u<subscript>8</subscript></entry> 3123 <entry>d</entry>
2681 <entry>u<subscript>7</subscript></entry> 3124 <entry>d</entry>
2682 <entry>u<subscript>6</subscript></entry> 3125 <entry>d</entry>
2683 <entry>u<subscript>5</subscript></entry> 3126 <entry>d</entry>
2684 <entry>u<subscript>4</subscript></entry> 3127 <entry>d</entry>
2685 <entry>u<subscript>3</subscript></entry> 3128 <entry>d</entry>
2686 <entry>u<subscript>2</subscript></entry> 3129 <entry>d</entry>
2687 <entry>u<subscript>1</subscript></entry>
2688 <entry>u<subscript>0</subscript></entry>
2689 <entry>v<subscript>9</subscript></entry>
2690 <entry>v<subscript>8</subscript></entry>
2691 <entry>v<subscript>7</subscript></entry>
2692 <entry>v<subscript>6</subscript></entry>
2693 <entry>v<subscript>5</subscript></entry>
2694 <entry>v<subscript>4</subscript></entry>
2695 <entry>v<subscript>3</subscript></entry>
2696 <entry>v<subscript>2</subscript></entry>
2697 <entry>v<subscript>1</subscript></entry>
2698 <entry>v<subscript>0</subscript></entry>
2699 </row> 3130 </row>
2700 <row id="MEDIA-BUS-FMT-AYUV8-1X32"> 3131 <row>
2701 <entry>MEDIA_BUS_FMT_AYUV8_1X32</entry>
2702 <entry>0x2017</entry>
2703 <entry></entry> 3132 <entry></entry>
2704 <entry>a<subscript>7</subscript></entry> 3133 <entry></entry>
2705 <entry>a<subscript>6</subscript></entry> 3134 <entry></entry>
2706 <entry>a<subscript>5</subscript></entry> 3135 &dash-ent-16;
2707 <entry>a<subscript>4</subscript></entry>
2708 <entry>a<subscript>3</subscript></entry>
2709 <entry>a<subscript>2</subscript></entry>
2710 <entry>a<subscript>1</subscript></entry>
2711 <entry>a<subscript>0</subscript></entry>
2712 <entry>y<subscript>7</subscript></entry> 3136 <entry>y<subscript>7</subscript></entry>
2713 <entry>y<subscript>6</subscript></entry> 3137 <entry>y<subscript>6</subscript></entry>
2714 <entry>y<subscript>5</subscript></entry> 3138 <entry>y<subscript>5</subscript></entry>
@@ -2725,6 +3149,42 @@ see <xref linkend="colorspaces" />.</entry>
2725 <entry>u<subscript>2</subscript></entry> 3149 <entry>u<subscript>2</subscript></entry>
2726 <entry>u<subscript>1</subscript></entry> 3150 <entry>u<subscript>1</subscript></entry>
2727 <entry>u<subscript>0</subscript></entry> 3151 <entry>u<subscript>0</subscript></entry>
3152 </row>
3153 <row>
3154 <entry></entry>
3155 <entry></entry>
3156 <entry></entry>
3157 &dash-ent-16;
3158 <entry>y<subscript>7</subscript></entry>
3159 <entry>y<subscript>6</subscript></entry>
3160 <entry>y<subscript>5</subscript></entry>
3161 <entry>y<subscript>4</subscript></entry>
3162 <entry>y<subscript>3</subscript></entry>
3163 <entry>y<subscript>2</subscript></entry>
3164 <entry>y<subscript>1</subscript></entry>
3165 <entry>y<subscript>0</subscript></entry>
3166 <entry>d</entry>
3167 <entry>d</entry>
3168 <entry>d</entry>
3169 <entry>d</entry>
3170 <entry>d</entry>
3171 <entry>d</entry>
3172 <entry>d</entry>
3173 <entry>d</entry>
3174 </row>
3175 <row>
3176 <entry></entry>
3177 <entry></entry>
3178 <entry></entry>
3179 &dash-ent-16;
3180 <entry>y<subscript>7</subscript></entry>
3181 <entry>y<subscript>6</subscript></entry>
3182 <entry>y<subscript>5</subscript></entry>
3183 <entry>y<subscript>4</subscript></entry>
3184 <entry>y<subscript>3</subscript></entry>
3185 <entry>y<subscript>2</subscript></entry>
3186 <entry>y<subscript>1</subscript></entry>
3187 <entry>y<subscript>0</subscript></entry>
2728 <entry>v<subscript>7</subscript></entry> 3188 <entry>v<subscript>7</subscript></entry>
2729 <entry>v<subscript>6</subscript></entry> 3189 <entry>v<subscript>6</subscript></entry>
2730 <entry>v<subscript>5</subscript></entry> 3190 <entry>v<subscript>5</subscript></entry>
@@ -2734,13 +3194,11 @@ see <xref linkend="colorspaces" />.</entry>
2734 <entry>v<subscript>1</subscript></entry> 3194 <entry>v<subscript>1</subscript></entry>
2735 <entry>v<subscript>0</subscript></entry> 3195 <entry>v<subscript>0</subscript></entry>
2736 </row> 3196 </row>
2737 <row id="MEDIA-BUS-FMT-UYVY12-2X12"> 3197 <row id="MEDIA-BUS-FMT-UYVY10-1X20">
2738 <entry>MEDIA_BUS_FMT_UYVY12_2X12</entry> 3198 <entry>MEDIA_BUS_FMT_UYVY10_1X20</entry>
2739 <entry>0x201c</entry> 3199 <entry>0x201a</entry>
2740 <entry></entry> 3200 <entry></entry>
2741 &dash-ent-20; 3201 &dash-ent-12;
2742 <entry>u<subscript>11</subscript></entry>
2743 <entry>u<subscript>10</subscript></entry>
2744 <entry>u<subscript>9</subscript></entry> 3202 <entry>u<subscript>9</subscript></entry>
2745 <entry>u<subscript>8</subscript></entry> 3203 <entry>u<subscript>8</subscript></entry>
2746 <entry>u<subscript>7</subscript></entry> 3204 <entry>u<subscript>7</subscript></entry>
@@ -2751,14 +3209,6 @@ see <xref linkend="colorspaces" />.</entry>
2751 <entry>u<subscript>2</subscript></entry> 3209 <entry>u<subscript>2</subscript></entry>
2752 <entry>u<subscript>1</subscript></entry> 3210 <entry>u<subscript>1</subscript></entry>
2753 <entry>u<subscript>0</subscript></entry> 3211 <entry>u<subscript>0</subscript></entry>
2754 </row>
2755 <row>
2756 <entry></entry>
2757 <entry></entry>
2758 <entry></entry>
2759 &dash-ent-20;
2760 <entry>y<subscript>11</subscript></entry>
2761 <entry>y<subscript>10</subscript></entry>
2762 <entry>y<subscript>9</subscript></entry> 3212 <entry>y<subscript>9</subscript></entry>
2763 <entry>y<subscript>8</subscript></entry> 3213 <entry>y<subscript>8</subscript></entry>
2764 <entry>y<subscript>7</subscript></entry> 3214 <entry>y<subscript>7</subscript></entry>
@@ -2774,9 +3224,7 @@ see <xref linkend="colorspaces" />.</entry>
2774 <entry></entry> 3224 <entry></entry>
2775 <entry></entry> 3225 <entry></entry>
2776 <entry></entry> 3226 <entry></entry>
2777 &dash-ent-20; 3227 &dash-ent-12;
2778 <entry>v<subscript>11</subscript></entry>
2779 <entry>v<subscript>10</subscript></entry>
2780 <entry>v<subscript>9</subscript></entry> 3228 <entry>v<subscript>9</subscript></entry>
2781 <entry>v<subscript>8</subscript></entry> 3229 <entry>v<subscript>8</subscript></entry>
2782 <entry>v<subscript>7</subscript></entry> 3230 <entry>v<subscript>7</subscript></entry>
@@ -2787,14 +3235,6 @@ see <xref linkend="colorspaces" />.</entry>
2787 <entry>v<subscript>2</subscript></entry> 3235 <entry>v<subscript>2</subscript></entry>
2788 <entry>v<subscript>1</subscript></entry> 3236 <entry>v<subscript>1</subscript></entry>
2789 <entry>v<subscript>0</subscript></entry> 3237 <entry>v<subscript>0</subscript></entry>
2790 </row>
2791 <row>
2792 <entry></entry>
2793 <entry></entry>
2794 <entry></entry>
2795 &dash-ent-20;
2796 <entry>y<subscript>11</subscript></entry>
2797 <entry>y<subscript>10</subscript></entry>
2798 <entry>y<subscript>9</subscript></entry> 3238 <entry>y<subscript>9</subscript></entry>
2799 <entry>y<subscript>8</subscript></entry> 3239 <entry>y<subscript>8</subscript></entry>
2800 <entry>y<subscript>7</subscript></entry> 3240 <entry>y<subscript>7</subscript></entry>
@@ -2806,13 +3246,11 @@ see <xref linkend="colorspaces" />.</entry>
2806 <entry>y<subscript>1</subscript></entry> 3246 <entry>y<subscript>1</subscript></entry>
2807 <entry>y<subscript>0</subscript></entry> 3247 <entry>y<subscript>0</subscript></entry>
2808 </row> 3248 </row>
2809 <row id="MEDIA-BUS-FMT-VYUY12-2X12"> 3249 <row id="MEDIA-BUS-FMT-VYUY10-1X20">
2810 <entry>MEDIA_BUS_FMT_VYUY12_2X12</entry> 3250 <entry>MEDIA_BUS_FMT_VYUY10_1X20</entry>
2811 <entry>0x201d</entry> 3251 <entry>0x201b</entry>
2812 <entry></entry> 3252 <entry></entry>
2813 &dash-ent-20; 3253 &dash-ent-12;
2814 <entry>v<subscript>11</subscript></entry>
2815 <entry>v<subscript>10</subscript></entry>
2816 <entry>v<subscript>9</subscript></entry> 3254 <entry>v<subscript>9</subscript></entry>
2817 <entry>v<subscript>8</subscript></entry> 3255 <entry>v<subscript>8</subscript></entry>
2818 <entry>v<subscript>7</subscript></entry> 3256 <entry>v<subscript>7</subscript></entry>
@@ -2823,14 +3261,6 @@ see <xref linkend="colorspaces" />.</entry>
2823 <entry>v<subscript>2</subscript></entry> 3261 <entry>v<subscript>2</subscript></entry>
2824 <entry>v<subscript>1</subscript></entry> 3262 <entry>v<subscript>1</subscript></entry>
2825 <entry>v<subscript>0</subscript></entry> 3263 <entry>v<subscript>0</subscript></entry>
2826 </row>
2827 <row>
2828 <entry></entry>
2829 <entry></entry>
2830 <entry></entry>
2831 &dash-ent-20;
2832 <entry>y<subscript>11</subscript></entry>
2833 <entry>y<subscript>10</subscript></entry>
2834 <entry>y<subscript>9</subscript></entry> 3264 <entry>y<subscript>9</subscript></entry>
2835 <entry>y<subscript>8</subscript></entry> 3265 <entry>y<subscript>8</subscript></entry>
2836 <entry>y<subscript>7</subscript></entry> 3266 <entry>y<subscript>7</subscript></entry>
@@ -2846,9 +3276,7 @@ see <xref linkend="colorspaces" />.</entry>
2846 <entry></entry> 3276 <entry></entry>
2847 <entry></entry> 3277 <entry></entry>
2848 <entry></entry> 3278 <entry></entry>
2849 &dash-ent-20; 3279 &dash-ent-12;
2850 <entry>u<subscript>11</subscript></entry>
2851 <entry>u<subscript>10</subscript></entry>
2852 <entry>u<subscript>9</subscript></entry> 3280 <entry>u<subscript>9</subscript></entry>
2853 <entry>u<subscript>8</subscript></entry> 3281 <entry>u<subscript>8</subscript></entry>
2854 <entry>u<subscript>7</subscript></entry> 3282 <entry>u<subscript>7</subscript></entry>
@@ -2859,14 +3287,6 @@ see <xref linkend="colorspaces" />.</entry>
2859 <entry>u<subscript>2</subscript></entry> 3287 <entry>u<subscript>2</subscript></entry>
2860 <entry>u<subscript>1</subscript></entry> 3288 <entry>u<subscript>1</subscript></entry>
2861 <entry>u<subscript>0</subscript></entry> 3289 <entry>u<subscript>0</subscript></entry>
2862 </row>
2863 <row>
2864 <entry></entry>
2865 <entry></entry>
2866 <entry></entry>
2867 &dash-ent-20;
2868 <entry>y<subscript>11</subscript></entry>
2869 <entry>y<subscript>10</subscript></entry>
2870 <entry>y<subscript>9</subscript></entry> 3290 <entry>y<subscript>9</subscript></entry>
2871 <entry>y<subscript>8</subscript></entry> 3291 <entry>y<subscript>8</subscript></entry>
2872 <entry>y<subscript>7</subscript></entry> 3292 <entry>y<subscript>7</subscript></entry>
@@ -2878,13 +3298,11 @@ see <xref linkend="colorspaces" />.</entry>
2878 <entry>y<subscript>1</subscript></entry> 3298 <entry>y<subscript>1</subscript></entry>
2879 <entry>y<subscript>0</subscript></entry> 3299 <entry>y<subscript>0</subscript></entry>
2880 </row> 3300 </row>
2881 <row id="MEDIA-BUS-FMT-YUYV12-2X12"> 3301 <row id="MEDIA-BUS-FMT-YUYV10-1X20">
2882 <entry>MEDIA_BUS_FMT_YUYV12_2X12</entry> 3302 <entry>MEDIA_BUS_FMT_YUYV10_1X20</entry>
2883 <entry>0x201e</entry> 3303 <entry>0x200d</entry>
2884 <entry></entry> 3304 <entry></entry>
2885 &dash-ent-20; 3305 &dash-ent-12;
2886 <entry>y<subscript>11</subscript></entry>
2887 <entry>y<subscript>10</subscript></entry>
2888 <entry>y<subscript>9</subscript></entry> 3306 <entry>y<subscript>9</subscript></entry>
2889 <entry>y<subscript>8</subscript></entry> 3307 <entry>y<subscript>8</subscript></entry>
2890 <entry>y<subscript>7</subscript></entry> 3308 <entry>y<subscript>7</subscript></entry>
@@ -2895,14 +3313,6 @@ see <xref linkend="colorspaces" />.</entry>
2895 <entry>y<subscript>2</subscript></entry> 3313 <entry>y<subscript>2</subscript></entry>
2896 <entry>y<subscript>1</subscript></entry> 3314 <entry>y<subscript>1</subscript></entry>
2897 <entry>y<subscript>0</subscript></entry> 3315 <entry>y<subscript>0</subscript></entry>
2898 </row>
2899 <row>
2900 <entry></entry>
2901 <entry></entry>
2902 <entry></entry>
2903 &dash-ent-20;
2904 <entry>u<subscript>11</subscript></entry>
2905 <entry>u<subscript>10</subscript></entry>
2906 <entry>u<subscript>9</subscript></entry> 3316 <entry>u<subscript>9</subscript></entry>
2907 <entry>u<subscript>8</subscript></entry> 3317 <entry>u<subscript>8</subscript></entry>
2908 <entry>u<subscript>7</subscript></entry> 3318 <entry>u<subscript>7</subscript></entry>
@@ -2918,9 +3328,7 @@ see <xref linkend="colorspaces" />.</entry>
2918 <entry></entry> 3328 <entry></entry>
2919 <entry></entry> 3329 <entry></entry>
2920 <entry></entry> 3330 <entry></entry>
2921 &dash-ent-20; 3331 &dash-ent-12;
2922 <entry>y<subscript>11</subscript></entry>
2923 <entry>y<subscript>10</subscript></entry>
2924 <entry>y<subscript>9</subscript></entry> 3332 <entry>y<subscript>9</subscript></entry>
2925 <entry>y<subscript>8</subscript></entry> 3333 <entry>y<subscript>8</subscript></entry>
2926 <entry>y<subscript>7</subscript></entry> 3334 <entry>y<subscript>7</subscript></entry>
@@ -2931,14 +3339,6 @@ see <xref linkend="colorspaces" />.</entry>
2931 <entry>y<subscript>2</subscript></entry> 3339 <entry>y<subscript>2</subscript></entry>
2932 <entry>y<subscript>1</subscript></entry> 3340 <entry>y<subscript>1</subscript></entry>
2933 <entry>y<subscript>0</subscript></entry> 3341 <entry>y<subscript>0</subscript></entry>
2934 </row>
2935 <row>
2936 <entry></entry>
2937 <entry></entry>
2938 <entry></entry>
2939 &dash-ent-20;
2940 <entry>v<subscript>11</subscript></entry>
2941 <entry>v<subscript>10</subscript></entry>
2942 <entry>v<subscript>9</subscript></entry> 3342 <entry>v<subscript>9</subscript></entry>
2943 <entry>v<subscript>8</subscript></entry> 3343 <entry>v<subscript>8</subscript></entry>
2944 <entry>v<subscript>7</subscript></entry> 3344 <entry>v<subscript>7</subscript></entry>
@@ -2950,13 +3350,11 @@ see <xref linkend="colorspaces" />.</entry>
2950 <entry>v<subscript>1</subscript></entry> 3350 <entry>v<subscript>1</subscript></entry>
2951 <entry>v<subscript>0</subscript></entry> 3351 <entry>v<subscript>0</subscript></entry>
2952 </row> 3352 </row>
2953 <row id="MEDIA-BUS-FMT-YVYU12-2X12"> 3353 <row id="MEDIA-BUS-FMT-YVYU10-1X20">
2954 <entry>MEDIA_BUS_FMT_YVYU12_2X12</entry> 3354 <entry>MEDIA_BUS_FMT_YVYU10_1X20</entry>
2955 <entry>0x201f</entry> 3355 <entry>0x200e</entry>
2956 <entry></entry> 3356 <entry></entry>
2957 &dash-ent-20; 3357 &dash-ent-12;
2958 <entry>y<subscript>11</subscript></entry>
2959 <entry>y<subscript>10</subscript></entry>
2960 <entry>y<subscript>9</subscript></entry> 3358 <entry>y<subscript>9</subscript></entry>
2961 <entry>y<subscript>8</subscript></entry> 3359 <entry>y<subscript>8</subscript></entry>
2962 <entry>y<subscript>7</subscript></entry> 3360 <entry>y<subscript>7</subscript></entry>
@@ -2967,14 +3365,6 @@ see <xref linkend="colorspaces" />.</entry>
2967 <entry>y<subscript>2</subscript></entry> 3365 <entry>y<subscript>2</subscript></entry>
2968 <entry>y<subscript>1</subscript></entry> 3366 <entry>y<subscript>1</subscript></entry>
2969 <entry>y<subscript>0</subscript></entry> 3367 <entry>y<subscript>0</subscript></entry>
2970 </row>
2971 <row>
2972 <entry></entry>
2973 <entry></entry>
2974 <entry></entry>
2975 &dash-ent-20;
2976 <entry>v<subscript>11</subscript></entry>
2977 <entry>v<subscript>10</subscript></entry>
2978 <entry>v<subscript>9</subscript></entry> 3368 <entry>v<subscript>9</subscript></entry>
2979 <entry>v<subscript>8</subscript></entry> 3369 <entry>v<subscript>8</subscript></entry>
2980 <entry>v<subscript>7</subscript></entry> 3370 <entry>v<subscript>7</subscript></entry>
@@ -2990,9 +3380,7 @@ see <xref linkend="colorspaces" />.</entry>
2990 <entry></entry> 3380 <entry></entry>
2991 <entry></entry> 3381 <entry></entry>
2992 <entry></entry> 3382 <entry></entry>
2993 &dash-ent-20; 3383 &dash-ent-12;
2994 <entry>y<subscript>11</subscript></entry>
2995 <entry>y<subscript>10</subscript></entry>
2996 <entry>y<subscript>9</subscript></entry> 3384 <entry>y<subscript>9</subscript></entry>
2997 <entry>y<subscript>8</subscript></entry> 3385 <entry>y<subscript>8</subscript></entry>
2998 <entry>y<subscript>7</subscript></entry> 3386 <entry>y<subscript>7</subscript></entry>
@@ -3003,16 +3391,67 @@ see <xref linkend="colorspaces" />.</entry>
3003 <entry>y<subscript>2</subscript></entry> 3391 <entry>y<subscript>2</subscript></entry>
3004 <entry>y<subscript>1</subscript></entry> 3392 <entry>y<subscript>1</subscript></entry>
3005 <entry>y<subscript>0</subscript></entry> 3393 <entry>y<subscript>0</subscript></entry>
3394 <entry>u<subscript>9</subscript></entry>
3395 <entry>u<subscript>8</subscript></entry>
3396 <entry>u<subscript>7</subscript></entry>
3397 <entry>u<subscript>6</subscript></entry>
3398 <entry>u<subscript>5</subscript></entry>
3399 <entry>u<subscript>4</subscript></entry>
3400 <entry>u<subscript>3</subscript></entry>
3401 <entry>u<subscript>2</subscript></entry>
3402 <entry>u<subscript>1</subscript></entry>
3403 <entry>u<subscript>0</subscript></entry>
3006 </row> 3404 </row>
3007 <row> 3405 <row id="MEDIA-BUS-FMT-VUY8-1X24">
3008 <entry></entry> 3406 <entry>MEDIA_BUS_FMT_VUY8_1X24</entry>
3407 <entry>0x201a</entry>
3009 <entry></entry> 3408 <entry></entry>
3409 &dash-ent-8;
3410 <entry>v<subscript>7</subscript></entry>
3411 <entry>v<subscript>6</subscript></entry>
3412 <entry>v<subscript>5</subscript></entry>
3413 <entry>v<subscript>4</subscript></entry>
3414 <entry>v<subscript>3</subscript></entry>
3415 <entry>v<subscript>2</subscript></entry>
3416 <entry>v<subscript>1</subscript></entry>
3417 <entry>v<subscript>0</subscript></entry>
3418 <entry>u<subscript>7</subscript></entry>
3419 <entry>u<subscript>6</subscript></entry>
3420 <entry>u<subscript>5</subscript></entry>
3421 <entry>u<subscript>4</subscript></entry>
3422 <entry>u<subscript>3</subscript></entry>
3423 <entry>u<subscript>2</subscript></entry>
3424 <entry>u<subscript>1</subscript></entry>
3425 <entry>u<subscript>0</subscript></entry>
3426 <entry>y<subscript>7</subscript></entry>
3427 <entry>y<subscript>6</subscript></entry>
3428 <entry>y<subscript>5</subscript></entry>
3429 <entry>y<subscript>4</subscript></entry>
3430 <entry>y<subscript>3</subscript></entry>
3431 <entry>y<subscript>2</subscript></entry>
3432 <entry>y<subscript>1</subscript></entry>
3433 <entry>y<subscript>0</subscript></entry>
3434 </row>
3435 <row id="MEDIA-BUS-FMT-YUV8-1X24">
3436 <entry>MEDIA_BUS_FMT_YUV8_1X24</entry>
3437 <entry>0x2025</entry>
3010 <entry></entry> 3438 <entry></entry>
3011 &dash-ent-20; 3439 <entry>-</entry>
3012 <entry>u<subscript>11</subscript></entry> 3440 <entry>-</entry>
3013 <entry>u<subscript>10</subscript></entry> 3441 <entry>-</entry>
3014 <entry>u<subscript>9</subscript></entry> 3442 <entry>-</entry>
3015 <entry>u<subscript>8</subscript></entry> 3443 <entry>-</entry>
3444 <entry>-</entry>
3445 <entry>-</entry>
3446 <entry>-</entry>
3447 <entry>y<subscript>7</subscript></entry>
3448 <entry>y<subscript>6</subscript></entry>
3449 <entry>y<subscript>5</subscript></entry>
3450 <entry>y<subscript>4</subscript></entry>
3451 <entry>y<subscript>3</subscript></entry>
3452 <entry>y<subscript>2</subscript></entry>
3453 <entry>y<subscript>1</subscript></entry>
3454 <entry>y<subscript>0</subscript></entry>
3016 <entry>u<subscript>7</subscript></entry> 3455 <entry>u<subscript>7</subscript></entry>
3017 <entry>u<subscript>6</subscript></entry> 3456 <entry>u<subscript>6</subscript></entry>
3018 <entry>u<subscript>5</subscript></entry> 3457 <entry>u<subscript>5</subscript></entry>
@@ -3021,6 +3460,14 @@ see <xref linkend="colorspaces" />.</entry>
3021 <entry>u<subscript>2</subscript></entry> 3460 <entry>u<subscript>2</subscript></entry>
3022 <entry>u<subscript>1</subscript></entry> 3461 <entry>u<subscript>1</subscript></entry>
3023 <entry>u<subscript>0</subscript></entry> 3462 <entry>u<subscript>0</subscript></entry>
3463 <entry>v<subscript>7</subscript></entry>
3464 <entry>v<subscript>6</subscript></entry>
3465 <entry>v<subscript>5</subscript></entry>
3466 <entry>v<subscript>4</subscript></entry>
3467 <entry>v<subscript>3</subscript></entry>
3468 <entry>v<subscript>2</subscript></entry>
3469 <entry>v<subscript>1</subscript></entry>
3470 <entry>v<subscript>0</subscript></entry>
3024 </row> 3471 </row>
3025 <row id="MEDIA-BUS-FMT-UYVY12-1X24"> 3472 <row id="MEDIA-BUS-FMT-UYVY12-1X24">
3026 <entry>MEDIA_BUS_FMT_UYVY12_1X24</entry> 3473 <entry>MEDIA_BUS_FMT_UYVY12_1X24</entry>
@@ -3262,6 +3709,80 @@ see <xref linkend="colorspaces" />.</entry>
3262 <entry>u<subscript>1</subscript></entry> 3709 <entry>u<subscript>1</subscript></entry>
3263 <entry>u<subscript>0</subscript></entry> 3710 <entry>u<subscript>0</subscript></entry>
3264 </row> 3711 </row>
3712 <row id="MEDIA-BUS-FMT-YUV10-1X30">
3713 <entry>MEDIA_BUS_FMT_YUV10_1X30</entry>
3714 <entry>0x2016</entry>
3715 <entry></entry>
3716 <entry>-</entry>
3717 <entry>-</entry>
3718 <entry>y<subscript>9</subscript></entry>
3719 <entry>y<subscript>8</subscript></entry>
3720 <entry>y<subscript>7</subscript></entry>
3721 <entry>y<subscript>6</subscript></entry>
3722 <entry>y<subscript>5</subscript></entry>
3723 <entry>y<subscript>4</subscript></entry>
3724 <entry>y<subscript>3</subscript></entry>
3725 <entry>y<subscript>2</subscript></entry>
3726 <entry>y<subscript>1</subscript></entry>
3727 <entry>y<subscript>0</subscript></entry>
3728 <entry>u<subscript>9</subscript></entry>
3729 <entry>u<subscript>8</subscript></entry>
3730 <entry>u<subscript>7</subscript></entry>
3731 <entry>u<subscript>6</subscript></entry>
3732 <entry>u<subscript>5</subscript></entry>
3733 <entry>u<subscript>4</subscript></entry>
3734 <entry>u<subscript>3</subscript></entry>
3735 <entry>u<subscript>2</subscript></entry>
3736 <entry>u<subscript>1</subscript></entry>
3737 <entry>u<subscript>0</subscript></entry>
3738 <entry>v<subscript>9</subscript></entry>
3739 <entry>v<subscript>8</subscript></entry>
3740 <entry>v<subscript>7</subscript></entry>
3741 <entry>v<subscript>6</subscript></entry>
3742 <entry>v<subscript>5</subscript></entry>
3743 <entry>v<subscript>4</subscript></entry>
3744 <entry>v<subscript>3</subscript></entry>
3745 <entry>v<subscript>2</subscript></entry>
3746 <entry>v<subscript>1</subscript></entry>
3747 <entry>v<subscript>0</subscript></entry>
3748 </row>
3749 <row id="MEDIA-BUS-FMT-AYUV8-1X32">
3750 <entry>MEDIA_BUS_FMT_AYUV8_1X32</entry>
3751 <entry>0x2017</entry>
3752 <entry></entry>
3753 <entry>a<subscript>7</subscript></entry>
3754 <entry>a<subscript>6</subscript></entry>
3755 <entry>a<subscript>5</subscript></entry>
3756 <entry>a<subscript>4</subscript></entry>
3757 <entry>a<subscript>3</subscript></entry>
3758 <entry>a<subscript>2</subscript></entry>
3759 <entry>a<subscript>1</subscript></entry>
3760 <entry>a<subscript>0</subscript></entry>
3761 <entry>y<subscript>7</subscript></entry>
3762 <entry>y<subscript>6</subscript></entry>
3763 <entry>y<subscript>5</subscript></entry>
3764 <entry>y<subscript>4</subscript></entry>
3765 <entry>y<subscript>3</subscript></entry>
3766 <entry>y<subscript>2</subscript></entry>
3767 <entry>y<subscript>1</subscript></entry>
3768 <entry>y<subscript>0</subscript></entry>
3769 <entry>u<subscript>7</subscript></entry>
3770 <entry>u<subscript>6</subscript></entry>
3771 <entry>u<subscript>5</subscript></entry>
3772 <entry>u<subscript>4</subscript></entry>
3773 <entry>u<subscript>3</subscript></entry>
3774 <entry>u<subscript>2</subscript></entry>
3775 <entry>u<subscript>1</subscript></entry>
3776 <entry>u<subscript>0</subscript></entry>
3777 <entry>v<subscript>7</subscript></entry>
3778 <entry>v<subscript>6</subscript></entry>
3779 <entry>v<subscript>5</subscript></entry>
3780 <entry>v<subscript>4</subscript></entry>
3781 <entry>v<subscript>3</subscript></entry>
3782 <entry>v<subscript>2</subscript></entry>
3783 <entry>v<subscript>1</subscript></entry>
3784 <entry>v<subscript>0</subscript></entry>
3785 </row>
3265 </tbody> 3786 </tbody>
3266 </tgroup> 3787 </tgroup>
3267 </table> 3788 </table>
diff --git a/Documentation/DocBook/media/v4l/v4l2.xml b/Documentation/DocBook/media/v4l/v4l2.xml
index ac0f8d9d2a49..e98caa1c39bd 100644
--- a/Documentation/DocBook/media/v4l/v4l2.xml
+++ b/Documentation/DocBook/media/v4l/v4l2.xml
@@ -136,6 +136,7 @@ Remote Controller chapter.</contrib>
136 <year>2012</year> 136 <year>2012</year>
137 <year>2013</year> 137 <year>2013</year>
138 <year>2014</year> 138 <year>2014</year>
139 <year>2015</year>
139 <holder>Bill Dirks, Michael H. Schimek, Hans Verkuil, Martin 140 <holder>Bill Dirks, Michael H. Schimek, Hans Verkuil, Martin
140Rubli, Andy Walls, Muralidharan Karicheri, Mauro Carvalho Chehab, 141Rubli, Andy Walls, Muralidharan Karicheri, Mauro Carvalho Chehab,
141 Pawel Osciak</holder> 142 Pawel Osciak</holder>
@@ -152,6 +153,14 @@ structs, ioctls) must be noted in more detail in the history chapter
152applications. --> 153applications. -->
153 154
154 <revision> 155 <revision>
156 <revnumber>3.21</revnumber>
157 <date>2015-02-13</date>
158 <authorinitials>mcc</authorinitials>
159 <revremark>Fix documentation for media controller device nodes and add support for DVB device nodes.
160Add support for Tuner sub-device.
161 </revremark>
162 </revision>
163 <revision>
155 <revnumber>3.19</revnumber> 164 <revnumber>3.19</revnumber>
156 <date>2014-12-05</date> 165 <date>2014-12-05</date>
157 <authorinitials>hv</authorinitials> 166 <authorinitials>hv</authorinitials>
diff --git a/Documentation/DocBook/media/v4l/vidioc-cropcap.xml b/Documentation/DocBook/media/v4l/vidioc-cropcap.xml
index 1f5ed64cd75a..50cb940cbe5c 100644
--- a/Documentation/DocBook/media/v4l/vidioc-cropcap.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-cropcap.xml
@@ -59,6 +59,11 @@ constant except when switching the video standard. Remember this
59switch can occur implicit when switching the video input or 59switch can occur implicit when switching the video input or
60output.</para> 60output.</para>
61 61
62<para>Do not use the multiplanar buffer types. Use <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>
63instead of <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE</constant>
64and use <constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant> instead of
65<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant>.</para>
66
62 <para>This ioctl must be implemented for video capture or output devices that 67 <para>This ioctl must be implemented for video capture or output devices that
63support cropping and/or scaling and/or have non-square pixels, and for overlay devices.</para> 68support cropping and/or scaling and/or have non-square pixels, and for overlay devices.</para>
64 69
@@ -73,9 +78,7 @@ support cropping and/or scaling and/or have non-square pixels, and for overlay d
73 <entry>Type of the data stream, set by the application. 78 <entry>Type of the data stream, set by the application.
74Only these types are valid here: 79Only these types are valid here:
75<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>, 80<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>,
76<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE</constant>, 81<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant> and
77<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>,
78<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant> and
79<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>. See <xref linkend="v4l2-buf-type" />.</entry> 82<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>. See <xref linkend="v4l2-buf-type" />.</entry>
80 </row> 83 </row>
81 <row> 84 <row>
diff --git a/Documentation/DocBook/media/v4l/vidioc-dqevent.xml b/Documentation/DocBook/media/v4l/vidioc-dqevent.xml
index b036f8963353..50ccd33948c1 100644
--- a/Documentation/DocBook/media/v4l/vidioc-dqevent.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-dqevent.xml
@@ -64,7 +64,7 @@
64 <entry>__u32</entry> 64 <entry>__u32</entry>
65 <entry><structfield>type</structfield></entry> 65 <entry><structfield>type</structfield></entry>
66 <entry></entry> 66 <entry></entry>
67 <entry>Type of the event.</entry> 67 <entry>Type of the event, see <xref linkend="event-type" />.</entry>
68 </row> 68 </row>
69 <row> 69 <row>
70 <entry>union</entry> 70 <entry>union</entry>
@@ -154,6 +154,113 @@
154 </tgroup> 154 </tgroup>
155 </table> 155 </table>
156 156
157 <table frame="none" pgwide="1" id="event-type">
158 <title>Event Types</title>
159 <tgroup cols="3">
160 &cs-def;
161 <tbody valign="top">
162 <row>
163 <entry><constant>V4L2_EVENT_ALL</constant></entry>
164 <entry>0</entry>
165 <entry>All events. V4L2_EVENT_ALL is valid only for
166 VIDIOC_UNSUBSCRIBE_EVENT for unsubscribing all events at once.
167 </entry>
168 </row>
169 <row>
170 <entry><constant>V4L2_EVENT_VSYNC</constant></entry>
171 <entry>1</entry>
172 <entry>This event is triggered on the vertical sync.
173 This event has a &v4l2-event-vsync; associated with it.
174 </entry>
175 </row>
176 <row>
177 <entry><constant>V4L2_EVENT_EOS</constant></entry>
178 <entry>2</entry>
179 <entry>This event is triggered when the end of a stream is reached.
180 This is typically used with MPEG decoders to report to the application
181 when the last of the MPEG stream has been decoded.
182 </entry>
183 </row>
184 <row>
185 <entry><constant>V4L2_EVENT_CTRL</constant></entry>
186 <entry>3</entry>
187 <entry><para>This event requires that the <structfield>id</structfield>
188 matches the control ID from which you want to receive events.
189 This event is triggered if the control's value changes, if a
190 button control is pressed or if the control's flags change.
191 This event has a &v4l2-event-ctrl; associated with it. This struct
192 contains much of the same information as &v4l2-queryctrl; and
193 &v4l2-control;.</para>
194
195 <para>If the event is generated due to a call to &VIDIOC-S-CTRL; or
196 &VIDIOC-S-EXT-CTRLS;, then the event will <emphasis>not</emphasis> be sent to
197 the file handle that called the ioctl function. This prevents
198 nasty feedback loops. If you <emphasis>do</emphasis> want to get the
199 event, then set the <constant>V4L2_EVENT_SUB_FL_ALLOW_FEEDBACK</constant>
200 flag.
201 </para>
202
203 <para>This event type will ensure that no information is lost when
204 more events are raised than there is room internally. In that
205 case the &v4l2-event-ctrl; of the second-oldest event is kept,
206 but the <structfield>changes</structfield> field of the
207 second-oldest event is ORed with the <structfield>changes</structfield>
208 field of the oldest event.</para>
209 </entry>
210 </row>
211 <row>
212 <entry><constant>V4L2_EVENT_FRAME_SYNC</constant></entry>
213 <entry>4</entry>
214 <entry>
215 <para>Triggered immediately when the reception of a
216 frame has begun. This event has a
217 &v4l2-event-frame-sync; associated with it.</para>
218
219 <para>If the hardware needs to be stopped in the case of a
220 buffer underrun it might not be able to generate this event.
221 In such cases the <structfield>frame_sequence</structfield>
222 field in &v4l2-event-frame-sync; will not be incremented. This
223 causes two consecutive frame sequence numbers to have n times
224 frame interval in between them.</para>
225 </entry>
226 </row>
227 <row>
228 <entry><constant>V4L2_EVENT_SOURCE_CHANGE</constant></entry>
229 <entry>5</entry>
230 <entry>
231 <para>This event is triggered when a source parameter change is
232 detected during runtime by the video device. It can be a
233 runtime resolution change triggered by a video decoder or the
234 format change happening on an input connector.
235 This event requires that the <structfield>id</structfield>
236 matches the input index (when used with a video device node)
237 or the pad index (when used with a subdevice node) from which
238 you want to receive events.</para>
239
240 <para>This event has a &v4l2-event-src-change; associated
241 with it. The <structfield>changes</structfield> bitfield denotes
242 what has changed for the subscribed pad. If multiple events
243 occurred before application could dequeue them, then the changes
244 will have the ORed value of all the events generated.</para>
245 </entry>
246 </row>
247 <row>
248 <entry><constant>V4L2_EVENT_MOTION_DET</constant></entry>
249 <entry>6</entry>
250 <entry>
251 <para>Triggered whenever the motion detection state for one or more of the regions
252 changes. This event has a &v4l2-event-motion-det; associated with it.</para>
253 </entry>
254 </row>
255 <row>
256 <entry><constant>V4L2_EVENT_PRIVATE_START</constant></entry>
257 <entry>0x08000000</entry>
258 <entry>Base event number for driver-private events.</entry>
259 </row>
260 </tbody>
261 </tgroup>
262 </table>
263
157 <table frame="none" pgwide="1" id="v4l2-event-vsync"> 264 <table frame="none" pgwide="1" id="v4l2-event-vsync">
158 <title>struct <structname>v4l2_event_vsync</structname></title> 265 <title>struct <structname>v4l2_event_vsync</structname></title>
159 <tgroup cols="3"> 266 <tgroup cols="3">
@@ -177,7 +284,7 @@
177 <entry>__u32</entry> 284 <entry>__u32</entry>
178 <entry><structfield>changes</structfield></entry> 285 <entry><structfield>changes</structfield></entry>
179 <entry></entry> 286 <entry></entry>
180 <entry>A bitmask that tells what has changed. See <xref linkend="changes-flags" />.</entry> 287 <entry>A bitmask that tells what has changed. See <xref linkend="ctrl-changes-flags" />.</entry>
181 </row> 288 </row>
182 <row> 289 <row>
183 <entry>__u32</entry> 290 <entry>__u32</entry>
@@ -309,8 +416,8 @@
309 </tgroup> 416 </tgroup>
310 </table> 417 </table>
311 418
312 <table pgwide="1" frame="none" id="changes-flags"> 419 <table pgwide="1" frame="none" id="ctrl-changes-flags">
313 <title>Changes</title> 420 <title>Control Changes</title>
314 <tgroup cols="3"> 421 <tgroup cols="3">
315 &cs-def; 422 &cs-def;
316 <tbody valign="top"> 423 <tbody valign="top">
@@ -318,9 +425,9 @@
318 <entry><constant>V4L2_EVENT_CTRL_CH_VALUE</constant></entry> 425 <entry><constant>V4L2_EVENT_CTRL_CH_VALUE</constant></entry>
319 <entry>0x0001</entry> 426 <entry>0x0001</entry>
320 <entry>This control event was triggered because the value of the control 427 <entry>This control event was triggered because the value of the control
321 changed. Special case: if a button control is pressed, then this 428 changed. Special cases: Volatile controls do no generate this event;
322 event is sent as well, even though there is not explicit value 429 If a control has the <constant>V4L2_CTRL_FLAG_EXECUTE_ON_WRITE</constant>
323 associated with a button control.</entry> 430 flag set, then this event is sent as well, regardless its value.</entry>
324 </row> 431 </row>
325 <row> 432 <row>
326 <entry><constant>V4L2_EVENT_CTRL_CH_FLAGS</constant></entry> 433 <entry><constant>V4L2_EVENT_CTRL_CH_FLAGS</constant></entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-crop.xml b/Documentation/DocBook/media/v4l/vidioc-g-crop.xml
index 75c6a93de3c1..e6c4efb9e8b4 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-crop.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-crop.xml
@@ -70,6 +70,11 @@ structure or returns the &EINVAL; if cropping is not supported.</para>
70<constant>VIDIOC_S_CROP</constant> ioctl with a pointer to this 70<constant>VIDIOC_S_CROP</constant> ioctl with a pointer to this
71structure.</para> 71structure.</para>
72 72
73<para>Do not use the multiplanar buffer types. Use <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>
74instead of <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE</constant>
75and use <constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant> instead of
76<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant>.</para>
77
73 <para>The driver first adjusts the requested dimensions against 78 <para>The driver first adjusts the requested dimensions against
74hardware limits, &ie; the bounds given by the capture/output window, 79hardware limits, &ie; the bounds given by the capture/output window,
75and it rounds to the closest possible values of horizontal and 80and it rounds to the closest possible values of horizontal and
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml b/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml
index c4336577ff06..764b635ed4cf 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml
@@ -318,10 +318,20 @@ can't generate such frequencies, then the flag will also be cleared.
318 </row> 318 </row>
319 <row> 319 <row>
320 <entry>V4L2_DV_FL_HALF_LINE</entry> 320 <entry>V4L2_DV_FL_HALF_LINE</entry>
321 <entry>Specific to interlaced formats: if set, then field 1 (aka the odd field) 321 <entry>Specific to interlaced formats: if set, then the vertical frontporch
322is really one half-line longer and field 2 (aka the even field) is really one half-line 322of field 1 (aka the odd field) is really one half-line longer and the vertical backporch
323shorter, so each field has exactly the same number of half-lines. Whether half-lines can be 323of field 2 (aka the even field) is really one half-line shorter, so each field has exactly
324detected or used depends on the hardware. 324the same number of half-lines. Whether half-lines can be detected or used depends on
325the hardware.
326 </entry>
327 </row>
328 <row>
329 <entry>V4L2_DV_FL_IS_CE_VIDEO</entry>
330 <entry>If set, then this is a Consumer Electronics (CE) video format.
331Such formats differ from other formats (commonly called IT formats) in that if
332R'G'B' encoding is used then by default the R'G'B' values use limited range
333(i.e. 16-235) as opposed to full range (i.e. 0-255). All formats defined in CEA-861
334except for the 640x480p59.94 format are CE formats.
325 </entry> 335 </entry>
326 </row> 336 </row>
327 </tbody> 337 </tbody>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml b/Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml
index 20460730b02c..77607cc19688 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml
@@ -240,9 +240,9 @@ where padding bytes after the last line of an image cross a system
240page boundary. Capture devices may write padding bytes, the value is 240page boundary. Capture devices may write padding bytes, the value is
241undefined. Output devices ignore the contents of padding 241undefined. Output devices ignore the contents of padding
242bytes.</para><para>When the image format is planar the 242bytes.</para><para>When the image format is planar the
243<structfield>bytesperline</structfield> value applies to the largest 243<structfield>bytesperline</structfield> value applies to the first
244plane and is divided by the same factor as the 244plane and is divided by the same factor as the
245<structfield>width</structfield> field for any smaller planes. For 245<structfield>width</structfield> field for the other planes. For
246example the Cb and Cr planes of a YUV 4:2:0 image have half as many 246example the Cb and Cr planes of a YUV 4:2:0 image have half as many
247padding bytes following each line as the Y plane. To avoid ambiguities 247padding bytes following each line as the Y plane. To avoid ambiguities
248drivers must return a <structfield>bytesperline</structfield> value 248drivers must return a <structfield>bytesperline</structfield> value
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-selection.xml b/Documentation/DocBook/media/v4l/vidioc-g-selection.xml
index 9c04ac8661b1..0bb5c060db27 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-selection.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-selection.xml
@@ -60,8 +60,8 @@
60 60
61<para>To query the cropping (composing) rectangle set &v4l2-selection; 61<para>To query the cropping (composing) rectangle set &v4l2-selection;
62<structfield> type </structfield> field to the respective buffer type. 62<structfield> type </structfield> field to the respective buffer type.
63Do not use multiplanar buffers. Use <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant> 63Do not use the multiplanar buffer types. Use <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>
64instead of <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE</constant>. Use 64instead of <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE</constant> and use
65<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant> instead of 65<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant> instead of
66<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant>. The next step is 66<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant>. The next step is
67setting the value of &v4l2-selection; <structfield>target</structfield> field 67setting the value of &v4l2-selection; <structfield>target</structfield> field
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml b/Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml
index bd015d1563ff..d05623c55403 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml
@@ -205,7 +205,7 @@ ETS&nbsp;300&nbsp;231, lsb first transmitted.</entry>
205 <row> 205 <row>
206 <entry><constant>V4L2_SLICED_CAPTION_525</constant></entry> 206 <entry><constant>V4L2_SLICED_CAPTION_525</constant></entry>
207 <entry>0x1000</entry> 207 <entry>0x1000</entry>
208 <entry><xref linkend="eia608" /></entry> 208 <entry><xref linkend="cea608" /></entry>
209 <entry>NTSC line 21, 284 (second field 21)</entry> 209 <entry>NTSC line 21, 284 (second field 21)</entry>
210 <entry>Two bytes in transmission order, including parity 210 <entry>Two bytes in transmission order, including parity
211bit, lsb first transmitted.</entry> 211bit, lsb first transmitted.</entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-querycap.xml b/Documentation/DocBook/media/v4l/vidioc-querycap.xml
index d0c5e604f014..20fda75a012d 100644
--- a/Documentation/DocBook/media/v4l/vidioc-querycap.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-querycap.xml
@@ -102,10 +102,10 @@ The bus_info must start with "PCI:" for PCI boards, "PCIe:" for PCI Express boar
102 <entry>__u32</entry> 102 <entry>__u32</entry>
103 <entry><structfield>version</structfield></entry> 103 <entry><structfield>version</structfield></entry>
104 <entry><para>Version number of the driver.</para> 104 <entry><para>Version number of the driver.</para>
105<para>Starting on kernel 3.1, the version reported is provided per 105<para>Starting with kernel 3.1, the version reported is provided by the
106V4L2 subsystem, following the same Kernel numberation scheme. However, it 106V4L2 subsystem following the kernel numbering scheme. However, it
107should not always return the same version as the kernel, if, for example, 107may not always return the same version as the kernel if, for example,
108an stable or distribution-modified kernel uses the V4L2 stack from a 108a stable or distribution-modified kernel uses the V4L2 stack from a
109newer kernel.</para> 109newer kernel.</para>
110<para>The version number is formatted using the 110<para>The version number is formatted using the
111<constant>KERNEL_VERSION()</constant> macro:</para></entry> 111<constant>KERNEL_VERSION()</constant> macro:</para></entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-queryctrl.xml b/Documentation/DocBook/media/v4l/vidioc-queryctrl.xml
index 2bd98fd7a4e5..dc83ad70f8dc 100644
--- a/Documentation/DocBook/media/v4l/vidioc-queryctrl.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-queryctrl.xml
@@ -600,7 +600,9 @@ writing a value will cause the device to carry out a given action
600changes continuously. A typical example would be the current gain value if the device 600changes continuously. A typical example would be the current gain value if the device
601is in auto-gain mode. In such a case the hardware calculates the gain value based on 601is in auto-gain mode. In such a case the hardware calculates the gain value based on
602the lighting conditions which can change over time. Note that setting a new value for 602the lighting conditions which can change over time. Note that setting a new value for
603a volatile control will have no effect. The new value will just be ignored.</entry> 603a volatile control will have no effect and no <constant>V4L2_EVENT_CTRL_CH_VALUE</constant>
604will be sent, unless the <constant>V4L2_CTRL_FLAG_EXECUTE_ON_WRITE</constant> flag
605(see below) is also set. Otherwise the new value will just be ignored.</entry>
604 </row> 606 </row>
605 <row> 607 <row>
606 <entry><constant>V4L2_CTRL_FLAG_HAS_PAYLOAD</constant></entry> 608 <entry><constant>V4L2_CTRL_FLAG_HAS_PAYLOAD</constant></entry>
@@ -610,6 +612,14 @@ using one of the pointer fields of &v4l2-ext-control;. This flag is set for cont
610that are an array, string, or have a compound type. In all cases you have to set a 612that are an array, string, or have a compound type. In all cases you have to set a
611pointer to memory containing the payload of the control.</entry> 613pointer to memory containing the payload of the control.</entry>
612 </row> 614 </row>
615 <row>
616 <entry><constant>V4L2_CTRL_FLAG_EXECUTE_ON_WRITE</constant></entry>
617 <entry>0x0200</entry>
618 <entry>The value provided to the control will be propagated to the driver
619even if remains constant. This is required when the control represents an action
620on the hardware. For example: clearing an error flag or triggering the flash. All the
621controls of the type <constant>V4L2_CTRL_TYPE_BUTTON</constant> have this flag set.</entry>
622 </row>
613 </tbody> 623 </tbody>
614 </tgroup> 624 </tgroup>
615 </table> 625 </table>
diff --git a/Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-interval.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-interval.xml
index 2f8f4f0a0235..cff59f5cbf04 100644
--- a/Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-interval.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-interval.xml
@@ -67,9 +67,9 @@
67 67
68 <para>To enumerate frame intervals applications initialize the 68 <para>To enumerate frame intervals applications initialize the
69 <structfield>index</structfield>, <structfield>pad</structfield>, 69 <structfield>index</structfield>, <structfield>pad</structfield>,
70 <structfield>code</structfield>, <structfield>width</structfield> and 70 <structfield>which</structfield>, <structfield>code</structfield>,
71 <structfield>height</structfield> fields of 71 <structfield>width</structfield> and <structfield>height</structfield>
72 &v4l2-subdev-frame-interval-enum; and call the 72 fields of &v4l2-subdev-frame-interval-enum; and call the
73 <constant>VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL</constant> ioctl with a pointer 73 <constant>VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL</constant> ioctl with a pointer
74 to this structure. Drivers fill the rest of the structure or return 74 to this structure. Drivers fill the rest of the structure or return
75 an &EINVAL; if one of the input fields is invalid. All frame intervals are 75 an &EINVAL; if one of the input fields is invalid. All frame intervals are
@@ -123,7 +123,12 @@
123 </row> 123 </row>
124 <row> 124 <row>
125 <entry>__u32</entry> 125 <entry>__u32</entry>
126 <entry><structfield>reserved</structfield>[9]</entry> 126 <entry><structfield>which</structfield></entry>
127 <entry>Frame intervals to be enumerated, from &v4l2-subdev-format-whence;.</entry>
128 </row>
129 <row>
130 <entry>__u32</entry>
131 <entry><structfield>reserved</structfield>[8]</entry>
127 <entry>Reserved for future extensions. Applications and drivers must 132 <entry>Reserved for future extensions. Applications and drivers must
128 set the array to zero.</entry> 133 set the array to zero.</entry>
129 </row> 134 </row>
diff --git a/Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-size.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-size.xml
index 79ce42b7c60c..abd545ede67a 100644
--- a/Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-size.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-size.xml
@@ -61,9 +61,9 @@
61 ioctl.</para> 61 ioctl.</para>
62 62
63 <para>To enumerate frame sizes applications initialize the 63 <para>To enumerate frame sizes applications initialize the
64 <structfield>pad</structfield>, <structfield>code</structfield> and 64 <structfield>pad</structfield>, <structfield>which</structfield> ,
65 <structfield>index</structfield> fields of the 65 <structfield>code</structfield> and <structfield>index</structfield>
66 &v4l2-subdev-mbus-code-enum; and call the 66 fields of the &v4l2-subdev-mbus-code-enum; and call the
67 <constant>VIDIOC_SUBDEV_ENUM_FRAME_SIZE</constant> ioctl with a pointer to 67 <constant>VIDIOC_SUBDEV_ENUM_FRAME_SIZE</constant> ioctl with a pointer to
68 the structure. Drivers fill the minimum and maximum frame sizes or return 68 the structure. Drivers fill the minimum and maximum frame sizes or return
69 an &EINVAL; if one of the input parameters is invalid.</para> 69 an &EINVAL; if one of the input parameters is invalid.</para>
@@ -127,7 +127,12 @@
127 </row> 127 </row>
128 <row> 128 <row>
129 <entry>__u32</entry> 129 <entry>__u32</entry>
130 <entry><structfield>reserved</structfield>[9]</entry> 130 <entry><structfield>which</structfield></entry>
131 <entry>Frame sizes to be enumerated, from &v4l2-subdev-format-whence;.</entry>
132 </row>
133 <row>
134 <entry>__u32</entry>
135 <entry><structfield>reserved</structfield>[8]</entry>
131 <entry>Reserved for future extensions. Applications and drivers must 136 <entry>Reserved for future extensions. Applications and drivers must
132 set the array to zero.</entry> 137 set the array to zero.</entry>
133 </row> 138 </row>
diff --git a/Documentation/DocBook/media/v4l/vidioc-subdev-enum-mbus-code.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-enum-mbus-code.xml
index a6b3432449f6..0bcb278fd062 100644
--- a/Documentation/DocBook/media/v4l/vidioc-subdev-enum-mbus-code.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-subdev-enum-mbus-code.xml
@@ -56,8 +56,8 @@
56 </note> 56 </note>
57 57
58 <para>To enumerate media bus formats available at a given sub-device pad 58 <para>To enumerate media bus formats available at a given sub-device pad
59 applications initialize the <structfield>pad</structfield> and 59 applications initialize the <structfield>pad</structfield>, <structfield>which</structfield>
60 <structfield>index</structfield> fields of &v4l2-subdev-mbus-code-enum; and 60 and <structfield>index</structfield> fields of &v4l2-subdev-mbus-code-enum; and
61 call the <constant>VIDIOC_SUBDEV_ENUM_MBUS_CODE</constant> ioctl with a 61 call the <constant>VIDIOC_SUBDEV_ENUM_MBUS_CODE</constant> ioctl with a
62 pointer to this structure. Drivers fill the rest of the structure or return 62 pointer to this structure. Drivers fill the rest of the structure or return
63 an &EINVAL; if either the <structfield>pad</structfield> or 63 an &EINVAL; if either the <structfield>pad</structfield> or
@@ -93,7 +93,12 @@
93 </row> 93 </row>
94 <row> 94 <row>
95 <entry>__u32</entry> 95 <entry>__u32</entry>
96 <entry><structfield>reserved</structfield>[9]</entry> 96 <entry><structfield>which</structfield></entry>
97 <entry>Media bus format codes to be enumerated, from &v4l2-subdev-format-whence;.</entry>
98 </row>
99 <row>
100 <entry>__u32</entry>
101 <entry><structfield>reserved</structfield>[8]</entry>
97 <entry>Reserved for future extensions. Applications and drivers must 102 <entry>Reserved for future extensions. Applications and drivers must
98 set the array to zero.</entry> 103 set the array to zero.</entry>
99 </row> 104 </row>
diff --git a/Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml b/Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml
index d7c9365ecdbe..d0332f610929 100644
--- a/Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml
@@ -60,7 +60,9 @@
60 <row> 60 <row>
61 <entry>__u32</entry> 61 <entry>__u32</entry>
62 <entry><structfield>type</structfield></entry> 62 <entry><structfield>type</structfield></entry>
63 <entry>Type of the event.</entry> 63 <entry>Type of the event, see <xref linkend="event-type" />. Note that
64<constant>V4L2_EVENT_ALL</constant> can be used with VIDIOC_UNSUBSCRIBE_EVENT
65for unsubscribing all events at once.</entry>
64 </row> 66 </row>
65 <row> 67 <row>
66 <entry>__u32</entry> 68 <entry>__u32</entry>
@@ -84,113 +86,6 @@
84 </tgroup> 86 </tgroup>
85 </table> 87 </table>
86 88
87 <table frame="none" pgwide="1" id="event-type">
88 <title>Event Types</title>
89 <tgroup cols="3">
90 &cs-def;
91 <tbody valign="top">
92 <row>
93 <entry><constant>V4L2_EVENT_ALL</constant></entry>
94 <entry>0</entry>
95 <entry>All events. V4L2_EVENT_ALL is valid only for
96 VIDIOC_UNSUBSCRIBE_EVENT for unsubscribing all events at once.
97 </entry>
98 </row>
99 <row>
100 <entry><constant>V4L2_EVENT_VSYNC</constant></entry>
101 <entry>1</entry>
102 <entry>This event is triggered on the vertical sync.
103 This event has a &v4l2-event-vsync; associated with it.
104 </entry>
105 </row>
106 <row>
107 <entry><constant>V4L2_EVENT_EOS</constant></entry>
108 <entry>2</entry>
109 <entry>This event is triggered when the end of a stream is reached.
110 This is typically used with MPEG decoders to report to the application
111 when the last of the MPEG stream has been decoded.
112 </entry>
113 </row>
114 <row>
115 <entry><constant>V4L2_EVENT_CTRL</constant></entry>
116 <entry>3</entry>
117 <entry><para>This event requires that the <structfield>id</structfield>
118 matches the control ID from which you want to receive events.
119 This event is triggered if the control's value changes, if a
120 button control is pressed or if the control's flags change.
121 This event has a &v4l2-event-ctrl; associated with it. This struct
122 contains much of the same information as &v4l2-queryctrl; and
123 &v4l2-control;.</para>
124
125 <para>If the event is generated due to a call to &VIDIOC-S-CTRL; or
126 &VIDIOC-S-EXT-CTRLS;, then the event will <emphasis>not</emphasis> be sent to
127 the file handle that called the ioctl function. This prevents
128 nasty feedback loops. If you <emphasis>do</emphasis> want to get the
129 event, then set the <constant>V4L2_EVENT_SUB_FL_ALLOW_FEEDBACK</constant>
130 flag.
131 </para>
132
133 <para>This event type will ensure that no information is lost when
134 more events are raised than there is room internally. In that
135 case the &v4l2-event-ctrl; of the second-oldest event is kept,
136 but the <structfield>changes</structfield> field of the
137 second-oldest event is ORed with the <structfield>changes</structfield>
138 field of the oldest event.</para>
139 </entry>
140 </row>
141 <row>
142 <entry><constant>V4L2_EVENT_FRAME_SYNC</constant></entry>
143 <entry>4</entry>
144 <entry>
145 <para>Triggered immediately when the reception of a
146 frame has begun. This event has a
147 &v4l2-event-frame-sync; associated with it.</para>
148
149 <para>If the hardware needs to be stopped in the case of a
150 buffer underrun it might not be able to generate this event.
151 In such cases the <structfield>frame_sequence</structfield>
152 field in &v4l2-event-frame-sync; will not be incremented. This
153 causes two consecutive frame sequence numbers to have n times
154 frame interval in between them.</para>
155 </entry>
156 </row>
157 <row>
158 <entry><constant>V4L2_EVENT_SOURCE_CHANGE</constant></entry>
159 <entry>5</entry>
160 <entry>
161 <para>This event is triggered when a source parameter change is
162 detected during runtime by the video device. It can be a
163 runtime resolution change triggered by a video decoder or the
164 format change happening on an input connector.
165 This event requires that the <structfield>id</structfield>
166 matches the input index (when used with a video device node)
167 or the pad index (when used with a subdevice node) from which
168 you want to receive events.</para>
169
170 <para>This event has a &v4l2-event-src-change; associated
171 with it. The <structfield>changes</structfield> bitfield denotes
172 what has changed for the subscribed pad. If multiple events
173 occurred before application could dequeue them, then the changes
174 will have the ORed value of all the events generated.</para>
175 </entry>
176 </row>
177 <row>
178 <entry><constant>V4L2_EVENT_MOTION_DET</constant></entry>
179 <entry>6</entry>
180 <entry>
181 <para>Triggered whenever the motion detection state for one or more of the regions
182 changes. This event has a &v4l2-event-motion-det; associated with it.</para>
183 </entry>
184 </row>
185 <row>
186 <entry><constant>V4L2_EVENT_PRIVATE_START</constant></entry>
187 <entry>0x08000000</entry>
188 <entry>Base event number for driver-private events.</entry>
189 </row>
190 </tbody>
191 </tgroup>
192 </table>
193
194 <table pgwide="1" frame="none" id="event-flags"> 89 <table pgwide="1" frame="none" id="event-flags">
195 <title>Event Flags</title> 90 <title>Event Flags</title>
196 <tgroup cols="3"> 91 <tgroup cols="3">
diff --git a/Documentation/IRQ-domain.txt b/Documentation/IRQ-domain.txt
index 39cfa72732ff..3a8e15cba816 100644
--- a/Documentation/IRQ-domain.txt
+++ b/Documentation/IRQ-domain.txt
@@ -95,8 +95,7 @@ since it doesn't need to allocate a table as large as the largest
95hwirq number. The disadvantage is that hwirq to IRQ number lookup is 95hwirq number. The disadvantage is that hwirq to IRQ number lookup is
96dependent on how many entries are in the table. 96dependent on how many entries are in the table.
97 97
98Very few drivers should need this mapping. At the moment, powerpc 98Very few drivers should need this mapping.
99iseries is the only user.
100 99
101==== No Map ===- 100==== No Map ===-
102irq_domain_add_nomap() 101irq_domain_add_nomap()
diff --git a/Documentation/Makefile b/Documentation/Makefile
index 6883a1b9b351..bc0548201755 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -1,4 +1,4 @@
1subdir-y := accounting arm auxdisplay blackfin connector \ 1subdir-y := accounting auxdisplay blackfin connector \
2 filesystems filesystems ia64 laptops mic misc-devices \ 2 filesystems filesystems ia64 laptops mic misc-devices \
3 networking pcmcia prctl ptp spi timers vDSO video4linux \ 3 networking pcmcia prctl ptp spi timers vDSO video4linux \
4 watchdog 4 watchdog
diff --git a/Documentation/PCI/MSI-HOWTO.txt b/Documentation/PCI/MSI-HOWTO.txt
index 0d920d54536d..1179850f453c 100644
--- a/Documentation/PCI/MSI-HOWTO.txt
+++ b/Documentation/PCI/MSI-HOWTO.txt
@@ -353,7 +353,7 @@ retry:
353 rc = pci_enable_msix_range(adapter->pdev, adapter->msix_entries, 353 rc = pci_enable_msix_range(adapter->pdev, adapter->msix_entries,
354 maxvec, maxvec); 354 maxvec, maxvec);
355 /* 355 /*
356 * -ENOSPC is the only error code allowed to be analized 356 * -ENOSPC is the only error code allowed to be analyzed
357 */ 357 */
358 if (rc == -ENOSPC) { 358 if (rc == -ENOSPC) {
359 if (maxvec == 1) 359 if (maxvec == 1)
@@ -370,7 +370,7 @@ retry:
370 return rc; 370 return rc;
371} 371}
372 372
373Note how pci_enable_msix_range() return value is analized for a fallback - 373Note how pci_enable_msix_range() return value is analyzed for a fallback -
374any error code other than -ENOSPC indicates a fatal error and should not 374any error code other than -ENOSPC indicates a fatal error and should not
375be retried. 375be retried.
376 376
@@ -486,7 +486,7 @@ during development.
486If your device supports both MSI-X and MSI capabilities, you should use 486If your device supports both MSI-X and MSI capabilities, you should use
487the MSI-X facilities in preference to the MSI facilities. As mentioned 487the MSI-X facilities in preference to the MSI facilities. As mentioned
488above, MSI-X supports any number of interrupts between 1 and 2048. 488above, MSI-X supports any number of interrupts between 1 and 2048.
489In constrast, MSI is restricted to a maximum of 32 interrupts (and 489In contrast, MSI is restricted to a maximum of 32 interrupts (and
490must be a power of two). In addition, the MSI interrupt vectors must 490must be a power of two). In addition, the MSI interrupt vectors must
491be allocated consecutively, so the system might not be able to allocate 491be allocated consecutively, so the system might not be able to allocate
492as many vectors for MSI as it could for MSI-X. On some platforms, MSI 492as many vectors for MSI as it could for MSI-X. On some platforms, MSI
@@ -501,18 +501,9 @@ necessary to disable interrupts (Linux guarantees the same interrupt will
501not be re-entered). If a device uses multiple interrupts, the driver 501not be re-entered). If a device uses multiple interrupts, the driver
502must disable interrupts while the lock is held. If the device sends 502must disable interrupts while the lock is held. If the device sends
503a different interrupt, the driver will deadlock trying to recursively 503a different interrupt, the driver will deadlock trying to recursively
504acquire the spinlock. 504acquire the spinlock. Such deadlocks can be avoided by using
505 505spin_lock_irqsave() or spin_lock_irq() which disable local interrupts
506There are two solutions. The first is to take the lock with 506and acquire the lock (see Documentation/DocBook/kernel-locking).
507spin_lock_irqsave() or spin_lock_irq() (see
508Documentation/DocBook/kernel-locking). The second is to specify
509IRQF_DISABLED to request_irq() so that the kernel runs the entire
510interrupt routine with interrupts disabled.
511
512If your MSI interrupt routine does not hold the lock for the whole time
513it is running, the first solution may be best. The second solution is
514normally preferred as it avoids making two transitions from interrupt
515disabled to enabled and back again.
516 507
5174.6 How to tell whether MSI/MSI-X is enabled on a device 5084.6 How to tell whether MSI/MSI-X is enabled on a device
518 509
diff --git a/Documentation/PCI/pci-error-recovery.txt b/Documentation/PCI/pci-error-recovery.txt
index 898ded24510d..ac26869c7db4 100644
--- a/Documentation/PCI/pci-error-recovery.txt
+++ b/Documentation/PCI/pci-error-recovery.txt
@@ -256,7 +256,7 @@ STEP 4: Slot Reset
256------------------ 256------------------
257 257
258In response to a return value of PCI_ERS_RESULT_NEED_RESET, the 258In response to a return value of PCI_ERS_RESULT_NEED_RESET, the
259the platform will peform a slot reset on the requesting PCI device(s). 259the platform will perform a slot reset on the requesting PCI device(s).
260The actual steps taken by a platform to perform a slot reset 260The actual steps taken by a platform to perform a slot reset
261will be platform-dependent. Upon completion of slot reset, the 261will be platform-dependent. Upon completion of slot reset, the
262platform will call the device slot_reset() callback. 262platform will call the device slot_reset() callback.
diff --git a/Documentation/PCI/pcieaer-howto.txt b/Documentation/PCI/pcieaer-howto.txt
index 26d3d945c3c2..b4987c0bcb20 100644
--- a/Documentation/PCI/pcieaer-howto.txt
+++ b/Documentation/PCI/pcieaer-howto.txt
@@ -66,8 +66,8 @@ hardware (mostly chipsets) has root ports that cannot obtain the reporting
66source ID. nosourceid=n by default. 66source ID. nosourceid=n by default.
67 67
682.3 AER error output 682.3 AER error output
69When a PCI-E AER error is captured, an error message will be outputed to 69When a PCI-E AER error is captured, an error message will be outputted to
70console. If it's a correctable error, it is outputed as a warning. 70console. If it's a correctable error, it is outputted as a warning.
71Otherwise, it is printed as an error. So users could choose different 71Otherwise, it is printed as an error. So users could choose different
72log level to filter out correctable error messages. 72log level to filter out correctable error messages.
73 73
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index 447671bd2927..b03a832a08e2 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -614,8 +614,8 @@ The canonical patch message body contains the following:
614 614
615 - An empty line. 615 - An empty line.
616 616
617 - The body of the explanation, which will be copied to the 617 - The body of the explanation, line wrapped at 75 columns, which will
618 permanent changelog to describe this patch. 618 be copied to the permanent changelog to describe this patch.
619 619
620 - The "Signed-off-by:" lines, described above, which will 620 - The "Signed-off-by:" lines, described above, which will
621 also go in the changelog. 621 also go in the changelog.
diff --git a/Documentation/arm/00-INDEX b/Documentation/arm/00-INDEX
index 8edb9007844e..dea011c8d7c7 100644
--- a/Documentation/arm/00-INDEX
+++ b/Documentation/arm/00-INDEX
@@ -10,8 +10,6 @@ IXP4xx
10 - Intel IXP4xx Network processor. 10 - Intel IXP4xx Network processor.
11Makefile 11Makefile
12 - Build sourcefiles as part of the Documentation-build for arm 12 - Build sourcefiles as part of the Documentation-build for arm
13msm/
14 - MSM specific documentation
15Netwinder 13Netwinder
16 - Netwinder specific documentation 14 - Netwinder specific documentation
17Porting 15Porting
diff --git a/Documentation/arm/Booting b/Documentation/arm/Booting
index 371814a36719..83c1df2fc758 100644
--- a/Documentation/arm/Booting
+++ b/Documentation/arm/Booting
@@ -58,13 +58,18 @@ serial format options as described in
58-------------------------- 58--------------------------
59 59
60Existing boot loaders: OPTIONAL 60Existing boot loaders: OPTIONAL
61New boot loaders: MANDATORY 61New boot loaders: MANDATORY except for DT-only platforms
62 62
63The boot loader should detect the machine type its running on by some 63The boot loader should detect the machine type its running on by some
64method. Whether this is a hard coded value or some algorithm that 64method. Whether this is a hard coded value or some algorithm that
65looks at the connected hardware is beyond the scope of this document. 65looks at the connected hardware is beyond the scope of this document.
66The boot loader must ultimately be able to provide a MACH_TYPE_xxx 66The boot loader must ultimately be able to provide a MACH_TYPE_xxx
67value to the kernel. (see linux/arch/arm/tools/mach-types). 67value to the kernel. (see linux/arch/arm/tools/mach-types). This
68should be passed to the kernel in register r1.
69
70For DT-only platforms, the machine type will be determined by device
71tree. set the machine type to all ones (~0). This is not strictly
72necessary, but assures that it will not match any existing types.
68 73
694. Setup boot data 744. Setup boot data
70------------------ 75------------------
diff --git a/Documentation/arm/Makefile b/Documentation/arm/Makefile
deleted file mode 100644
index 732c77050cff..000000000000
--- a/Documentation/arm/Makefile
+++ /dev/null
@@ -1 +0,0 @@
1subdir-y := SH-Mobile
diff --git a/Documentation/arm/Marvell/README b/Documentation/arm/Marvell/README
index 17453794fca5..18a775d10172 100644
--- a/Documentation/arm/Marvell/README
+++ b/Documentation/arm/Marvell/README
@@ -96,6 +96,11 @@ EBU Armada family
96 88F6820 96 88F6820
97 88F6828 97 88F6828
98 98
99 Armada 390/398 Flavors:
100 88F6920
101 88F6928
102 Product infos: http://www.marvell.com/embedded-processors/armada-39x/
103
99 Armada XP Flavors: 104 Armada XP Flavors:
100 MV78230 105 MV78230
101 MV78260 106 MV78260
diff --git a/Documentation/arm/README b/Documentation/arm/README
index aea34095cdcf..9d1e5b2c92e6 100644
--- a/Documentation/arm/README
+++ b/Documentation/arm/README
@@ -185,13 +185,20 @@ Kernel entry (head.S)
185 board devices are used, or the device is setup, and provides that 185 board devices are used, or the device is setup, and provides that
186 machine specific "personality." 186 machine specific "personality."
187 187
188 This fine-grained machine specific selection is controlled by the machine 188 For platforms that support device tree (DT), the machine selection is
189 type ID, which acts both as a run-time and a compile-time code selection 189 controlled at runtime by passing the device tree blob to the kernel. At
190 method. 190 compile-time, support for the machine type must be selected. This allows for
191 a single multiplatform kernel build to be used for several machine types.
191 192
192 You can register a new machine via the web site at: 193 For platforms that do not use device tree, this machine selection is
194 controlled by the machine type ID, which acts both as a run-time and a
195 compile-time code selection method. You can register a new machine via the
196 web site at:
193 197
194 <http://www.arm.linux.org.uk/developer/machines/> 198 <http://www.arm.linux.org.uk/developer/machines/>
195 199
200 Note: Please do not register a machine type for DT-only platforms. If your
201 platform is DT-only, you do not need a registered machine type.
202
196--- 203---
197Russell King (15/03/2004) 204Russell King (15/03/2004)
diff --git a/Documentation/arm/SH-Mobile/Makefile b/Documentation/arm/SH-Mobile/Makefile
deleted file mode 100644
index bca8a7ef6bbe..000000000000
--- a/Documentation/arm/SH-Mobile/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
1# List of programs to build
2hostprogs-y := vrl4
3
4# Tell kbuild to always build the programs
5always := $(hostprogs-y)
6
7HOSTCFLAGS_vrl4.o += -I$(objtree)/usr/include -I$(srctree)/tools/include
diff --git a/Documentation/arm/SH-Mobile/vrl4.c b/Documentation/arm/SH-Mobile/vrl4.c
deleted file mode 100644
index f4cd8ad4e720..000000000000
--- a/Documentation/arm/SH-Mobile/vrl4.c
+++ /dev/null
@@ -1,170 +0,0 @@
1/*
2 * vrl4 format generator
3 *
4 * Copyright (C) 2010 Simon Horman
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11/*
12 * usage: vrl4 < zImage > out
13 * dd if=out of=/dev/sdx bs=512 seek=1 # Write the image to sector 1
14 *
15 * Reads a zImage from stdin and writes a vrl4 image to stdout.
16 * In practice this means writing a padded vrl4 header to stdout followed
17 * by the zImage.
18 *
19 * The padding places the zImage at ALIGN bytes into the output.
20 * The vrl4 uses ALIGN + START_BASE as the start_address.
21 * This is where the mask ROM will jump to after verifying the header.
22 *
23 * The header sets copy_size to min(sizeof(zImage), MAX_BOOT_PROG_LEN) + ALIGN.
24 * That is, the mask ROM will load the padded header (ALIGN bytes)
25 * And then MAX_BOOT_PROG_LEN bytes of the image, or the entire image,
26 * whichever is smaller.
27 *
28 * The zImage is not modified in any way.
29 */
30
31#define _BSD_SOURCE
32#include <endian.h>
33#include <unistd.h>
34#include <stdint.h>
35#include <stdio.h>
36#include <errno.h>
37#include <tools/endian.h>
38
39struct hdr {
40 uint32_t magic1;
41 uint32_t reserved1;
42 uint32_t magic2;
43 uint32_t reserved2;
44 uint16_t copy_size;
45 uint16_t boot_options;
46 uint32_t reserved3;
47 uint32_t start_address;
48 uint32_t reserved4;
49 uint32_t reserved5;
50 char reserved6[308];
51};
52
53#define DECLARE_HDR(h) \
54 struct hdr (h) = { \
55 .magic1 = htole32(0xea000000), \
56 .reserved1 = htole32(0x56), \
57 .magic2 = htole32(0xe59ff008), \
58 .reserved3 = htole16(0x1) }
59
60/* Align to 512 bytes, the MMCIF sector size */
61#define ALIGN_BITS 9
62#define ALIGN (1 << ALIGN_BITS)
63
64#define START_BASE 0xe55b0000
65
66/*
67 * With an alignment of 512 the header uses the first sector.
68 * There is a 128 sector (64kbyte) limit on the data loaded by the mask ROM.
69 * So there are 127 sectors left for the boot programme. But in practice
70 * Only a small portion of a zImage is needed, 16 sectors should be more
71 * than enough.
72 *
73 * Note that this sets how much of the zImage is copied by the mask ROM.
74 * The entire zImage is present after the header and is loaded
75 * by the code in the boot program (which is the first portion of the zImage).
76 */
77#define MAX_BOOT_PROG_LEN (16 * 512)
78
79#define ROUND_UP(x) ((x + ALIGN - 1) & ~(ALIGN - 1))
80
81static ssize_t do_read(int fd, void *buf, size_t count)
82{
83 size_t offset = 0;
84 ssize_t l;
85
86 while (offset < count) {
87 l = read(fd, buf + offset, count - offset);
88 if (!l)
89 break;
90 if (l < 0) {
91 if (errno == EAGAIN || errno == EWOULDBLOCK)
92 continue;
93 perror("read");
94 return -1;
95 }
96 offset += l;
97 }
98
99 return offset;
100}
101
102static ssize_t do_write(int fd, const void *buf, size_t count)
103{
104 size_t offset = 0;
105 ssize_t l;
106
107 while (offset < count) {
108 l = write(fd, buf + offset, count - offset);
109 if (l < 0) {
110 if (errno == EAGAIN || errno == EWOULDBLOCK)
111 continue;
112 perror("write");
113 return -1;
114 }
115 offset += l;
116 }
117
118 return offset;
119}
120
121static ssize_t write_zero(int fd, size_t len)
122{
123 size_t i = len;
124
125 while (i--) {
126 const char x = 0;
127 if (do_write(fd, &x, 1) < 0)
128 return -1;
129 }
130
131 return len;
132}
133
134int main(void)
135{
136 DECLARE_HDR(hdr);
137 char boot_program[MAX_BOOT_PROG_LEN];
138 size_t aligned_hdr_len, alligned_prog_len;
139 ssize_t prog_len;
140
141 prog_len = do_read(0, boot_program, sizeof(boot_program));
142 if (prog_len <= 0)
143 return -1;
144
145 aligned_hdr_len = ROUND_UP(sizeof(hdr));
146 hdr.start_address = htole32(START_BASE + aligned_hdr_len);
147 alligned_prog_len = ROUND_UP(prog_len);
148 hdr.copy_size = htole16(aligned_hdr_len + alligned_prog_len);
149
150 if (do_write(1, &hdr, sizeof(hdr)) < 0)
151 return -1;
152 if (write_zero(1, aligned_hdr_len - sizeof(hdr)) < 0)
153 return -1;
154
155 if (do_write(1, boot_program, prog_len) < 0)
156 return 1;
157
158 /* Write out the rest of the kernel */
159 while (1) {
160 prog_len = do_read(0, boot_program, sizeof(boot_program));
161 if (prog_len < 0)
162 return 1;
163 if (prog_len == 0)
164 break;
165 if (do_write(1, boot_program, prog_len) < 0)
166 return 1;
167 }
168
169 return 0;
170}
diff --git a/Documentation/arm/SH-Mobile/zboot-rom-mmcif.txt b/Documentation/arm/SH-Mobile/zboot-rom-mmcif.txt
deleted file mode 100644
index efff8ae2713d..000000000000
--- a/Documentation/arm/SH-Mobile/zboot-rom-mmcif.txt
+++ /dev/null
@@ -1,29 +0,0 @@
1ROM-able zImage boot from MMC
2-----------------------------
3
4An ROM-able zImage compiled with ZBOOT_ROM_MMCIF may be written to MMC and
5SuperH Mobile ARM will to boot directly from the MMCIF hardware block.
6
7This is achieved by the mask ROM loading the first portion of the image into
8MERAM and then jumping to it. This portion contains loader code which
9copies the entire image to SDRAM and jumps to it. From there the zImage
10boot code proceeds as normal, uncompressing the image into its final
11location and then jumping to it.
12
13This code has been tested on an AP4EB board using the developer 1A eMMC
14boot mode which is configured using the following jumper settings.
15The board used for testing required a patched mask ROM in order for
16this mode to function.
17
18 8 7 6 5 4 3 2 1
19 x|x|x|x|x| |x|
20S4 -+-+-+-+-+-+-+-
21 | | | | |x| |x on
22
23The zImage must be written to the MMC card at sector 1 (512 bytes) in
24vrl4 format. A utility vrl4 is supplied to accomplish this.
25
26e.g.
27 vrl4 < zImage | dd of=/dev/sdX bs=512 seek=1
28
29A dual-voltage MMC 4.0 card was used for testing.
diff --git a/Documentation/arm/SH-Mobile/zboot-rom-sdhi.txt b/Documentation/arm/SH-Mobile/zboot-rom-sdhi.txt
deleted file mode 100644
index 441959846e1a..000000000000
--- a/Documentation/arm/SH-Mobile/zboot-rom-sdhi.txt
+++ /dev/null
@@ -1,42 +0,0 @@
1ROM-able zImage boot from eSD
2-----------------------------
3
4An ROM-able zImage compiled with ZBOOT_ROM_SDHI may be written to eSD and
5SuperH Mobile ARM will to boot directly from the SDHI hardware block.
6
7This is achieved by the mask ROM loading the first portion of the image into
8MERAM and then jumping to it. This portion contains loader code which
9copies the entire image to SDRAM and jumps to it. From there the zImage
10boot code proceeds as normal, uncompressing the image into its final
11location and then jumping to it.
12
13This code has been tested on an mackerel board using the developer 1A eSD
14boot mode which is configured using the following jumper settings.
15
16 8 7 6 5 4 3 2 1
17 x|x|x|x| |x|x|
18S4 -+-+-+-+-+-+-+-
19 | | | |x| | |x on
20
21The eSD card needs to be present in SDHI slot 1 (CN7).
22As such S1 and S33 also need to be configured as per
23the notes in arch/arm/mach-shmobile/board-mackerel.c.
24
25A partial zImage must be written to physical partition #1 (boot)
26of the eSD at sector 0 in vrl4 format. A utility vrl4 is supplied to
27accomplish this.
28
29e.g.
30 vrl4 < zImage | dd of=/dev/sdX bs=512 count=17
31
32A full copy of _the same_ zImage should be written to physical partition #1
33(boot) of the eSD at sector 0. This should _not_ be in vrl4 format.
34
35 vrl4 < zImage | dd of=/dev/sdX bs=512
36
37Note: The commands above assume that the physical partition has been
38switched. No such facility currently exists in the Linux Kernel.
39
40Physical partitions are described in the eSD specification. At the time of
41writing they are not the same as partitions that are typically configured
42using fdisk and visible through /proc/partitions
diff --git a/Documentation/arm/msm/gpiomux.txt b/Documentation/arm/msm/gpiomux.txt
deleted file mode 100644
index 67a81620adf6..000000000000
--- a/Documentation/arm/msm/gpiomux.txt
+++ /dev/null
@@ -1,176 +0,0 @@
1This document provides an overview of the msm_gpiomux interface, which
2is used to provide gpio pin multiplexing and configuration on mach-msm
3targets.
4
5History
6=======
7
8The first-generation API for gpio configuration & multiplexing on msm
9is the function gpio_tlmm_config(). This function has a few notable
10shortcomings, which led to its deprecation and replacement by gpiomux:
11
12The 'disable' parameter: Setting the second parameter to
13gpio_tlmm_config to GPIO_CFG_DISABLE tells the peripheral
14processor in charge of the subsystem to perform a look-up into a
15low-power table and apply the low-power/sleep setting for the pin.
16As the msm family evolved this became problematic. Not all pins
17have sleep settings, not all peripheral processors will accept requests
18to apply said sleep settings, and not all msm targets have their gpio
19subsystems managed by a peripheral processor. In order to get consistent
20behavior on all targets, drivers are forced to ignore this parameter,
21rendering it useless.
22
23The 'direction' flag: for all mux-settings other than raw-gpio (0),
24the output-enable bit of a gpio is hard-wired to a known
25input (usually VDD or ground). For those settings, the direction flag
26is meaningless at best, and deceptive at worst. In addition, using the
27direction flag to change output-enable (OE) directly can cause trouble in
28gpiolib, which has no visibility into gpio direction changes made
29in this way. Direction control in gpio mode should be made through gpiolib.
30
31Key Features of gpiomux
32=======================
33
34- A consistent interface across all generations of msm. Drivers can expect
35the same results on every target.
36- gpiomux plays nicely with gpiolib. Functions that should belong to gpiolib
37are left to gpiolib and not duplicated here. gpiomux is written with the
38intent that gpio_chips will call gpiomux reference-counting methods
39from their request() and free() hooks, providing full integration.
40- Tabular configuration. Instead of having to call gpio_tlmm_config
41hundreds of times, gpio configuration is placed in a single table.
42- Per-gpio sleep. Each gpio is individually reference counted, allowing only
43those lines which are in use to be put in high-power states.
44- 0 means 'do nothing': all flags are designed so that the default memset-zero
45equates to a sensible default of 'no configuration', preventing users
46from having to provide hundreds of 'no-op' configs for unused or
47unwanted lines.
48
49Usage
50=====
51
52To use gpiomux, provide configuration information for relevant gpio lines
53in the msm_gpiomux_configs table. Since a 0 equates to "unconfigured",
54only those lines to be managed by gpiomux need to be specified. Here
55is a completely fictional example:
56
57struct msm_gpiomux_config msm_gpiomux_configs[GPIOMUX_NGPIOS] = {
58 [12] = {
59 .active = GPIOMUX_VALID | GPIOMUX_DRV_8MA | GPIOMUX_FUNC_1,
60 .suspended = GPIOMUX_VALID | GPIOMUX_PULL_DOWN,
61 },
62 [34] = {
63 .suspended = GPIOMUX_VALID | GPIOMUX_PULL_DOWN,
64 },
65};
66
67To indicate that a gpio is in use, call msm_gpiomux_get() to increase
68its reference count. To decrease the reference count, call msm_gpiomux_put().
69
70The effect of this configuration is as follows:
71
72When the system boots, gpios 12 and 34 will be initialized with their
73'suspended' configurations. All other gpios, which were left unconfigured,
74will not be touched.
75
76When msm_gpiomux_get() is called on gpio 12 to raise its reference count
77above 0, its active configuration will be applied. Since no other gpio
78line has a valid active configuration, msm_gpiomux_get() will have no
79effect on any other line.
80
81When msm_gpiomux_put() is called on gpio 12 or 34 to drop their reference
82count to 0, their suspended configurations will be applied.
83Since no other gpio line has a valid suspended configuration, no other
84gpio line will be effected by msm_gpiomux_put(). Since gpio 34 has no valid
85active configuration, this is effectively a no-op for gpio 34 as well,
86with one small caveat, see the section "About Output-Enable Settings".
87
88All of the GPIOMUX_VALID flags may seem like unnecessary overhead, but
89they address some important issues. As unused entries (all those
90except 12 and 34) are zero-filled, gpiomux needs a way to distinguish
91the used fields from the unused. In addition, the all-zero pattern
92is a valid configuration! Therefore, gpiomux defines an additional bit
93which is used to indicate when a field is used. This has the pleasant
94side-effect of allowing calls to msm_gpiomux_write to use '0' to indicate
95that a value should not be changed:
96
97 msm_gpiomux_write(0, GPIOMUX_VALID, 0);
98
99replaces the active configuration of gpio 0 with an all-zero configuration,
100but leaves the suspended configuration as it was.
101
102Static Configurations
103=====================
104
105To install a static configuration, which is applied at boot and does
106not change after that, install a configuration with a suspended component
107but no active component, as in the previous example:
108
109 [34] = {
110 .suspended = GPIOMUX_VALID | GPIOMUX_PULL_DOWN,
111 },
112
113The suspended setting is applied during boot, and the lack of any valid
114active setting prevents any other setting from being applied at runtime.
115If other subsystems attempting to access the line is a concern, one could
116*really* anchor the configuration down by calling msm_gpiomux_get on the
117line at initialization to move the line into active mode. With the line
118held, it will never be re-suspended, and with no valid active configuration,
119no new configurations will be applied.
120
121But then, if having other subsystems grabbing for the line is truly a concern,
122it should be reserved with gpio_request instead, which carries an implicit
123msm_gpiomux_get.
124
125gpiomux and gpiolib
126===================
127
128It is expected that msm gpio_chips will call msm_gpiomux_get() and
129msm_gpiomux_put() from their request and free hooks, like this fictional
130example:
131
132static int request(struct gpio_chip *chip, unsigned offset)
133{
134 return msm_gpiomux_get(chip->base + offset);
135}
136
137static void free(struct gpio_chip *chip, unsigned offset)
138{
139 msm_gpiomux_put(chip->base + offset);
140}
141
142 ...somewhere in a gpio_chip declaration...
143 .request = request,
144 .free = free,
145
146This provides important functionality:
147- It guarantees that a gpio line will have its 'active' config applied
148 when the line is requested, and will not be suspended while the line
149 remains requested; and
150- It guarantees that gpio-direction settings from gpiolib behave sensibly.
151 See "About Output-Enable Settings."
152
153This mechanism allows for "auto-request" of gpiomux lines via gpiolib
154when it is suitable. Drivers wishing more exact control are, of course,
155free to also use msm_gpiomux_set and msm_gpiomux_get.
156
157About Output-Enable Settings
158============================
159
160Some msm targets do not have the ability to query the current gpio
161configuration setting. This means that changes made to the output-enable
162(OE) bit by gpiolib cannot be consistently detected and preserved by gpiomux.
163Therefore, when gpiomux applies a configuration setting, any direction
164settings which may have been applied by gpiolib are lost and the default
165input settings are re-applied.
166
167For this reason, drivers should not assume that gpio direction settings
168continue to hold if they free and then re-request a gpio. This seems like
169common sense - after all, anybody could have obtained the line in the
170meantime - but it needs saying.
171
172This also means that calls to msm_gpiomux_write will reset the OE bit,
173which means that if the gpio line is held by a client of gpiolib and
174msm_gpiomux_write is called, the direction setting has been lost and
175gpiolib's internal state has been broken.
176Release gpio lines before reconfiguring them.
diff --git a/Documentation/arm64/acpi_object_usage.txt b/Documentation/arm64/acpi_object_usage.txt
new file mode 100644
index 000000000000..a6e1a1805e51
--- /dev/null
+++ b/Documentation/arm64/acpi_object_usage.txt
@@ -0,0 +1,593 @@
1ACPI Tables
2-----------
3The expectations of individual ACPI tables are discussed in the list that
4follows.
5
6If a section number is used, it refers to a section number in the ACPI
7specification where the object is defined. If "Signature Reserved" is used,
8the table signature (the first four bytes of the table) is the only portion
9of the table recognized by the specification, and the actual table is defined
10outside of the UEFI Forum (see Section 5.2.6 of the specification).
11
12For ACPI on arm64, tables also fall into the following categories:
13
14 -- Required: DSDT, FADT, GTDT, MADT, MCFG, RSDP, SPCR, XSDT
15
16 -- Recommended: BERT, EINJ, ERST, HEST, SSDT
17
18 -- Optional: BGRT, CPEP, CSRT, DRTM, ECDT, FACS, FPDT, MCHI, MPST,
19 MSCT, RASF, SBST, SLIT, SPMI, SRAT, TCPA, TPM2, UEFI
20
21 -- Not supported: BOOT, DBG2, DBGP, DMAR, ETDT, HPET, IBFT, IVRS,
22 LPIT, MSDM, RSDT, SLIC, WAET, WDAT, WDRT, WPBT
23
24
25Table Usage for ARMv8 Linux
26----- ----------------------------------------------------------------
27BERT Section 18.3 (signature == "BERT")
28 == Boot Error Record Table ==
29 Must be supplied if RAS support is provided by the platform. It
30 is recommended this table be supplied.
31
32BOOT Signature Reserved (signature == "BOOT")
33 == simple BOOT flag table ==
34 Microsoft only table, will not be supported.
35
36BGRT Section 5.2.22 (signature == "BGRT")
37 == Boot Graphics Resource Table ==
38 Optional, not currently supported, with no real use-case for an
39 ARM server.
40
41CPEP Section 5.2.18 (signature == "CPEP")
42 == Corrected Platform Error Polling table ==
43 Optional, not currently supported, and not recommended until such
44 time as ARM-compatible hardware is available, and the specification
45 suitably modified.
46
47CSRT Signature Reserved (signature == "CSRT")
48 == Core System Resources Table ==
49 Optional, not currently supported.
50
51DBG2 Signature Reserved (signature == "DBG2")
52 == DeBuG port table 2 ==
53 Microsoft only table, will not be supported.
54
55DBGP Signature Reserved (signature == "DBGP")
56 == DeBuG Port table ==
57 Microsoft only table, will not be supported.
58
59DSDT Section 5.2.11.1 (signature == "DSDT")
60 == Differentiated System Description Table ==
61 A DSDT is required; see also SSDT.
62
63 ACPI tables contain only one DSDT but can contain one or more SSDTs,
64 which are optional. Each SSDT can only add to the ACPI namespace,
65 but cannot modify or replace anything in the DSDT.
66
67DMAR Signature Reserved (signature == "DMAR")
68 == DMA Remapping table ==
69 x86 only table, will not be supported.
70
71DRTM Signature Reserved (signature == "DRTM")
72 == Dynamic Root of Trust for Measurement table ==
73 Optional, not currently supported.
74
75ECDT Section 5.2.16 (signature == "ECDT")
76 == Embedded Controller Description Table ==
77 Optional, not currently supported, but could be used on ARM if and
78 only if one uses the GPE_BIT field to represent an IRQ number, since
79 there are no GPE blocks defined in hardware reduced mode. This would
80 need to be modified in the ACPI specification.
81
82EINJ Section 18.6 (signature == "EINJ")
83 == Error Injection table ==
84 This table is very useful for testing platform response to error
85 conditions; it allows one to inject an error into the system as
86 if it had actually occurred. However, this table should not be
87 shipped with a production system; it should be dynamically loaded
88 and executed with the ACPICA tools only during testing.
89
90ERST Section 18.5 (signature == "ERST")
91 == Error Record Serialization Table ==
92 On a platform supports RAS, this table must be supplied if it is not
93 UEFI-based; if it is UEFI-based, this table may be supplied. When this
94 table is not present, UEFI run time service will be utilized to save
95 and retrieve hardware error information to and from a persistent store.
96
97ETDT Signature Reserved (signature == "ETDT")
98 == Event Timer Description Table ==
99 Obsolete table, will not be supported.
100
101FACS Section 5.2.10 (signature == "FACS")
102 == Firmware ACPI Control Structure ==
103 It is unlikely that this table will be terribly useful. If it is
104 provided, the Global Lock will NOT be used since it is not part of
105 the hardware reduced profile, and only 64-bit address fields will
106 be considered valid.
107
108FADT Section 5.2.9 (signature == "FACP")
109 == Fixed ACPI Description Table ==
110 Required for arm64.
111
112 The HW_REDUCED_ACPI flag must be set. All of the fields that are
113 to be ignored when HW_REDUCED_ACPI is set are expected to be set to
114 zero.
115
116 If an FACS table is provided, the X_FIRMWARE_CTRL field is to be
117 used, not FIRMWARE_CTRL.
118
119 If PSCI is used (as is recommended), make sure that ARM_BOOT_ARCH is
120 filled in properly -- that the PSCI_COMPLIANT flag is set and that
121 PSCI_USE_HVC is set or unset as needed (see table 5-37).
122
123 For the DSDT that is also required, the X_DSDT field is to be used,
124 not the DSDT field.
125
126FPDT Section 5.2.23 (signature == "FPDT")
127 == Firmware Performance Data Table ==
128 Optional, not currently supported.
129
130GTDT Section 5.2.24 (signature == "GTDT")
131 == Generic Timer Description Table ==
132 Required for arm64.
133
134HEST Section 18.3.2 (signature == "HEST")
135 == Hardware Error Source Table ==
136 Until further error source types are defined, use only types 6 (AER
137 Root Port), 7 (AER Endpoint), 8 (AER Bridge), or 9 (Generic Hardware
138 Error Source). Firmware first error handling is possible if and only
139 if Trusted Firmware is being used on arm64.
140
141 Must be supplied if RAS support is provided by the platform. It
142 is recommended this table be supplied.
143
144HPET Signature Reserved (signature == "HPET")
145 == High Precision Event timer Table ==
146 x86 only table, will not be supported.
147
148IBFT Signature Reserved (signature == "IBFT")
149 == iSCSI Boot Firmware Table ==
150 Microsoft defined table, support TBD.
151
152IVRS Signature Reserved (signature == "IVRS")
153 == I/O Virtualization Reporting Structure ==
154 x86_64 (AMD) only table, will not be supported.
155
156LPIT Signature Reserved (signature == "LPIT")
157 == Low Power Idle Table ==
158 x86 only table as of ACPI 5.1; future versions have been adapted for
159 use with ARM and will be recommended in order to support ACPI power
160 management.
161
162MADT Section 5.2.12 (signature == "APIC")
163 == Multiple APIC Description Table ==
164 Required for arm64. Only the GIC interrupt controller structures
165 should be used (types 0xA - 0xE).
166
167MCFG Signature Reserved (signature == "MCFG")
168 == Memory-mapped ConFiGuration space ==
169 If the platform supports PCI/PCIe, an MCFG table is required.
170
171MCHI Signature Reserved (signature == "MCHI")
172 == Management Controller Host Interface table ==
173 Optional, not currently supported.
174
175MPST Section 5.2.21 (signature == "MPST")
176 == Memory Power State Table ==
177 Optional, not currently supported.
178
179MSDM Signature Reserved (signature == "MSDM")
180 == Microsoft Data Management table ==
181 Microsoft only table, will not be supported.
182
183MSCT Section 5.2.19 (signature == "MSCT")
184 == Maximum System Characteristic Table ==
185 Optional, not currently supported.
186
187RASF Section 5.2.20 (signature == "RASF")
188 == RAS Feature table ==
189 Optional, not currently supported.
190
191RSDP Section 5.2.5 (signature == "RSD PTR")
192 == Root System Description PoinTeR ==
193 Required for arm64.
194
195RSDT Section 5.2.7 (signature == "RSDT")
196 == Root System Description Table ==
197 Since this table can only provide 32-bit addresses, it is deprecated
198 on arm64, and will not be used.
199
200SBST Section 5.2.14 (signature == "SBST")
201 == Smart Battery Subsystem Table ==
202 Optional, not currently supported.
203
204SLIC Signature Reserved (signature == "SLIC")
205 == Software LIcensing table ==
206 Microsoft only table, will not be supported.
207
208SLIT Section 5.2.17 (signature == "SLIT")
209 == System Locality distance Information Table ==
210 Optional in general, but required for NUMA systems.
211
212SPCR Signature Reserved (signature == "SPCR")
213 == Serial Port Console Redirection table ==
214 Required for arm64.
215
216SPMI Signature Reserved (signature == "SPMI")
217 == Server Platform Management Interface table ==
218 Optional, not currently supported.
219
220SRAT Section 5.2.16 (signature == "SRAT")
221 == System Resource Affinity Table ==
222 Optional, but if used, only the GICC Affinity structures are read.
223 To support NUMA, this table is required.
224
225SSDT Section 5.2.11.2 (signature == "SSDT")
226 == Secondary System Description Table ==
227 These tables are a continuation of the DSDT; these are recommended
228 for use with devices that can be added to a running system, but can
229 also serve the purpose of dividing up device descriptions into more
230 manageable pieces.
231
232 An SSDT can only ADD to the ACPI namespace. It cannot modify or
233 replace existing device descriptions already in the namespace.
234
235 These tables are optional, however. ACPI tables should contain only
236 one DSDT but can contain many SSDTs.
237
238TCPA Signature Reserved (signature == "TCPA")
239 == Trusted Computing Platform Alliance table ==
240 Optional, not currently supported, and may need changes to fully
241 interoperate with arm64.
242
243TPM2 Signature Reserved (signature == "TPM2")
244 == Trusted Platform Module 2 table ==
245 Optional, not currently supported, and may need changes to fully
246 interoperate with arm64.
247
248UEFI Signature Reserved (signature == "UEFI")
249 == UEFI ACPI data table ==
250 Optional, not currently supported. No known use case for arm64,
251 at present.
252
253WAET Signature Reserved (signature == "WAET")
254 == Windows ACPI Emulated devices Table ==
255 Microsoft only table, will not be supported.
256
257WDAT Signature Reserved (signature == "WDAT")
258 == Watch Dog Action Table ==
259 Microsoft only table, will not be supported.
260
261WDRT Signature Reserved (signature == "WDRT")
262 == Watch Dog Resource Table ==
263 Microsoft only table, will not be supported.
264
265WPBT Signature Reserved (signature == "WPBT")
266 == Windows Platform Binary Table ==
267 Microsoft only table, will not be supported.
268
269XSDT Section 5.2.8 (signature == "XSDT")
270 == eXtended System Description Table ==
271 Required for arm64.
272
273
274ACPI Objects
275------------
276The expectations on individual ACPI objects are discussed in the list that
277follows:
278
279Name Section Usage for ARMv8 Linux
280---- ------------ -------------------------------------------------
281_ADR 6.1.1 Use as needed.
282
283_BBN 6.5.5 Use as needed; PCI-specific.
284
285_BDN 6.5.3 Optional; not likely to be used on arm64.
286
287_CCA 6.2.17 This method should be defined for all bus masters
288 on arm64. While cache coherency is assumed, making
289 it explicit ensures the kernel will set up DMA as
290 it should.
291
292_CDM 6.2.1 Optional, to be used only for processor devices.
293
294_CID 6.1.2 Use as needed.
295
296_CLS 6.1.3 Use as needed.
297
298_CRS 6.2.2 Required on arm64.
299
300_DCK 6.5.2 Optional; not likely to be used on arm64.
301
302_DDN 6.1.4 This field can be used for a device name. However,
303 it is meant for DOS device names (e.g., COM1), so be
304 careful of its use across OSes.
305
306_DEP 6.5.8 Use as needed.
307
308_DIS 6.2.3 Optional, for power management use.
309
310_DLM 5.7.5 Optional.
311
312_DMA 6.2.4 Optional.
313
314_DSD 6.2.5 To be used with caution. If this object is used, try
315 to use it within the constraints already defined by the
316 Device Properties UUID. Only in rare circumstances
317 should it be necessary to create a new _DSD UUID.
318
319 In either case, submit the _DSD definition along with
320 any driver patches for discussion, especially when
321 device properties are used. A driver will not be
322 considered complete without a corresponding _DSD
323 description. Once approved by kernel maintainers,
324 the UUID or device properties must then be registered
325 with the UEFI Forum; this may cause some iteration as
326 more than one OS will be registering entries.
327
328_DSM Do not use this method. It is not standardized, the
329 return values are not well documented, and it is
330 currently a frequent source of error.
331
332_DSW 7.2.1 Use as needed; power management specific.
333
334_EDL 6.3.1 Optional.
335
336_EJD 6.3.2 Optional.
337
338_EJx 6.3.3 Optional.
339
340_FIX 6.2.7 x86 specific, not used on arm64.
341
342\_GL 5.7.1 This object is not to be used in hardware reduced
343 mode, and therefore should not be used on arm64.
344
345_GLK 6.5.7 This object requires a global lock be defined; there
346 is no global lock on arm64 since it runs in hardware
347 reduced mode. Hence, do not use this object on arm64.
348
349\_GPE 5.3.1 This namespace is for x86 use only. Do not use it
350 on arm64.
351
352_GSB 6.2.7 Optional.
353
354_HID 6.1.5 Use as needed. This is the primary object to use in
355 device probing, though _CID and _CLS may also be used.
356
357_HPP 6.2.8 Optional, PCI specific.
358
359_HPX 6.2.9 Optional, PCI specific.
360
361_HRV 6.1.6 Optional, use as needed to clarify device behavior; in
362 some cases, this may be easier to use than _DSD.
363
364_INI 6.5.1 Not required, but can be useful in setting up devices
365 when UEFI leaves them in a state that may not be what
366 the driver expects before it starts probing.
367
368_IRC 7.2.15 Use as needed; power management specific.
369
370_LCK 6.3.4 Optional.
371
372_MAT 6.2.10 Optional; see also the MADT.
373
374_MLS 6.1.7 Optional, but highly recommended for use in
375 internationalization.
376
377_OFF 7.1.2 It is recommended to define this method for any device
378 that can be turned on or off.
379
380_ON 7.1.3 It is recommended to define this method for any device
381 that can be turned on or off.
382
383\_OS 5.7.3 This method will return "Linux" by default (this is
384 the value of the macro ACPI_OS_NAME on Linux). The
385 command line parameter acpi_os=<string> can be used
386 to set it to some other value.
387
388_OSC 6.2.11 This method can be a global method in ACPI (i.e.,
389 \_SB._OSC), or it may be associated with a specific
390 device (e.g., \_SB.DEV0._OSC), or both. When used
391 as a global method, only capabilities published in
392 the ACPI specification are allowed. When used as
393 a device-specific method, the process described for
394 using _DSD MUST be used to create an _OSC definition;
395 out-of-process use of _OSC is not allowed. That is,
396 submit the device-specific _OSC usage description as
397 part of the kernel driver submission, get it approved
398 by the kernel community, then register it with the
399 UEFI Forum.
400
401\_OSI 5.7.2 Deprecated on ARM64. Any invocation of this method
402 will print a warning on the console and return false.
403 That is, as far as ACPI firmware is concerned, _OSI
404 cannot be used to determine what sort of system is
405 being used or what functionality is provided. The
406 _OSC method is to be used instead.
407
408_OST 6.3.5 Optional.
409
410_PDC 8.4.1 Deprecated, do not use on arm64.
411
412\_PIC 5.8.1 The method should not be used. On arm64, the only
413 interrupt model available is GIC.
414
415_PLD 6.1.8 Optional.
416
417\_PR 5.3.1 This namespace is for x86 use only on legacy systems.
418 Do not use it on arm64.
419
420_PRS 6.2.12 Optional.
421
422_PRT 6.2.13 Required as part of the definition of all PCI root
423 devices.
424
425_PRW 7.2.13 Use as needed; power management specific.
426
427_PRx 7.2.8-11 Use as needed; power management specific. If _PR0 is
428 defined, _PR3 must also be defined.
429
430_PSC 7.2.6 Use as needed; power management specific.
431
432_PSE 7.2.7 Use as needed; power management specific.
433
434_PSW 7.2.14 Use as needed; power management specific.
435
436_PSx 7.2.2-5 Use as needed; power management specific. If _PS0 is
437 defined, _PS3 must also be defined. If clocks or
438 regulators need adjusting to be consistent with power
439 usage, change them in these methods.
440
441\_PTS 7.3.1 Use as needed; power management specific.
442
443_PXM 6.2.14 Optional.
444
445_REG 6.5.4 Use as needed.
446
447\_REV 5.7.4 Always returns the latest version of ACPI supported.
448
449_RMV 6.3.6 Optional.
450
451\_SB 5.3.1 Required on arm64; all devices must be defined in this
452 namespace.
453
454_SEG 6.5.6 Use as needed; PCI-specific.
455
456\_SI 5.3.1, Optional.
457 9.1
458
459_SLI 6.2.15 Optional; recommended when SLIT table is in use.
460
461_STA 6.3.7, It is recommended to define this method for any device
462 7.1.4 that can be turned on or off.
463
464_SRS 6.2.16 Optional; see also _PRS.
465
466_STR 6.1.10 Recommended for conveying device names to end users;
467 this is preferred over using _DDN.
468
469_SUB 6.1.9 Use as needed; _HID or _CID are preferred.
470
471_SUN 6.1.11 Optional.
472
473\_Sx 7.3.2 Use as needed; power management specific.
474
475_SxD 7.2.16-19 Use as needed; power management specific.
476
477_SxW 7.2.20-24 Use as needed; power management specific.
478
479_SWS 7.3.3 Use as needed; power management specific; this may
480 require specification changes for use on arm64.
481
482\_TTS 7.3.4 Use as needed; power management specific.
483
484\_TZ 5.3.1 Optional.
485
486_UID 6.1.12 Recommended for distinguishing devices of the same
487 class; define it if at all possible.
488
489\_WAK 7.3.5 Use as needed; power management specific.
490
491
492ACPI Event Model
493----------------
494Do not use GPE block devices; these are not supported in the hardware reduced
495profile used by arm64. Since there are no GPE blocks defined for use on ARM
496platforms, GPIO-signaled interrupts should be used for creating system events.
497
498
499ACPI Processor Control
500----------------------
501Section 8 of the ACPI specification is currently undergoing change that
502should be completed in the 6.0 version of the specification. Processor
503performance control will be handled differently for arm64 at that point
504in time. Processor aggregator devices (section 8.5) will not be used,
505for example, but another similar mechanism instead.
506
507While UEFI constrains what we can say until the release of 6.0, it is
508recommended that CPPC (8.4.5) be used as the primary model. This will
509still be useful into the future. C-states and P-states will still be
510provided, but most of the current design work appears to favor CPPC.
511
512Further, it is essential that the ARMv8 SoC provide a fully functional
513implementation of PSCI; this will be the only mechanism supported by ACPI
514to control CPU power state (including secondary CPU booting).
515
516More details will be provided on the release of the ACPI 6.0 specification.
517
518
519ACPI System Address Map Interfaces
520----------------------------------
521In Section 15 of the ACPI specification, several methods are mentioned as
522possible mechanisms for conveying memory resource information to the kernel.
523For arm64, we will only support UEFI for booting with ACPI, hence the UEFI
524GetMemoryMap() boot service is the only mechanism that will be used.
525
526
527ACPI Platform Error Interfaces (APEI)
528-------------------------------------
529The APEI tables supported are described above.
530
531APEI requires the equivalent of an SCI and an NMI on ARMv8. The SCI is used
532to notify the OSPM of errors that have occurred but can be corrected and the
533system can continue correct operation, even if possibly degraded. The NMI is
534used to indicate fatal errors that cannot be corrected, and require immediate
535attention.
536
537Since there is no direct equivalent of the x86 SCI or NMI, arm64 handles
538these slightly differently. The SCI is handled as a normal GPIO-signaled
539interrupt; given that these are corrected (or correctable) errors being
540reported, this is sufficient. The NMI is emulated as the highest priority
541GPIO-signaled interrupt possible. This implies some caution must be used
542since there could be interrupts at higher privilege levels or even interrupts
543at the same priority as the emulated NMI. In Linux, this should not be the
544case but one should be aware it could happen.
545
546
547ACPI Objects Not Supported on ARM64
548-----------------------------------
549While this may change in the future, there are several classes of objects
550that can be defined, but are not currently of general interest to ARM servers.
551
552These are not supported:
553
554 -- Section 9.2: ambient light sensor devices
555
556 -- Section 9.3: battery devices
557
558 -- Section 9.4: lids (e.g., laptop lids)
559
560 -- Section 9.8.2: IDE controllers
561
562 -- Section 9.9: floppy controllers
563
564 -- Section 9.10: GPE block devices
565
566 -- Section 9.15: PC/AT RTC/CMOS devices
567
568 -- Section 9.16: user presence detection devices
569
570 -- Section 9.17: I/O APIC devices; all GICs must be enumerable via MADT
571
572 -- Section 9.18: time and alarm devices (see 9.15)
573
574
575ACPI Objects Not Yet Implemented
576--------------------------------
577While these objects have x86 equivalents, and they do make some sense in ARM
578servers, there is either no hardware available at present, or in some cases
579there may not yet be a non-ARM implementation. Hence, they are currently not
580implemented though that may change in the future.
581
582Not yet implemented are:
583
584 -- Section 10: power source and power meter devices
585
586 -- Section 11: thermal management
587
588 -- Section 12: embedded controllers interface
589
590 -- Section 13: SMBus interfaces
591
592 -- Section 17: NUMA support (prototypes have been submitted for
593 review)
diff --git a/Documentation/arm64/arm-acpi.txt b/Documentation/arm64/arm-acpi.txt
new file mode 100644
index 000000000000..570a4f8e1a01
--- /dev/null
+++ b/Documentation/arm64/arm-acpi.txt
@@ -0,0 +1,505 @@
1ACPI on ARMv8 Servers
2---------------------
3ACPI can be used for ARMv8 general purpose servers designed to follow
4the ARM SBSA (Server Base System Architecture) [0] and SBBR (Server
5Base Boot Requirements) [1] specifications. Please note that the SBBR
6can be retrieved simply by visiting [1], but the SBSA is currently only
7available to those with an ARM login due to ARM IP licensing concerns.
8
9The ARMv8 kernel implements the reduced hardware model of ACPI version
105.1 or later. Links to the specification and all external documents
11it refers to are managed by the UEFI Forum. The specification is
12available at http://www.uefi.org/specifications and documents referenced
13by the specification can be found via http://www.uefi.org/acpi.
14
15If an ARMv8 system does not meet the requirements of the SBSA and SBBR,
16or cannot be described using the mechanisms defined in the required ACPI
17specifications, then ACPI may not be a good fit for the hardware.
18
19While the documents mentioned above set out the requirements for building
20industry-standard ARMv8 servers, they also apply to more than one operating
21system. The purpose of this document is to describe the interaction between
22ACPI and Linux only, on an ARMv8 system -- that is, what Linux expects of
23ACPI and what ACPI can expect of Linux.
24
25
26Why ACPI on ARM?
27----------------
28Before examining the details of the interface between ACPI and Linux, it is
29useful to understand why ACPI is being used. Several technologies already
30exist in Linux for describing non-enumerable hardware, after all. In this
31section we summarize a blog post [2] from Grant Likely that outlines the
32reasoning behind ACPI on ARMv8 servers. Actually, we snitch a good portion
33of the summary text almost directly, to be honest.
34
35The short form of the rationale for ACPI on ARM is:
36
37-- ACPI’s bytecode (AML) allows the platform to encode hardware behavior,
38 while DT explicitly does not support this. For hardware vendors, being
39 able to encode behavior is a key tool used in supporting operating
40 system releases on new hardware.
41
42-- ACPI’s OSPM defines a power management model that constrains what the
43 platform is allowed to do into a specific model, while still providing
44 flexibility in hardware design.
45
46-- In the enterprise server environment, ACPI has established bindings (such
47 as for RAS) which are currently used in production systems. DT does not.
48 Such bindings could be defined in DT at some point, but doing so means ARM
49 and x86 would end up using completely different code paths in both firmware
50 and the kernel.
51
52-- Choosing a single interface to describe the abstraction between a platform
53 and an OS is important. Hardware vendors would not be required to implement
54 both DT and ACPI if they want to support multiple operating systems. And,
55 agreeing on a single interface instead of being fragmented into per OS
56 interfaces makes for better interoperability overall.
57
58-- The new ACPI governance process works well and Linux is now at the same
59 table as hardware vendors and other OS vendors. In fact, there is no
60 longer any reason to feel that ACPI is only belongs to Windows or that
61 Linux is in any way secondary to Microsoft in this arena. The move of
62 ACPI governance into the UEFI forum has significantly opened up the
63 specification development process, and currently, a large portion of the
64 changes being made to ACPI is being driven by Linux.
65
66Key to the use of ACPI is the support model. For servers in general, the
67responsibility for hardware behaviour cannot solely be the domain of the
68kernel, but rather must be split between the platform and the kernel, in
69order to allow for orderly change over time. ACPI frees the OS from needing
70to understand all the minute details of the hardware so that the OS doesn’t
71need to be ported to each and every device individually. It allows the
72hardware vendors to take responsibility for power management behaviour without
73depending on an OS release cycle which is not under their control.
74
75ACPI is also important because hardware and OS vendors have already worked
76out the mechanisms for supporting a general purpose computing ecosystem. The
77infrastructure is in place, the bindings are in place, and the processes are
78in place. DT does exactly what Linux needs it to when working with vertically
79integrated devices, but there are no good processes for supporting what the
80server vendors need. Linux could potentially get there with DT, but doing so
81really just duplicates something that already works. ACPI already does what
82the hardware vendors need, Microsoft won’t collaborate on DT, and hardware
83vendors would still end up providing two completely separate firmware
84interfaces -- one for Linux and one for Windows.
85
86
87Kernel Compatibility
88--------------------
89One of the primary motivations for ACPI is standardization, and using that
90to provide backward compatibility for Linux kernels. In the server market,
91software and hardware are often used for long periods. ACPI allows the
92kernel and firmware to agree on a consistent abstraction that can be
93maintained over time, even as hardware or software change. As long as the
94abstraction is supported, systems can be updated without necessarily having
95to replace the kernel.
96
97When a Linux driver or subsystem is first implemented using ACPI, it by
98definition ends up requiring a specific version of the ACPI specification
99-- it's baseline. ACPI firmware must continue to work, even though it may
100not be optimal, with the earliest kernel version that first provides support
101for that baseline version of ACPI. There may be a need for additional drivers,
102but adding new functionality (e.g., CPU power management) should not break
103older kernel versions. Further, ACPI firmware must also work with the most
104recent version of the kernel.
105
106
107Relationship with Device Tree
108-----------------------------
109ACPI support in drivers and subsystems for ARMv8 should never be mutually
110exclusive with DT support at compile time.
111
112At boot time the kernel will only use one description method depending on
113parameters passed from the bootloader (including kernel bootargs).
114
115Regardless of whether DT or ACPI is used, the kernel must always be capable
116of booting with either scheme (in kernels with both schemes enabled at compile
117time).
118
119
120Booting using ACPI tables
121-------------------------
122The only defined method for passing ACPI tables to the kernel on ARMv8
123is via the UEFI system configuration table. Just so it is explicit, this
124means that ACPI is only supported on platforms that boot via UEFI.
125
126When an ARMv8 system boots, it can either have DT information, ACPI tables,
127or in some very unusual cases, both. If no command line parameters are used,
128the kernel will try to use DT for device enumeration; if there is no DT
129present, the kernel will try to use ACPI tables, but only if they are present.
130In neither is available, the kernel will not boot. If acpi=force is used
131on the command line, the kernel will attempt to use ACPI tables first, but
132fall back to DT if there are no ACPI tables present. The basic idea is that
133the kernel will not fail to boot unless it absolutely has no other choice.
134
135Processing of ACPI tables may be disabled by passing acpi=off on the kernel
136command line; this is the default behavior.
137
138In order for the kernel to load and use ACPI tables, the UEFI implementation
139MUST set the ACPI_20_TABLE_GUID to point to the RSDP table (the table with
140the ACPI signature "RSD PTR "). If this pointer is incorrect and acpi=force
141is used, the kernel will disable ACPI and try to use DT to boot instead; the
142kernel has, in effect, determined that ACPI tables are not present at that
143point.
144
145If the pointer to the RSDP table is correct, the table will be mapped into
146the kernel by the ACPI core, using the address provided by UEFI.
147
148The ACPI core will then locate and map in all other ACPI tables provided by
149using the addresses in the RSDP table to find the XSDT (eXtended System
150Description Table). The XSDT in turn provides the addresses to all other
151ACPI tables provided by the system firmware; the ACPI core will then traverse
152this table and map in the tables listed.
153
154The ACPI core will ignore any provided RSDT (Root System Description Table).
155RSDTs have been deprecated and are ignored on arm64 since they only allow
156for 32-bit addresses.
157
158Further, the ACPI core will only use the 64-bit address fields in the FADT
159(Fixed ACPI Description Table). Any 32-bit address fields in the FADT will
160be ignored on arm64.
161
162Hardware reduced mode (see Section 4.1 of the ACPI 5.1 specification) will
163be enforced by the ACPI core on arm64. Doing so allows the ACPI core to
164run less complex code since it no longer has to provide support for legacy
165hardware from other architectures. Any fields that are not to be used for
166hardware reduced mode must be set to zero.
167
168For the ACPI core to operate properly, and in turn provide the information
169the kernel needs to configure devices, it expects to find the following
170tables (all section numbers refer to the ACPI 5.1 specfication):
171
172 -- RSDP (Root System Description Pointer), section 5.2.5
173
174 -- XSDT (eXtended System Description Table), section 5.2.8
175
176 -- FADT (Fixed ACPI Description Table), section 5.2.9
177
178 -- DSDT (Differentiated System Description Table), section
179 5.2.11.1
180
181 -- MADT (Multiple APIC Description Table), section 5.2.12
182
183 -- GTDT (Generic Timer Description Table), section 5.2.24
184
185 -- If PCI is supported, the MCFG (Memory mapped ConFiGuration
186 Table), section 5.2.6, specifically Table 5-31.
187
188If the above tables are not all present, the kernel may or may not be
189able to boot properly since it may not be able to configure all of the
190devices available.
191
192
193ACPI Detection
194--------------
195Drivers should determine their probe() type by checking for a null
196value for ACPI_HANDLE, or checking .of_node, or other information in
197the device structure. This is detailed further in the "Driver
198Recommendations" section.
199
200In non-driver code, if the presence of ACPI needs to be detected at
201runtime, then check the value of acpi_disabled. If CONFIG_ACPI is not
202set, acpi_disabled will always be 1.
203
204
205Device Enumeration
206------------------
207Device descriptions in ACPI should use standard recognized ACPI interfaces.
208These may contain less information than is typically provided via a Device
209Tree description for the same device. This is also one of the reasons that
210ACPI can be useful -- the driver takes into account that it may have less
211detailed information about the device and uses sensible defaults instead.
212If done properly in the driver, the hardware can change and improve over
213time without the driver having to change at all.
214
215Clocks provide an excellent example. In DT, clocks need to be specified
216and the drivers need to take them into account. In ACPI, the assumption
217is that UEFI will leave the device in a reasonable default state, including
218any clock settings. If for some reason the driver needs to change a clock
219value, this can be done in an ACPI method; all the driver needs to do is
220invoke the method and not concern itself with what the method needs to do
221to change the clock. Changing the hardware can then take place over time
222by changing what the ACPI method does, and not the driver.
223
224In DT, the parameters needed by the driver to set up clocks as in the example
225above are known as "bindings"; in ACPI, these are known as "Device Properties"
226and provided to a driver via the _DSD object.
227
228ACPI tables are described with a formal language called ASL, the ACPI
229Source Language (section 19 of the specification). This means that there
230are always multiple ways to describe the same thing -- including device
231properties. For example, device properties could use an ASL construct
232that looks like this: Name(KEY0, "value0"). An ACPI device driver would
233then retrieve the value of the property by evaluating the KEY0 object.
234However, using Name() this way has multiple problems: (1) ACPI limits
235names ("KEY0") to four characters unlike DT; (2) there is no industry
236wide registry that maintains a list of names, minimzing re-use; (3)
237there is also no registry for the definition of property values ("value0"),
238again making re-use difficult; and (4) how does one maintain backward
239compatibility as new hardware comes out? The _DSD method was created
240to solve precisely these sorts of problems; Linux drivers should ALWAYS
241use the _DSD method for device properties and nothing else.
242
243The _DSM object (ACPI Section 9.14.1) could also be used for conveying
244device properties to a driver. Linux drivers should only expect it to
245be used if _DSD cannot represent the data required, and there is no way
246to create a new UUID for the _DSD object. Note that there is even less
247regulation of the use of _DSM than there is of _DSD. Drivers that depend
248on the contents of _DSM objects will be more difficult to maintain over
249time because of this; as of this writing, the use of _DSM is the cause
250of quite a few firmware problems and is not recommended.
251
252Drivers should look for device properties in the _DSD object ONLY; the _DSD
253object is described in the ACPI specification section 6.2.5, but this only
254describes how to define the structure of an object returned via _DSD, and
255how specific data structures are defined by specific UUIDs. Linux should
256only use the _DSD Device Properties UUID [5]:
257
258 -- UUID: daffd814-6eba-4d8c-8a91-bc9bbf4aa301
259
260 -- http://www.uefi.org/sites/default/files/resources/_DSD-device-properties-UUID.pdf
261
262The UEFI Forum provides a mechanism for registering device properties [4]
263so that they may be used across all operating systems supporting ACPI.
264Device properties that have not been registered with the UEFI Forum should
265not be used.
266
267Before creating new device properties, check to be sure that they have not
268been defined before and either registered in the Linux kernel documentation
269as DT bindings, or the UEFI Forum as device properties. While we do not want
270to simply move all DT bindings into ACPI device properties, we can learn from
271what has been previously defined.
272
273If it is necessary to define a new device property, or if it makes sense to
274synthesize the definition of a binding so it can be used in any firmware,
275both DT bindings and ACPI device properties for device drivers have review
276processes. Use them both. When the driver itself is submitted for review
277to the Linux mailing lists, the device property definitions needed must be
278submitted at the same time. A driver that supports ACPI and uses device
279properties will not be considered complete without their definitions. Once
280the device property has been accepted by the Linux community, it must be
281registered with the UEFI Forum [4], which will review it again for consistency
282within the registry. This may require iteration. The UEFI Forum, though,
283will always be the canonical site for device property definitions.
284
285It may make sense to provide notice to the UEFI Forum that there is the
286intent to register a previously unused device property name as a means of
287reserving the name for later use. Other operating system vendors will
288also be submitting registration requests and this may help smooth the
289process.
290
291Once registration and review have been completed, the kernel provides an
292interface for looking up device properties in a manner independent of
293whether DT or ACPI is being used. This API should be used [6]; it can
294eliminate some duplication of code paths in driver probing functions and
295discourage divergence between DT bindings and ACPI device properties.
296
297
298Programmable Power Control Resources
299------------------------------------
300Programmable power control resources include such resources as voltage/current
301providers (regulators) and clock sources.
302
303With ACPI, the kernel clock and regulator framework is not expected to be used
304at all.
305
306The kernel assumes that power control of these resources is represented with
307Power Resource Objects (ACPI section 7.1). The ACPI core will then handle
308correctly enabling and disabling resources as they are needed. In order to
309get that to work, ACPI assumes each device has defined D-states and that these
310can be controlled through the optional ACPI methods _PS0, _PS1, _PS2, and _PS3;
311in ACPI, _PS0 is the method to invoke to turn a device full on, and _PS3 is for
312turning a device full off.
313
314There are two options for using those Power Resources. They can:
315
316 -- be managed in a _PSx method which gets called on entry to power
317 state Dx.
318
319 -- be declared separately as power resources with their own _ON and _OFF
320 methods. They are then tied back to D-states for a particular device
321 via _PRx which specifies which power resources a device needs to be on
322 while in Dx. Kernel then tracks number of devices using a power resource
323 and calls _ON/_OFF as needed.
324
325The kernel ACPI code will also assume that the _PSx methods follow the normal
326ACPI rules for such methods:
327
328 -- If either _PS0 or _PS3 is implemented, then the other method must also
329 be implemented.
330
331 -- If a device requires usage or setup of a power resource when on, the ASL
332 should organize that it is allocated/enabled using the _PS0 method.
333
334 -- Resources allocated or enabled in the _PS0 method should be disabled
335 or de-allocated in the _PS3 method.
336
337 -- Firmware will leave the resources in a reasonable state before handing
338 over control to the kernel.
339
340Such code in _PSx methods will of course be very platform specific. But,
341this allows the driver to abstract out the interface for operating the device
342and avoid having to read special non-standard values from ACPI tables. Further,
343abstracting the use of these resources allows the hardware to change over time
344without requiring updates to the driver.
345
346
347Clocks
348------
349ACPI makes the assumption that clocks are initialized by the firmware --
350UEFI, in this case -- to some working value before control is handed over
351to the kernel. This has implications for devices such as UARTs, or SoC-driven
352LCD displays, for example.
353
354When the kernel boots, the clocks are assumed to be set to reasonable
355working values. If for some reason the frequency needs to change -- e.g.,
356throttling for power management -- the device driver should expect that
357process to be abstracted out into some ACPI method that can be invoked
358(please see the ACPI specification for further recommendations on standard
359methods to be expected). The only exceptions to this are CPU clocks where
360CPPC provides a much richer interface than ACPI methods. If the clocks
361are not set, there is no direct way for Linux to control them.
362
363If an SoC vendor wants to provide fine-grained control of the system clocks,
364they could do so by providing ACPI methods that could be invoked by Linux
365drivers. However, this is NOT recommended and Linux drivers should NOT use
366such methods, even if they are provided. Such methods are not currently
367standardized in the ACPI specification, and using them could tie a kernel
368to a very specific SoC, or tie an SoC to a very specific version of the
369kernel, both of which we are trying to avoid.
370
371
372Driver Recommendations
373----------------------
374DO NOT remove any DT handling when adding ACPI support for a driver. The
375same device may be used on many different systems.
376
377DO try to structure the driver so that it is data-driven. That is, set up
378a struct containing internal per-device state based on defaults and whatever
379else must be discovered by the driver probe function. Then, have the rest
380of the driver operate off of the contents of that struct. Doing so should
381allow most divergence between ACPI and DT functionality to be kept local to
382the probe function instead of being scattered throughout the driver. For
383example:
384
385static int device_probe_dt(struct platform_device *pdev)
386{
387 /* DT specific functionality */
388 ...
389}
390
391static int device_probe_acpi(struct platform_device *pdev)
392{
393 /* ACPI specific functionality */
394 ...
395}
396
397static int device_probe(struct platform_device *pdev)
398{
399 ...
400 struct device_node node = pdev->dev.of_node;
401 ...
402
403 if (node)
404 ret = device_probe_dt(pdev);
405 else if (ACPI_HANDLE(&pdev->dev))
406 ret = device_probe_acpi(pdev);
407 else
408 /* other initialization */
409 ...
410 /* Continue with any generic probe operations */
411 ...
412}
413
414DO keep the MODULE_DEVICE_TABLE entries together in the driver to make it
415clear the different names the driver is probed for, both from DT and from
416ACPI:
417
418static struct of_device_id virtio_mmio_match[] = {
419 { .compatible = "virtio,mmio", },
420 { }
421};
422MODULE_DEVICE_TABLE(of, virtio_mmio_match);
423
424static const struct acpi_device_id virtio_mmio_acpi_match[] = {
425 { "LNRO0005", },
426 { }
427};
428MODULE_DEVICE_TABLE(acpi, virtio_mmio_acpi_match);
429
430
431ASWG
432----
433The ACPI specification changes regularly. During the year 2014, for instance,
434version 5.1 was released and version 6.0 substantially completed, with most of
435the changes being driven by ARM-specific requirements. Proposed changes are
436presented and discussed in the ASWG (ACPI Specification Working Group) which
437is a part of the UEFI Forum.
438
439Participation in this group is open to all UEFI members. Please see
440http://www.uefi.org/workinggroup for details on group membership.
441
442It is the intent of the ARMv8 ACPI kernel code to follow the ACPI specification
443as closely as possible, and to only implement functionality that complies with
444the released standards from UEFI ASWG. As a practical matter, there will be
445vendors that provide bad ACPI tables or violate the standards in some way.
446If this is because of errors, quirks and fixups may be necessary, but will
447be avoided if possible. If there are features missing from ACPI that preclude
448it from being used on a platform, ECRs (Engineering Change Requests) should be
449submitted to ASWG and go through the normal approval process; for those that
450are not UEFI members, many other members of the Linux community are and would
451likely be willing to assist in submitting ECRs.
452
453
454Linux Code
455----------
456Individual items specific to Linux on ARM, contained in the the Linux
457source code, are in the list that follows:
458
459ACPI_OS_NAME This macro defines the string to be returned when
460 an ACPI method invokes the _OS method. On ARM64
461 systems, this macro will be "Linux" by default.
462 The command line parameter acpi_os=<string>
463 can be used to set it to some other value. The
464 default value for other architectures is "Microsoft
465 Windows NT", for example.
466
467ACPI Objects
468------------
469Detailed expectations for ACPI tables and object are listed in the file
470Documentation/arm64/acpi_object_usage.txt.
471
472
473References
474----------
475[0] http://silver.arm.com -- document ARM-DEN-0029, or newer
476 "Server Base System Architecture", version 2.3, dated 27 Mar 2014
477
478[1] http://infocenter.arm.com/help/topic/com.arm.doc.den0044a/Server_Base_Boot_Requirements.pdf
479 Document ARM-DEN-0044A, or newer: "Server Base Boot Requirements, System
480 Software on ARM Platforms", dated 16 Aug 2014
481
482[2] http://www.secretlab.ca/archives/151, 10 Jan 2015, Copyright (c) 2015,
483 Linaro Ltd., written by Grant Likely. A copy of the verbatim text (apart
484 from formatting) is also in Documentation/arm64/why_use_acpi.txt.
485
486[3] AMD ACPI for Seattle platform documentation:
487 http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2012/10/Seattle_ACPI_Guide.pdf
488
489[4] http://www.uefi.org/acpi -- please see the link for the "ACPI _DSD Device
490 Property Registry Instructions"
491
492[5] http://www.uefi.org/acpi -- please see the link for the "_DSD (Device
493 Specific Data) Implementation Guide"
494
495[6] Kernel code for the unified device property interface can be found in
496 include/linux/property.h and drivers/base/property.c.
497
498
499Authors
500-------
501Al Stone <al.stone@linaro.org>
502Graeme Gregory <graeme.gregory@linaro.org>
503Hanjun Guo <hanjun.guo@linaro.org>
504
505Grant Likely <grant.likely@linaro.org>, for the "Why ACPI on ARM?" section
diff --git a/Documentation/blackfin/Makefile b/Documentation/blackfin/Makefile
index 03f78059d6f5..6782c58fbc29 100644
--- a/Documentation/blackfin/Makefile
+++ b/Documentation/blackfin/Makefile
@@ -1,5 +1,5 @@
1ifneq ($(CONFIG_BLACKFIN),) 1ifneq ($(CONFIG_BLACKFIN),)
2ifneq ($(CONFIG_BFIN_GPTIMERS,) 2ifneq ($(CONFIG_BFIN_GPTIMERS),)
3obj-m := gptimers-example.o 3obj-m := gptimers-example.o
4endif 4endif
5endif 5endif
diff --git a/Documentation/block/biodoc.txt b/Documentation/block/biodoc.txt
index 5aabc08de811..fd12c0d835fd 100644
--- a/Documentation/block/biodoc.txt
+++ b/Documentation/block/biodoc.txt
@@ -48,8 +48,7 @@ Description of Contents:
48 - Highmem I/O support 48 - Highmem I/O support
49 - I/O scheduler modularization 49 - I/O scheduler modularization
50 1.2 Tuning based on high level requirements/capabilities 50 1.2 Tuning based on high level requirements/capabilities
51 1.2.1 I/O Barriers 51 1.2.1 Request Priority/Latency
52 1.2.2 Request Priority/Latency
53 1.3 Direct access/bypass to lower layers for diagnostics and special 52 1.3 Direct access/bypass to lower layers for diagnostics and special
54 device operations 53 device operations
55 1.3.1 Pre-built commands 54 1.3.1 Pre-built commands
@@ -255,29 +254,12 @@ some control over i/o ordering.
255What kind of support exists at the generic block layer for this ? 254What kind of support exists at the generic block layer for this ?
256 255
257The flags and rw fields in the bio structure can be used for some tuning 256The flags and rw fields in the bio structure can be used for some tuning
258from above e.g indicating that an i/o is just a readahead request, or for 257from above e.g indicating that an i/o is just a readahead request, or priority
259marking barrier requests (discussed next), or priority settings (currently 258settings (currently unused). As far as user applications are concerned they
260unused). As far as user applications are concerned they would need an 259would need an additional mechanism either via open flags or ioctls, or some
261additional mechanism either via open flags or ioctls, or some other upper 260other upper level mechanism to communicate such settings to block.
262level mechanism to communicate such settings to block. 261
263 2621.2.1 Request Priority/Latency
2641.2.1 I/O Barriers
265
266There is a way to enforce strict ordering for i/os through barriers.
267All requests before a barrier point must be serviced before the barrier
268request and any other requests arriving after the barrier will not be
269serviced until after the barrier has completed. This is useful for higher
270level control on write ordering, e.g flushing a log of committed updates
271to disk before the corresponding updates themselves.
272
273A flag in the bio structure, BIO_BARRIER is used to identify a barrier i/o.
274The generic i/o scheduler would make sure that it places the barrier request and
275all other requests coming after it after all the previous requests in the
276queue. Barriers may be implemented in different ways depending on the
277driver. For more details regarding I/O barriers, please read barrier.txt
278in this directory.
279
2801.2.2 Request Priority/Latency
281 263
282Todo/Under discussion: 264Todo/Under discussion:
283Arjan's proposed request priority scheme allows higher levels some broad 265Arjan's proposed request priority scheme allows higher levels some broad
@@ -906,8 +888,8 @@ queue and specific I/O schedulers. Unless stated otherwise, elevator is used
906to refer to both parts and I/O scheduler to specific I/O schedulers. 888to refer to both parts and I/O scheduler to specific I/O schedulers.
907 889
908Block layer implements generic dispatch queue in block/*.c. 890Block layer implements generic dispatch queue in block/*.c.
909The generic dispatch queue is responsible for properly ordering barrier 891The generic dispatch queue is responsible for requeueing, handling non-fs
910requests, requeueing, handling non-fs requests and all other subtleties. 892requests and all other subtleties.
911 893
912Specific I/O schedulers are responsible for ordering normal filesystem 894Specific I/O schedulers are responsible for ordering normal filesystem
913requests. They can also choose to delay certain requests to improve 895requests. They can also choose to delay certain requests to improve
diff --git a/Documentation/blockdev/nbd.txt b/Documentation/blockdev/nbd.txt
index 271e607304da..db242ea2bce8 100644
--- a/Documentation/blockdev/nbd.txt
+++ b/Documentation/blockdev/nbd.txt
@@ -1,17 +1,31 @@
1 Network Block Device (TCP version) 1Network Block Device (TCP version)
2 2==================================
3 What is it: With this compiled in the kernel (or as a module), Linux 3
4 can use a remote server as one of its block devices. So every time 41) Overview
5 the client computer wants to read, e.g., /dev/nb0, it sends a 5-----------
6 request over TCP to the server, which will reply with the data read. 6
7 This can be used for stations with low disk space (or even diskless) 7What is it: With this compiled in the kernel (or as a module), Linux
8 to borrow disk space from another computer. 8can use a remote server as one of its block devices. So every time
9 Unlike NFS, it is possible to put any filesystem on it, etc. 9the client computer wants to read, e.g., /dev/nb0, it sends a
10 10request over TCP to the server, which will reply with the data read.
11 For more information, or to download the nbd-client and nbd-server 11This can be used for stations with low disk space (or even diskless)
12 tools, go to http://nbd.sf.net/. 12to borrow disk space from another computer.
13 13Unlike NFS, it is possible to put any filesystem on it, etc.
14 The nbd kernel module need only be installed on the client 14
15 system, as the nbd-server is completely in userspace. In fact, 15For more information, or to download the nbd-client and nbd-server
16 the nbd-server has been successfully ported to other operating 16tools, go to http://nbd.sf.net/.
17 systems, including Windows. 17
18The nbd kernel module need only be installed on the client
19system, as the nbd-server is completely in userspace. In fact,
20the nbd-server has been successfully ported to other operating
21systems, including Windows.
22
23A) NBD parameters
24-----------------
25
26max_part
27 Number of partitions per device (default: 0).
28
29nbds_max
30 Number of block devices that should be initialized (default: 16).
31
diff --git a/Documentation/cgroups/memory.txt b/Documentation/cgroups/memory.txt
index a22df3ad35ff..f456b4315e86 100644
--- a/Documentation/cgroups/memory.txt
+++ b/Documentation/cgroups/memory.txt
@@ -275,11 +275,6 @@ When oom event notifier is registered, event will be delivered.
275 275
2762.7 Kernel Memory Extension (CONFIG_MEMCG_KMEM) 2762.7 Kernel Memory Extension (CONFIG_MEMCG_KMEM)
277 277
278WARNING: Current implementation lacks reclaim support. That means allocation
279 attempts will fail when close to the limit even if there are plenty of
280 kmem available for reclaim. That makes this option unusable in real
281 life so DO NOT SELECT IT unless for development purposes.
282
283With the Kernel memory extension, the Memory Controller is able to limit 278With the Kernel memory extension, the Memory Controller is able to limit
284the amount of kernel memory used by the system. Kernel memory is fundamentally 279the amount of kernel memory used by the system. Kernel memory is fundamentally
285different than user memory, since it can't be swapped out, which makes it 280different than user memory, since it can't be swapped out, which makes it
@@ -345,6 +340,9 @@ set:
345 In this case, the admin could set up K so that the sum of all groups is 340 In this case, the admin could set up K so that the sum of all groups is
346 never greater than the total memory, and freely set U at the cost of his 341 never greater than the total memory, and freely set U at the cost of his
347 QoS. 342 QoS.
343 WARNING: In the current implementation, memory reclaim will NOT be
344 triggered for a cgroup when it hits K while staying below U, which makes
345 this setup impractical.
348 346
349 U != 0, K >= U: 347 U != 0, K >= U:
350 Since kmem charges will also be fed to the user counter and reclaim will be 348 Since kmem charges will also be fed to the user counter and reclaim will be
diff --git a/Documentation/cpu-hotplug.txt b/Documentation/cpu-hotplug.txt
index a0b005d2bd95..f9ad5e048b11 100644
--- a/Documentation/cpu-hotplug.txt
+++ b/Documentation/cpu-hotplug.txt
@@ -108,7 +108,7 @@ Never use anything other than cpumask_t to represent bitmap of CPUs.
108 for_each_possible_cpu - Iterate over cpu_possible_mask 108 for_each_possible_cpu - Iterate over cpu_possible_mask
109 for_each_online_cpu - Iterate over cpu_online_mask 109 for_each_online_cpu - Iterate over cpu_online_mask
110 for_each_present_cpu - Iterate over cpu_present_mask 110 for_each_present_cpu - Iterate over cpu_present_mask
111 for_each_cpu_mask(x,mask) - Iterate over some random collection of cpu mask. 111 for_each_cpu(x,mask) - Iterate over some random collection of cpu mask.
112 112
113 #include <linux/cpu.h> 113 #include <linux/cpu.h>
114 get_online_cpus() and put_online_cpus(): 114 get_online_cpus() and put_online_cpus():
diff --git a/Documentation/device-mapper/dm-crypt.txt b/Documentation/device-mapper/dm-crypt.txt
index ad697781f9ac..692171fe9da0 100644
--- a/Documentation/device-mapper/dm-crypt.txt
+++ b/Documentation/device-mapper/dm-crypt.txt
@@ -5,7 +5,7 @@ Device-Mapper's "crypt" target provides transparent encryption of block devices
5using the kernel crypto API. 5using the kernel crypto API.
6 6
7For a more detailed description of supported parameters see: 7For a more detailed description of supported parameters see:
8http://code.google.com/p/cryptsetup/wiki/DMCrypt 8https://gitlab.com/cryptsetup/cryptsetup/wikis/DMCrypt
9 9
10Parameters: <cipher> <key> <iv_offset> <device path> \ 10Parameters: <cipher> <key> <iv_offset> <device path> \
11 <offset> [<#opt_params> <opt_params>] 11 <offset> [<#opt_params> <opt_params>]
@@ -80,7 +80,7 @@ Example scripts
80=============== 80===============
81LUKS (Linux Unified Key Setup) is now the preferred way to set up disk 81LUKS (Linux Unified Key Setup) is now the preferred way to set up disk
82encryption with dm-crypt using the 'cryptsetup' utility, see 82encryption with dm-crypt using the 'cryptsetup' utility, see
83http://code.google.com/p/cryptsetup/ 83https://gitlab.com/cryptsetup/cryptsetup
84 84
85[[ 85[[
86#!/bin/sh 86#!/bin/sh
diff --git a/Documentation/device-mapper/log-writes.txt b/Documentation/device-mapper/log-writes.txt
new file mode 100644
index 000000000000..c10f30c9b534
--- /dev/null
+++ b/Documentation/device-mapper/log-writes.txt
@@ -0,0 +1,140 @@
1dm-log-writes
2=============
3
4This target takes 2 devices, one to pass all IO to normally, and one to log all
5of the write operations to. This is intended for file system developers wishing
6to verify the integrity of metadata or data as the file system is written to.
7There is a log_write_entry written for every WRITE request and the target is
8able to take arbitrary data from userspace to insert into the log. The data
9that is in the WRITE requests is copied into the log to make the replay happen
10exactly as it happened originally.
11
12Log Ordering
13============
14
15We log things in order of completion once we are sure the write is no longer in
16cache. This means that normal WRITE requests are not actually logged until the
17next REQ_FLUSH request. This is to make it easier for userspace to replay the
18log in a way that correlates to what is on disk and not what is in cache, to
19make it easier to detect improper waiting/flushing.
20
21This works by attaching all WRITE requests to a list once the write completes.
22Once we see a REQ_FLUSH request we splice this list onto the request and once
23the FLUSH request completes we log all of the WRITEs and then the FLUSH. Only
24completed WRITEs, at the time the REQ_FLUSH is issued, are added in order to
25simulate the worst case scenario with regard to power failures. Consider the
26following example (W means write, C means complete):
27
28W1,W2,W3,C3,C2,Wflush,C1,Cflush
29
30The log would show the following
31
32W3,W2,flush,W1....
33
34Again this is to simulate what is actually on disk, this allows us to detect
35cases where a power failure at a particular point in time would create an
36inconsistent file system.
37
38Any REQ_FUA requests bypass this flushing mechanism and are logged as soon as
39they complete as those requests will obviously bypass the device cache.
40
41Any REQ_DISCARD requests are treated like WRITE requests. Otherwise we would
42have all the DISCARD requests, and then the WRITE requests and then the FLUSH
43request. Consider the following example:
44
45WRITE block 1, DISCARD block 1, FLUSH
46
47If we logged DISCARD when it completed, the replay would look like this
48
49DISCARD 1, WRITE 1, FLUSH
50
51which isn't quite what happened and wouldn't be caught during the log replay.
52
53Target interface
54================
55
56i) Constructor
57
58 log-writes <dev_path> <log_dev_path>
59
60 dev_path : Device that all of the IO will go to normally.
61 log_dev_path : Device where the log entries are written to.
62
63ii) Status
64
65 <#logged entries> <highest allocated sector>
66
67 #logged entries : Number of logged entries
68 highest allocated sector : Highest allocated sector
69
70iii) Messages
71
72 mark <description>
73
74 You can use a dmsetup message to set an arbitrary mark in a log.
75 For example say you want to fsck a file system after every
76 write, but first you need to replay up to the mkfs to make sure
77 we're fsck'ing something reasonable, you would do something like
78 this:
79
80 mkfs.btrfs -f /dev/mapper/log
81 dmsetup message log 0 mark mkfs
82 <run test>
83
84 This would allow you to replay the log up to the mkfs mark and
85 then replay from that point on doing the fsck check in the
86 interval that you want.
87
88 Every log has a mark at the end labeled "dm-log-writes-end".
89
90Userspace component
91===================
92
93There is a userspace tool that will replay the log for you in various ways.
94It can be found here: https://github.com/josefbacik/log-writes
95
96Example usage
97=============
98
99Say you want to test fsync on your file system. You would do something like
100this:
101
102TABLE="0 $(blockdev --getsz /dev/sdb) log-writes /dev/sdb /dev/sdc"
103dmsetup create log --table "$TABLE"
104mkfs.btrfs -f /dev/mapper/log
105dmsetup message log 0 mark mkfs
106
107mount /dev/mapper/log /mnt/btrfs-test
108<some test that does fsync at the end>
109dmsetup message log 0 mark fsync
110md5sum /mnt/btrfs-test/foo
111umount /mnt/btrfs-test
112
113dmsetup remove log
114replay-log --log /dev/sdc --replay /dev/sdb --end-mark fsync
115mount /dev/sdb /mnt/btrfs-test
116md5sum /mnt/btrfs-test/foo
117<verify md5sum's are correct>
118
119Another option is to do a complicated file system operation and verify the file
120system is consistent during the entire operation. You could do this with:
121
122TABLE="0 $(blockdev --getsz /dev/sdb) log-writes /dev/sdb /dev/sdc"
123dmsetup create log --table "$TABLE"
124mkfs.btrfs -f /dev/mapper/log
125dmsetup message log 0 mark mkfs
126
127mount /dev/mapper/log /mnt/btrfs-test
128<fsstress to dirty the fs>
129btrfs filesystem balance /mnt/btrfs-test
130umount /mnt/btrfs-test
131dmsetup remove log
132
133replay-log --log /dev/sdc --replay /dev/sdb --end-mark mkfs
134btrfsck /dev/sdb
135replay-log --log /dev/sdc --replay /dev/sdb --start-mark mkfs \
136 --fsck "btrfsck /dev/sdb" --check fua
137
138And that will replay the log until it sees a FUA request, run the fsck command
139and if the fsck passes it will replay to the next FUA, until it is completed or
140the fsck command exists abnormally.
diff --git a/Documentation/device-mapper/switch.txt b/Documentation/device-mapper/switch.txt
index 8897d0494838..424835e57f27 100644
--- a/Documentation/device-mapper/switch.txt
+++ b/Documentation/device-mapper/switch.txt
@@ -47,8 +47,8 @@ consume far too much memory.
47Using this device-mapper switch target we can now build a two-layer 47Using this device-mapper switch target we can now build a two-layer
48device hierarchy: 48device hierarchy:
49 49
50 Upper Tier Determine which array member the I/O should be sent to. 50 Upper Tier - Determine which array member the I/O should be sent to.
51 Lower Tier Load balance amongst paths to a particular member. 51 Lower Tier - Load balance amongst paths to a particular member.
52 52
53The lower tier consists of a single dm multipath device for each member. 53The lower tier consists of a single dm multipath device for each member.
54Each of these multipath devices contains the set of paths directly to 54Each of these multipath devices contains the set of paths directly to
diff --git a/Documentation/device-mapper/thin-provisioning.txt b/Documentation/device-mapper/thin-provisioning.txt
index 2f5173500bd9..4f67578b2954 100644
--- a/Documentation/device-mapper/thin-provisioning.txt
+++ b/Documentation/device-mapper/thin-provisioning.txt
@@ -380,9 +380,6 @@ then you'll have no access to blocks mapped beyond the end. If you
380load a target that is bigger than before, then extra blocks will be 380load a target that is bigger than before, then extra blocks will be
381provisioned as and when needed. 381provisioned as and when needed.
382 382
383If you wish to reduce the size of your thin device and potentially
384regain some space then send the 'trim' message to the pool.
385
386ii) Status 383ii) Status
387 384
388 <nr mapped sectors> <highest mapped sector> 385 <nr mapped sectors> <highest mapped sector>
diff --git a/Documentation/device-mapper/verity.txt b/Documentation/device-mapper/verity.txt
index 9884681535ee..e15bc1a0fb98 100644
--- a/Documentation/device-mapper/verity.txt
+++ b/Documentation/device-mapper/verity.txt
@@ -11,6 +11,7 @@ Construction Parameters
11 <data_block_size> <hash_block_size> 11 <data_block_size> <hash_block_size>
12 <num_data_blocks> <hash_start_block> 12 <num_data_blocks> <hash_start_block>
13 <algorithm> <digest> <salt> 13 <algorithm> <digest> <salt>
14 [<#opt_params> <opt_params>]
14 15
15<version> 16<version>
16 This is the type of the on-disk hash format. 17 This is the type of the on-disk hash format.
@@ -62,6 +63,22 @@ Construction Parameters
62<salt> 63<salt>
63 The hexadecimal encoding of the salt value. 64 The hexadecimal encoding of the salt value.
64 65
66<#opt_params>
67 Number of optional parameters. If there are no optional parameters,
68 the optional paramaters section can be skipped or #opt_params can be zero.
69 Otherwise #opt_params is the number of following arguments.
70
71 Example of optional parameters section:
72 1 ignore_corruption
73
74ignore_corruption
75 Log corrupted blocks, but allow read operations to proceed normally.
76
77restart_on_corruption
78 Restart the system when a corrupted block is discovered. This option is
79 not compatible with ignore_corruption and requires user space support to
80 avoid restart loops.
81
65Theory of operation 82Theory of operation
66=================== 83===================
67 84
@@ -125,7 +142,7 @@ block boundary) are the hash blocks which are stored a depth at a time
125 142
126The full specification of kernel parameters and on-disk metadata format 143The full specification of kernel parameters and on-disk metadata format
127is available at the cryptsetup project's wiki page 144is available at the cryptsetup project's wiki page
128 http://code.google.com/p/cryptsetup/wiki/DMVerity 145 https://gitlab.com/cryptsetup/cryptsetup/wikis/DMVerity
129 146
130Status 147Status
131====== 148======
@@ -142,7 +159,7 @@ Set up a device:
142 159
143A command line tool veritysetup is available to compute or verify 160A command line tool veritysetup is available to compute or verify
144the hash tree or activate the kernel device. This is available from 161the hash tree or activate the kernel device. This is available from
145the cryptsetup upstream repository http://code.google.com/p/cryptsetup/ 162the cryptsetup upstream repository https://gitlab.com/cryptsetup/cryptsetup/
146(as a libcryptsetup extension). 163(as a libcryptsetup extension).
147 164
148Create hash on the device: 165Create hash on the device:
diff --git a/Documentation/devicetree/bindings/arc/pct.txt b/Documentation/devicetree/bindings/arc/pct.txt
new file mode 100644
index 000000000000..7b9588444f20
--- /dev/null
+++ b/Documentation/devicetree/bindings/arc/pct.txt
@@ -0,0 +1,20 @@
1* ARC Performance Counters
2
3The ARC700 can be configured with a pipeline performance monitor for counting
4CPU and cache events like cache misses and hits. Like conventional PCT there
5are 100+ hardware conditions dynamically mapped to upto 32 counters
6
7Note that:
8 * The ARC 700 PCT does not support interrupts; although HW events may be
9 counted, the HW events themselves cannot serve as a trigger for a sample.
10
11Required properties:
12
13- compatible : should contain
14 "snps,arc700-pct"
15
16Example:
17
18pmu {
19 compatible = "snps,arc700-pct";
20};
diff --git a/Documentation/devicetree/bindings/arc/pmu.txt b/Documentation/devicetree/bindings/arc/pmu.txt
deleted file mode 100644
index 49d517340de3..000000000000
--- a/Documentation/devicetree/bindings/arc/pmu.txt
+++ /dev/null
@@ -1,24 +0,0 @@
1* ARC Performance Monitor Unit
2
3The ARC 700 can be configured with a pipeline performance monitor for counting
4CPU and cache events like cache misses and hits.
5
6Note that:
7 * ARC 700 refers to a family of ARC processor cores;
8 - There is only one type of PMU available for the whole family;
9 - The PMU may support different sets of events; supported events are probed
10 at boot time, as required by the reference manual.
11
12 * The ARC 700 PMU does not support interrupts; although HW events may be
13 counted, the HW events themselves cannot serve as a trigger for a sample.
14
15Required properties:
16
17- compatible : should contain
18 "snps,arc700-pmu"
19
20Example:
21
22pmu {
23 compatible = "snps,arc700-pmu";
24};
diff --git a/Documentation/devicetree/bindings/arm/al,alpine.txt b/Documentation/devicetree/bindings/arm/al,alpine.txt
new file mode 100644
index 000000000000..f404a4f9b165
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/al,alpine.txt
@@ -0,0 +1,88 @@
1Annapurna Labs Alpine Platform Device Tree Bindings
2---------------------------------------------------------------
3
4Boards in the Alpine family shall have the following properties:
5
6* Required root node properties:
7compatible: must contain "al,alpine"
8
9* Example:
10
11/ {
12 model = "Annapurna Labs Alpine Dev Board";
13 compatible = "al,alpine";
14
15 ...
16}
17
18* CPU node:
19
20The Alpine platform includes cortex-a15 cores.
21enable-method: must be "al,alpine-smp" to allow smp [1]
22
23Example:
24
25cpus {
26 #address-cells = <1>;
27 #size-cells = <0>;
28 enable-method = "al,alpine-smp";
29
30 cpu@0 {
31 compatible = "arm,cortex-a15";
32 device_type = "cpu";
33 reg = <0>;
34 };
35
36 cpu@1 {
37 compatible = "arm,cortex-a15";
38 device_type = "cpu";
39 reg = <1>;
40 };
41
42 cpu@2 {
43 compatible = "arm,cortex-a15";
44 device_type = "cpu";
45 reg = <2>;
46 };
47
48 cpu@3 {
49 compatible = "arm,cortex-a15";
50 device_type = "cpu";
51 reg = <3>;
52 };
53};
54
55
56* Alpine CPU resume registers
57
58The CPU resume register are used to define required resume address after
59reset.
60
61Properties:
62- compatible : Should contain "al,alpine-cpu-resume".
63- reg : Offset and length of the register set for the device
64
65Example:
66
67cpu_resume {
68 compatible = "al,alpine-cpu-resume";
69 reg = <0xfbff5ed0 0x30>;
70};
71
72* Alpine System-Fabric Service Registers
73
74The System-Fabric Service Registers allow various operation on CPU and
75system fabric, like powering CPUs off.
76
77Properties:
78- compatible : Should contain "al,alpine-sysfabric-service" and "syscon".
79- reg : Offset and length of the register set for the device
80
81Example:
82
83nb_service {
84 compatible = "al,alpine-sysfabric-service", "syscon";
85 reg = <0xfb070000 0x10000>;
86};
87
88[1] arm/cpu-enable-method/al,alpine-smp
diff --git a/Documentation/devicetree/bindings/arm/altera.txt b/Documentation/devicetree/bindings/arm/altera.txt
new file mode 100644
index 000000000000..558735aacca8
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/altera.txt
@@ -0,0 +1,14 @@
1Altera's SoCFPGA platform device tree bindings
2---------------------------------------------
3
4Boards with Cyclone 5 SoC:
5Required root node properties:
6compatible = "altr,socfpga-cyclone5", "altr,socfpga";
7
8Boards with Arria 5 SoC:
9Required root node properties:
10compatible = "altr,socfpga-arria5", "altr,socfpga";
11
12Boards with Arria 10 SoC:
13Required root node properties:
14compatible = "altr,socfpga-arria10", "altr,socfpga";
diff --git a/Documentation/devicetree/bindings/arm/amlogic.txt b/Documentation/devicetree/bindings/arm/amlogic.txt
index 8fe815046140..973884a1bacf 100644
--- a/Documentation/devicetree/bindings/arm/amlogic.txt
+++ b/Documentation/devicetree/bindings/arm/amlogic.txt
@@ -8,3 +8,7 @@ Boards with the Amlogic Meson6 SoC shall have the following properties:
8Boards with the Amlogic Meson8 SoC shall have the following properties: 8Boards with the Amlogic Meson8 SoC shall have the following properties:
9 Required root node property: 9 Required root node property:
10 compatible: "amlogic,meson8"; 10 compatible: "amlogic,meson8";
11
12Board compatible values:
13 - "geniatech,atv1200"
14 - "minix,neo-x8"
diff --git a/Documentation/devicetree/bindings/arm/arch_timer.txt b/Documentation/devicetree/bindings/arm/arch_timer.txt
index 256b4d8bab7b..e774128935d5 100644
--- a/Documentation/devicetree/bindings/arm/arch_timer.txt
+++ b/Documentation/devicetree/bindings/arm/arch_timer.txt
@@ -17,7 +17,10 @@ to deliver its interrupts via SPIs.
17- interrupts : Interrupt list for secure, non-secure, virtual and 17- interrupts : Interrupt list for secure, non-secure, virtual and
18 hypervisor timers, in that order. 18 hypervisor timers, in that order.
19 19
20- clock-frequency : The frequency of the main counter, in Hz. Optional. 20- clock-frequency : The frequency of the main counter, in Hz. Should be present
21 only where necessary to work around broken firmware which does not configure
22 CNTFRQ on all CPUs to a uniform correct value. Use of this property is
23 strongly discouraged; fix your firmware unless absolutely impossible.
21 24
22- always-on : a boolean property. If present, the timer is powered through an 25- always-on : a boolean property. If present, the timer is powered through an
23 always-on power domain, therefore it never loses context. 26 always-on power domain, therefore it never loses context.
@@ -46,7 +49,8 @@ Example:
46 49
47- compatible : Should at least contain "arm,armv7-timer-mem". 50- compatible : Should at least contain "arm,armv7-timer-mem".
48 51
49- clock-frequency : The frequency of the main counter, in Hz. Optional. 52- clock-frequency : The frequency of the main counter, in Hz. Should be present
53 only when firmware has not configured the MMIO CNTFRQ registers.
50 54
51- reg : The control frame base address. 55- reg : The control frame base address.
52 56
diff --git a/Documentation/devicetree/bindings/arm/armada-39x.txt b/Documentation/devicetree/bindings/arm/armada-39x.txt
new file mode 100644
index 000000000000..53d4ff9ea8ad
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/armada-39x.txt
@@ -0,0 +1,20 @@
1Marvell Armada 39x Platforms Device Tree Bindings
2-------------------------------------------------
3
4Boards with a SoC of the Marvell Armada 39x family shall have the
5following property:
6
7Required root node property:
8
9 - compatible: must contain "marvell,armada390"
10
11In addition, boards using the Marvell Armada 398 SoC shall have the
12following property before the previous one:
13
14Required root node property:
15
16compatible: must contain "marvell,armada398"
17
18Example:
19
20compatible = "marvell,a398-db", "marvell,armada398", "marvell,armada390";
diff --git a/Documentation/devicetree/bindings/arm/atmel-at91.txt b/Documentation/devicetree/bindings/arm/atmel-at91.txt
index ad319f84f560..2e99b5b57350 100644
--- a/Documentation/devicetree/bindings/arm/atmel-at91.txt
+++ b/Documentation/devicetree/bindings/arm/atmel-at91.txt
@@ -46,10 +46,12 @@ PIT Timer required properties:
46 shared across all System Controller members. 46 shared across all System Controller members.
47 47
48System Timer (ST) required properties: 48System Timer (ST) required properties:
49- compatible: Should be "atmel,at91rm9200-st" 49- compatible: Should be "atmel,at91rm9200-st", "syscon", "simple-mfd"
50- reg: Should contain registers location and length 50- reg: Should contain registers location and length
51- interrupts: Should contain interrupt for the ST which is the IRQ line 51- interrupts: Should contain interrupt for the ST which is the IRQ line
52 shared across all System Controller members. 52 shared across all System Controller members.
53Its subnodes can be:
54- watchdog: compatible should be "atmel,at91rm9200-wdt"
53 55
54TC/TCLIB Timer required properties: 56TC/TCLIB Timer required properties:
55- compatible: Should be "atmel,<chip>-tcb". 57- compatible: Should be "atmel,<chip>-tcb".
diff --git a/Documentation/devicetree/bindings/arm/bcm/brcm,bcm11351-cpu-method b/Documentation/devicetree/bindings/arm/bcm/brcm,bcm11351-cpu-method.txt
index 8240c023e202..8240c023e202 100644
--- a/Documentation/devicetree/bindings/arm/bcm/brcm,bcm11351-cpu-method
+++ b/Documentation/devicetree/bindings/arm/bcm/brcm,bcm11351-cpu-method.txt
diff --git a/Documentation/devicetree/bindings/arm/bcm/bcm11351.txt b/Documentation/devicetree/bindings/arm/bcm/brcm,bcm11351.txt
index 0ff6560e6094..0ff6560e6094 100644
--- a/Documentation/devicetree/bindings/arm/bcm/bcm11351.txt
+++ b/Documentation/devicetree/bindings/arm/bcm/brcm,bcm11351.txt
diff --git a/Documentation/devicetree/bindings/arm/bcm/bcm21664.txt b/Documentation/devicetree/bindings/arm/bcm/brcm,bcm21664.txt
index e0774255e1a6..e0774255e1a6 100644
--- a/Documentation/devicetree/bindings/arm/bcm/bcm21664.txt
+++ b/Documentation/devicetree/bindings/arm/bcm/brcm,bcm21664.txt
diff --git a/Documentation/devicetree/bindings/arm/bcm2835.txt b/Documentation/devicetree/bindings/arm/bcm/brcm,bcm2835.txt
index ac683480c486..ac683480c486 100644
--- a/Documentation/devicetree/bindings/arm/bcm2835.txt
+++ b/Documentation/devicetree/bindings/arm/bcm/brcm,bcm2835.txt
diff --git a/Documentation/devicetree/bindings/arm/bcm4708.txt b/Documentation/devicetree/bindings/arm/bcm/brcm,bcm4708.txt
index 6b0f49f6f499..6b0f49f6f499 100644
--- a/Documentation/devicetree/bindings/arm/bcm4708.txt
+++ b/Documentation/devicetree/bindings/arm/bcm/brcm,bcm4708.txt
diff --git a/Documentation/devicetree/bindings/arm/bcm/bcm63138.txt b/Documentation/devicetree/bindings/arm/bcm/brcm,bcm63138.txt
index bd49987a8812..bd49987a8812 100644
--- a/Documentation/devicetree/bindings/arm/bcm/bcm63138.txt
+++ b/Documentation/devicetree/bindings/arm/bcm/brcm,bcm63138.txt
diff --git a/Documentation/devicetree/bindings/arm/brcm-brcmstb.txt b/Documentation/devicetree/bindings/arm/bcm/brcm,brcmstb.txt
index 430608ec09f0..430608ec09f0 100644
--- a/Documentation/devicetree/bindings/arm/brcm-brcmstb.txt
+++ b/Documentation/devicetree/bindings/arm/bcm/brcm,brcmstb.txt
diff --git a/Documentation/devicetree/bindings/arm/bcm/cygnus.txt b/Documentation/devicetree/bindings/arm/bcm/brcm,cygnus.txt
index 4c77169bb534..4c77169bb534 100644
--- a/Documentation/devicetree/bindings/arm/bcm/cygnus.txt
+++ b/Documentation/devicetree/bindings/arm/bcm/brcm,cygnus.txt
diff --git a/Documentation/devicetree/bindings/arm/cci.txt b/Documentation/devicetree/bindings/arm/cci.txt
index f28d82bbbc56..3c5c631328d3 100644
--- a/Documentation/devicetree/bindings/arm/cci.txt
+++ b/Documentation/devicetree/bindings/arm/cci.txt
@@ -94,8 +94,11 @@ specific to ARM.
94 - compatible 94 - compatible
95 Usage: required 95 Usage: required
96 Value type: <string> 96 Value type: <string>
97 Definition: must be "arm,cci-400-pmu" 97 Definition: Must contain one of:
98 98 "arm,cci-400-pmu,r0"
99 "arm,cci-400-pmu,r1"
100 "arm,cci-400-pmu" - DEPRECATED, permitted only where OS has
101 secure acces to CCI registers
99 - reg: 102 - reg:
100 Usage: required 103 Usage: required
101 Value type: Integer cells. A register entry, expressed 104 Value type: Integer cells. A register entry, expressed
diff --git a/Documentation/devicetree/bindings/arm/coresight.txt b/Documentation/devicetree/bindings/arm/coresight.txt
index a3089359aaa6..88602b75418e 100644
--- a/Documentation/devicetree/bindings/arm/coresight.txt
+++ b/Documentation/devicetree/bindings/arm/coresight.txt
@@ -61,7 +61,6 @@ Example:
61 compatible = "arm,coresight-etb10", "arm,primecell"; 61 compatible = "arm,coresight-etb10", "arm,primecell";
62 reg = <0 0x20010000 0 0x1000>; 62 reg = <0 0x20010000 0 0x1000>;
63 63
64 coresight-default-sink;
65 clocks = <&oscclk6a>; 64 clocks = <&oscclk6a>;
66 clock-names = "apb_pclk"; 65 clock-names = "apb_pclk";
67 port { 66 port {
diff --git a/Documentation/devicetree/bindings/arm/cpu-enable-method/al,alpine-smp b/Documentation/devicetree/bindings/arm/cpu-enable-method/al,alpine-smp
new file mode 100644
index 000000000000..c2e0cc5e4cfd
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/cpu-enable-method/al,alpine-smp
@@ -0,0 +1,52 @@
1========================================================
2Secondary CPU enable-method "al,alpine-smp" binding
3========================================================
4
5This document describes the "al,alpine-smp" method for
6enabling secondary CPUs. To apply to all CPUs, a single
7"al,alpine-smp" enable method should be defined in the
8"cpus" node.
9
10Enable method name: "al,alpine-smp"
11Compatible machines: "al,alpine"
12Compatible CPUs: "arm,cortex-a15"
13Related properties: (none)
14
15Note:
16This enable method requires valid nodes compatible with
17"al,alpine-cpu-resume" and "al,alpine-nb-service"[1].
18
19Example:
20
21cpus {
22 #address-cells = <1>;
23 #size-cells = <0>;
24 enable-method = "al,alpine-smp";
25
26 cpu@0 {
27 compatible = "arm,cortex-a15";
28 device_type = "cpu";
29 reg = <0>;
30 };
31
32 cpu@1 {
33 compatible = "arm,cortex-a15";
34 device_type = "cpu";
35 reg = <1>;
36 };
37
38 cpu@2 {
39 compatible = "arm,cortex-a15";
40 device_type = "cpu";
41 reg = <2>;
42 };
43
44 cpu@3 {
45 compatible = "arm,cortex-a15";
46 device_type = "cpu";
47 reg = <3>;
48 };
49};
50
51--
52[1] arm/al,alpine.txt
diff --git a/Documentation/devicetree/bindings/arm/cpus.txt b/Documentation/devicetree/bindings/arm/cpus.txt
index 8b9e0a95de31..6aa331d11c5e 100644
--- a/Documentation/devicetree/bindings/arm/cpus.txt
+++ b/Documentation/devicetree/bindings/arm/cpus.txt
@@ -192,6 +192,7 @@ nodes to be present and contain the properties described below.
192 "brcm,brahma-b15" 192 "brcm,brahma-b15"
193 "marvell,armada-375-smp" 193 "marvell,armada-375-smp"
194 "marvell,armada-380-smp" 194 "marvell,armada-380-smp"
195 "marvell,armada-390-smp"
195 "marvell,armada-xp-smp" 196 "marvell,armada-xp-smp"
196 "qcom,gcc-msm8660" 197 "qcom,gcc-msm8660"
197 "qcom,kpss-acc-v1" 198 "qcom,kpss-acc-v1"
diff --git a/Documentation/devicetree/bindings/arm/exynos/power_domain.txt b/Documentation/devicetree/bindings/arm/exynos/power_domain.txt
index 1e097037349c..5da38c5ed476 100644
--- a/Documentation/devicetree/bindings/arm/exynos/power_domain.txt
+++ b/Documentation/devicetree/bindings/arm/exynos/power_domain.txt
@@ -22,6 +22,9 @@ Optional Properties:
22 - pclkN, clkN: Pairs of parent of input clock and input clock to the 22 - pclkN, clkN: Pairs of parent of input clock and input clock to the
23 devices in this power domain. Maximum of 4 pairs (N = 0 to 3) 23 devices in this power domain. Maximum of 4 pairs (N = 0 to 3)
24 are supported currently. 24 are supported currently.
25 - asbN: Clocks required by asynchronous bridges (ASB) present in
26 the power domain. These clock should be enabled during power
27 domain on/off operations.
25- power-domains: phandle pointing to the parent power domain, for more details 28- power-domains: phandle pointing to the parent power domain, for more details
26 see Documentation/devicetree/bindings/power/power_domain.txt 29 see Documentation/devicetree/bindings/power/power_domain.txt
27 30
diff --git a/Documentation/devicetree/bindings/arm/geniatech.txt b/Documentation/devicetree/bindings/arm/geniatech.txt
deleted file mode 100644
index 74ccba40b73b..000000000000
--- a/Documentation/devicetree/bindings/arm/geniatech.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1Geniatech platforms device tree bindings
2-------------------------------------------
3
4Geniatech ATV1200
5 - compatible = "geniatech,atv1200"
diff --git a/Documentation/devicetree/bindings/arm/gic.txt b/Documentation/devicetree/bindings/arm/gic.txt
index 1e0d21201d3a..2da059a4790c 100644
--- a/Documentation/devicetree/bindings/arm/gic.txt
+++ b/Documentation/devicetree/bindings/arm/gic.txt
@@ -18,6 +18,8 @@ Main node required properties:
18 "arm,arm11mp-gic" 18 "arm,arm11mp-gic"
19 "brcm,brahma-b15-gic" 19 "brcm,brahma-b15-gic"
20 "arm,arm1176jzf-devchip-gic" 20 "arm,arm1176jzf-devchip-gic"
21 "qcom,msm-8660-qgic"
22 "qcom,msm-qgic2"
21- interrupt-controller : Identifies the node as an interrupt controller 23- interrupt-controller : Identifies the node as an interrupt controller
22- #interrupt-cells : Specifies the number of cells needed to encode an 24- #interrupt-cells : Specifies the number of cells needed to encode an
23 interrupt source. The type shall be a <u32> and the value shall be 3. 25 interrupt source. The type shall be a <u32> and the value shall be 3.
diff --git a/Documentation/devicetree/bindings/arm/marvell,kirkwood.txt b/Documentation/devicetree/bindings/arm/marvell,kirkwood.txt
index 925ecbf6e7b7..4f40ff3fee4b 100644
--- a/Documentation/devicetree/bindings/arm/marvell,kirkwood.txt
+++ b/Documentation/devicetree/bindings/arm/marvell,kirkwood.txt
@@ -42,6 +42,7 @@ board. Currently known boards are:
42"lacie,cloudbox" 42"lacie,cloudbox"
43"lacie,inetspace_v2" 43"lacie,inetspace_v2"
44"lacie,laplug" 44"lacie,laplug"
45"lacie,nas2big"
45"lacie,netspace_lite_v2" 46"lacie,netspace_lite_v2"
46"lacie,netspace_max_v2" 47"lacie,netspace_max_v2"
47"lacie,netspace_mini_v2" 48"lacie,netspace_mini_v2"
diff --git a/Documentation/devicetree/bindings/arm/msm/qcom,idle-state.txt b/Documentation/devicetree/bindings/arm/msm/qcom,idle-state.txt
new file mode 100644
index 000000000000..06df04cc827a
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/msm/qcom,idle-state.txt
@@ -0,0 +1,84 @@
1QCOM Idle States for cpuidle driver
2
3ARM provides idle-state node to define the cpuidle states, as defined in [1].
4cpuidle-qcom is the cpuidle driver for Qualcomm SoCs and uses these idle
5states. Idle states have different enter/exit latency and residency values.
6The idle states supported by the QCOM SoC are defined as -
7
8 * Standby
9 * Retention
10 * Standalone Power Collapse (Standalone PC or SPC)
11 * Power Collapse (PC)
12
13Standby: Standby does a little more in addition to architectural clock gating.
14When the WFI instruction is executed the ARM core would gate its internal
15clocks. In addition to gating the clocks, QCOM cpus use this instruction as a
16trigger to execute the SPM state machine. The SPM state machine waits for the
17interrupt to trigger the core back in to active. This triggers the cache
18hierarchy to enter standby states, when all cpus are idle. An interrupt brings
19the SPM state machine out of its wait, the next step is to ensure that the
20cache hierarchy is also out of standby, and then the cpu is allowed to resume
21execution. This state is defined as a generic ARM WFI state by the ARM cpuidle
22driver and is not defined in the DT. The SPM state machine should be
23configured to execute this state by default and after executing every other
24state below.
25
26Retention: Retention is a low power state where the core is clock gated and
27the memory and the registers associated with the core are retained. The
28voltage may be reduced to the minimum value needed to keep the processor
29registers active. The SPM should be configured to execute the retention
30sequence and would wait for interrupt, before restoring the cpu to execution
31state. Retention may have a slightly higher latency than Standby.
32
33Standalone PC: A cpu can power down and warmboot if there is a sufficient time
34between the time it enters idle and the next known wake up. SPC mode is used
35to indicate a core entering a power down state without consulting any other
36cpu or the system resources. This helps save power only on that core. The SPM
37sequence for this idle state is programmed to power down the supply to the
38core, wait for the interrupt, restore power to the core, and ensure the
39system state including cache hierarchy is ready before allowing core to
40resume. Applying power and resetting the core causes the core to warmboot
41back into Elevation Level (EL) which trampolines the control back to the
42kernel. Entering a power down state for the cpu, needs to be done by trapping
43into a EL. Failing to do so, would result in a crash enforced by the warm boot
44code in the EL for the SoC. On SoCs with write-back L1 cache, the cache has to
45be flushed in s/w, before powering down the core.
46
47Power Collapse: This state is similar to the SPC mode, but distinguishes
48itself in that the cpu acknowledges and permits the SoC to enter deeper sleep
49modes. In a hierarchical power domain SoC, this means L2 and other caches can
50be flushed, system bus, clocks - lowered, and SoC main XO clock gated and
51voltages reduced, provided all cpus enter this state. Since the span of low
52power modes possible at this state is vast, the exit latency and the residency
53of this low power mode would be considered high even though at a cpu level,
54this essentially is cpu power down. The SPM in this state also may handshake
55with the Resource power manager (RPM) processor in the SoC to indicate a
56complete application processor subsystem shut down.
57
58The idle-state for QCOM SoCs are distinguished by the compatible property of
59the idle-states device node.
60
61The devicetree representation of the idle state should be -
62
63Required properties:
64
65- compatible: Must be one of -
66 "qcom,idle-state-ret",
67 "qcom,idle-state-spc",
68 "qcom,idle-state-pc",
69 and "arm,idle-state".
70
71Other required and optional properties are specified in [1].
72
73Example:
74
75 idle-states {
76 CPU_SPC: spc {
77 compatible = "qcom,idle-state-spc", "arm,idle-state";
78 entry-latency-us = <150>;
79 exit-latency-us = <200>;
80 min-residency-us = <2000>;
81 };
82 };
83
84[1]. Documentation/devicetree/bindings/arm/idle-states.txt
diff --git a/Documentation/devicetree/bindings/arm/msm/qcom,saw2.txt b/Documentation/devicetree/bindings/arm/msm/qcom,saw2.txt
index 1505fb8e131a..ae4afc6dcfe0 100644
--- a/Documentation/devicetree/bindings/arm/msm/qcom,saw2.txt
+++ b/Documentation/devicetree/bindings/arm/msm/qcom,saw2.txt
@@ -2,22 +2,31 @@ SPM AVS Wrapper 2 (SAW2)
2 2
3The SAW2 is a wrapper around the Subsystem Power Manager (SPM) and the 3The SAW2 is a wrapper around the Subsystem Power Manager (SPM) and the
4Adaptive Voltage Scaling (AVS) hardware. The SPM is a programmable 4Adaptive Voltage Scaling (AVS) hardware. The SPM is a programmable
5micro-controller that transitions a piece of hardware (like a processor or 5power-controller that transitions a piece of hardware (like a processor or
6subsystem) into and out of low power modes via a direct connection to 6subsystem) into and out of low power modes via a direct connection to
7the PMIC. It can also be wired up to interact with other processors in the 7the PMIC. It can also be wired up to interact with other processors in the
8system, notifying them when a low power state is entered or exited. 8system, notifying them when a low power state is entered or exited.
9 9
10Multiple revisions of the SAW hardware are supported using these Device Nodes.
11SAW2 revisions differ in the register offset and configuration data. Also, the
12same revision of the SAW in different SoCs may have different configuration
13data due the the differences in hardware capabilities. Hence the SoC name, the
14version of the SAW hardware in that SoC and the distinction between cpu (big
15or Little) or cache, may be needed to uniquely identify the SAW register
16configuration and initialization data. The compatible string is used to
17indicate this parameter.
18
10PROPERTIES 19PROPERTIES
11 20
12- compatible: 21- compatible:
13 Usage: required 22 Usage: required
14 Value type: <string> 23 Value type: <string>
15 Definition: shall contain "qcom,saw2". A more specific value should be 24 Definition: Must have
16 one of: 25 "qcom,saw2"
17 "qcom,saw2-v1" 26 A more specific value could be one of:
18 "qcom,saw2-v1.1" 27 "qcom,apq8064-saw2-v1.1-cpu"
19 "qcom,saw2-v2" 28 "qcom,msm8974-saw2-v2.1-cpu"
20 "qcom,saw2-v2.1" 29 "qcom,apq8084-saw2-v2.1-cpu"
21 30
22- reg: 31- reg:
23 Usage: required 32 Usage: required
@@ -26,10 +35,23 @@ PROPERTIES
26 the register region. An optional second element specifies 35 the register region. An optional second element specifies
27 the base address and size of the alias register region. 36 the base address and size of the alias register region.
28 37
38- regulator:
39 Usage: optional
40 Value type: boolean
41 Definition: Indicates that this SPM device acts as a regulator device
42 device for the core (CPU or Cache) the SPM is attached
43 to.
29 44
30Example: 45Example 1:
31 46
32 regulator@2099000 { 47 power-controller@2099000 {
33 compatible = "qcom,saw2"; 48 compatible = "qcom,saw2";
34 reg = <0x02099000 0x1000>, <0x02009000 0x1000>; 49 reg = <0x02099000 0x1000>, <0x02009000 0x1000>;
50 regulator;
51 };
52
53Example 2:
54 saw0: power-controller@f9089000 {
55 compatible = "qcom,apq8084-saw2-v2.1-cpu", "qcom,saw2";
56 reg = <0xf9089000 0x1000>, <0xf9009000 0x1000>;
35 }; 57 };
diff --git a/Documentation/devicetree/bindings/arm/msm/timer.txt b/Documentation/devicetree/bindings/arm/msm/timer.txt
index 74607b6c1117..5e10c345548f 100644
--- a/Documentation/devicetree/bindings/arm/msm/timer.txt
+++ b/Documentation/devicetree/bindings/arm/msm/timer.txt
@@ -9,11 +9,17 @@ Properties:
9 "qcom,scss-timer" - scorpion subsystem 9 "qcom,scss-timer" - scorpion subsystem
10 10
11- interrupts : Interrupts for 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, and
13 order. 13 optionally as well, 2 watchdog interrupts, in that order.
14 14
15- reg : Specifies the base address of the timer registers. 15- reg : Specifies the base address of the timer registers.
16 16
17- clocks: Reference to the parent clocks, one per output clock. The parents
18 must appear in the same order as the clock names.
19
20- clock-names: The name of the clocks as free-form strings. They should be in
21 the same order as the clocks.
22
17- clock-frequency : The frequency of the debug timer and the general purpose 23- clock-frequency : The frequency of the debug timer and the general purpose
18 timer(s) in Hz in that order. 24 timer(s) in Hz in that order.
19 25
@@ -29,9 +35,13 @@ Example:
29 compatible = "qcom,scss-timer", "qcom,msm-timer"; 35 compatible = "qcom,scss-timer", "qcom,msm-timer";
30 interrupts = <1 1 0x301>, 36 interrupts = <1 1 0x301>,
31 <1 2 0x301>, 37 <1 2 0x301>,
32 <1 3 0x301>; 38 <1 3 0x301>,
39 <1 4 0x301>,
40 <1 5 0x301>;
33 reg = <0x0200a000 0x100>; 41 reg = <0x0200a000 0x100>;
34 clock-frequency = <19200000>, 42 clock-frequency = <19200000>,
35 <32768>; 43 <32768>;
44 clocks = <&sleep_clk>;
45 clock-names = "sleep";
36 cpu-offset = <0x40000>; 46 cpu-offset = <0x40000>;
37 }; 47 };
diff --git a/Documentation/devicetree/bindings/arm/omap/ctrl.txt b/Documentation/devicetree/bindings/arm/omap/ctrl.txt
new file mode 100644
index 000000000000..3a4e5901ce31
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/omap/ctrl.txt
@@ -0,0 +1,79 @@
1OMAP Control Module bindings
2
3Control Module contains miscellaneous features under it based on SoC type.
4Pincontrol is one common feature, and it has a specialized support
5described in [1]. Typically some clock nodes are also under control module.
6Syscon is used to share register level access to drivers external to
7control module driver itself.
8
9See [2] for documentation about clock/clockdomain nodes.
10
11[1] Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt
12[2] Documentation/devicetree/bindings/clock/ti/*
13
14Required properties:
15- compatible: Must be one of:
16 "ti,am3-scm"
17 "ti,am4-scm"
18 "ti,dm814-scrm"
19 "ti,dm816-scrm"
20 "ti,omap2-scm"
21 "ti,omap3-scm"
22 "ti,omap4-scm-core"
23 "ti,omap4-scm-padconf-core"
24 "ti,omap5-scm-core"
25 "ti,omap5-scm-padconf-core"
26 "ti,dra7-scm-core"
27- reg: Contains Control Module register address range
28 (base address and length)
29
30Optional properties:
31- clocks: clocks for this module
32- clockdomains: clockdomains for this module
33
34Examples:
35
36scm: scm@2000 {
37 compatible = "ti,omap3-scm", "simple-bus";
38 reg = <0x2000 0x2000>;
39 #address-cells = <1>;
40 #size-cells = <1>;
41 ranges = <0 0x2000 0x2000>;
42
43 omap3_pmx_core: pinmux@30 {
44 compatible = "ti,omap3-padconf",
45 "pinctrl-single";
46 reg = <0x30 0x230>;
47 #address-cells = <1>;
48 #size-cells = <0>;
49 #interrupt-cells = <1>;
50 interrupt-controller;
51 pinctrl-single,register-width = <16>;
52 pinctrl-single,function-mask = <0xff1f>;
53 };
54
55 scm_conf: scm_conf@270 {
56 compatible = "syscon";
57 reg = <0x270 0x330>;
58 #address-cells = <1>;
59 #size-cells = <1>;
60
61 scm_clocks: clocks {
62 #address-cells = <1>;
63 #size-cells = <0>;
64 };
65 };
66
67 scm_clockdomains: clockdomains {
68 };
69}
70
71&scm_clocks {
72 mcbsp5_mux_fck: mcbsp5_mux_fck {
73 #clock-cells = <0>;
74 compatible = "ti,composite-mux-clock";
75 clocks = <&core_96m_fck>, <&mcbsp_clks>;
76 ti,bit-shift = <4>;
77 reg = <0x02d8>;
78 };
79};
diff --git a/Documentation/devicetree/bindings/arm/omap/l4.txt b/Documentation/devicetree/bindings/arm/omap/l4.txt
new file mode 100644
index 000000000000..b4f8a16e7e3b
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/omap/l4.txt
@@ -0,0 +1,26 @@
1L4 interconnect bindings
2
3These bindings describe the OMAP SoCs L4 interconnect bus.
4
5Required properties:
6- compatible : Should be "ti,omap2-l4" for OMAP2 family l4 core bus
7 Should be "ti,omap2-l4-wkup" for OMAP2 family l4 wkup bus
8 Should be "ti,omap3-l4-core" for OMAP3 family l4 core bus
9 Should be "ti,omap4-l4-cfg" for OMAP4 family l4 cfg bus
10 Should be "ti,omap4-l4-wkup" for OMAP4 family l4 wkup bus
11 Should be "ti,omap5-l4-cfg" for OMAP5 family l4 cfg bus
12 Should be "ti,omap5-l4-wkup" for OMAP5 family l4 wkup bus
13 Should be "ti,dra7-l4-cfg" for DRA7 family l4 cfg bus
14 Should be "ti,dra7-l4-wkup" for DRA7 family l4 wkup bus
15 Should be "ti,am3-l4-wkup" for AM33xx family l4 wkup bus
16 Should be "ti,am4-l4-wkup" for AM43xx family l4 wkup bus
17- ranges : contains the IO map range for the bus
18
19Examples:
20
21l4: l4@48000000 {
22 compatible "ti,omap2-l4", "simple-bus";
23 #address-cells = <1>;
24 #size-cells = <1>;
25 ranges = <0 0x48000000 0x100000>;
26};
diff --git a/Documentation/devicetree/bindings/arm/omap/prcm.txt b/Documentation/devicetree/bindings/arm/omap/prcm.txt
index 79074dac684a..3eb6d7afff14 100644
--- a/Documentation/devicetree/bindings/arm/omap/prcm.txt
+++ b/Documentation/devicetree/bindings/arm/omap/prcm.txt
@@ -10,14 +10,10 @@ documentation about the individual clock/clockdomain nodes.
10Required properties: 10Required properties:
11- compatible: Must be one of: 11- compatible: Must be one of:
12 "ti,am3-prcm" 12 "ti,am3-prcm"
13 "ti,am3-scrm"
14 "ti,am4-prcm" 13 "ti,am4-prcm"
15 "ti,am4-scrm"
16 "ti,omap2-prcm" 14 "ti,omap2-prcm"
17 "ti,omap2-scrm"
18 "ti,omap3-prm" 15 "ti,omap3-prm"
19 "ti,omap3-cm" 16 "ti,omap3-cm"
20 "ti,omap3-scrm"
21 "ti,omap4-cm1" 17 "ti,omap4-cm1"
22 "ti,omap4-prm" 18 "ti,omap4-prm"
23 "ti,omap4-cm2" 19 "ti,omap4-cm2"
@@ -29,6 +25,8 @@ Required properties:
29 "ti,dra7-prm" 25 "ti,dra7-prm"
30 "ti,dra7-cm-core-aon" 26 "ti,dra7-cm-core-aon"
31 "ti,dra7-cm-core" 27 "ti,dra7-cm-core"
28 "ti,dm814-prcm"
29 "ti,dm816-prcm"
32- reg: Contains PRCM module register address range 30- reg: Contains PRCM module register address range
33 (base address and length) 31 (base address and length)
34- clocks: clocks for this module 32- clocks: clocks for this module
diff --git a/Documentation/devicetree/bindings/arm/pmu.txt b/Documentation/devicetree/bindings/arm/pmu.txt
index 6e54a9d88b7a..3b5f5d1088c6 100644
--- a/Documentation/devicetree/bindings/arm/pmu.txt
+++ b/Documentation/devicetree/bindings/arm/pmu.txt
@@ -26,6 +26,13 @@ Required properties:
26 26
27Optional properties: 27Optional properties:
28 28
29- interrupt-affinity : Valid only when using SPIs, specifies a list of phandles
30 to CPU nodes corresponding directly to the affinity of
31 the SPIs listed in the interrupts property.
32
33 This property should be present when there is more than
34 a single SPI.
35
29- qcom,no-pc-write : Indicates that this PMU doesn't support the 0xc and 0xd 36- qcom,no-pc-write : Indicates that this PMU doesn't support the 0xc and 0xd
30 events. 37 events.
31 38
diff --git a/Documentation/devicetree/bindings/arm/rockchip.txt b/Documentation/devicetree/bindings/arm/rockchip.txt
index 6809e4e51ed2..60d4a1e0a9b5 100644
--- a/Documentation/devicetree/bindings/arm/rockchip.txt
+++ b/Documentation/devicetree/bindings/arm/rockchip.txt
@@ -22,3 +22,7 @@ Rockchip platforms device tree bindings
22 - compatible = "firefly,firefly-rk3288", "rockchip,rk3288"; 22 - compatible = "firefly,firefly-rk3288", "rockchip,rk3288";
23 or 23 or
24 - compatible = "firefly,firefly-rk3288-beta", "rockchip,rk3288"; 24 - compatible = "firefly,firefly-rk3288-beta", "rockchip,rk3288";
25
26- ChipSPARK PopMetal-RK3288 board:
27 Required root node properties:
28 - compatible = "chipspark,popmetal-rk3288", "rockchip,rk3288";
diff --git a/Documentation/devicetree/bindings/arm/shmobile.txt b/Documentation/devicetree/bindings/arm/shmobile.txt
index 51147cb5c036..c4f19b2e7dd9 100644
--- a/Documentation/devicetree/bindings/arm/shmobile.txt
+++ b/Documentation/devicetree/bindings/arm/shmobile.txt
@@ -7,8 +7,6 @@ SoCs:
7 compatible = "renesas,emev2" 7 compatible = "renesas,emev2"
8 - RZ/A1H (R7S72100) 8 - RZ/A1H (R7S72100)
9 compatible = "renesas,r7s72100" 9 compatible = "renesas,r7s72100"
10 - SH-Mobile AP4 (R8A73720/SH7372)
11 compatible = "renesas,sh7372"
12 - SH-Mobile AG5 (R8A73A00/SH73A0) 10 - SH-Mobile AG5 (R8A73A00/SH73A0)
13 compatible = "renesas,sh73a0" 11 compatible = "renesas,sh73a0"
14 - R-Mobile APE6 (R8A73A40) 12 - R-Mobile APE6 (R8A73A40)
@@ -37,8 +35,6 @@ Boards:
37 compatible = "renesas,alt", "renesas,r8a7794" 35 compatible = "renesas,alt", "renesas,r8a7794"
38 - APE6-EVM 36 - APE6-EVM
39 compatible = "renesas,ape6evm", "renesas,r8a73a4" 37 compatible = "renesas,ape6evm", "renesas,r8a73a4"
40 - APE6-EVM - Reference Device Tree Implementation
41 compatible = "renesas,ape6evm-reference", "renesas,r8a73a4"
42 - Atmark Techno Armadillo-800 EVA 38 - Atmark Techno Armadillo-800 EVA
43 compatible = "renesas,armadillo800eva" 39 compatible = "renesas,armadillo800eva"
44 - BOCK-W 40 - BOCK-W
@@ -57,12 +53,8 @@ Boards:
57 compatible = "renesas,kzm9d", "renesas,emev2" 53 compatible = "renesas,kzm9d", "renesas,emev2"
58 - Kyoto Microcomputer Co. KZM-A9-GT 54 - Kyoto Microcomputer Co. KZM-A9-GT
59 compatible = "renesas,kzm9g", "renesas,sh73a0" 55 compatible = "renesas,kzm9g", "renesas,sh73a0"
60 - Kyoto Microcomputer Co. KZM-A9-GT - Reference Device Tree Implementation
61 compatible = "renesas,kzm9g-reference", "renesas,sh73a0"
62 - Lager (RTP0RC7790SEB00010S) 56 - Lager (RTP0RC7790SEB00010S)
63 compatible = "renesas,lager", "renesas,r8a7790" 57 compatible = "renesas,lager", "renesas,r8a7790"
64 - Mackerel (R0P7372LC0016RL, AP4 EVM 2nd)
65 compatible = "renesas,mackerel"
66 - Marzen 58 - Marzen
67 compatible = "renesas,marzen", "renesas,r8a7779" 59 compatible = "renesas,marzen", "renesas,r8a7779"
68 60
diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-actmon.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-actmon.txt
new file mode 100644
index 000000000000..ea670a5d7ee3
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-actmon.txt
@@ -0,0 +1,32 @@
1NVIDIA Tegra Activity Monitor
2
3The activity monitor block collects statistics about the behaviour of other
4components in the system. This information can be used to derive the rate at
5which the external memory needs to be clocked in order to serve all requests
6from the monitored clients.
7
8Required properties:
9- compatible: should be "nvidia,tegra<chip>-actmon"
10- reg: offset and length of the register set for the device
11- interrupts: standard interrupt property
12- clocks: Must contain a phandle and clock specifier pair for each entry in
13clock-names. See ../../clock/clock-bindings.txt for details.
14- clock-names: Must include the following entries:
15 - actmon
16 - emc
17- resets: Must contain an entry for each entry in reset-names. See
18../../reset/reset.txt for details.
19- reset-names: Must include the following entries:
20 - actmon
21
22Example:
23 actmon@6000c800 {
24 compatible = "nvidia,tegra124-actmon";
25 reg = <0x0 0x6000c800 0x0 0x400>;
26 interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
27 clocks = <&tegra_car TEGRA124_CLK_ACTMON>,
28 <&tegra_car TEGRA124_CLK_EMC>;
29 clock-names = "actmon", "emc";
30 resets = <&tegra_car 119>;
31 reset-names = "actmon";
32 };
diff --git a/Documentation/devicetree/bindings/bus/bcma.txt b/Documentation/devicetree/bindings/bus/brcm,bus-axi.txt
index edd44d802139..edd44d802139 100644
--- a/Documentation/devicetree/bindings/bus/bcma.txt
+++ b/Documentation/devicetree/bindings/bus/brcm,bus-axi.txt
diff --git a/Documentation/devicetree/bindings/bus/omap-ocp2scp.txt b/Documentation/devicetree/bindings/bus/omap-ocp2scp.txt
index 63dd8051521c..18729f6fe1e5 100644
--- a/Documentation/devicetree/bindings/bus/omap-ocp2scp.txt
+++ b/Documentation/devicetree/bindings/bus/omap-ocp2scp.txt
@@ -1,7 +1,8 @@
1* OMAP OCP2SCP - ocp interface to scp interface 1* OMAP OCP2SCP - ocp interface to scp interface
2 2
3properties: 3properties:
4- compatible : Should be "ti,omap-ocp2scp" 4- compatible : Should be "ti,am437x-ocp2scp" for AM437x processor
5 Should be "ti,omap-ocp2scp" for all others
5- reg : Address and length of the register set for the device 6- reg : Address and length of the register set for the device
6- #address-cells, #size-cells : Must be present if the device has sub-nodes 7- #address-cells, #size-cells : Must be present if the device has sub-nodes
7- ranges : the child address space are mapped 1:1 onto the parent address space 8- ranges : the child address space are mapped 1:1 onto the parent address space
diff --git a/Documentation/devicetree/bindings/bus/renesas,bsc.txt b/Documentation/devicetree/bindings/bus/renesas,bsc.txt
new file mode 100644
index 000000000000..90e947269437
--- /dev/null
+++ b/Documentation/devicetree/bindings/bus/renesas,bsc.txt
@@ -0,0 +1,46 @@
1Renesas Bus State Controller (BSC)
2==================================
3
4The Renesas Bus State Controller (BSC, sometimes called "LBSC within Bus
5Bridge", or "External Bus Interface") can be found in several Renesas ARM SoCs.
6It provides an external bus for connecting multiple external devices to the
7SoC, driving several chip select lines, for e.g. NOR FLASH, Ethernet and USB.
8
9While the BSC is a fairly simple memory-mapped bus, it may be part of a PM
10domain, and may have a gateable functional clock.
11Before a device connected to the BSC can be accessed, the PM domain
12containing the BSC must be powered on, and the functional clock
13driving the BSC must be enabled.
14
15The bindings for the BSC extend the bindings for "simple-pm-bus".
16
17
18Required properties
19 - compatible: Must contain an SoC-specific value, and "renesas,bsc" and
20 "simple-pm-bus" as fallbacks.
21 SoC-specific values can be:
22 "renesas,bsc-r8a73a4" for R-Mobile APE6 (r8a73a4)
23 "renesas,bsc-sh73a0" for SH-Mobile AG5 (sh73a0)
24 - #address-cells, #size-cells, ranges: Must describe the mapping between
25 parent address and child address spaces.
26 - reg: Must contain the base address and length to access the bus controller.
27
28Optional properties:
29 - interrupts: Must contain a reference to the BSC interrupt, if available.
30 - clocks: Must contain a reference to the functional clock, if available.
31 - power-domains: Must contain a reference to the PM domain, if available.
32
33
34Example:
35
36 bsc: bus@fec10000 {
37 compatible = "renesas,bsc-sh73a0", "renesas,bsc",
38 "simple-pm-bus";
39 #address-cells = <1>;
40 #size-cells = <1>;
41 ranges = <0 0 0x20000000>;
42 reg = <0xfec10000 0x400>;
43 interrupts = <0 39 IRQ_TYPE_LEVEL_HIGH>;
44 clocks = <&zb_clk>;
45 power-domains = <&pd_a4s>;
46 };
diff --git a/Documentation/devicetree/bindings/bus/simple-pm-bus.txt b/Documentation/devicetree/bindings/bus/simple-pm-bus.txt
new file mode 100644
index 000000000000..d032237512c2
--- /dev/null
+++ b/Documentation/devicetree/bindings/bus/simple-pm-bus.txt
@@ -0,0 +1,44 @@
1Simple Power-Managed Bus
2========================
3
4A Simple Power-Managed Bus is a transparent bus that doesn't need a real
5driver, as it's typically initialized by the boot loader.
6
7However, its bus controller is part of a PM domain, or under the control of a
8functional clock. Hence, the bus controller's PM domain and/or clock must be
9enabled for child devices connected to the bus (either on-SoC or externally)
10to function.
11
12While "simple-pm-bus" follows the "simple-bus" set of properties, as specified
13in ePAPR, it is not an extension of "simple-bus".
14
15
16Required properties:
17 - compatible: Must contain at least "simple-pm-bus".
18 Must not contain "simple-bus".
19 It's recommended to let this be preceded by one or more
20 vendor-specific compatible values.
21 - #address-cells, #size-cells, ranges: Must describe the mapping between
22 parent address and child address spaces.
23
24Optional platform-specific properties for clock or PM domain control (at least
25one of them is required):
26 - clocks: Must contain a reference to the functional clock(s),
27 - power-domains: Must contain a reference to the PM domain.
28Please refer to the binding documentation for the clock and/or PM domain
29providers for more details.
30
31
32Example:
33
34 bsc: bus@fec10000 {
35 compatible = "renesas,bsc-sh73a0", "renesas,bsc",
36 "simple-pm-bus";
37 #address-cells = <1>;
38 #size-cells = <1>;
39 ranges = <0 0 0x20000000>;
40 reg = <0xfec10000 0x400>;
41 interrupts = <0 39 IRQ_TYPE_LEVEL_HIGH>;
42 clocks = <&zb_clk>;
43 power-domains = <&pd_a4s>;
44 };
diff --git a/Documentation/devicetree/bindings/clock/bcm-kona-clock.txt b/Documentation/devicetree/bindings/clock/brcm,kona-ccu.txt
index 5286e260fcae..5286e260fcae 100644
--- a/Documentation/devicetree/bindings/clock/bcm-kona-clock.txt
+++ b/Documentation/devicetree/bindings/clock/brcm,kona-ccu.txt
diff --git a/Documentation/devicetree/bindings/clock/exynos3250-clock.txt b/Documentation/devicetree/bindings/clock/exynos3250-clock.txt
index f57d9dd9ea85..f1738b88c225 100644
--- a/Documentation/devicetree/bindings/clock/exynos3250-clock.txt
+++ b/Documentation/devicetree/bindings/clock/exynos3250-clock.txt
@@ -9,6 +9,8 @@ Required Properties:
9 - "samsung,exynos3250-cmu" - controller compatible with Exynos3250 SoC. 9 - "samsung,exynos3250-cmu" - controller compatible with Exynos3250 SoC.
10 - "samsung,exynos3250-cmu-dmc" - controller compatible with 10 - "samsung,exynos3250-cmu-dmc" - controller compatible with
11 Exynos3250 SoC for Dynamic Memory Controller domain. 11 Exynos3250 SoC for Dynamic Memory Controller domain.
12 - "samsung,exynos3250-cmu-isp" - ISP block clock controller compatible
13 with Exynos3250 SOC
12 14
13- reg: physical base address of the controller and length of memory mapped 15- reg: physical base address of the controller and length of memory mapped
14 region. 16 region.
@@ -36,6 +38,12 @@ Example 1: Examples of clock controller nodes are listed below.
36 #clock-cells = <1>; 38 #clock-cells = <1>;
37 }; 39 };
38 40
41 cmu_isp: clock-controller@10048000 {
42 compatible = "samsung,exynos3250-cmu-isp";
43 reg = <0x10048000 0x1000>;
44 #clock-cells = <1>;
45 };
46
39Example 2: UART controller node that consumes the clock generated by the clock 47Example 2: UART controller node that consumes the clock generated by the clock
40 controller. Refer to the standard clock bindings for information 48 controller. Refer to the standard clock bindings for information
41 about 'clocks' and 'clock-names' property. 49 about 'clocks' and 'clock-names' property.
diff --git a/Documentation/devicetree/bindings/clock/exynos5433-clock.txt b/Documentation/devicetree/bindings/clock/exynos5433-clock.txt
new file mode 100644
index 000000000000..63379b04e052
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/exynos5433-clock.txt
@@ -0,0 +1,462 @@
1* Samsung Exynos5433 CMU (Clock Management Units)
2
3The Exynos5433 clock controller generates and supplies clock to various
4controllers within the Exynos5433 SoC.
5
6Required Properties:
7
8- compatible: should be one of the following.
9 - "samsung,exynos5433-cmu-top" - clock controller compatible for CMU_TOP
10 which generates clocks for IMEM/FSYS/G3D/GSCL/HEVC/MSCL/G2D/MFC/PERIC/PERIS
11 domains and bus clocks.
12 - "samsung,exynos5433-cmu-cpif" - clock controller compatible for CMU_CPIF
13 which generates clocks for LLI (Low Latency Interface) IP.
14 - "samsung,exynos5433-cmu-mif" - clock controller compatible for CMU_MIF
15 which generates clocks for DRAM Memory Controller domain.
16 - "samsung,exynos5433-cmu-peric" - clock controller compatible for CMU_PERIC
17 which generates clocks for UART/I2C/SPI/I2S/PCM/SPDIF/PWM/SLIMBUS IPs.
18 - "samsung,exynos5433-cmu-peris" - clock controller compatible for CMU_PERIS
19 which generates clocks for PMU/TMU/MCT/WDT/RTC/SECKEY/TZPC IPs.
20 - "samsung,exynos5433-cmu-fsys" - clock controller compatible for CMU_FSYS
21 which generates clocks for USB/UFS/SDMMC/TSI/PDMA IPs.
22 - "samsung,exynos5433-cmu-g2d" - clock controller compatible for CMU_G2D
23 which generates clocks for G2D/MDMA IPs.
24 - "samsung,exynos5433-cmu-disp" - clock controller compatible for CMU_DISP
25 which generates clocks for Display (DECON/HDMI/DSIM/MIXER) IPs.
26 - "samsung,exynos5433-cmu-aud" - clock controller compatible for CMU_AUD
27 which generates clocks for Cortex-A5/BUS/AUDIO clocks.
28 - "samsung,exynos5433-cmu-bus0", "samsung,exynos5433-cmu-bus1"
29 and "samsung,exynos5433-cmu-bus2" - clock controller compatible for CMU_BUS
30 which generates global data buses clock and global peripheral buses clock.
31 - "samsung,exynos5433-cmu-g3d" - clock controller compatible for CMU_G3D
32 which generates clocks for 3D Graphics Engine IP.
33 - "samsung,exynos5433-cmu-gscl" - clock controller compatible for CMU_GSCL
34 which generates clocks for GSCALER IPs.
35 - "samsung,exynos5433-cmu-apollo"- clock controller compatible for CMU_APOLLO
36 which generates clocks for Cortex-A53 Quad-core processor.
37 - "samsung,exynos5433-cmu-atlas" - clock controller compatible for CMU_ATLAS
38 which generates clocks for Cortex-A57 Quad-core processor, CoreSight and
39 L2 cache controller.
40 - "samsung,exynos5433-cmu-mscl" - clock controller compatible for CMU_MSCL
41 which generates clocks for M2M (Memory to Memory) scaler and JPEG IPs.
42 - "samsung,exynos5433-cmu-mfc" - clock controller compatible for CMU_MFC
43 which generates clocks for MFC(Multi-Format Codec) IP.
44 - "samsung,exynos5433-cmu-hevc" - clock controller compatible for CMU_HEVC
45 which generates clocks for HEVC(High Efficiency Video Codec) decoder IP.
46 - "samsung,exynos5433-cmu-isp" - clock controller compatible for CMU_ISP
47 which generates clocks for FIMC-ISP/DRC/SCLC/DIS/3DNR IPs.
48 - "samsung,exynos5433-cmu-cam0" - clock controller compatible for CMU_CAM0
49 which generates clocks for MIPI_CSIS{0|1}/FIMC_LITE_{A|B|D}/FIMC_3AA{0|1}
50 IPs.
51 - "samsung,exynos5433-cmu-cam1" - clock controller compatible for CMU_CAM1
52 which generates clocks for Cortex-A5/MIPI_CSIS2/FIMC-LITE_C/FIMC-FD IPs.
53
54- reg: physical base address of the controller and length of memory mapped
55 region.
56
57- #clock-cells: should be 1.
58
59- clocks: list of the clock controller input clock identifiers,
60 from common clock bindings. Please refer the next section
61 to find the input clocks for a given controller.
62
63- clock-names: list of the clock controller input clock names,
64 as described in clock-bindings.txt.
65
66 Input clocks for top clock controller:
67 - oscclk
68 - sclk_mphy_pll
69 - sclk_mfc_pll
70 - sclk_bus_pll
71
72 Input clocks for cpif clock controller:
73 - oscclk
74
75 Input clocks for mif clock controller:
76 - oscclk
77 - sclk_mphy_pll
78
79 Input clocks for fsys clock controller:
80 - oscclk
81 - sclk_ufs_mphy
82 - div_aclk_fsys_200
83 - sclk_pcie_100_fsys
84 - sclk_ufsunipro_fsys
85 - sclk_mmc2_fsys
86 - sclk_mmc1_fsys
87 - sclk_mmc0_fsys
88 - sclk_usbhost30_fsys
89 - sclk_usbdrd30_fsys
90
91 Input clocks for g2d clock controller:
92 - oscclk
93 - aclk_g2d_266
94 - aclk_g2d_400
95
96 Input clocks for disp clock controller:
97 - oscclk
98 - sclk_dsim1_disp
99 - sclk_dsim0_disp
100 - sclk_dsd_disp
101 - sclk_decon_tv_eclk_disp
102 - sclk_decon_vclk_disp
103 - sclk_decon_eclk_disp
104 - sclk_decon_tv_vclk_disp
105 - aclk_disp_333
106
107 Input clocks for bus0 clock controller:
108 - aclk_bus0_400
109
110 Input clocks for bus1 clock controller:
111 - aclk_bus1_400
112
113 Input clocks for bus2 clock controller:
114 - oscclk
115 - aclk_bus2_400
116
117 Input clocks for g3d clock controller:
118 - oscclk
119 - aclk_g3d_400
120
121 Input clocks for gscl clock controller:
122 - oscclk
123 - aclk_gscl_111
124 - aclk_gscl_333
125
126 Input clocks for apollo clock controller:
127 - oscclk
128 - sclk_bus_pll_apollo
129
130 Input clocks for atlas clock controller:
131 - oscclk
132 - sclk_bus_pll_atlas
133
134 Input clocks for mscl clock controller:
135 - oscclk
136 - sclk_jpeg_mscl
137 - aclk_mscl_400
138
139 Input clocks for mfc clock controller:
140 - oscclk
141 - aclk_mfc_400
142
143 Input clocks for hevc clock controller:
144 - oscclk
145 - aclk_hevc_400
146
147 Input clocks for isp clock controller:
148 - oscclk
149 - aclk_isp_dis_400
150 - aclk_isp_400
151
152 Input clocks for cam0 clock controller:
153 - oscclk
154 - aclk_cam0_333
155 - aclk_cam0_400
156 - aclk_cam0_552
157
158 Input clocks for cam1 clock controller:
159 - oscclk
160 - sclk_isp_uart_cam1
161 - sclk_isp_spi1_cam1
162 - sclk_isp_spi0_cam1
163 - aclk_cam1_333
164 - aclk_cam1_400
165 - aclk_cam1_552
166
167Each clock is assigned an identifier and client nodes can use this identifier
168to specify the clock which they consume.
169
170All available clocks are defined as preprocessor macros in
171dt-bindings/clock/exynos5433.h header and can be used in device
172tree sources.
173
174Example 1: Examples of 'oscclk' source clock node are listed below.
175
176 xxti: xxti {
177 compatible = "fixed-clock";
178 clock-output-names = "oscclk";
179 #clock-cells = <0>;
180 };
181
182Example 2: Examples of clock controller nodes are listed below.
183
184 cmu_top: clock-controller@10030000 {
185 compatible = "samsung,exynos5433-cmu-top";
186 reg = <0x10030000 0x0c04>;
187 #clock-cells = <1>;
188
189 clock-names = "oscclk",
190 "sclk_mphy_pll",
191 "sclk_mfc_pll",
192 "sclk_bus_pll";
193 clocks = <&xxti>,
194 <&cmu_cpif CLK_SCLK_MPHY_PLL>,
195 <&cmu_mif CLK_SCLK_MFC_PLL>,
196 <&cmu_mif CLK_SCLK_BUS_PLL>;
197 };
198
199 cmu_cpif: clock-controller@10fc0000 {
200 compatible = "samsung,exynos5433-cmu-cpif";
201 reg = <0x10fc0000 0x0c04>;
202 #clock-cells = <1>;
203
204 clock-names = "oscclk";
205 clocks = <&xxti>;
206 };
207
208 cmu_mif: clock-controller@105b0000 {
209 compatible = "samsung,exynos5433-cmu-mif";
210 reg = <0x105b0000 0x100c>;
211 #clock-cells = <1>;
212
213 clock-names = "oscclk",
214 "sclk_mphy_pll";
215 clocks = <&xxti>,
216 <&cmu_cpif CLK_SCLK_MPHY_PLL>;
217 };
218
219 cmu_peric: clock-controller@14c80000 {
220 compatible = "samsung,exynos5433-cmu-peric";
221 reg = <0x14c80000 0x0b08>;
222 #clock-cells = <1>;
223 };
224
225 cmu_peris: clock-controller@10040000 {
226 compatible = "samsung,exynos5433-cmu-peris";
227 reg = <0x10040000 0x0b20>;
228 #clock-cells = <1>;
229 };
230
231 cmu_fsys: clock-controller@156e0000 {
232 compatible = "samsung,exynos5433-cmu-fsys";
233 reg = <0x156e0000 0x0b04>;
234 #clock-cells = <1>;
235
236 clock-names = "oscclk",
237 "sclk_ufs_mphy",
238 "div_aclk_fsys_200",
239 "sclk_pcie_100_fsys",
240 "sclk_ufsunipro_fsys",
241 "sclk_mmc2_fsys",
242 "sclk_mmc1_fsys",
243 "sclk_mmc0_fsys",
244 "sclk_usbhost30_fsys",
245 "sclk_usbdrd30_fsys";
246 clocks = <&xxti>,
247 <&cmu_cpif CLK_SCLK_UFS_MPHY>,
248 <&cmu_top CLK_DIV_ACLK_FSYS_200>,
249 <&cmu_top CLK_SCLK_PCIE_100_FSYS>,
250 <&cmu_top CLK_SCLK_UFSUNIPRO_FSYS>,
251 <&cmu_top CLK_SCLK_MMC2_FSYS>,
252 <&cmu_top CLK_SCLK_MMC1_FSYS>,
253 <&cmu_top CLK_SCLK_MMC0_FSYS>,
254 <&cmu_top CLK_SCLK_USBHOST30_FSYS>,
255 <&cmu_top CLK_SCLK_USBDRD30_FSYS>;
256 };
257
258 cmu_g2d: clock-controller@12460000 {
259 compatible = "samsung,exynos5433-cmu-g2d";
260 reg = <0x12460000 0x0b08>;
261 #clock-cells = <1>;
262
263 clock-names = "oscclk",
264 "aclk_g2d_266",
265 "aclk_g2d_400";
266 clocks = <&xxti>,
267 <&cmu_top CLK_ACLK_G2D_266>,
268 <&cmu_top CLK_ACLK_G2D_400>;
269 };
270
271 cmu_disp: clock-controller@13b90000 {
272 compatible = "samsung,exynos5433-cmu-disp";
273 reg = <0x13b90000 0x0c04>;
274 #clock-cells = <1>;
275
276 clock-names = "oscclk",
277 "sclk_dsim1_disp",
278 "sclk_dsim0_disp",
279 "sclk_dsd_disp",
280 "sclk_decon_tv_eclk_disp",
281 "sclk_decon_vclk_disp",
282 "sclk_decon_eclk_disp",
283 "sclk_decon_tv_vclk_disp",
284 "aclk_disp_333";
285 clocks = <&xxti>,
286 <&cmu_mif CLK_SCLK_DSIM1_DISP>,
287 <&cmu_mif CLK_SCLK_DSIM0_DISP>,
288 <&cmu_mif CLK_SCLK_DSD_DISP>,
289 <&cmu_mif CLK_SCLK_DECON_TV_ECLK_DISP>,
290 <&cmu_mif CLK_SCLK_DECON_VCLK_DISP>,
291 <&cmu_mif CLK_SCLK_DECON_ECLK_DISP>,
292 <&cmu_mif CLK_SCLK_DECON_TV_VCLK_DISP>,
293 <&cmu_mif CLK_ACLK_DISP_333>;
294 };
295
296 cmu_aud: clock-controller@114c0000 {
297 compatible = "samsung,exynos5433-cmu-aud";
298 reg = <0x114c0000 0x0b04>;
299 #clock-cells = <1>;
300 };
301
302 cmu_bus0: clock-controller@13600000 {
303 compatible = "samsung,exynos5433-cmu-bus0";
304 reg = <0x13600000 0x0b04>;
305 #clock-cells = <1>;
306
307 clock-names = "aclk_bus0_400";
308 clocks = <&cmu_top CLK_ACLK_BUS0_400>;
309 };
310
311 cmu_bus1: clock-controller@14800000 {
312 compatible = "samsung,exynos5433-cmu-bus1";
313 reg = <0x14800000 0x0b04>;
314 #clock-cells = <1>;
315
316 clock-names = "aclk_bus1_400";
317 clocks = <&cmu_top CLK_ACLK_BUS1_400>;
318 };
319
320 cmu_bus2: clock-controller@13400000 {
321 compatible = "samsung,exynos5433-cmu-bus2";
322 reg = <0x13400000 0x0b04>;
323 #clock-cells = <1>;
324
325 clock-names = "oscclk", "aclk_bus2_400";
326 clocks = <&xxti>, <&cmu_mif CLK_ACLK_BUS2_400>;
327 };
328
329 cmu_g3d: clock-controller@14aa0000 {
330 compatible = "samsung,exynos5433-cmu-g3d";
331 reg = <0x14aa0000 0x1000>;
332 #clock-cells = <1>;
333
334 clock-names = "oscclk", "aclk_g3d_400";
335 clocks = <&xxti>, <&cmu_top CLK_ACLK_G3D_400>;
336 };
337
338 cmu_gscl: clock-controller@13cf0000 {
339 compatible = "samsung,exynos5433-cmu-gscl";
340 reg = <0x13cf0000 0x0b10>;
341 #clock-cells = <1>;
342
343 clock-names = "oscclk",
344 "aclk_gscl_111",
345 "aclk_gscl_333";
346 clocks = <&xxti>,
347 <&cmu_top CLK_ACLK_GSCL_111>,
348 <&cmu_top CLK_ACLK_GSCL_333>;
349 };
350
351 cmu_apollo: clock-controller@11900000 {
352 compatible = "samsung,exynos5433-cmu-apollo";
353 reg = <0x11900000 0x1088>;
354 #clock-cells = <1>;
355
356 clock-names = "oscclk", "sclk_bus_pll_apollo";
357 clocks = <&xxti>, <&cmu_mif CLK_SCLK_BUS_PLL_APOLLO>;
358 };
359
360 cmu_atlas: clock-controller@11800000 {
361 compatible = "samsung,exynos5433-cmu-atlas";
362 reg = <0x11800000 0x1088>;
363 #clock-cells = <1>;
364
365 clock-names = "oscclk", "sclk_bus_pll_atlas";
366 clocks = <&xxti>, <&cmu_mif CLK_SCLK_BUS_PLL_ATLAS>;
367 };
368
369 cmu_mscl: clock-controller@105d0000 {
370 compatible = "samsung,exynos5433-cmu-mscl";
371 reg = <0x105d0000 0x0b10>;
372 #clock-cells = <1>;
373
374 clock-names = "oscclk",
375 "sclk_jpeg_mscl",
376 "aclk_mscl_400";
377 clocks = <&xxti>,
378 <&cmu_top CLK_SCLK_JPEG_MSCL>,
379 <&cmu_top CLK_ACLK_MSCL_400>;
380 };
381
382 cmu_mfc: clock-controller@15280000 {
383 compatible = "samsung,exynos5433-cmu-mfc";
384 reg = <0x15280000 0x0b08>;
385 #clock-cells = <1>;
386
387 clock-names = "oscclk", "aclk_mfc_400";
388 clocks = <&xxti>, <&cmu_top CLK_ACLK_MFC_400>;
389 };
390
391 cmu_hevc: clock-controller@14f80000 {
392 compatible = "samsung,exynos5433-cmu-hevc";
393 reg = <0x14f80000 0x0b08>;
394 #clock-cells = <1>;
395
396 clock-names = "oscclk", "aclk_hevc_400";
397 clocks = <&xxti>, <&cmu_top CLK_ACLK_HEVC_400>;
398 };
399
400 cmu_isp: clock-controller@146d0000 {
401 compatible = "samsung,exynos5433-cmu-isp";
402 reg = <0x146d0000 0x0b0c>;
403 #clock-cells = <1>;
404
405 clock-names = "oscclk",
406 "aclk_isp_dis_400",
407 "aclk_isp_400";
408 clocks = <&xxti>,
409 <&cmu_top CLK_ACLK_ISP_DIS_400>,
410 <&cmu_top CLK_ACLK_ISP_400>;
411 };
412
413 cmu_cam0: clock-controller@120d0000 {
414 compatible = "samsung,exynos5433-cmu-cam0";
415 reg = <0x120d0000 0x0b0c>;
416 #clock-cells = <1>;
417
418 clock-names = "oscclk",
419 "aclk_cam0_333",
420 "aclk_cam0_400",
421 "aclk_cam0_552";
422 clocks = <&xxti>,
423 <&cmu_top CLK_ACLK_CAM0_333>,
424 <&cmu_top CLK_ACLK_CAM0_400>,
425 <&cmu_top CLK_ACLK_CAM0_552>;
426 };
427
428 cmu_cam1: clock-controller@145d0000 {
429 compatible = "samsung,exynos5433-cmu-cam1";
430 reg = <0x145d0000 0x0b08>;
431 #clock-cells = <1>;
432
433 clock-names = "oscclk",
434 "sclk_isp_uart_cam1",
435 "sclk_isp_spi1_cam1",
436 "sclk_isp_spi0_cam1",
437 "aclk_cam1_333",
438 "aclk_cam1_400",
439 "aclk_cam1_552";
440 clocks = <&xxti>,
441 <&cmu_top CLK_SCLK_ISP_UART_CAM1>,
442 <&cmu_top CLK_SCLK_ISP_SPI1_CAM1>,
443 <&cmu_top CLK_SCLK_ISP_SPI0_CAM1>,
444 <&cmu_top CLK_ACLK_CAM1_333>,
445 <&cmu_top CLK_ACLK_CAM1_400>,
446 <&cmu_top CLK_ACLK_CAM1_552>;
447 };
448
449Example 3: UART controller node that consumes the clock generated by the clock
450 controller.
451
452 serial_0: serial@14C10000 {
453 compatible = "samsung,exynos5433-uart";
454 reg = <0x14C10000 0x100>;
455 interrupts = <0 421 0>;
456 clocks = <&cmu_peric CLK_PCLK_UART0>,
457 <&cmu_peric CLK_SCLK_UART0>;
458 clock-names = "uart", "clk_uart_baud0";
459 pinctrl-names = "default";
460 pinctrl-0 = <&uart0_bus>;
461 status = "disabled";
462 };
diff --git a/Documentation/devicetree/bindings/clock/fujitsu,mb86s70-crg11.txt b/Documentation/devicetree/bindings/clock/fujitsu,mb86s70-crg11.txt
new file mode 100644
index 000000000000..332396265689
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/fujitsu,mb86s70-crg11.txt
@@ -0,0 +1,26 @@
1Fujitsu CRG11 clock driver bindings
2-----------------------------------
3
4Required properties :
5- compatible : Shall contain "fujitsu,mb86s70-crg11"
6- #clock-cells : Shall be 3 {cntrlr domain port}
7
8The consumer specifies the desired clock pointing to its phandle.
9
10Example:
11
12 clock: crg11 {
13 compatible = "fujitsu,mb86s70-crg11";
14 #clock-cells = <3>;
15 };
16
17 mhu: mhu0@2b1f0000 {
18 #mbox-cells = <1>;
19 compatible = "arm,mhu";
20 reg = <0 0x2B1F0000 0x1000>;
21 interrupts = <0 36 4>, /* LP Non-Sec */
22 <0 35 4>, /* HP Non-Sec */
23 <0 37 4>; /* Secure */
24 clocks = <&clock 0 2 1>; /* Cntrlr:0 Domain:2 Port:1 */
25 clock-names = "clk";
26 };
diff --git a/Documentation/devicetree/bindings/clock/mvebu-core-clock.txt b/Documentation/devicetree/bindings/clock/mvebu-core-clock.txt
index dc5ea5b22da9..670c2af3e931 100644
--- a/Documentation/devicetree/bindings/clock/mvebu-core-clock.txt
+++ b/Documentation/devicetree/bindings/clock/mvebu-core-clock.txt
@@ -23,6 +23,14 @@ The following is a list of provided IDs and clock names on Armada 380/385:
23 2 = l2clk (L2 Cache clock) 23 2 = l2clk (L2 Cache clock)
24 3 = ddrclk (DDR clock) 24 3 = ddrclk (DDR clock)
25 25
26The following is a list of provided IDs and clock names on Armada 39x:
27 0 = tclk (Internal Bus clock)
28 1 = cpuclk (CPU clock)
29 2 = nbclk (Coherent Fabric clock)
30 3 = hclk (SDRAM Controller Internal Clock)
31 4 = dclk (SDRAM Interface Clock)
32 5 = refclk (Reference Clock)
33
26The following is a list of provided IDs and clock names on Kirkwood and Dove: 34The following is a list of provided IDs and clock names on Kirkwood and Dove:
27 0 = tclk (Internal Bus clock) 35 0 = tclk (Internal Bus clock)
28 1 = cpuclk (CPU0 clock) 36 1 = cpuclk (CPU0 clock)
@@ -39,6 +47,7 @@ Required properties:
39 "marvell,armada-370-core-clock" - For Armada 370 SoC core clocks 47 "marvell,armada-370-core-clock" - For Armada 370 SoC core clocks
40 "marvell,armada-375-core-clock" - For Armada 375 SoC core clocks 48 "marvell,armada-375-core-clock" - For Armada 375 SoC core clocks
41 "marvell,armada-380-core-clock" - For Armada 380/385 SoC core clocks 49 "marvell,armada-380-core-clock" - For Armada 380/385 SoC core clocks
50 "marvell,armada-390-core-clock" - For Armada 39x SoC core clocks
42 "marvell,armada-xp-core-clock" - For Armada XP SoC core clocks 51 "marvell,armada-xp-core-clock" - For Armada XP SoC core clocks
43 "marvell,dove-core-clock" - for Dove SoC core clocks 52 "marvell,dove-core-clock" - for Dove SoC core clocks
44 "marvell,kirkwood-core-clock" - for Kirkwood SoC (except mv88f6180) 53 "marvell,kirkwood-core-clock" - for Kirkwood SoC (except mv88f6180)
diff --git a/Documentation/devicetree/bindings/clock/mvebu-gated-clock.txt b/Documentation/devicetree/bindings/clock/mvebu-gated-clock.txt
index 76477be742b2..31c7c0c1ce8f 100644
--- a/Documentation/devicetree/bindings/clock/mvebu-gated-clock.txt
+++ b/Documentation/devicetree/bindings/clock/mvebu-gated-clock.txt
@@ -1,6 +1,6 @@
1* Gated Clock bindings for Marvell EBU SoCs 1* Gated Clock bindings for Marvell EBU SoCs
2 2
3Marvell Armada 370/375/380/385/XP, Dove and Kirkwood allow some 3Marvell Armada 370/375/380/385/39x/XP, Dove and Kirkwood allow some
4peripheral clocks to be gated to save some power. The clock consumer 4peripheral clocks to be gated to save some power. The clock consumer
5should specify the desired clock by having the clock ID in its 5should specify the desired clock by having the clock ID in its
6"clocks" phandle cell. The clock ID is directly mapped to the 6"clocks" phandle cell. The clock ID is directly mapped to the
@@ -77,6 +77,18 @@ ID Clock Peripheral
7728 xor1 XOR 1 7728 xor1 XOR 1
7830 sata1 SATA 1 7830 sata1 SATA 1
79 79
80The following is a list of provided IDs for Armada 39x:
81ID Clock Peripheral
82-----------------------------------
835 pex1 PCIe 1
846 pex2 PCIe 2
857 pex3 PCIe 3
868 pex0 PCIe 0
879 usb3h0 USB3 Host 0
8817 sdio SDIO
8922 xor0 XOR 0
9028 xor1 XOR 1
91
80The following is a list of provided IDs for Armada XP: 92The following is a list of provided IDs for Armada XP:
81ID Clock Peripheral 93ID Clock Peripheral
82----------------------------------- 94-----------------------------------
@@ -152,6 +164,7 @@ Required properties:
152 "marvell,armada-370-gating-clock" - for Armada 370 SoC clock gating 164 "marvell,armada-370-gating-clock" - for Armada 370 SoC clock gating
153 "marvell,armada-375-gating-clock" - for Armada 375 SoC clock gating 165 "marvell,armada-375-gating-clock" - for Armada 375 SoC clock gating
154 "marvell,armada-380-gating-clock" - for Armada 380/385 SoC clock gating 166 "marvell,armada-380-gating-clock" - for Armada 380/385 SoC clock gating
167 "marvell,armada-390-gating-clock" - for Armada 39x SoC clock gating
155 "marvell,armada-xp-gating-clock" - for Armada XP SoC clock gating 168 "marvell,armada-xp-gating-clock" - for Armada XP SoC clock gating
156 "marvell,dove-gating-clock" - for Dove SoC clock gating 169 "marvell,dove-gating-clock" - for Dove SoC clock gating
157 "marvell,kirkwood-gating-clock" - for Kirkwood SoC clock gating 170 "marvell,kirkwood-gating-clock" - for Kirkwood SoC clock gating
diff --git a/Documentation/devicetree/bindings/clock/pistachio-clock.txt b/Documentation/devicetree/bindings/clock/pistachio-clock.txt
new file mode 100644
index 000000000000..868db499eed2
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/pistachio-clock.txt
@@ -0,0 +1,123 @@
1Imagination Technologies Pistachio SoC clock controllers
2========================================================
3
4Pistachio has four clock controllers (core clock, peripheral clock, peripheral
5general control, and top general control) which are instantiated individually
6from the device-tree.
7
8External clocks:
9----------------
10
11There are three external inputs to the clock controllers which should be
12defined with the following clock-output-names:
13- "xtal": External 52Mhz oscillator (required)
14- "audio_clk_in": Alternate audio reference clock (optional)
15- "enet_clk_in": Alternate ethernet PHY clock (optional)
16
17Core clock controller:
18----------------------
19
20The core clock controller generates clocks for the CPU, RPU (WiFi + BT
21co-processor), audio, and several peripherals.
22
23Required properties:
24- compatible: Must be "img,pistachio-clk".
25- reg: Must contain the base address and length of the core clock controller.
26- #clock-cells: Must be 1. The single cell is the clock identifier.
27 See dt-bindings/clock/pistachio-clk.h for the list of valid identifiers.
28- clocks: Must contain an entry for each clock in clock-names.
29- clock-names: Must include "xtal" (see "External clocks") and
30 "audio_clk_in_gate", "enet_clk_in_gate" which are generated by the
31 top-level general control.
32
33Example:
34 clk_core: clock-controller@18144000 {
35 compatible = "img,pistachio-clk";
36 reg = <0x18144000 0x800>;
37 clocks = <&xtal>, <&cr_top EXT_CLK_AUDIO_IN>,
38 <&cr_top EXT_CLK_ENET_IN>;
39 clock-names = "xtal", "audio_clk_in_gate", "enet_clk_in_gate";
40
41 #clock-cells = <1>;
42 };
43
44Peripheral clock controller:
45----------------------------
46
47The peripheral clock controller generates clocks for the DDR, ROM, and other
48peripherals. The peripheral system clock ("periph_sys") generated by the core
49clock controller is the input clock to the peripheral clock controller.
50
51Required properties:
52- compatible: Must be "img,pistachio-periph-clk".
53- reg: Must contain the base address and length of the peripheral clock
54 controller.
55- #clock-cells: Must be 1. The single cell is the clock identifier.
56 See dt-bindings/clock/pistachio-clk.h for the list of valid identifiers.
57- clocks: Must contain an entry for each clock in clock-names.
58- clock-names: Must include "periph_sys", the peripheral system clock generated
59 by the core clock controller.
60
61Example:
62 clk_periph: clock-controller@18144800 {
63 compatible = "img,pistachio-clk-periph";
64 reg = <0x18144800 0x800>;
65 clocks = <&clk_core CLK_PERIPH_SYS>;
66 clock-names = "periph_sys";
67
68 #clock-cells = <1>;
69 };
70
71Peripheral general control:
72---------------------------
73
74The peripheral general control block generates system interface clocks and
75resets for various peripherals. It also contains miscellaneous peripheral
76control registers. The system clock ("sys") generated by the peripheral clock
77controller is the input clock to the system clock controller.
78
79Required properties:
80- compatible: Must include "img,pistachio-periph-cr" and "syscon".
81- reg: Must contain the base address and length of the peripheral general
82 control registers.
83- #clock-cells: Must be 1. The single cell is the clock identifier.
84 See dt-bindings/clock/pistachio-clk.h for the list of valid identifiers.
85- clocks: Must contain an entry for each clock in clock-names.
86- clock-names: Must include "sys", the system clock generated by the peripheral
87 clock controller.
88
89Example:
90 cr_periph: syscon@18144800 {
91 compatible = "img,pistachio-cr-periph", "syscon";
92 reg = <0x18148000 0x1000>;
93 clocks = <&clock_periph PERIPH_CLK_PERIPH_SYS>;
94 clock-names = "sys";
95
96 #clock-cells = <1>;
97 };
98
99Top-level general control:
100--------------------------
101
102The top-level general control block contains miscellaneous control registers and
103gates for the external clocks "audio_clk_in" and "enet_clk_in".
104
105Required properties:
106- compatible: Must include "img,pistachio-cr-top" and "syscon".
107- reg: Must contain the base address and length of the top-level
108 control registers.
109- clocks: Must contain an entry for each clock in clock-names.
110- clock-names: Two optional clocks, "audio_clk_in" and "enet_clk_in" (see
111 "External clocks").
112- #clock-cells: Must be 1. The single cell is the clock identifier.
113 See dt-bindings/clock/pistachio-clk.h for the list of valid identifiers.
114
115Example:
116 cr_top: syscon@18144800 {
117 compatible = "img,pistachio-cr-top", "syscon";
118 reg = <0x18149000 0x200>;
119 clocks = <&audio_refclk>, <&ext_enet_in>;
120 clock-names = "audio_clk_in", "enet_clk_in";
121
122 #clock-cells = <1>;
123 };
diff --git a/Documentation/devicetree/bindings/clock/pwm-clock.txt b/Documentation/devicetree/bindings/clock/pwm-clock.txt
new file mode 100644
index 000000000000..83db876b3b90
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/pwm-clock.txt
@@ -0,0 +1,26 @@
1Binding for an external clock signal driven by a PWM pin.
2
3This binding uses the common clock binding[1] and the common PWM binding[2].
4
5[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
6[2] Documentation/devicetree/bindings/pwm/pwm.txt
7
8Required properties:
9- compatible : shall be "pwm-clock".
10- #clock-cells : from common clock binding; shall be set to 0.
11- pwms : from common PWM binding; this determines the clock frequency
12 via the period given in the PWM specifier.
13
14Optional properties:
15- clock-output-names : From common clock binding.
16- clock-frequency : Exact output frequency, in case the PWM period
17 is not exact but was rounded to nanoseconds.
18
19Example:
20 clock {
21 compatible = "pwm-clock";
22 #clock-cells = <0>;
23 clock-frequency = <25000000>;
24 clock-output-names = "mipi_mclk";
25 pwms = <&pwm2 0 40>; /* 1 / 40 ns = 25 MHz */
26 };
diff --git a/Documentation/devicetree/bindings/clock/qcom,gcc.txt b/Documentation/devicetree/bindings/clock/qcom,gcc.txt
index aba3d254e037..54c23f34f194 100644
--- a/Documentation/devicetree/bindings/clock/qcom,gcc.txt
+++ b/Documentation/devicetree/bindings/clock/qcom,gcc.txt
@@ -8,6 +8,7 @@ Required properties :
8 "qcom,gcc-apq8084" 8 "qcom,gcc-apq8084"
9 "qcom,gcc-ipq8064" 9 "qcom,gcc-ipq8064"
10 "qcom,gcc-msm8660" 10 "qcom,gcc-msm8660"
11 "qcom,gcc-msm8916"
11 "qcom,gcc-msm8960" 12 "qcom,gcc-msm8960"
12 "qcom,gcc-msm8974" 13 "qcom,gcc-msm8974"
13 "qcom,gcc-msm8974pro" 14 "qcom,gcc-msm8974pro"
diff --git a/Documentation/devicetree/bindings/clock/renesas,r8a7778-cpg-clocks.txt b/Documentation/devicetree/bindings/clock/renesas,r8a7778-cpg-clocks.txt
new file mode 100644
index 000000000000..2f3747fdcf1c
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/renesas,r8a7778-cpg-clocks.txt
@@ -0,0 +1,25 @@
1* Renesas R8A7778 Clock Pulse Generator (CPG)
2
3The CPG generates core clocks for the R8A7778. It includes two PLLs and
4several fixed ratio dividers
5
6Required Properties:
7
8 - compatible: Must be "renesas,r8a7778-cpg-clocks"
9 - reg: Base address and length of the memory resource used by the CPG
10 - #clock-cells: Must be 1
11 - clock-output-names: The names of the clocks. Supported clocks are
12 "plla", "pllb", "b", "out", "p", "s", and "s1".
13
14
15Example
16-------
17
18 cpg_clocks: cpg_clocks@ffc80000 {
19 compatible = "renesas,r8a7778-cpg-clocks";
20 reg = <0xffc80000 0x80>;
21 #clock-cells = <1>;
22 clocks = <&extal_clk>;
23 clock-output-names = "plla", "pllb", "b",
24 "out", "p", "s", "s1";
25 };
diff --git a/Documentation/devicetree/bindings/clock/sunxi.txt b/Documentation/devicetree/bindings/clock/sunxi.txt
index 60b44285250d..4fa11af3d378 100644
--- a/Documentation/devicetree/bindings/clock/sunxi.txt
+++ b/Documentation/devicetree/bindings/clock/sunxi.txt
@@ -20,6 +20,7 @@ Required properties:
20 "allwinner,sun8i-a23-axi-clk" - for the AXI clock on A23 20 "allwinner,sun8i-a23-axi-clk" - for the AXI clock on A23
21 "allwinner,sun4i-a10-axi-gates-clk" - for the AXI gates 21 "allwinner,sun4i-a10-axi-gates-clk" - for the AXI gates
22 "allwinner,sun4i-a10-ahb-clk" - for the AHB clock 22 "allwinner,sun4i-a10-ahb-clk" - for the AHB clock
23 "allwinner,sun5i-a13-ahb-clk" - for the AHB clock on A13
23 "allwinner,sun9i-a80-ahb-clk" - for the AHB bus clocks on A80 24 "allwinner,sun9i-a80-ahb-clk" - for the AHB bus clocks on A80
24 "allwinner,sun4i-a10-ahb-gates-clk" - for the AHB gates on A10 25 "allwinner,sun4i-a10-ahb-gates-clk" - for the AHB gates on A10
25 "allwinner,sun5i-a13-ahb-gates-clk" - for the AHB gates on A13 26 "allwinner,sun5i-a13-ahb-gates-clk" - for the AHB gates on A13
@@ -66,6 +67,8 @@ Required properties:
66 "allwinner,sun4i-a10-usb-clk" - for usb gates + resets on A10 / A20 67 "allwinner,sun4i-a10-usb-clk" - for usb gates + resets on A10 / A20
67 "allwinner,sun5i-a13-usb-clk" - for usb gates + resets on A13 68 "allwinner,sun5i-a13-usb-clk" - for usb gates + resets on A13
68 "allwinner,sun6i-a31-usb-clk" - for usb gates + resets on A31 69 "allwinner,sun6i-a31-usb-clk" - for usb gates + resets on A31
70 "allwinner,sun9i-a80-usb-mod-clk" - for usb gates + resets on A80
71 "allwinner,sun9i-a80-usb-phy-clk" - for usb phy gates + resets on A80
69 72
70Required properties for all clocks: 73Required properties for all clocks:
71- reg : shall be the control register address for the clock. 74- reg : shall be the control register address for the clock.
diff --git a/Documentation/devicetree/bindings/common-properties.txt b/Documentation/devicetree/bindings/common-properties.txt
new file mode 100644
index 000000000000..3193979b1d05
--- /dev/null
+++ b/Documentation/devicetree/bindings/common-properties.txt
@@ -0,0 +1,60 @@
1Common properties
2
3The ePAPR specification does not define any properties related to hardware
4byteswapping, but endianness issues show up frequently in porting Linux to
5different machine types. This document attempts to provide a consistent
6way of handling byteswapping across drivers.
7
8Optional properties:
9 - big-endian: Boolean; force big endian register accesses
10 unconditionally (e.g. ioread32be/iowrite32be). Use this if you
11 know the peripheral always needs to be accessed in BE mode.
12 - little-endian: Boolean; force little endian register accesses
13 unconditionally (e.g. readl/writel). Use this if you know the
14 peripheral always needs to be accessed in LE mode.
15 - native-endian: Boolean; always use register accesses matched to the
16 endianness of the kernel binary (e.g. LE vmlinux -> readl/writel,
17 BE vmlinux -> ioread32be/iowrite32be). In this case no byteswaps
18 will ever be performed. Use this if the hardware "self-adjusts"
19 register endianness based on the CPU's configured endianness.
20
21If a binding supports these properties, then the binding should also
22specify the default behavior if none of these properties are present.
23In such cases, little-endian is the preferred default, but it is not
24a requirement. The of_device_is_big_endian() and of_fdt_is_big_endian()
25helper functions do assume that little-endian is the default, because
26most existing (PCI-based) drivers implicitly default to LE by using
27readl/writel for MMIO accesses.
28
29Examples:
30Scenario 1 : CPU in LE mode & device in LE mode.
31dev: dev@40031000 {
32 compatible = "name";
33 reg = <0x40031000 0x1000>;
34 ...
35 native-endian;
36};
37
38Scenario 2 : CPU in LE mode & device in BE mode.
39dev: dev@40031000 {
40 compatible = "name";
41 reg = <0x40031000 0x1000>;
42 ...
43 big-endian;
44};
45
46Scenario 3 : CPU in BE mode & device in BE mode.
47dev: dev@40031000 {
48 compatible = "name";
49 reg = <0x40031000 0x1000>;
50 ...
51 native-endian;
52};
53
54Scenario 4 : CPU in BE mode & device in LE mode.
55dev: dev@40031000 {
56 compatible = "name";
57 reg = <0x40031000 0x1000>;
58 ...
59 little-endian;
60};
diff --git a/Documentation/devicetree/bindings/cris/axis.txt b/Documentation/devicetree/bindings/cris/axis.txt
new file mode 100644
index 000000000000..d209ca2a47c0
--- /dev/null
+++ b/Documentation/devicetree/bindings/cris/axis.txt
@@ -0,0 +1,9 @@
1Axis Communications AB
2ARTPEC series SoC Device Tree Bindings
3
4
5CRISv32 based SoCs are ETRAX FS and ARTPEC-3:
6
7 - compatible = "axis,crisv32";
8
9
diff --git a/Documentation/devicetree/bindings/cris/boards.txt b/Documentation/devicetree/bindings/cris/boards.txt
new file mode 100644
index 000000000000..533dd273ccf7
--- /dev/null
+++ b/Documentation/devicetree/bindings/cris/boards.txt
@@ -0,0 +1,8 @@
1Boards based on the CRIS SoCs:
2
3Required root node properties:
4 - compatible = should be one or more of the following:
5 - "axis,dev88" - for Axis devboard 88 with ETRAX FS
6
7Optional:
8
diff --git a/Documentation/devicetree/bindings/cris/interrupts.txt b/Documentation/devicetree/bindings/cris/interrupts.txt
new file mode 100644
index 000000000000..e8b123b0a5e6
--- /dev/null
+++ b/Documentation/devicetree/bindings/cris/interrupts.txt
@@ -0,0 +1,23 @@
1* CRISv32 Interrupt Controller
2
3Interrupt controller for the CRISv32 SoCs.
4
5Main node required properties:
6
7- compatible : should be:
8 "axis,crisv32-intc"
9- interrupt-controller : Identifies the node as an interrupt controller
10- #interrupt-cells : Specifies the number of cells needed to encode an
11 interrupt source. The type shall be a <u32> and the value shall be 1.
12- reg: physical base address and size of the intc registers map.
13
14Example:
15
16 intc: interrupt-controller {
17 compatible = "axis,crisv32-intc";
18 reg = <0xb001c000 0x1000>;
19 interrupt-controller;
20 #interrupt-cells = <1>;
21 };
22
23
diff --git a/Documentation/devicetree/bindings/dma/apm-xgene-dma.txt b/Documentation/devicetree/bindings/dma/apm-xgene-dma.txt
new file mode 100644
index 000000000000..d3058768b23d
--- /dev/null
+++ b/Documentation/devicetree/bindings/dma/apm-xgene-dma.txt
@@ -0,0 +1,47 @@
1Applied Micro X-Gene SoC DMA nodes
2
3DMA nodes are defined to describe on-chip DMA interfaces in
4APM X-Gene SoC.
5
6Required properties for DMA interfaces:
7- compatible: Should be "apm,xgene-dma".
8- device_type: set to "dma".
9- reg: Address and length of the register set for the device.
10 It contains the information of registers in the following order:
11 1st - DMA control and status register address space.
12 2nd - Descriptor ring control and status register address space.
13 3rd - Descriptor ring command register address space.
14 4th - Soc efuse register address space.
15- interrupts: DMA has 5 interrupts sources. 1st interrupt is
16 DMA error reporting interrupt. 2nd, 3rd, 4th and 5th interrupts
17 are completion interrupts for each DMA channels.
18- clocks: Reference to the clock entry.
19
20Optional properties:
21- dma-coherent : Present if dma operations are coherent
22
23Example:
24 dmaclk: dmaclk@1f27c000 {
25 compatible = "apm,xgene-device-clock";
26 #clock-cells = <1>;
27 clocks = <&socplldiv2 0>;
28 reg = <0x0 0x1f27c000 0x0 0x1000>;
29 reg-names = "csr-reg";
30 clock-output-names = "dmaclk";
31 };
32
33 dma: dma@1f270000 {
34 compatible = "apm,xgene-storm-dma";
35 device_type = "dma";
36 reg = <0x0 0x1f270000 0x0 0x10000>,
37 <0x0 0x1f200000 0x0 0x10000>,
38 <0x0 0x1b008000 0x0 0x2000>,
39 <0x0 0x1054a000 0x0 0x100>;
40 interrupts = <0x0 0x82 0x4>,
41 <0x0 0xb8 0x4>,
42 <0x0 0xb9 0x4>,
43 <0x0 0xba 0x4>,
44 <0x0 0xbb 0x4>;
45 dma-coherent;
46 clocks = <&dmaclk 0>;
47 };
diff --git a/Documentation/devicetree/bindings/dma/bcm2835-dma.txt b/Documentation/devicetree/bindings/dma/brcm,bcm2835-dma.txt
index 1396078d15ac..1396078d15ac 100644
--- a/Documentation/devicetree/bindings/dma/bcm2835-dma.txt
+++ b/Documentation/devicetree/bindings/dma/brcm,bcm2835-dma.txt
diff --git a/Documentation/devicetree/bindings/dma/jz4780-dma.txt b/Documentation/devicetree/bindings/dma/jz4780-dma.txt
new file mode 100644
index 000000000000..f25feee62b15
--- /dev/null
+++ b/Documentation/devicetree/bindings/dma/jz4780-dma.txt
@@ -0,0 +1,56 @@
1* Ingenic JZ4780 DMA Controller
2
3Required properties:
4
5- compatible: Should be "ingenic,jz4780-dma"
6- reg: Should contain the DMA controller registers location and length.
7- interrupts: Should contain the interrupt specifier of the DMA controller.
8- interrupt-parent: Should be the phandle of the interrupt controller that
9- clocks: Should contain a clock specifier for the JZ4780 PDMA clock.
10- #dma-cells: Must be <2>. Number of integer cells in the dmas property of
11 DMA clients (see below).
12
13Optional properties:
14
15- ingenic,reserved-channels: Bitmask of channels to reserve for devices that
16 need a specific channel. These channels will only be assigned when explicitly
17 requested by a client. The primary use for this is channels 0 and 1, which
18 can be configured to have special behaviour for NAND/BCH when using
19 programmable firmware.
20
21Example:
22
23dma: dma@13420000 {
24 compatible = "ingenic,jz4780-dma";
25 reg = <0x13420000 0x10000>;
26
27 interrupt-parent = <&intc>;
28 interrupts = <10>;
29
30 clocks = <&cgu JZ4780_CLK_PDMA>;
31
32 #dma-cells = <2>;
33
34 ingenic,reserved-channels = <0x3>;
35};
36
37DMA clients must use the format described in dma.txt, giving a phandle to the
38DMA controller plus the following 2 integer cells:
39
401. Request type: The DMA request type for transfers to/from the device on
41 the allocated channel, as defined in the SoC documentation.
42
432. Channel: If set to 0xffffffff, any available channel will be allocated for
44 the client. Otherwise, the exact channel specified will be used. The channel
45 should be reserved on the DMA controller using the ingenic,reserved-channels
46 property.
47
48Example:
49
50uart0: serial@10030000 {
51 ...
52 dmas = <&dma 0x14 0xffffffff
53 &dma 0x15 0xffffffff>;
54 dma-names = "tx", "rx";
55 ...
56};
diff --git a/Documentation/devicetree/bindings/dma/qcom_bam_dma.txt b/Documentation/devicetree/bindings/dma/qcom_bam_dma.txt
index f8c3311b7153..1c9d48ea4914 100644
--- a/Documentation/devicetree/bindings/dma/qcom_bam_dma.txt
+++ b/Documentation/devicetree/bindings/dma/qcom_bam_dma.txt
@@ -4,6 +4,7 @@ Required properties:
4- compatible: must be one of the following: 4- compatible: must be one of the following:
5 * "qcom,bam-v1.4.0" for MSM8974, APQ8074 and APQ8084 5 * "qcom,bam-v1.4.0" for MSM8974, APQ8074 and APQ8084
6 * "qcom,bam-v1.3.0" for APQ8064, IPQ8064 and MSM8960 6 * "qcom,bam-v1.3.0" for APQ8064, IPQ8064 and MSM8960
7 * "qcom,bam-v1.7.0" for MSM8916
7- reg: Address range for DMA registers 8- reg: Address range for DMA registers
8- interrupts: Should contain the one interrupt shared by all channels 9- interrupts: Should contain the one interrupt shared by all channels
9- #dma-cells: must be <1>, the cell in the dmas property of the client device 10- #dma-cells: must be <1>, the cell in the dmas property of the client device
diff --git a/Documentation/devicetree/bindings/dma/rcar-audmapp.txt b/Documentation/devicetree/bindings/dma/rcar-audmapp.txt
deleted file mode 100644
index 61bca509d7b9..000000000000
--- a/Documentation/devicetree/bindings/dma/rcar-audmapp.txt
+++ /dev/null
@@ -1,29 +0,0 @@
1* R-Car Audio DMAC peri peri Device Tree bindings
2
3Required properties:
4- compatible: should be "renesas,rcar-audmapp"
5- #dma-cells: should be <1>, see "dmas" property below
6
7Example:
8 audmapp: audio-dma-pp@0xec740000 {
9 compatible = "renesas,rcar-audmapp";
10 #dma-cells = <1>;
11
12 reg = <0 0xec740000 0 0x200>;
13 };
14
15
16* DMA client
17
18Required properties:
19- dmas: a list of <[DMA multiplexer phandle] [SRS << 8 | DRS]> pairs.
20 where SRS/DRS are specified in the SoC manual.
21 It will be written into PDMACHCR as high 16-bit parts.
22- dma-names: a list of DMA channel names, one per "dmas" entry
23
24Example:
25
26 dmas = <&audmapp 0x2d00
27 &audmapp 0x3700>;
28 dma-names = "src0_ssiu0",
29 "dvc0_ssiu0";
diff --git a/Documentation/devicetree/bindings/dma/renesas,usb-dmac.txt b/Documentation/devicetree/bindings/dma/renesas,usb-dmac.txt
new file mode 100644
index 000000000000..040f365954cc
--- /dev/null
+++ b/Documentation/devicetree/bindings/dma/renesas,usb-dmac.txt
@@ -0,0 +1,37 @@
1* Renesas USB DMA Controller Device Tree bindings
2
3Required Properties:
4- compatible: must contain "renesas,usb-dmac"
5- reg: base address and length of the registers block for the DMAC
6- interrupts: interrupt specifiers for the DMAC, one for each entry in
7 interrupt-names.
8- interrupt-names: one entry per channel, named "ch%u", where %u is the
9 channel number ranging from zero to the number of channels minus one.
10- clocks: a list of phandle + clock-specifier pairs.
11- #dma-cells: must be <1>, the cell specifies the channel number of the DMAC
12 port connected to the DMA client.
13- dma-channels: number of DMA channels
14
15Example: R8A7790 (R-Car H2) USB-DMACs
16
17 usb_dmac0: dma-controller@e65a0000 {
18 compatible = "renesas,usb-dmac";
19 reg = <0 0xe65a0000 0 0x100>;
20 interrupts = <0 109 IRQ_TYPE_LEVEL_HIGH
21 0 109 IRQ_TYPE_LEVEL_HIGH>;
22 interrupt-names = "ch0", "ch1";
23 clocks = <&mstp3_clks R8A7790_CLK_USBDMAC0>;
24 #dma-cells = <1>;
25 dma-channels = <2>;
26 };
27
28 usb_dmac1: dma-controller@e65b0000 {
29 compatible = "renesas,usb-dmac";
30 reg = <0 0xe65b0000 0 0x100>;
31 interrupts = <0 110 IRQ_TYPE_LEVEL_HIGH
32 0 110 IRQ_TYPE_LEVEL_HIGH>;
33 interrupt-names = "ch0", "ch1";
34 clocks = <&mstp3_clks R8A7790_CLK_USBDMAC1>;
35 #dma-cells = <1>;
36 dma-channels = <2>;
37 };
diff --git a/Documentation/devicetree/bindings/drm/imx/ldb.txt b/Documentation/devicetree/bindings/drm/imx/ldb.txt
index 443bcb6134d5..9a21366436f6 100644
--- a/Documentation/devicetree/bindings/drm/imx/ldb.txt
+++ b/Documentation/devicetree/bindings/drm/imx/ldb.txt
@@ -44,23 +44,30 @@ Optional properties:
44LVDS Channel 44LVDS Channel
45============ 45============
46 46
47Each LVDS Channel has to contain a display-timings node that describes the 47Each LVDS Channel has to contain either an of graph link to a panel device node
48video timings for the connected LVDS display. For detailed information, also 48or a display-timings node that describes the video timings for the connected
49have a look at Documentation/devicetree/bindings/video/display-timing.txt. 49LVDS display as well as the fsl,data-mapping and fsl,data-width properties.
50 50
51Required properties: 51Required properties:
52 - reg : should be <0> or <1> 52 - reg : should be <0> or <1>
53 - port: Input and output port nodes with endpoint definitions as defined in
54 Documentation/devicetree/bindings/graph.txt.
55 On i.MX5, the internal two-input-multiplexer is used. Due to hardware
56 limitations, only one input port (port@[0,1]) can be used for each channel
57 (lvds-channel@[0,1], respectively).
58 On i.MX6, there should be four input ports (port@[0-3]) that correspond
59 to the four LVDS multiplexer inputs.
60 A single output port (port@2 on i.MX5, port@4 on i.MX6) must be connected
61 to a panel input port. Optionally, the output port can be left out if
62 display-timings are used instead.
63
64Optional properties (required if display-timings are used):
65 - display-timings : A node that describes the display timings as defined in
66 Documentation/devicetree/bindings/video/display-timing.txt.
53 - fsl,data-mapping : should be "spwg" or "jeida" 67 - fsl,data-mapping : should be "spwg" or "jeida"
54 This describes how the color bits are laid out in the 68 This describes how the color bits are laid out in the
55 serialized LVDS signal. 69 serialized LVDS signal.
56 - fsl,data-width : should be <18> or <24> 70 - fsl,data-width : should be <18> or <24>
57 - port: A port node with endpoint definitions as defined in
58 Documentation/devicetree/bindings/media/video-interfaces.txt.
59 On i.MX5, the internal two-input-multiplexer is used.
60 Due to hardware limitations, only one port (port@[0,1])
61 can be used for each channel (lvds-channel@[0,1], respectively)
62 On i.MX6, there should be four ports (port@[0-3]) that correspond
63 to the four LVDS multiplexer inputs.
64 71
65example: 72example:
66 73
@@ -73,23 +80,21 @@ ldb: ldb@53fa8008 {
73 #size-cells = <0>; 80 #size-cells = <0>;
74 compatible = "fsl,imx53-ldb"; 81 compatible = "fsl,imx53-ldb";
75 gpr = <&gpr>; 82 gpr = <&gpr>;
76 clocks = <&clks 122>, <&clks 120>, 83 clocks = <&clks IMX5_CLK_LDB_DI0_SEL>,
77 <&clks 115>, <&clks 116>, 84 <&clks IMX5_CLK_LDB_DI1_SEL>,
78 <&clks 123>, <&clks 85>; 85 <&clks IMX5_CLK_IPU_DI0_SEL>,
86 <&clks IMX5_CLK_IPU_DI1_SEL>,
87 <&clks IMX5_CLK_LDB_DI0_GATE>,
88 <&clks IMX5_CLK_LDB_DI1_GATE>;
79 clock-names = "di0_pll", "di1_pll", 89 clock-names = "di0_pll", "di1_pll",
80 "di0_sel", "di1_sel", 90 "di0_sel", "di1_sel",
81 "di0", "di1"; 91 "di0", "di1";
82 92
93 /* Using an of-graph endpoint link to connect the panel */
83 lvds-channel@0 { 94 lvds-channel@0 {
84 #address-cells = <1>; 95 #address-cells = <1>;
85 #size-cells = <0>; 96 #size-cells = <0>;
86 reg = <0>; 97 reg = <0>;
87 fsl,data-mapping = "spwg";
88 fsl,data-width = <24>;
89
90 display-timings {
91 /* ... */
92 };
93 98
94 port@0 { 99 port@0 {
95 reg = <0>; 100 reg = <0>;
@@ -98,8 +103,17 @@ ldb: ldb@53fa8008 {
98 remote-endpoint = <&ipu_di0_lvds0>; 103 remote-endpoint = <&ipu_di0_lvds0>;
99 }; 104 };
100 }; 105 };
106
107 port@2 {
108 reg = <2>;
109
110 lvds0_out: endpoint {
111 remote-endpoint = <&panel_in>;
112 };
113 };
101 }; 114 };
102 115
116 /* Using display-timings and fsl,data-mapping/width instead */
103 lvds-channel@1 { 117 lvds-channel@1 {
104 #address-cells = <1>; 118 #address-cells = <1>;
105 #size-cells = <0>; 119 #size-cells = <0>;
@@ -120,3 +134,13 @@ ldb: ldb@53fa8008 {
120 }; 134 };
121 }; 135 };
122}; 136};
137
138panel: lvds-panel {
139 /* ... */
140
141 port {
142 panel_in: endpoint {
143 remote-endpoint = <&lvds0_out>;
144 };
145 };
146};
diff --git a/Documentation/devicetree/bindings/extcon/extcon-usb-gpio.txt b/Documentation/devicetree/bindings/extcon/extcon-usb-gpio.txt
new file mode 100644
index 000000000000..af0b903de293
--- /dev/null
+++ b/Documentation/devicetree/bindings/extcon/extcon-usb-gpio.txt
@@ -0,0 +1,18 @@
1USB GPIO Extcon device
2
3This is a virtual device used to generate USB cable states from the USB ID pin
4connected to a GPIO pin.
5
6Required properties:
7- compatible: Should be "linux,extcon-usb-gpio"
8- id-gpio: gpio for USB ID pin. See gpio binding.
9
10Example: Examples of extcon-usb-gpio node in dra7-evm.dts as listed below:
11 extcon_usb1 {
12 compatible = "linux,extcon-usb-gpio";
13 id-gpio = <&gpio6 1 GPIO_ACTIVE_HIGH>;
14 }
15
16 &omap_dwc3_1 {
17 extcon = <&extcon_usb1>;
18 };
diff --git a/Documentation/devicetree/bindings/gpio/gpio-bcm-kona.txt b/Documentation/devicetree/bindings/gpio/brcm,kona-gpio.txt
index 4a63bc96b687..4a63bc96b687 100644
--- a/Documentation/devicetree/bindings/gpio/gpio-bcm-kona.txt
+++ b/Documentation/devicetree/bindings/gpio/brcm,kona-gpio.txt
diff --git a/Documentation/devicetree/bindings/gpio/gpio-altera.txt b/Documentation/devicetree/bindings/gpio/gpio-altera.txt
new file mode 100644
index 000000000000..12f50149e1ed
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/gpio-altera.txt
@@ -0,0 +1,43 @@
1Altera GPIO controller bindings
2
3Required properties:
4- compatible:
5 - "altr,pio-1.0"
6- reg: Physical base address and length of the controller's registers.
7- #gpio-cells : Should be 2
8 - The first cell is the gpio offset number.
9 - The second cell is reserved and is currently unused.
10- gpio-controller : Marks the device node as a GPIO controller.
11- interrupt-controller: Mark the device node as an interrupt controller
12- #interrupt-cells : Should be 1. The interrupt type is fixed in the hardware.
13 - The first cell is the GPIO offset number within the GPIO controller.
14- interrupts: Specify the interrupt.
15- altr,interrupt-trigger: Specifies the interrupt trigger type the GPIO
16 hardware is synthesized. This field is required if the Altera GPIO controller
17 used has IRQ enabled as the interrupt type is not software controlled,
18 but hardware synthesized. Required if GPIO is used as an interrupt
19 controller. The value is defined in <dt-bindings/interrupt-controller/irq.h>
20 Only the following flags are supported:
21 IRQ_TYPE_EDGE_RISING
22 IRQ_TYPE_EDGE_FALLING
23 IRQ_TYPE_EDGE_BOTH
24 IRQ_TYPE_LEVEL_HIGH
25
26Optional properties:
27- altr,ngpio: Width of the GPIO bank. This defines how many pins the
28 GPIO device has. Ranges between 1-32. Optional and defaults to 32 if not
29 specified.
30
31Example:
32
33gpio_altr: gpio@0xff200000 {
34 compatible = "altr,pio-1.0";
35 reg = <0xff200000 0x10>;
36 interrupts = <0 45 4>;
37 altr,ngpio = <32>;
38 altr,interrupt-trigger = <IRQ_TYPE_EDGE_RISING>;
39 #gpio-cells = <2>;
40 gpio-controller;
41 #interrupt-cells = <1>;
42 interrupt-controller;
43};
diff --git a/Documentation/devicetree/bindings/gpio/gpio.txt b/Documentation/devicetree/bindings/gpio/gpio.txt
index f7a158d85862..5788d5cf1252 100644
--- a/Documentation/devicetree/bindings/gpio/gpio.txt
+++ b/Documentation/devicetree/bindings/gpio/gpio.txt
@@ -116,6 +116,29 @@ Every GPIO controller node must contain both an empty "gpio-controller"
116property, and a #gpio-cells integer property, which indicates the number of 116property, and a #gpio-cells integer property, which indicates the number of
117cells in a gpio-specifier. 117cells in a gpio-specifier.
118 118
119The GPIO chip may contain GPIO hog definitions. GPIO hogging is a mechanism
120providing automatic GPIO request and configuration as part of the
121gpio-controller's driver probe function.
122
123Each GPIO hog definition is represented as a child node of the GPIO controller.
124Required properties:
125- gpio-hog: A property specifying that this child node represent a GPIO hog.
126- gpios: Store the GPIO information (id, flags, ...). Shall contain the
127 number of cells specified in its parent node (GPIO controller
128 node).
129Only one of the following properties scanned in the order shown below.
130This means that when multiple properties are present they will be searched
131in the order presented below and the first match is taken as the intended
132configuration.
133- input: A property specifying to set the GPIO direction as input.
134- output-low A property specifying to set the GPIO direction as output with
135 the value low.
136- output-high A property specifying to set the GPIO direction as output with
137 the value high.
138
139Optional properties:
140- line-name: The GPIO label name. If not present the node name is used.
141
119Example of two SOC GPIO banks defined as gpio-controller nodes: 142Example of two SOC GPIO banks defined as gpio-controller nodes:
120 143
121 qe_pio_a: gpio-controller@1400 { 144 qe_pio_a: gpio-controller@1400 {
@@ -123,6 +146,13 @@ Example of two SOC GPIO banks defined as gpio-controller nodes:
123 reg = <0x1400 0x18>; 146 reg = <0x1400 0x18>;
124 gpio-controller; 147 gpio-controller;
125 #gpio-cells = <2>; 148 #gpio-cells = <2>;
149
150 line_b {
151 gpio-hog;
152 gpios = <6 0>;
153 output-low;
154 line-name = "foo-bar-gpio";
155 };
126 }; 156 };
127 157
128 qe_pio_e: gpio-controller@1460 { 158 qe_pio_e: gpio-controller@1460 {
diff --git a/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt b/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt
index 67a2e4e414a5..98d198396956 100644
--- a/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt
+++ b/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt
@@ -12,7 +12,7 @@ Required properties:
12 gpio_mux. 12 gpio_mux.
13- interrupt-names : Should be the names of irq resources. Each interrupt 13- interrupt-names : Should be the names of irq resources. Each interrupt
14 uses its own interrupt name, so there should be as many interrupt names 14 uses its own interrupt name, so there should be as many interrupt names
15 as referenced interrups. 15 as referenced interrupts.
16- interrupt-controller : Identifies the node as an interrupt controller. 16- interrupt-controller : Identifies the node as an interrupt controller.
17- #interrupt-cells: Specifies the number of cells needed to encode an 17- #interrupt-cells: Specifies the number of cells needed to encode an
18 interrupt source. 18 interrupt source.
diff --git a/Documentation/devicetree/bindings/i2c/i2c-bcm-kona.txt b/Documentation/devicetree/bindings/i2c/brcm,kona-i2c.txt
index 1b87b741fa8e..1b87b741fa8e 100644
--- a/Documentation/devicetree/bindings/i2c/i2c-bcm-kona.txt
+++ b/Documentation/devicetree/bindings/i2c/brcm,kona-i2c.txt
diff --git a/Documentation/devicetree/bindings/i2c/trivial-devices.txt b/Documentation/devicetree/bindings/i2c/trivial-devices.txt
index 003bd77b4595..ad0c4ac916dd 100644
--- a/Documentation/devicetree/bindings/i2c/trivial-devices.txt
+++ b/Documentation/devicetree/bindings/i2c/trivial-devices.txt
@@ -77,6 +77,7 @@ nxp,pca9556 Octal SMBus and I2C registered interface
77nxp,pca9557 8-bit I2C-bus and SMBus I/O port with reset 77nxp,pca9557 8-bit I2C-bus and SMBus I/O port with reset
78nxp,pcf8563 Real-time clock/calendar 78nxp,pcf8563 Real-time clock/calendar
79nxp,pcf85063 Tiny Real-Time Clock 79nxp,pcf85063 Tiny Real-Time Clock
80oki,ml86v7667 OKI ML86V7667 video decoder
80ovti,ov5642 OV5642: Color CMOS QSXGA (5-megapixel) Image Sensor with OmniBSI and Embedded TrueFocus 81ovti,ov5642 OV5642: Color CMOS QSXGA (5-megapixel) Image Sensor with OmniBSI and Embedded TrueFocus
81pericom,pt7c4338 Real-time Clock Module 82pericom,pt7c4338 Real-time Clock Module
82plx,pex8648 48-Lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch 83plx,pex8648 48-Lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch
diff --git a/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm3380-l2-intc.txt b/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm3380-l2-intc.txt
new file mode 100644
index 000000000000..8f48aad50868
--- /dev/null
+++ b/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm3380-l2-intc.txt
@@ -0,0 +1,41 @@
1Broadcom BCM3380-style Level 1 / Level 2 interrupt controller
2
3This interrupt controller shows up in various forms on many BCM338x/BCM63xx
4chipsets. It has the following properties:
5
6- outputs a single interrupt signal to its interrupt controller parent
7
8- contains one or more enable/status word pairs, which often appear at
9 different offsets in different blocks
10
11- no atomic set/clear operations
12
13Required properties:
14
15- compatible: should be "brcm,bcm3380-l2-intc"
16- reg: specifies one or more enable/status pairs, in the following format:
17 <enable_reg 0x4 status_reg 0x4>...
18- interrupt-controller: identifies the node as an interrupt controller
19- #interrupt-cells: specifies the number of cells needed to encode an interrupt
20 source, should be 1.
21- interrupt-parent: specifies the phandle to the parent interrupt controller
22 this one is cascaded from
23- interrupts: specifies the interrupt line in the interrupt-parent controller
24 node, valid values depend on the type of parent interrupt controller
25
26Optional properties:
27
28- brcm,irq-can-wake: if present, this means the L2 controller can be used as a
29 wakeup source for system suspend/resume.
30
31Example:
32
33irq0_intc: interrupt-controller@10000020 {
34 compatible = "brcm,bcm3380-l2-intc";
35 reg = <0x10000024 0x4 0x1000002c 0x4>,
36 <0x10000020 0x4 0x10000028 0x4>;
37 interrupt-controller;
38 #interrupt-cells = <1>;
39 interrupt-parent = <&cpu_intc>;
40 interrupts = <2>;
41};
diff --git a/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm7038-l1-intc.txt b/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm7038-l1-intc.txt
new file mode 100644
index 000000000000..cc217b22dccd
--- /dev/null
+++ b/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm7038-l1-intc.txt
@@ -0,0 +1,52 @@
1Broadcom BCM7038-style Level 1 interrupt controller
2
3This block is a first level interrupt controller that is typically connected
4directly to one of the HW INT lines on each CPU. Every BCM7xxx set-top chip
5since BCM7038 has contained this hardware.
6
7Key elements of the hardware design include:
8
9- 64, 96, 128, or 160 incoming level IRQ lines
10
11- Most onchip peripherals are wired directly to an L1 input
12
13- A separate instance of the register set for each CPU, allowing individual
14 peripheral IRQs to be routed to any CPU
15
16- Atomic mask/unmask operations
17
18- No polarity/level/edge settings
19
20- No FIFO or priority encoder logic; software is expected to read all
21 2-5 status words to determine which IRQs are pending
22
23Required properties:
24
25- compatible: should be "brcm,bcm7038-l1-intc"
26- reg: specifies the base physical address and size of the registers;
27 the number of supported IRQs is inferred from the size argument
28- interrupt-controller: identifies the node as an interrupt controller
29- #interrupt-cells: specifies the number of cells needed to encode an interrupt
30 source, should be 1.
31- interrupt-parent: specifies the phandle to the parent interrupt controller(s)
32 this one is cascaded from
33- interrupts: specifies the interrupt line(s) in the interrupt-parent controller
34 node; valid values depend on the type of parent interrupt controller
35
36If multiple reg ranges and interrupt-parent entries are present on an SMP
37system, the driver will allow IRQ SMP affinity to be set up through the
38/proc/irq/ interface. In the simplest possible configuration, only one
39reg range and one interrupt-parent is needed.
40
41Example:
42
43periph_intc: periph_intc@1041a400 {
44 compatible = "brcm,bcm7038-l1-intc";
45 reg = <0x1041a400 0x30 0x1041a600 0x30>;
46
47 interrupt-controller;
48 #interrupt-cells = <1>;
49
50 interrupt-parent = <&cpu_intc>;
51 interrupts = <2>, <3>;
52};
diff --git a/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm7120-l2-intc.txt b/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm7120-l2-intc.txt
index bae1f2187226..44a9bb15dd56 100644
--- a/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm7120-l2-intc.txt
+++ b/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm7120-l2-intc.txt
@@ -13,8 +13,7 @@ Such an interrupt controller has the following hardware design:
13 or if they will output an interrupt signal at this 2nd level interrupt 13 or if they will output an interrupt signal at this 2nd level interrupt
14 controller, in particular for UARTs 14 controller, in particular for UARTs
15 15
16- typically has one 32-bit enable word and one 32-bit status word, but on 16- has one 32-bit enable word and one 32-bit status word
17 some hardware may have more than one enable/status pair
18 17
19- no atomic set/clear operations 18- no atomic set/clear operations
20 19
@@ -53,9 +52,7 @@ The typical hardware layout for this controller is represented below:
53Required properties: 52Required properties:
54 53
55- compatible: should be "brcm,bcm7120-l2-intc" 54- compatible: should be "brcm,bcm7120-l2-intc"
56- reg: specifies the base physical address and size of the registers; 55- reg: specifies the base physical address and size of the registers
57 multiple pairs may be specified, with the first pair handling IRQ offsets
58 0..31 and the second pair handling 32..63
59- interrupt-controller: identifies the node as an interrupt controller 56- interrupt-controller: identifies the node as an interrupt controller
60- #interrupt-cells: specifies the number of cells needed to encode an interrupt 57- #interrupt-cells: specifies the number of cells needed to encode an interrupt
61 source, should be 1. 58 source, should be 1.
@@ -66,10 +63,7 @@ Required properties:
66- brcm,int-map-mask: 32-bits bit mask describing how many and which interrupts 63- brcm,int-map-mask: 32-bits bit mask describing how many and which interrupts
67 are wired to this 2nd level interrupt controller, and how they match their 64 are wired to this 2nd level interrupt controller, and how they match their
68 respective interrupt parents. Should match exactly the number of interrupts 65 respective interrupt parents. Should match exactly the number of interrupts
69 specified in the 'interrupts' property, multiplied by the number of 66 specified in the 'interrupts' property.
70 enable/status register pairs implemented by this controller. For
71 multiple parent IRQs with multiple enable/status words, this looks like:
72 <irq0_w0 irq0_w1 irq1_w0 irq1_w1 ...>
73 67
74Optional properties: 68Optional properties:
75 69
diff --git a/Documentation/devicetree/bindings/interrupt-controller/cdns,xtensa-mx.txt b/Documentation/devicetree/bindings/interrupt-controller/cdns,xtensa-mx.txt
new file mode 100644
index 000000000000..d4de980e55fa
--- /dev/null
+++ b/Documentation/devicetree/bindings/interrupt-controller/cdns,xtensa-mx.txt
@@ -0,0 +1,18 @@
1* Xtensa Interrupt Distributor and Programmable Interrupt Controller (MX)
2
3Required properties:
4- compatible: Should be "cdns,xtensa-mx".
5
6Remaining properties have exact same meaning as in Xtensa PIC
7(see cdns,xtensa-pic.txt).
8
9Examples:
10 pic: pic {
11 compatible = "cdns,xtensa-mx";
12 /* one cell: internal irq number,
13 * two cells: second cell == 0: internal irq number
14 * second cell == 1: external irq number
15 */
16 #interrupt-cells = <2>;
17 interrupt-controller;
18 };
diff --git a/Documentation/devicetree/bindings/interrupt-controller/cdns,xtensa-pic.txt b/Documentation/devicetree/bindings/interrupt-controller/cdns,xtensa-pic.txt
new file mode 100644
index 000000000000..026ef4cfc1d5
--- /dev/null
+++ b/Documentation/devicetree/bindings/interrupt-controller/cdns,xtensa-pic.txt
@@ -0,0 +1,25 @@
1* Xtensa built-in Programmable Interrupt Controller (PIC)
2
3Required properties:
4- compatible: Should be "cdns,xtensa-pic".
5- interrupt-controller: Identifies the node as an interrupt controller.
6- #interrupt-cells: The number of cells to define the interrupts.
7 It may be either 1 or 2.
8 When it's 1, the first cell is the internal IRQ number.
9 When it's 2, the first cell is the IRQ number, and the second cell
10 specifies whether it's internal (0) or external (1).
11 Periferals are usually connected to a fixed external IRQ, but for different
12 core variants it may be mapped to different internal IRQ.
13 IRQ sensitivity and priority are fixed for each core variant and may not be
14 changed at runtime.
15
16Examples:
17 pic: pic {
18 compatible = "cdns,xtensa-pic";
19 /* one cell: internal irq number,
20 * two cells: second cell == 0: internal irq number
21 * second cell == 1: external irq number
22 */
23 #interrupt-cells = <2>;
24 interrupt-controller;
25 };
diff --git a/Documentation/devicetree/bindings/interrupt-controller/mips-gic.txt b/Documentation/devicetree/bindings/interrupt-controller/mips-gic.txt
index 5a65478e5d40..aae4c384ee1f 100644
--- a/Documentation/devicetree/bindings/interrupt-controller/mips-gic.txt
+++ b/Documentation/devicetree/bindings/interrupt-controller/mips-gic.txt
@@ -27,8 +27,13 @@ Optional properties:
27Required properties for timer sub-node: 27Required properties for timer sub-node:
28- compatible : Should be "mti,gic-timer". 28- compatible : Should be "mti,gic-timer".
29- interrupts : Interrupt for the GIC local timer. 29- interrupts : Interrupt for the GIC local timer.
30
31Optional properties for timer sub-node:
32- clocks : GIC timer operating clock.
30- clock-frequency : Clock frequency at which the GIC timers operate. 33- clock-frequency : Clock frequency at which the GIC timers operate.
31 34
35Note that one of clocks or clock-frequency must be specified.
36
32Example: 37Example:
33 38
34 gic: interrupt-controller@1bdc0000 { 39 gic: interrupt-controller@1bdc0000 {
diff --git a/Documentation/devicetree/bindings/mailbox/arm-mhu.txt b/Documentation/devicetree/bindings/mailbox/arm-mhu.txt
new file mode 100644
index 000000000000..4971f03f0b33
--- /dev/null
+++ b/Documentation/devicetree/bindings/mailbox/arm-mhu.txt
@@ -0,0 +1,43 @@
1ARM MHU Mailbox Driver
2======================
3
4The ARM's Message-Handling-Unit (MHU) is a mailbox controller that has
53 independent channels/links to communicate with remote processor(s).
6 MHU links are hardwired on a platform. A link raises interrupt for any
7received data. However, there is no specified way of knowing if the sent
8data has been read by the remote. This driver assumes the sender polls
9STAT register and the remote clears it after having read the data.
10The last channel is specified to be a 'Secure' resource, hence can't be
11used by Linux running NS.
12
13Mailbox Device Node:
14====================
15
16Required properties:
17--------------------
18- compatible: Shall be "arm,mhu" & "arm,primecell"
19- reg: Contains the mailbox register address range (base
20 address and length)
21- #mbox-cells Shall be 1 - the index of the channel needed.
22- interrupts: Contains the interrupt information corresponding to
23 each of the 3 links of MHU.
24
25Example:
26--------
27
28 mhu: mailbox@2b1f0000 {
29 #mbox-cells = <1>;
30 compatible = "arm,mhu", "arm,primecell";
31 reg = <0 0x2b1f0000 0x1000>;
32 interrupts = <0 36 4>, /* LP-NonSecure */
33 <0 35 4>, /* HP-NonSecure */
34 <0 37 4>; /* Secure */
35 clocks = <&clock 0 2 1>;
36 clock-names = "apb_pclk";
37 };
38
39 mhu_client: scb@2e000000 {
40 compatible = "fujitsu,mb86s70-scb-1.0";
41 reg = <0 0x2e000000 0x4000>;
42 mboxes = <&mhu 1>; /* HP-NonSecure */
43 };
diff --git a/Documentation/devicetree/bindings/media/exynos-jpeg-codec.txt b/Documentation/devicetree/bindings/media/exynos-jpeg-codec.txt
index bf52ed4a5067..4ef45636ebde 100644
--- a/Documentation/devicetree/bindings/media/exynos-jpeg-codec.txt
+++ b/Documentation/devicetree/bindings/media/exynos-jpeg-codec.txt
@@ -4,7 +4,7 @@ Required properties:
4 4
5- compatible : should be one of: 5- compatible : should be one of:
6 "samsung,s5pv210-jpeg", "samsung,exynos4210-jpeg", 6 "samsung,s5pv210-jpeg", "samsung,exynos4210-jpeg",
7 "samsung,exynos3250-jpeg"; 7 "samsung,exynos3250-jpeg", "samsung,exynos5420-jpeg";
8- reg : address and length of the JPEG codec IP register set; 8- reg : address and length of the JPEG codec IP register set;
9- interrupts : specifies the JPEG codec IP interrupt; 9- interrupts : specifies the JPEG codec IP interrupt;
10- clock-names : should contain: 10- clock-names : should contain:
diff --git a/Documentation/devicetree/bindings/media/i2c/mt9v032.txt b/Documentation/devicetree/bindings/media/i2c/mt9v032.txt
new file mode 100644
index 000000000000..202565313e82
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/mt9v032.txt
@@ -0,0 +1,39 @@
1* Aptina 1/3-Inch WVGA CMOS Digital Image Sensor
2
3The Aptina MT9V032 is a 1/3-inch CMOS active pixel digital image sensor with
4an active array size of 752H x 480V. It is programmable through a simple
5two-wire serial interface.
6
7Required Properties:
8
9- compatible: value should be either one among the following
10 (a) "aptina,mt9v022" for MT9V022 color sensor
11 (b) "aptina,mt9v022m" for MT9V022 monochrome sensor
12 (c) "aptina,mt9v024" for MT9V024 color sensor
13 (d) "aptina,mt9v024m" for MT9V024 monochrome sensor
14 (e) "aptina,mt9v032" for MT9V032 color sensor
15 (f) "aptina,mt9v032m" for MT9V032 monochrome sensor
16 (g) "aptina,mt9v034" for MT9V034 color sensor
17 (h) "aptina,mt9v034m" for MT9V034 monochrome sensor
18
19Optional Properties:
20
21- link-frequencies: List of allowed link frequencies in Hz. Each frequency is
22 expressed as a 64-bit big-endian integer.
23
24For further reading on port node refer to
25Documentation/devicetree/bindings/media/video-interfaces.txt.
26
27Example:
28
29 mt9v032@5c {
30 compatible = "aptina,mt9v032";
31 reg = <0x5c>;
32
33 port {
34 mt9v032_out: endpoint {
35 link-frequencies = /bits/ 64
36 <13000000 26600000 27000000>;
37 };
38 };
39 };
diff --git a/Documentation/devicetree/bindings/media/i2c/ov2640.txt b/Documentation/devicetree/bindings/media/i2c/ov2640.txt
new file mode 100644
index 000000000000..c429b5bdcaa0
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/ov2640.txt
@@ -0,0 +1,46 @@
1* Omnivision OV2640 CMOS sensor
2
3The Omnivision OV2640 sensor support multiple resolutions output, such as
4CIF, SVGA, UXGA. It also can support YUV422/420, RGB565/555 or raw RGB
5output format.
6
7Required Properties:
8- compatible: should be "ovti,ov2640"
9- clocks: reference to the xvclk input clock.
10- clock-names: should be "xvclk".
11
12Optional Properties:
13- resetb-gpios: reference to the GPIO connected to the resetb pin, if any.
14- pwdn-gpios: reference to the GPIO connected to the pwdn pin, if any.
15
16The device node must contain one 'port' child node for its digital output
17video port, in accordance with the video interface bindings defined in
18Documentation/devicetree/bindings/media/video-interfaces.txt.
19
20Example:
21
22 i2c1: i2c@f0018000 {
23 ov2640: camera@0x30 {
24 compatible = "ovti,ov2640";
25 reg = <0x30>;
26
27 pinctrl-names = "default";
28 pinctrl-0 = <&pinctrl_pck1 &pinctrl_ov2640_pwdn &pinctrl_ov2640_resetb>;
29
30 resetb-gpios = <&pioE 24 GPIO_ACTIVE_LOW>;
31 pwdn-gpios = <&pioE 29 GPIO_ACTIVE_HIGH>;
32
33 clocks = <&pck1>;
34 clock-names = "xvclk";
35
36 assigned-clocks = <&pck1>;
37 assigned-clock-rates = <25000000>;
38
39 port {
40 ov2640_0: endpoint {
41 remote-endpoint = <&isi_0>;
42 bus-width = <8>;
43 };
44 };
45 };
46 };
diff --git a/Documentation/devicetree/bindings/media/i2c/ov2659.txt b/Documentation/devicetree/bindings/media/i2c/ov2659.txt
new file mode 100644
index 000000000000..cabc7d827dfb
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/ov2659.txt
@@ -0,0 +1,38 @@
1* OV2659 1/5-Inch 2Mp SOC Camera
2
3The Omnivision OV2659 is a 1/5-inch SOC camera, with an active array size of
41632H x 1212V. It is programmable through a SCCB. The OV2659 sensor supports
5multiple resolutions output, such as UXGA, SVGA, 720p. It also can support
6YUV422, RGB565/555 or raw RGB output formats.
7
8Required Properties:
9- compatible: Must be "ovti,ov2659"
10- reg: I2C slave address
11- clocks: reference to the xvclk input clock.
12- clock-names: should be "xvclk".
13- link-frequencies: target pixel clock frequency.
14
15For further reading on port node refer to
16Documentation/devicetree/bindings/media/video-interfaces.txt.
17
18Example:
19
20 i2c0@1c22000 {
21 ...
22 ...
23 ov2659@30 {
24 compatible = "ovti,ov2659";
25 reg = <0x30>;
26
27 clocks = <&clk_ov2659 0>;
28 clock-names = "xvclk";
29
30 port {
31 ov2659_0: endpoint {
32 remote-endpoint = <&vpfe_ep>;
33 link-frequencies = /bits/ 64 <70000000>;
34 };
35 };
36 };
37 ...
38 };
diff --git a/Documentation/devicetree/bindings/media/ti,omap3isp.txt b/Documentation/devicetree/bindings/media/ti,omap3isp.txt
new file mode 100644
index 000000000000..ac23de855641
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/ti,omap3isp.txt
@@ -0,0 +1,71 @@
1OMAP 3 ISP Device Tree bindings
2===============================
3
4The DT definitions can be found in include/dt-bindings/media/omap3-isp.h.
5
6Required properties
7===================
8
9compatible : must contain "ti,omap3-isp"
10
11reg : the two registers sets (physical address and length) for the
12 ISP. The first set contains the core ISP registers up to
13 the end of the SBL block. The second set contains the
14 CSI PHYs and receivers registers.
15interrupts : the ISP interrupt specifier
16iommus : phandle and IOMMU specifier for the IOMMU that serves the ISP
17syscon : the phandle and register offset to the Complex I/O or CSI-PHY
18 register
19ti,phy-type : 0 -- OMAP3ISP_PHY_TYPE_COMPLEX_IO (e.g. 3430)
20 1 -- OMAP3ISP_PHY_TYPE_CSIPHY (e.g. 3630)
21#clock-cells : Must be 1 --- the ISP provides two external clocks,
22 cam_xclka and cam_xclkb, at indices 0 and 1,
23 respectively. Please find more information on common
24 clock bindings in ../clock/clock-bindings.txt.
25
26Port nodes (optional)
27---------------------
28
29More documentation on these bindings is available in
30video-interfaces.txt in the same directory.
31
32reg : The interface:
33 0 - parallel (CCDC)
34 1 - CSIPHY1 -- CSI2C / CCP2B on 3630;
35 CSI1 -- CSIb on 3430
36 2 - CSIPHY2 -- CSI2A / CCP2B on 3630;
37 CSI2 -- CSIa on 3430
38
39Optional properties
40===================
41
42vdd-csiphy1-supply : voltage supply of the CSI-2 PHY 1
43vdd-csiphy2-supply : voltage supply of the CSI-2 PHY 2
44
45Endpoint nodes
46--------------
47
48lane-polarities : lane polarity (required on CSI-2)
49 0 -- not inverted; 1 -- inverted
50data-lanes : an array of data lanes from 1 to 3. The length can
51 be either 1 or 2. (required on CSI-2)
52clock-lanes : the clock lane (from 1 to 3). (required on CSI-2)
53
54
55Example
56=======
57
58 isp@480bc000 {
59 compatible = "ti,omap3-isp";
60 reg = <0x480bc000 0x12fc
61 0x480bd800 0x0600>;
62 interrupts = <24>;
63 iommus = <&mmu_isp>;
64 syscon = <&scm_conf 0x2f0>;
65 ti,phy-type = <OMAP3ISP_PHY_TYPE_CSIPHY>;
66 #clock-cells = <1>;
67 ports {
68 #address-cells = <1>;
69 #size-cells = <0>;
70 };
71 };
diff --git a/Documentation/devicetree/bindings/media/video-interfaces.txt b/Documentation/devicetree/bindings/media/video-interfaces.txt
index 571b4c60665f..9cd2a369125d 100644
--- a/Documentation/devicetree/bindings/media/video-interfaces.txt
+++ b/Documentation/devicetree/bindings/media/video-interfaces.txt
@@ -106,6 +106,12 @@ Optional endpoint properties
106- link-frequencies: Allowed data bus frequencies. For MIPI CSI-2, for 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 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. 108 lane value. An array of 64-bit unsigned integers.
109- lane-polarities: an array of polarities of the lanes starting from the clock
110 lane and followed by the data lanes in the same order as in data-lanes.
111 Valid values are 0 (normal) and 1 (inverted). The length of the array
112 should be the combined length of data-lanes and clock-lanes properties.
113 If the lane-polarities property is omitted, the value must be interpreted
114 as 0 (normal). This property is valid for serial busses only.
109 115
110 116
111Example 117Example
diff --git a/Documentation/devicetree/bindings/media/xilinx/video.txt b/Documentation/devicetree/bindings/media/xilinx/video.txt
new file mode 100644
index 000000000000..cbd46fa0988f
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/xilinx/video.txt
@@ -0,0 +1,35 @@
1DT bindings for Xilinx video IP cores
2-------------------------------------
3
4Xilinx video IP cores process video streams by acting as video sinks and/or
5sources. They are connected by links through their input and output ports,
6creating a video pipeline.
7
8Each video IP core is represented by an AMBA bus child node in the device
9tree using bindings documented in this directory. Connections between the IP
10cores are represented as defined in ../video-interfaces.txt.
11
12The whole pipeline is represented by an AMBA bus child node in the device
13tree using bindings documented in ./xlnx,video.txt.
14
15Common properties
16-----------------
17
18The following properties are common to all Xilinx video IP cores.
19
20- xlnx,video-format: This property represents a video format transmitted on an
21 AXI bus between video IP cores, using its VF code as defined in "AXI4-Stream
22 Video IP and System Design Guide" [UG934]. How the format relates to the IP
23 core is decribed in the IP core bindings documentation.
24
25- xlnx,video-width: This property qualifies the video format with the sample
26 width expressed as a number of bits per pixel component. All components must
27 use the same width.
28
29- xlnx,cfa-pattern: When the video format is set to Mono/Sensor, this property
30 describes the sensor's color filter array pattern. Supported values are
31 "bggr", "gbrg", "grbg", "rggb" and "mono". If not specified, the pattern
32 defaults to "mono".
33
34
35[UG934] http://www.xilinx.com/support/documentation/ip_documentation/axi_videoip/v1_0/ug934_axi_videoIP.pdf
diff --git a/Documentation/devicetree/bindings/media/xilinx/xlnx,v-tc.txt b/Documentation/devicetree/bindings/media/xilinx/xlnx,v-tc.txt
new file mode 100644
index 000000000000..2aed3b4a6cf1
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/xilinx/xlnx,v-tc.txt
@@ -0,0 +1,33 @@
1Xilinx Video Timing Controller (VTC)
2------------------------------------
3
4The Video Timing Controller is a general purpose video timing generator and
5detector.
6
7Required properties:
8
9 - compatible: Must be "xlnx,v-tc-6.1".
10
11 - reg: Physical base address and length of the registers set for the device.
12
13 - clocks: Must contain a clock specifier for the VTC core and timing
14 interfaces clock.
15
16Optional properties:
17
18 - xlnx,detector: The VTC has a timing detector
19 - xlnx,generator: The VTC has a timing generator
20
21 At least one of the xlnx,detector and xlnx,generator properties must be
22 specified.
23
24
25Example:
26
27 vtc: vtc@43c40000 {
28 compatible = "xlnx,v-tc-6.1";
29 reg = <0x43c40000 0x10000>;
30
31 clocks = <&clkc 15>;
32 xlnx,generator;
33 };
diff --git a/Documentation/devicetree/bindings/media/xilinx/xlnx,v-tpg.txt b/Documentation/devicetree/bindings/media/xilinx/xlnx,v-tpg.txt
new file mode 100644
index 000000000000..9dd86b3db937
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/xilinx/xlnx,v-tpg.txt
@@ -0,0 +1,71 @@
1Xilinx Video Test Pattern Generator (TPG)
2-----------------------------------------
3
4Required properties:
5
6- compatible: Must contain at least one of
7
8 "xlnx,v-tpg-5.0" (TPG version 5.0)
9 "xlnx,v-tpg-6.0" (TPG version 6.0)
10
11 TPG versions backward-compatible with previous versions should list all
12 compatible versions in the newer to older order.
13
14- reg: Physical base address and length of the registers set for the device.
15
16- clocks: Reference to the video core clock.
17
18- xlnx,video-format, xlnx,video-width: Video format and width, as defined in
19 video.txt.
20
21- port: Video port, using the DT bindings defined in ../video-interfaces.txt.
22 The TPG has a single output port numbered 0.
23
24Optional properties:
25
26- xlnx,vtc: A phandle referencing the Video Timing Controller that generates
27 video timings for the TPG test patterns.
28
29- timing-gpios: Specifier for a GPIO that controls the timing mux at the TPG
30 input. The GPIO active level corresponds to the selection of VTC-generated
31 video timings.
32
33The xlnx,vtc and timing-gpios properties are mandatory when the TPG is
34synthesized with two ports and forbidden when synthesized with one port.
35
36Example:
37
38 tpg_0: tpg@40050000 {
39 compatible = "xlnx,v-tpg-6.0", "xlnx,v-tpg-5.0";
40 reg = <0x40050000 0x10000>;
41 clocks = <&clkc 15>;
42
43 xlnx,vtc = <&vtc_3>;
44 timing-gpios = <&ps7_gpio_0 55 GPIO_ACTIVE_LOW>;
45
46 ports {
47 #address-cells = <1>;
48 #size-cells = <0>;
49
50 port@0 {
51 reg = <0>;
52
53 xlnx,video-format = <XVIP_VF_YUV_422>;
54 xlnx,video-width = <8>;
55
56 tpg_in: endpoint {
57 remote-endpoint = <&adv7611_out>;
58 };
59 };
60 port@1 {
61 reg = <1>;
62
63 xlnx,video-format = <XVIP_VF_YUV_422>;
64 xlnx,video-width = <8>;
65
66 tpg1_out: endpoint {
67 remote-endpoint = <&switch_in0>;
68 };
69 }:
70 };
71 };
diff --git a/Documentation/devicetree/bindings/media/xilinx/xlnx,video.txt b/Documentation/devicetree/bindings/media/xilinx/xlnx,video.txt
new file mode 100644
index 000000000000..5a0227023608
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/xilinx/xlnx,video.txt
@@ -0,0 +1,55 @@
1Xilinx Video IP Pipeline (VIPP)
2-------------------------------
3
4General concept
5---------------
6
7Xilinx video IP pipeline processes video streams through one or more Xilinx
8video IP cores. Each video IP core is represented as documented in video.txt
9and IP core specific documentation, xlnx,v-*.txt, in this directory. The DT
10node of the VIPP represents as a top level node of the pipeline and defines
11mappings between DMAs and the video IP cores.
12
13Required properties:
14
15- compatible: Must be "xlnx,video".
16
17- dmas, dma-names: List of one DMA specifier and identifier string (as defined
18 in Documentation/devicetree/bindings/dma/dma.txt) per port. Each port
19 requires a DMA channel with the identifier string set to "port" followed by
20 the port index.
21
22- ports: Video port, using the DT bindings defined in ../video-interfaces.txt.
23
24Required port properties:
25
26- direction: should be either "input" or "output" depending on the direction
27 of stream.
28
29Example:
30
31 video_cap {
32 compatible = "xlnx,video";
33 dmas = <&vdma_1 1>, <&vdma_3 1>;
34 dma-names = "port0", "port1";
35
36 ports {
37 #address-cells = <1>;
38 #size-cells = <0>;
39
40 port@0 {
41 reg = <0>;
42 direction = "input";
43 vcap0_in0: endpoint {
44 remote-endpoint = <&scaler0_out>;
45 };
46 };
47 port@1 {
48 reg = <1>;
49 direction = "input";
50 vcap0_in1: endpoint {
51 remote-endpoint = <&switch_out1>;
52 };
53 };
54 };
55 };
diff --git a/Documentation/devicetree/bindings/memory-controllers/ingenic,jz4780-nemc.txt b/Documentation/devicetree/bindings/memory-controllers/ingenic,jz4780-nemc.txt
new file mode 100644
index 000000000000..f936b5589b19
--- /dev/null
+++ b/Documentation/devicetree/bindings/memory-controllers/ingenic,jz4780-nemc.txt
@@ -0,0 +1,75 @@
1* Ingenic JZ4780 NAND/external memory controller (NEMC)
2
3This file documents the device tree bindings for the NEMC external memory
4controller in Ingenic JZ4780
5
6Required properties:
7- compatible: Should be set to one of:
8 "ingenic,jz4780-nemc" (JZ4780)
9- reg: Should specify the NEMC controller registers location and length.
10- clocks: Clock for the NEMC controller.
11- #address-cells: Must be set to 2.
12- #size-cells: Must be set to 1.
13- ranges: A set of ranges for each bank describing the physical memory layout.
14 Each should specify the following 4 integer values:
15
16 <cs number> 0 <physical address of mapping> <size of mapping>
17
18Each child of the NEMC node describes a device connected to the NEMC.
19
20Required child node properties:
21- reg: Should contain at least one register specifier, given in the following
22 format:
23
24 <cs number> <offset> <size>
25
26 Multiple registers can be specified across multiple banks. This is needed,
27 for example, for packaged NAND devices with multiple dies. Such devices
28 should be grouped into a single node.
29
30Optional child node properties:
31- ingenic,nemc-bus-width: Specifies the bus width in bits. Defaults to 8 bits.
32- ingenic,nemc-tAS: Address setup time in nanoseconds.
33- ingenic,nemc-tAH: Address hold time in nanoseconds.
34- ingenic,nemc-tBP: Burst pitch time in nanoseconds.
35- ingenic,nemc-tAW: Access wait time in nanoseconds.
36- ingenic,nemc-tSTRV: Static memory recovery time in nanoseconds.
37
38If a child node references multiple banks in its "reg" property, the same value
39for all optional parameters will be configured for all banks. If any optional
40parameters are omitted, they will be left unchanged from whatever they are
41configured to when the NEMC device is probed (which may be the reset value as
42given in the hardware reference manual, or a value configured by the boot
43loader).
44
45Example (NEMC node with a NAND child device attached at CS1):
46
47nemc: nemc@13410000 {
48 compatible = "ingenic,jz4780-nemc";
49 reg = <0x13410000 0x10000>;
50
51 #address-cells = <2>;
52 #size-cells = <1>;
53
54 ranges = <1 0 0x1b000000 0x1000000
55 2 0 0x1a000000 0x1000000
56 3 0 0x19000000 0x1000000
57 4 0 0x18000000 0x1000000
58 5 0 0x17000000 0x1000000
59 6 0 0x16000000 0x1000000>;
60
61 clocks = <&cgu JZ4780_CLK_NEMC>;
62
63 nand: nand@1 {
64 compatible = "ingenic,jz4780-nand";
65 reg = <1 0 0x1000000>;
66
67 ingenic,nemc-tAS = <10>;
68 ingenic,nemc-tAH = <5>;
69 ingenic,nemc-tBP = <10>;
70 ingenic,nemc-tAW = <15>;
71 ingenic,nemc-tSTRV = <100>;
72
73 ...
74 };
75};
diff --git a/Documentation/devicetree/bindings/mfd/bcm590xx.txt b/Documentation/devicetree/bindings/mfd/brcm,bcm59056.txt
index be51a15e05f9..be51a15e05f9 100644
--- a/Documentation/devicetree/bindings/mfd/bcm590xx.txt
+++ b/Documentation/devicetree/bindings/mfd/brcm,bcm59056.txt
diff --git a/Documentation/devicetree/bindings/mfd/qcom,tcsr.txt b/Documentation/devicetree/bindings/mfd/qcom,tcsr.txt
new file mode 100644
index 000000000000..e90519d566a3
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/qcom,tcsr.txt
@@ -0,0 +1,22 @@
1QCOM Top Control and Status Register
2
3Qualcomm devices have a set of registers that provide various control and status
4functions for their peripherals. This node is intended to allow access to these
5registers via syscon.
6
7Required properties:
8- compatible: Should contain:
9 "qcom,tcsr-ipq8064", "syscon" for IPQ8064
10 "qcom,tcsr-apq8064", "syscon" for APQ8064
11 "qcom,tcsr-msm8660", "syscon" for MSM8660
12 "qcom,tcsr-msm8960", "syscon" for MSM8960
13 "qcom,tcsr-msm8974", "syscon" for MSM8974
14 "qcom,tcsr-apq8084", "syscon" for APQ8084
15 "qcom,tcsr-msm8916", "syscon" for MSM8916
16- reg: Address range for TCSR registers
17
18Example:
19 tcsr: syscon@1a400000 {
20 compatible = "qcom,tcsr-msm8960", "syscon";
21 reg = <0x1a400000 0x100>;
22 };
diff --git a/Documentation/devicetree/bindings/mips/brcm/bcm3384-intc.txt b/Documentation/devicetree/bindings/mips/brcm/bcm3384-intc.txt
deleted file mode 100644
index d4e0141d3620..000000000000
--- a/Documentation/devicetree/bindings/mips/brcm/bcm3384-intc.txt
+++ /dev/null
@@ -1,37 +0,0 @@
1* Interrupt Controller
2
3Properties:
4- compatible: "brcm,bcm3384-intc"
5
6 Compatibility with BCM3384 and possibly other BCM33xx/BCM63xx SoCs.
7
8- reg: Address/length pairs for each mask/status register set. Length must
9 be 8. If multiple register sets are specified, the first set will
10 handle IRQ offsets 0..31, the second set 32..63, and so on.
11
12- interrupt-controller: This is an interrupt controller.
13
14- #interrupt-cells: Must be <1>. Just a simple IRQ offset; no level/edge
15 or polarity configuration is possible with this controller.
16
17- interrupt-parent: This controller is cascaded from a MIPS CPU HW IRQ, or
18 from another INTC.
19
20- interrupts: The IRQ on the parent controller.
21
22Example:
23 periph_intc: periph_intc@14e00038 {
24 compatible = "brcm,bcm3384-intc";
25
26 /*
27 * IRQs 0..31: mask reg 0x14e00038, status reg 0x14e0003c
28 * IRQs 32..63: mask reg 0x14e00340, status reg 0x14e00344
29 */
30 reg = <0x14e00038 0x8 0x14e00340 0x8>;
31
32 interrupt-controller;
33 #interrupt-cells = <1>;
34
35 interrupt-parent = <&cpu_intc>;
36 interrupts = <4>;
37 };
diff --git a/Documentation/devicetree/bindings/mips/brcm/bmips.txt b/Documentation/devicetree/bindings/mips/brcm/brcm,bmips.txt
index 8ef71b4085ca..8ef71b4085ca 100644
--- a/Documentation/devicetree/bindings/mips/brcm/bmips.txt
+++ b/Documentation/devicetree/bindings/mips/brcm/brcm,bmips.txt
diff --git a/Documentation/devicetree/bindings/mips/brcm/cm-dsl.txt b/Documentation/devicetree/bindings/mips/brcm/cm-dsl.txt
deleted file mode 100644
index 8a139cb3c0b5..000000000000
--- a/Documentation/devicetree/bindings/mips/brcm/cm-dsl.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1* Broadcom cable/DSL platforms
2
3SoCs:
4
5Required properties:
6- compatible: "brcm,bcm3384", "brcm,bcm33843"
7
8Boards:
9
10Required properties:
11- compatible: "brcm,bcm93384wvg"
diff --git a/Documentation/devicetree/bindings/mips/brcm/soc.txt b/Documentation/devicetree/bindings/mips/brcm/soc.txt
new file mode 100644
index 000000000000..7bab90cc4a7b
--- /dev/null
+++ b/Documentation/devicetree/bindings/mips/brcm/soc.txt
@@ -0,0 +1,12 @@
1* Broadcom cable/DSL/settop platforms
2
3Required properties:
4
5- compatible: "brcm,bcm3384", "brcm,bcm33843"
6 "brcm,bcm3384-viper", "brcm,bcm33843-viper"
7 "brcm,bcm6328", "brcm,bcm6368",
8 "brcm,bcm7125", "brcm,bcm7346", "brcm,bcm7358", "brcm,bcm7360",
9 "brcm,bcm7362", "brcm,bcm7420", "brcm,bcm7425"
10
11The experimental -viper variants are for running Linux on the 3384's
12BMIPS4355 cable modem CPU instead of the BMIPS5000 application processor.
diff --git a/Documentation/devicetree/bindings/mips/img/pistachio.txt b/Documentation/devicetree/bindings/mips/img/pistachio.txt
new file mode 100644
index 000000000000..a736d889c2b8
--- /dev/null
+++ b/Documentation/devicetree/bindings/mips/img/pistachio.txt
@@ -0,0 +1,42 @@
1Imagination Pistachio SoC
2=========================
3
4Required properties:
5--------------------
6 - compatible: Must include "img,pistachio".
7
8CPU nodes:
9----------
10A "cpus" node is required. Required properties:
11 - #address-cells: Must be 1.
12 - #size-cells: Must be 0.
13A CPU sub-node is also required for at least CPU 0. Since the topology may
14be probed via CPS, it is not necessary to specify secondary CPUs. Required
15propertis:
16 - device_type: Must be "cpu".
17 - compatible: Must be "mti,interaptiv".
18 - reg: CPU number.
19 - clocks: Must include the CPU clock. See ../../clock/clock-bindings.txt for
20 details on clock bindings.
21Example:
22 cpus {
23 #address-cells = <1>;
24 #size-cells = <0>;
25
26 cpu0: cpu@0 {
27 device_type = "cpu";
28 compatible = "mti,interaptiv";
29 reg = <0>;
30 clocks = <&clk_core CLK_MIPS>;
31 };
32 };
33
34
35Boot protocol:
36--------------
37In accordance with the MIPS UHI specification[1], the bootloader must pass the
38following arguments to the kernel:
39 - $a0: -2.
40 - $a1: KSEG0 address of the flattened device-tree blob.
41
42[1] http://prplfoundation.org/wiki/MIPS_documentation
diff --git a/Documentation/devicetree/bindings/misc/smc.txt b/Documentation/devicetree/bindings/misc/brcm,kona-smc.txt
index 6c9f176f3571..6c9f176f3571 100644
--- a/Documentation/devicetree/bindings/misc/smc.txt
+++ b/Documentation/devicetree/bindings/misc/brcm,kona-smc.txt
diff --git a/Documentation/devicetree/bindings/misc/lis302.txt b/Documentation/devicetree/bindings/misc/lis302.txt
index 6def86f6b053..2a19bff9693f 100644
--- a/Documentation/devicetree/bindings/misc/lis302.txt
+++ b/Documentation/devicetree/bindings/misc/lis302.txt
@@ -46,11 +46,18 @@ Optional properties for all bus drivers:
46 interrupt 2 46 interrupt 2
47 - st,wakeup-{x,y,z}-{lo,hi}: set wakeup condition on x/y/z axis for 47 - st,wakeup-{x,y,z}-{lo,hi}: set wakeup condition on x/y/z axis for
48 upper/lower limit 48 upper/lower limit
49 - st,wakeup-threshold: set wakeup threshold
50 - st,wakeup2-{x,y,z}-{lo,hi}: set wakeup condition on x/y/z axis for
51 upper/lower limit for second wakeup
52 engine.
53 - st,wakeup2-threshold: set wakeup threshold for second wakeup
54 engine.
49 - st,highpass-cutoff-hz=: 1, 2, 4 or 8 for 1Hz, 2Hz, 4Hz or 8Hz of 55 - st,highpass-cutoff-hz=: 1, 2, 4 or 8 for 1Hz, 2Hz, 4Hz or 8Hz of
50 highpass cut-off frequency 56 highpass cut-off frequency
51 - st,hipass{1,2}-disable: disable highpass 1/2. 57 - st,hipass{1,2}-disable: disable highpass 1/2.
52 - st,default-rate=: set the default rate 58 - st,default-rate=: set the default rate
53 - st,axis-{x,y,z}=: set the axis to map to the three coordinates 59 - st,axis-{x,y,z}=: set the axis to map to the three coordinates.
60 Negative values can be used for inverted axis.
54 - st,{min,max}-limit-{x,y,z} set the min/max limits for x/y/z axis 61 - st,{min,max}-limit-{x,y,z} set the min/max limits for x/y/z axis
55 (used by self-test) 62 (used by self-test)
56 63
diff --git a/Documentation/devicetree/bindings/mmc/kona-sdhci.txt b/Documentation/devicetree/bindings/mmc/brcm,kona-sdhci.txt
index aaba2483b4ff..aaba2483b4ff 100644
--- a/Documentation/devicetree/bindings/mmc/kona-sdhci.txt
+++ b/Documentation/devicetree/bindings/mmc/brcm,kona-sdhci.txt
diff --git a/Documentation/devicetree/bindings/mtd/m25p80.txt b/Documentation/devicetree/bindings/mtd/m25p80.txt
index 4611aa83531b..f20b111b502a 100644
--- a/Documentation/devicetree/bindings/mtd/m25p80.txt
+++ b/Documentation/devicetree/bindings/mtd/m25p80.txt
@@ -3,10 +3,13 @@
3Required properties: 3Required properties:
4- #address-cells, #size-cells : Must be present if the device has sub-nodes 4- #address-cells, #size-cells : Must be present if the device has sub-nodes
5 representing partitions. 5 representing partitions.
6- compatible : Should be the manufacturer and the name of the chip. Bear in mind 6- compatible : May include a device-specific string consisting of the
7 the DT binding is not Linux-only, but in case of Linux, see the 7 manufacturer and name of the chip. Bear in mind the DT binding
8 "spi_nor_ids" table in drivers/mtd/spi-nor/spi-nor.c for the list 8 is not Linux-only, but in case of Linux, see the "m25p_ids"
9 of supported chips. 9 table in drivers/mtd/devices/m25p80.c for the list of supported
10 chips.
11 Must also include "nor-jedec" for any SPI NOR flash that can be
12 identified by the JEDEC READ ID opcode (0x9F).
10- reg : Chip-Select number 13- reg : Chip-Select number
11- spi-max-frequency : Maximum frequency of the SPI bus the chip can operate at 14- spi-max-frequency : Maximum frequency of the SPI bus the chip can operate at
12 15
@@ -22,7 +25,7 @@ Example:
22 flash: m25p80@0 { 25 flash: m25p80@0 {
23 #address-cells = <1>; 26 #address-cells = <1>;
24 #size-cells = <1>; 27 #size-cells = <1>;
25 compatible = "spansion,m25p80"; 28 compatible = "spansion,m25p80", "nor-jedec";
26 reg = <0>; 29 reg = <0>;
27 spi-max-frequency = <40000000>; 30 spi-max-frequency = <40000000>;
28 m25p,fast-read; 31 m25p,fast-read;
diff --git a/Documentation/devicetree/bindings/mtd/pxa3xx-nand.txt b/Documentation/devicetree/bindings/mtd/pxa3xx-nand.txt
index de8b517a5521..4f833e3c4f51 100644
--- a/Documentation/devicetree/bindings/mtd/pxa3xx-nand.txt
+++ b/Documentation/devicetree/bindings/mtd/pxa3xx-nand.txt
@@ -14,7 +14,7 @@ Optional properties:
14 - marvell,nand-enable-arbiter: Set to enable the bus arbiter 14 - marvell,nand-enable-arbiter: Set to enable the bus arbiter
15 - marvell,nand-keep-config: Set to keep the NAND controller config as set 15 - marvell,nand-keep-config: Set to keep the NAND controller config as set
16 by the bootloader 16 by the bootloader
17 - num-cs: Number of chipselect lines to usw 17 - num-cs: Number of chipselect lines to use
18 - nand-on-flash-bbt: boolean to enable on flash bbt option if 18 - nand-on-flash-bbt: boolean to enable on flash bbt option if
19 not present false 19 not present false
20 - nand-ecc-strength: number of bits to correct per ECC step 20 - nand-ecc-strength: number of bits to correct per ECC step
diff --git a/Documentation/devicetree/bindings/mtd/sunxi-nand.txt b/Documentation/devicetree/bindings/mtd/sunxi-nand.txt
index 0273adb8638c..086d6f44c4b9 100644
--- a/Documentation/devicetree/bindings/mtd/sunxi-nand.txt
+++ b/Documentation/devicetree/bindings/mtd/sunxi-nand.txt
@@ -21,7 +21,7 @@ Optional properties:
21- nand-ecc-mode : one of the supported ECC modes ("hw", "hw_syndrome", "soft", 21- nand-ecc-mode : one of the supported ECC modes ("hw", "hw_syndrome", "soft",
22 "soft_bch" or "none") 22 "soft_bch" or "none")
23 23
24see Documentation/devicetree/mtd/nand.txt for generic bindings. 24see Documentation/devicetree/bindings/mtd/nand.txt for generic bindings.
25 25
26 26
27Examples: 27Examples:
diff --git a/Documentation/devicetree/bindings/net/broadcom-sf2.txt b/Documentation/devicetree/bindings/net/brcm,bcm7445-switch-v4.0.txt
index 30d487597ecb..30d487597ecb 100644
--- a/Documentation/devicetree/bindings/net/broadcom-sf2.txt
+++ b/Documentation/devicetree/bindings/net/brcm,bcm7445-switch-v4.0.txt
diff --git a/Documentation/devicetree/bindings/net/broadcom-bcmgenet.txt b/Documentation/devicetree/bindings/net/brcm,bcmgenet.txt
index 451fef26b4df..451fef26b4df 100644
--- a/Documentation/devicetree/bindings/net/broadcom-bcmgenet.txt
+++ b/Documentation/devicetree/bindings/net/brcm,bcmgenet.txt
diff --git a/Documentation/devicetree/bindings/net/broadcom-systemport.txt b/Documentation/devicetree/bindings/net/brcm,systemport.txt
index 877da34145b0..877da34145b0 100644
--- a/Documentation/devicetree/bindings/net/broadcom-systemport.txt
+++ b/Documentation/devicetree/bindings/net/brcm,systemport.txt
diff --git a/Documentation/devicetree/bindings/net/broadcom-mdio-unimac.txt b/Documentation/devicetree/bindings/net/brcm,unimac-mdio.txt
index ab0bb4247d14..ab0bb4247d14 100644
--- a/Documentation/devicetree/bindings/net/broadcom-mdio-unimac.txt
+++ b/Documentation/devicetree/bindings/net/brcm,unimac-mdio.txt
diff --git a/Documentation/devicetree/bindings/net/ethernet.txt b/Documentation/devicetree/bindings/net/ethernet.txt
index 3fc360523bc9..41b3f3f864e8 100644
--- a/Documentation/devicetree/bindings/net/ethernet.txt
+++ b/Documentation/devicetree/bindings/net/ethernet.txt
@@ -19,6 +19,12 @@ The following properties are common to the Ethernet controllers:
19- phy: the same as "phy-handle" property, not recommended for new bindings. 19- phy: the same as "phy-handle" property, not recommended for new bindings.
20- phy-device: the same as "phy-handle" property, not recommended for new 20- phy-device: the same as "phy-handle" property, not recommended for new
21 bindings. 21 bindings.
22- rx-fifo-depth: the size of the controller's receive fifo in bytes. This
23 is used for components that can have configurable receive fifo sizes,
24 and is useful for determining certain configuration settings such as
25 flow control thresholds.
26- tx-fifo-depth: the size of the controller's transmit fifo in bytes. This
27 is used for components that can have configurable fifo sizes.
22 28
23Child nodes of the Ethernet controller are typically the individual PHY devices 29Child nodes of the Ethernet controller are typically the individual PHY devices
24connected via the MDIO bus (sometimes the MDIO bus controller is separate). 30connected via the MDIO bus (sometimes the MDIO bus controller is separate).
diff --git a/Documentation/devicetree/bindings/net/stmmac.txt b/Documentation/devicetree/bindings/net/stmmac.txt
index 29aca8591b16..f34fc3c81a75 100644
--- a/Documentation/devicetree/bindings/net/stmmac.txt
+++ b/Documentation/devicetree/bindings/net/stmmac.txt
@@ -45,6 +45,8 @@ Optional properties:
45 If not passed then the system clock will be used and this is fine on some 45 If not passed then the system clock will be used and this is fine on some
46 platforms. 46 platforms.
47- snps,burst_len: The AXI burst lenth value of the AXI BUS MODE register. 47- snps,burst_len: The AXI burst lenth value of the AXI BUS MODE register.
48- tx-fifo-depth: See ethernet.txt file in the same directory
49- rx-fifo-depth: See ethernet.txt file in the same directory
48 50
49Examples: 51Examples:
50 52
@@ -59,6 +61,8 @@ Examples:
59 phy-mode = "gmii"; 61 phy-mode = "gmii";
60 snps,multicast-filter-bins = <256>; 62 snps,multicast-filter-bins = <256>;
61 snps,perfect-filter-entries = <128>; 63 snps,perfect-filter-entries = <128>;
64 rx-fifo-depth = <16384>;
65 tx-fifo-depth = <16384>;
62 clocks = <&clock>; 66 clocks = <&clock>;
63 clock-names = "stmmaceth"; 67 clock-names = "stmmaceth";
64 }; 68 };
diff --git a/Documentation/devicetree/bindings/net/wireless/ti,wlcore.txt b/Documentation/devicetree/bindings/net/wireless/ti,wlcore.txt
new file mode 100644
index 000000000000..2a3d90de18ee
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/wireless/ti,wlcore.txt
@@ -0,0 +1,47 @@
1TI Wilink 6/7/8 (wl12xx/wl18xx) SDIO devices
2
3This node provides properties for controlling the wilink wireless device. The
4node is expected to be specified as a child node to the SDIO controller that
5connects the device to the system.
6
7Required properties:
8 - compatible: should be one of the following:
9 * "ti,wl1271"
10 * "ti,wl1273"
11 * "ti,wl1281"
12 * "ti,wl1283"
13 * "ti,wl1801"
14 * "ti,wl1805"
15 * "ti,wl1807"
16 * "ti,wl1831"
17 * "ti,wl1835"
18 * "ti,wl1837"
19 - interrupts : specifies attributes for the out-of-band interrupt.
20
21Optional properties:
22 - interrupt-parent : the phandle for the interrupt controller to which the
23 device interrupts are connected.
24 - ref-clock-frequency : ref clock frequency in Hz
25 - tcxo-clock-frequency : tcxo clock frequency in Hz
26
27Note: the *-clock-frequency properties assume internal clocks. In case of external
28clock, new bindings (for parsing the clock nodes) have to be added.
29
30Example:
31
32&mmc3 {
33 status = "okay";
34 vmmc-supply = <&wlan_en_reg>;
35 bus-width = <4>;
36 cap-power-off-card;
37 keep-power-in-suspend;
38
39 #address-cells = <1>;
40 #size-cells = <0>;
41 wlcore: wlcore@2 {
42 compatible = "ti,wl1835";
43 reg = <2>;
44 interrupt-parent = <&gpio0>;
45 interrupts = <19 IRQ_TYPE_LEVEL_HIGH>;
46 };
47};
diff --git a/Documentation/devicetree/bindings/panel/ampire,am800480r3tmqwa1h.txt b/Documentation/devicetree/bindings/panel/ampire,am800480r3tmqwa1h.txt
new file mode 100644
index 000000000000..83e2cae1cc1b
--- /dev/null
+++ b/Documentation/devicetree/bindings/panel/ampire,am800480r3tmqwa1h.txt
@@ -0,0 +1,7 @@
1Ampire AM-800480R3TMQW-A1H 7.0" WVGA TFT LCD panel
2
3Required properties:
4- compatible: should be "ampire,am800480r3tmqwa1h"
5
6This binding is compatible with the simple-panel binding, which is specified
7in simple-panel.txt in this directory.
diff --git a/Documentation/devicetree/bindings/panel/auo,b101ean01.txt b/Documentation/devicetree/bindings/panel/auo,b101ean01.txt
new file mode 100644
index 000000000000..3590b0741619
--- /dev/null
+++ b/Documentation/devicetree/bindings/panel/auo,b101ean01.txt
@@ -0,0 +1,7 @@
1AU Optronics Corporation 10.1" WSVGA TFT LCD panel
2
3Required properties:
4- compatible: should be "auo,b101ean01"
5
6This binding is compatible with the simple-panel binding, which is specified
7in simple-panel.txt in this directory.
diff --git a/Documentation/devicetree/bindings/panel/innolux,at043tn24.txt b/Documentation/devicetree/bindings/panel/innolux,at043tn24.txt
new file mode 100644
index 000000000000..4104226b61bc
--- /dev/null
+++ b/Documentation/devicetree/bindings/panel/innolux,at043tn24.txt
@@ -0,0 +1,7 @@
1Innolux AT043TN24 4.3" WQVGA TFT LCD panel
2
3Required properties:
4- compatible: should be "innolux,at043tn24"
5
6This binding is compatible with the simple-panel binding, which is specified
7in simple-panel.txt in this directory.
diff --git a/Documentation/devicetree/bindings/panel/innolux,zj070na-01p.txt b/Documentation/devicetree/bindings/panel/innolux,zj070na-01p.txt
new file mode 100644
index 000000000000..824f87f1526d
--- /dev/null
+++ b/Documentation/devicetree/bindings/panel/innolux,zj070na-01p.txt
@@ -0,0 +1,7 @@
1Innolux Corporation 7.0" WSVGA (1024x600) TFT LCD panel
2
3Required properties:
4- compatible: should be "innolux,zj070na-01p"
5
6This binding is compatible with the simple-panel binding, which is specified
7in simple-panel.txt in this directory.
diff --git a/Documentation/devicetree/bindings/panel/ortustech,com43h4m85ulc.txt b/Documentation/devicetree/bindings/panel/ortustech,com43h4m85ulc.txt
new file mode 100644
index 000000000000..de19e9398618
--- /dev/null
+++ b/Documentation/devicetree/bindings/panel/ortustech,com43h4m85ulc.txt
@@ -0,0 +1,7 @@
1OrtusTech COM43H4M85ULC Blanview 3.7" TFT-LCD panel
2
3Required properties:
4- compatible: should be "ortustech,com43h4m85ulc"
5
6This binding is compatible with the simple-panel binding, which is specified
7in simple-panel.txt in this directory.
diff --git a/Documentation/devicetree/bindings/panel/samsung,ltn140at29-301.txt b/Documentation/devicetree/bindings/panel/samsung,ltn140at29-301.txt
new file mode 100644
index 000000000000..e7f969d891cc
--- /dev/null
+++ b/Documentation/devicetree/bindings/panel/samsung,ltn140at29-301.txt
@@ -0,0 +1,7 @@
1Samsung Electronics 14" WXGA (1366x768) TFT LCD panel
2
3Required properties:
4- compatible: should be "samsung,ltn140at29-301"
5
6This binding is compatible with the simple-panel binding, which is specified
7in simple-panel.txt in this directory.
diff --git a/Documentation/devicetree/bindings/panel/shelly,sca07010-bfn-lnn.txt b/Documentation/devicetree/bindings/panel/shelly,sca07010-bfn-lnn.txt
new file mode 100644
index 000000000000..fc1ea9e26c94
--- /dev/null
+++ b/Documentation/devicetree/bindings/panel/shelly,sca07010-bfn-lnn.txt
@@ -0,0 +1,7 @@
1Shelly SCA07010-BFN-LNN 7.0" WVGA TFT LCD panel
2
3Required properties:
4- compatible: should be "shelly,sca07010-bfn-lnn"
5
6This binding is compatible with the simple-panel binding, which is specified
7in simple-panel.txt in this directory.
diff --git a/Documentation/devicetree/bindings/phy/bcm-phy.txt b/Documentation/devicetree/bindings/phy/brcm,kona-usb2-phy.txt
index 3dc8b3d2ffbb..3dc8b3d2ffbb 100644
--- a/Documentation/devicetree/bindings/phy/bcm-phy.txt
+++ b/Documentation/devicetree/bindings/phy/brcm,kona-usb2-phy.txt
diff --git a/Documentation/devicetree/bindings/power/fsl,imx-gpc.txt b/Documentation/devicetree/bindings/power/fsl,imx-gpc.txt
new file mode 100644
index 000000000000..65cc0345747d
--- /dev/null
+++ b/Documentation/devicetree/bindings/power/fsl,imx-gpc.txt
@@ -0,0 +1,59 @@
1Freescale i.MX General Power Controller
2=======================================
3
4The i.MX6Q General Power Control (GPC) block contains DVFS load tracking
5counters and Power Gating Control (PGC) for the CPU and PU (GPU/VPU) power
6domains.
7
8Required properties:
9- compatible: Should be "fsl,imx6q-gpc" or "fsl,imx6sl-gpc"
10- reg: should be register base and length as documented in the
11 datasheet
12- interrupts: Should contain GPC interrupt request 1
13- pu-supply: Link to the LDO regulator powering the PU power domain
14- clocks: Clock phandles to devices in the PU power domain that need
15 to be enabled during domain power-up for reset propagation.
16- #power-domain-cells: Should be 1, see below:
17
18The gpc node is a power-controller as documented by the generic power domain
19bindings in Documentation/devicetree/bindings/power/power_domain.txt.
20
21Example:
22
23 gpc: gpc@020dc000 {
24 compatible = "fsl,imx6q-gpc";
25 reg = <0x020dc000 0x4000>;
26 interrupts = <0 89 IRQ_TYPE_LEVEL_HIGH>,
27 <0 90 IRQ_TYPE_LEVEL_HIGH>;
28 pu-supply = <&reg_pu>;
29 clocks = <&clks IMX6QDL_CLK_GPU3D_CORE>,
30 <&clks IMX6QDL_CLK_GPU3D_SHADER>,
31 <&clks IMX6QDL_CLK_GPU2D_CORE>,
32 <&clks IMX6QDL_CLK_GPU2D_AXI>,
33 <&clks IMX6QDL_CLK_OPENVG_AXI>,
34 <&clks IMX6QDL_CLK_VPU_AXI>;
35 #power-domain-cells = <1>;
36 };
37
38
39Specifying power domain for IP modules
40======================================
41
42IP cores belonging to a power domain should contain a 'power-domains' property
43that is a phandle pointing to the gpc device node and a DOMAIN_INDEX specifying
44the power domain the device belongs to.
45
46Example of a device that is part of the PU power domain:
47
48 vpu: vpu@02040000 {
49 reg = <0x02040000 0x3c000>;
50 /* ... */
51 power-domains = <&gpc 1>;
52 /* ... */
53 };
54
55The following DOMAIN_INDEX values are valid for i.MX6Q:
56ARM_DOMAIN 0
57PU_DOMAIN 1
58The following additional DOMAIN_INDEX value is valid for i.MX6SL:
59DISPLAY_DOMAIN 2
diff --git a/Documentation/devicetree/bindings/power/renesas,sysc-rmobile.txt b/Documentation/devicetree/bindings/power/renesas,sysc-rmobile.txt
index cc3b1f0a9b1a..beda7d2efc30 100644
--- a/Documentation/devicetree/bindings/power/renesas,sysc-rmobile.txt
+++ b/Documentation/devicetree/bindings/power/renesas,sysc-rmobile.txt
@@ -11,6 +11,7 @@ Required properties:
11- compatible: Should be "renesas,sysc-<soctype>", "renesas,sysc-rmobile" as 11- compatible: Should be "renesas,sysc-<soctype>", "renesas,sysc-rmobile" as
12 fallback. 12 fallback.
13 Examples with soctypes are: 13 Examples with soctypes are:
14 - "renesas,sysc-r8a73a4" (R-Mobile APE6)
14 - "renesas,sysc-r8a7740" (R-Mobile A1) 15 - "renesas,sysc-r8a7740" (R-Mobile A1)
15 - "renesas,sysc-sh73a0" (SH-Mobile AG5) 16 - "renesas,sysc-sh73a0" (SH-Mobile AG5)
16- reg: Two address start and address range blocks for the device: 17- reg: Two address start and address range blocks for the device:
diff --git a/Documentation/devicetree/bindings/pwm/bcm-kona-pwm.txt b/Documentation/devicetree/bindings/pwm/brcm,kona-pwm.txt
index 8eae9fe7841c..8eae9fe7841c 100644
--- a/Documentation/devicetree/bindings/pwm/bcm-kona-pwm.txt
+++ b/Documentation/devicetree/bindings/pwm/brcm,kona-pwm.txt
diff --git a/Documentation/devicetree/bindings/pwm/imx-pwm.txt b/Documentation/devicetree/bindings/pwm/imx-pwm.txt
index b50d7a6d9d7f..e00c2e9f484d 100644
--- a/Documentation/devicetree/bindings/pwm/imx-pwm.txt
+++ b/Documentation/devicetree/bindings/pwm/imx-pwm.txt
@@ -1,10 +1,17 @@
1Freescale i.MX PWM controller 1Freescale i.MX PWM controller
2 2
3Required properties: 3Required properties:
4- compatible: should be "fsl,<soc>-pwm" 4- compatible : should be "fsl,<soc>-pwm" and one of the following
5 compatible strings:
6 - "fsl,imx1-pwm" for PWM compatible with the one integrated on i.MX1
7 - "fsl,imx27-pwm" for PWM compatible with the one integrated on i.MX27
5- reg: physical base address and length of the controller's registers 8- reg: physical base address and length of the controller's registers
6- #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
7 the cells format. 10 the cells format.
11- clocks : Clock specifiers for both ipg and per clocks.
12- clock-names : Clock names should include both "ipg" and "per"
13See the clock consumer binding,
14 Documentation/devicetree/bindings/clock/clock-bindings.txt
8- interrupts: The interrupt for the pwm controller 15- interrupts: The interrupt for the pwm controller
9 16
10Example: 17Example:
@@ -13,5 +20,8 @@ pwm1: pwm@53fb4000 {
13 #pwm-cells = <2>; 20 #pwm-cells = <2>;
14 compatible = "fsl,imx53-pwm", "fsl,imx27-pwm"; 21 compatible = "fsl,imx53-pwm", "fsl,imx27-pwm";
15 reg = <0x53fb4000 0x4000>; 22 reg = <0x53fb4000 0x4000>;
23 clocks = <&clks IMX5_CLK_PWM1_IPG_GATE>,
24 <&clks IMX5_CLK_PWM1_HF_GATE>;
25 clock-names = "ipg", "per";
16 interrupts = <61>; 26 interrupts = <61>;
17}; 27};
diff --git a/Documentation/devicetree/bindings/arm/bcm/kona-resetmgr.txt b/Documentation/devicetree/bindings/reset/brcm,bcm21664-resetmgr.txt
index 93f31ca1ef4b..93f31ca1ef4b 100644
--- a/Documentation/devicetree/bindings/arm/bcm/kona-resetmgr.txt
+++ b/Documentation/devicetree/bindings/reset/brcm,bcm21664-resetmgr.txt
diff --git a/Documentation/devicetree/bindings/rtc/digicolor-rtc.txt b/Documentation/devicetree/bindings/rtc/digicolor-rtc.txt
new file mode 100644
index 000000000000..d464986012cd
--- /dev/null
+++ b/Documentation/devicetree/bindings/rtc/digicolor-rtc.txt
@@ -0,0 +1,17 @@
1Conexant Digicolor Real Time Clock controller
2
3This binding currently supports the CX92755 SoC.
4
5Required properties:
6- compatible: should be "cnxt,cx92755-rtc"
7- reg: physical base address of the controller and length of memory mapped
8 region.
9- interrupts: rtc alarm interrupt
10
11Example:
12
13 rtc@f0000c30 {
14 compatible = "cnxt,cx92755-rtc";
15 reg = <0xf0000c30 0x18>;
16 interrupts = <25>;
17 };
diff --git a/Documentation/devicetree/bindings/rtc/stmp3xxx-rtc.txt b/Documentation/devicetree/bindings/rtc/stmp3xxx-rtc.txt
index b800070fe6e9..fa6a94226669 100644
--- a/Documentation/devicetree/bindings/rtc/stmp3xxx-rtc.txt
+++ b/Documentation/devicetree/bindings/rtc/stmp3xxx-rtc.txt
@@ -7,6 +7,11 @@ Required properties:
7 region. 7 region.
8- interrupts: rtc alarm interrupt 8- interrupts: rtc alarm interrupt
9 9
10Optional properties:
11- stmp,crystal-freq: override crystal frequency as determined from fuse bits.
12 Only <32000> and <32768> are possible for the hardware. Use <0> for
13 "no crystal".
14
10Example: 15Example:
11 16
12rtc@80056000 { 17rtc@80056000 {
diff --git a/Documentation/devicetree/bindings/serial/atmel-usart.txt b/Documentation/devicetree/bindings/serial/atmel-usart.txt
index a6391e70a8fd..90787aa2e648 100644
--- a/Documentation/devicetree/bindings/serial/atmel-usart.txt
+++ b/Documentation/devicetree/bindings/serial/atmel-usart.txt
@@ -1,9 +1,10 @@
1* Atmel Universal Synchronous Asynchronous Receiver/Transmitter (USART) 1* Atmel Universal Synchronous Asynchronous Receiver/Transmitter (USART)
2 2
3Required properties: 3Required properties:
4- compatible: Should be "atmel,<chip>-usart" 4- compatible: Should be "atmel,<chip>-usart" or "atmel,<chip>-dbgu"
5 The compatible <chip> indicated will be the first SoC to support an 5 The compatible <chip> indicated will be the first SoC to support an
6 additional mode or an USART new feature. 6 additional mode or an USART new feature.
7 For the dbgu UART, use "atmel,<chip>-dbgu", "atmel,<chip>-usart"
7- reg: Should contain registers location and length 8- reg: Should contain registers location and length
8- interrupts: Should contain interrupt 9- interrupts: Should contain interrupt
9- clock-names: tuple listing input clock names. 10- clock-names: tuple listing input clock names.
diff --git a/Documentation/devicetree/bindings/serial/bcm63xx-uart.txt b/Documentation/devicetree/bindings/serial/brcm,bcm6345-uart.txt
index 5c52e5eef16d..5c52e5eef16d 100644
--- a/Documentation/devicetree/bindings/serial/bcm63xx-uart.txt
+++ b/Documentation/devicetree/bindings/serial/brcm,bcm6345-uart.txt
diff --git a/Documentation/devicetree/bindings/serial/omap_serial.txt b/Documentation/devicetree/bindings/serial/omap_serial.txt
index 342eedd10050..54c2a155c783 100644
--- a/Documentation/devicetree/bindings/serial/omap_serial.txt
+++ b/Documentation/devicetree/bindings/serial/omap_serial.txt
@@ -4,7 +4,27 @@ Required properties:
4- compatible : should be "ti,omap2-uart" for OMAP2 controllers 4- compatible : should be "ti,omap2-uart" for OMAP2 controllers
5- compatible : should be "ti,omap3-uart" for OMAP3 controllers 5- compatible : should be "ti,omap3-uart" for OMAP3 controllers
6- compatible : should be "ti,omap4-uart" for OMAP4 controllers 6- compatible : should be "ti,omap4-uart" for OMAP4 controllers
7- reg : address and length of the register space
8- interrupts or interrupts-extended : Should contain the uart interrupt
9 specifier or both the interrupt
10 controller phandle and interrupt
11 specifier.
7- ti,hwmods : Must be "uart<n>", n being the instance number (1-based) 12- ti,hwmods : Must be "uart<n>", n being the instance number (1-based)
8 13
9Optional properties: 14Optional properties:
10- clock-frequency : frequency of the clock input to the UART 15- clock-frequency : frequency of the clock input to the UART
16- dmas : DMA specifier, consisting of a phandle to the DMA controller
17 node and a DMA channel number.
18- dma-names : "rx" for receive channel, "tx" for transmit channel.
19
20Example:
21
22 uart4: serial@49042000 {
23 compatible = "ti,omap3-uart";
24 reg = <0x49042000 0x400>;
25 interrupts = <80>;
26 dmas = <&sdma 81 &sdma 82>;
27 dma-names = "tx", "rx";
28 ti,hwmods = "uart4";
29 clock-frequency = <48000000>;
30 };
diff --git a/Documentation/devicetree/bindings/soc/mediatek/pwrap.txt b/Documentation/devicetree/bindings/soc/mediatek/pwrap.txt
new file mode 100644
index 000000000000..ddeb5b6a53c1
--- /dev/null
+++ b/Documentation/devicetree/bindings/soc/mediatek/pwrap.txt
@@ -0,0 +1,58 @@
1MediaTek PMIC Wrapper Driver
2
3This document describes the binding for the MediaTek PMIC wrapper.
4
5On MediaTek SoCs the PMIC is connected via SPI. The SPI master interface
6is not directly visible to the CPU, but only through the PMIC wrapper
7inside the SoC. The communication between the SoC and the PMIC can
8optionally be encrypted. Also a non standard Dual IO SPI mode can be
9used to increase speed.
10
11IP Pairing
12
13on MT8135 the pins of some SoC internal peripherals can be on the PMIC.
14The signals of these pins are routed over the SPI bus using the pwrap
15bridge. In the binding description below the properties needed for bridging
16are marked with "IP Pairing". These are optional on SoCs which do not support
17IP Pairing
18
19Required properties in pwrap device node.
20- compatible:
21 "mediatek,mt8135-pwrap" for MT8135 SoCs
22 "mediatek,mt8173-pwrap" for MT8173 SoCs
23- interrupts: IRQ for pwrap in SOC
24- reg-names: Must include the following entries:
25 "pwrap": Main registers base
26 "pwrap-bridge": bridge base (IP Pairing)
27- reg: Must contain an entry for each entry in reg-names.
28- reset-names: Must include the following entries:
29 "pwrap"
30 "pwrap-bridge" (IP Pairing)
31- resets: Must contain an entry for each entry in reset-names.
32- clock-names: Must include the following entries:
33 "spi": SPI bus clock
34 "wrap": Main module clock
35- clocks: Must contain an entry for each entry in clock-names.
36
37Optional properities:
38- pmic: Mediatek PMIC MFD is the child device of pwrap
39 See the following for child node definitions:
40 Documentation/devicetree/bindings/mfd/mt6397.txt
41
42Example:
43 pwrap: pwrap@1000f000 {
44 compatible = "mediatek,mt8135-pwrap";
45 reg = <0 0x1000f000 0 0x1000>,
46 <0 0x11017000 0 0x1000>;
47 reg-names = "pwrap", "pwrap-bridge";
48 interrupts = <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>;
49 resets = <&infracfg MT8135_INFRA_PMIC_WRAP_RST>,
50 <&pericfg MT8135_PERI_PWRAP_BRIDGE_SW_RST>;
51 reset-names = "pwrap", "pwrap-bridge";
52 clocks = <&clk26m>, <&clk26m>;
53 clock-names = "spi", "wrap";
54
55 pmic {
56 compatible = "mediatek,mt6397";
57 };
58 };
diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,gsbi.txt b/Documentation/devicetree/bindings/soc/qcom/qcom,gsbi.txt
index 4ce24d425bf1..2f5ede39bea2 100644
--- a/Documentation/devicetree/bindings/soc/qcom/qcom,gsbi.txt
+++ b/Documentation/devicetree/bindings/soc/qcom/qcom,gsbi.txt
@@ -6,7 +6,8 @@ configuration settings. The mode setting will govern the input/output mode of
6the 4 GSBI IOs. 6the 4 GSBI IOs.
7 7
8Required properties: 8Required properties:
9- compatible: must contain "qcom,gsbi-v1.0.0" for APQ8064/IPQ8064 9- compatible: Should contain "qcom,gsbi-v1.0.0"
10- cell-index: Should contain the GSBI index
10- reg: Address range for GSBI registers 11- reg: Address range for GSBI registers
11- clocks: required clock 12- clocks: required clock
12- clock-names: must contain "iface" entry 13- clock-names: must contain "iface" entry
@@ -16,6 +17,8 @@ Required properties:
16Optional properties: 17Optional properties:
17- qcom,crci : indicates CRCI MUX value for QUP CRCI ports. Please reference 18- qcom,crci : indicates CRCI MUX value for QUP CRCI ports. Please reference
18 dt-bindings/soc/qcom,gsbi.h for valid CRCI mux values. 19 dt-bindings/soc/qcom,gsbi.h for valid CRCI mux values.
20- syscon-tcsr: indicates phandle of TCSR syscon node. Required if child uses
21 dma.
19 22
20Required properties if child node exists: 23Required properties if child node exists:
21- #address-cells: Must be 1 24- #address-cells: Must be 1
@@ -39,6 +42,7 @@ Example for APQ8064:
39 42
40 gsbi4@16300000 { 43 gsbi4@16300000 {
41 compatible = "qcom,gsbi-v1.0.0"; 44 compatible = "qcom,gsbi-v1.0.0";
45 cell-index = <4>;
42 reg = <0x16300000 0x100>; 46 reg = <0x16300000 0x100>;
43 clocks = <&gcc GSBI4_H_CLK>; 47 clocks = <&gcc GSBI4_H_CLK>;
44 clock-names = "iface"; 48 clock-names = "iface";
@@ -48,22 +52,24 @@ Example for APQ8064:
48 qcom,mode = <GSBI_PROT_I2C_UART>; 52 qcom,mode = <GSBI_PROT_I2C_UART>;
49 qcom,crci = <GSBI_CRCI_QUP>; 53 qcom,crci = <GSBI_CRCI_QUP>;
50 54
55 syscon-tcsr = <&tcsr>;
56
51 /* child nodes go under here */ 57 /* child nodes go under here */
52 58
53 i2c_qup4: i2c@16380000 { 59 i2c_qup4: i2c@16380000 {
54 compatible = "qcom,i2c-qup-v1.1.1"; 60 compatible = "qcom,i2c-qup-v1.1.1";
55 reg = <0x16380000 0x1000>; 61 reg = <0x16380000 0x1000>;
56 interrupts = <0 153 0>; 62 interrupts = <0 153 0>;
57 63
58 clocks = <&gcc GSBI4_QUP_CLK>, <&gcc GSBI4_H_CLK>; 64 clocks = <&gcc GSBI4_QUP_CLK>, <&gcc GSBI4_H_CLK>;
59 clock-names = "core", "iface"; 65 clock-names = "core", "iface";
60 66
61 clock-frequency = <200000>; 67 clock-frequency = <200000>;
62 68
63 #address-cells = <1>; 69 #address-cells = <1>;
64 #size-cells = <0>; 70 #size-cells = <0>;
65 71
66 }; 72 };
67 73
68 uart4: serial@16340000 { 74 uart4: serial@16340000 {
69 compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm"; 75 compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
@@ -76,3 +82,7 @@ Example for APQ8064:
76 }; 82 };
77 }; 83 };
78 84
85 tcsr: syscon@1a400000 {
86 compatible = "qcom,apq8064-tcsr", "syscon";
87 reg = <0x1a400000 0x100>;
88 };
diff --git a/Documentation/devicetree/bindings/sound/bcm2835-i2s.txt b/Documentation/devicetree/bindings/sound/brcm,bcm2835-i2s.txt
index 65783de0aedf..65783de0aedf 100644
--- a/Documentation/devicetree/bindings/sound/bcm2835-i2s.txt
+++ b/Documentation/devicetree/bindings/sound/brcm,bcm2835-i2s.txt
diff --git a/Documentation/devicetree/bindings/sound/omap-twl4030.txt b/Documentation/devicetree/bindings/sound/omap-twl4030.txt
index 1ab6bc8404d5..f6a715e4ef43 100644
--- a/Documentation/devicetree/bindings/sound/omap-twl4030.txt
+++ b/Documentation/devicetree/bindings/sound/omap-twl4030.txt
@@ -4,9 +4,9 @@ Required properties:
4- compatible: "ti,omap-twl4030" 4- compatible: "ti,omap-twl4030"
5- ti,model: Name of the sound card (for example "omap3beagle") 5- ti,model: Name of the sound card (for example "omap3beagle")
6- ti,mcbsp: phandle for the McBSP node 6- ti,mcbsp: phandle for the McBSP node
7- ti,codec: phandle for the twl4030 audio node
8 7
9Optional properties: 8Optional properties:
9- ti,codec: phandle for the twl4030 audio node
10- ti,mcbsp-voice: phandle for the McBSP node connected to the voice port of twl 10- ti,mcbsp-voice: phandle for the McBSP node connected to the voice port of twl
11- ti, jack-det-gpio: Jack detect GPIO 11- ti, jack-det-gpio: Jack detect GPIO
12- ti,audio-routing: List of connections between audio components. 12- ti,audio-routing: List of connections between audio components.
@@ -59,5 +59,4 @@ sound {
59 ti,model = "omap3beagle"; 59 ti,model = "omap3beagle";
60 60
61 ti,mcbsp = <&mcbsp2>; 61 ti,mcbsp = <&mcbsp2>;
62 ti,codec = <&twl_audio>;
63}; 62};
diff --git a/Documentation/devicetree/bindings/spmi/qcom,spmi-pmic-arb.txt b/Documentation/devicetree/bindings/spmi/qcom,spmi-pmic-arb.txt
index 715d0998af8e..e16b9b5afc70 100644
--- a/Documentation/devicetree/bindings/spmi/qcom,spmi-pmic-arb.txt
+++ b/Documentation/devicetree/bindings/spmi/qcom,spmi-pmic-arb.txt
@@ -1,6 +1,6 @@
1Qualcomm SPMI Controller (PMIC Arbiter) 1Qualcomm SPMI Controller (PMIC Arbiter)
2 2
3The SPMI PMIC Arbiter is found on the Snapdragon 800 Series. It is an SPMI 3The SPMI PMIC Arbiter is found on Snapdragon chipsets. It is an SPMI
4controller with wrapping arbitration logic to allow for multiple on-chip 4controller with wrapping arbitration logic to allow for multiple on-chip
5devices to control a single SPMI master. 5devices to control a single SPMI master.
6 6
@@ -19,6 +19,10 @@ Required properties:
19 "core" - core registers 19 "core" - core registers
20 "intr" - interrupt controller registers 20 "intr" - interrupt controller registers
21 "cnfg" - configuration registers 21 "cnfg" - configuration registers
22 Registers used only for V2 PMIC Arbiter:
23 "chnls" - tx-channel per virtual slave registers.
24 "obsrvr" - rx-channel (called observer) per virtual slave registers.
25
22- reg : address + size pairs describing the PMIC arb register sets; order must 26- reg : address + size pairs describing the PMIC arb register sets; order must
23 correspond with the order of entries in reg-names 27 correspond with the order of entries in reg-names
24- #address-cells : must be set to 2 28- #address-cells : must be set to 2
diff --git a/Documentation/devicetree/bindings/arm/bcm/kona-timer.txt b/Documentation/devicetree/bindings/timer/brcm,kona-timer.txt
index 39adf54b4388..39adf54b4388 100644
--- a/Documentation/devicetree/bindings/arm/bcm/kona-timer.txt
+++ b/Documentation/devicetree/bindings/timer/brcm,kona-timer.txt
diff --git a/Documentation/devicetree/bindings/unittest.txt b/Documentation/devicetree/bindings/unittest.txt
index 8933211f32f9..3bf58c20fe94 100644
--- a/Documentation/devicetree/bindings/unittest.txt
+++ b/Documentation/devicetree/bindings/unittest.txt
@@ -1,60 +1,60 @@
11) OF selftest platform device 11) OF unittest platform device
2 2
3** selftest 3** unittest
4 4
5Required properties: 5Required properties:
6- compatible: must be "selftest" 6- compatible: must be "unittest"
7 7
8All other properties are optional. 8All other properties are optional.
9 9
10Example: 10Example:
11 selftest { 11 unittest {
12 compatible = "selftest"; 12 compatible = "unittest";
13 status = "okay"; 13 status = "okay";
14 }; 14 };
15 15
162) OF selftest i2c adapter platform device 162) OF unittest i2c adapter platform device
17 17
18** platform device unittest adapter 18** platform device unittest adapter
19 19
20Required properties: 20Required properties:
21- compatible: must be selftest-i2c-bus 21- compatible: must be unittest-i2c-bus
22 22
23Children nodes contain selftest i2c devices. 23Children nodes contain unittest i2c devices.
24 24
25Example: 25Example:
26 selftest-i2c-bus { 26 unittest-i2c-bus {
27 compatible = "selftest-i2c-bus"; 27 compatible = "unittest-i2c-bus";
28 status = "okay"; 28 status = "okay";
29 }; 29 };
30 30
313) OF selftest i2c device 313) OF unittest i2c device
32 32
33** I2C selftest device 33** I2C unittest device
34 34
35Required properties: 35Required properties:
36- compatible: must be selftest-i2c-dev 36- compatible: must be unittest-i2c-dev
37 37
38All other properties are optional 38All other properties are optional
39 39
40Example: 40Example:
41 selftest-i2c-dev { 41 unittest-i2c-dev {
42 compatible = "selftest-i2c-dev"; 42 compatible = "unittest-i2c-dev";
43 status = "okay"; 43 status = "okay";
44 }; 44 };
45 45
464) OF selftest i2c mux device 464) OF unittest i2c mux device
47 47
48** I2C selftest mux 48** I2C unittest mux
49 49
50Required properties: 50Required properties:
51- compatible: must be selftest-i2c-mux 51- compatible: must be unittest-i2c-mux
52 52
53Children nodes contain selftest i2c bus nodes per channel. 53Children nodes contain unittest i2c bus nodes per channel.
54 54
55Example: 55Example:
56 selftest-i2c-mux { 56 unittest-i2c-mux {
57 compatible = "selftest-i2c-mux"; 57 compatible = "unittest-i2c-mux";
58 status = "okay"; 58 status = "okay";
59 #address-cells = <1>; 59 #address-cells = <1>;
60 #size-cells = <0>; 60 #size-cells = <0>;
@@ -64,7 +64,7 @@ Example:
64 #size-cells = <0>; 64 #size-cells = <0>;
65 i2c-dev { 65 i2c-dev {
66 reg = <8>; 66 reg = <8>;
67 compatible = "selftest-i2c-dev"; 67 compatible = "unittest-i2c-dev";
68 status = "okay"; 68 status = "okay";
69 }; 69 };
70 }; 70 };
diff --git a/Documentation/devicetree/bindings/mips/brcm/usb.txt b/Documentation/devicetree/bindings/usb/brcm,bcm3384-usb.txt
index 452c45c7bf29..452c45c7bf29 100644
--- a/Documentation/devicetree/bindings/mips/brcm/usb.txt
+++ b/Documentation/devicetree/bindings/usb/brcm,bcm3384-usb.txt
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt
index b13aa55b7a6f..80339192c93e 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.txt
+++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
@@ -11,18 +11,22 @@ adapteva Adapteva, Inc.
11adh AD Holdings Plc. 11adh AD Holdings Plc.
12adi Analog Devices, Inc. 12adi Analog Devices, Inc.
13aeroflexgaisler Aeroflex Gaisler AB 13aeroflexgaisler Aeroflex Gaisler AB
14al Annapurna Labs
14allwinner Allwinner Technology Co., Ltd. 15allwinner Allwinner Technology Co., Ltd.
15alphascale AlphaScale Integrated Circuits Systems, Inc. 16alphascale AlphaScale Integrated Circuits Systems, Inc.
16altr Altera Corp. 17altr Altera Corp.
17amcc Applied Micro Circuits Corporation (APM, formally AMCC) 18amcc Applied Micro Circuits Corporation (APM, formally AMCC)
18amd Advanced Micro Devices (AMD), Inc. 19amd Advanced Micro Devices (AMD), Inc.
19amlogic Amlogic, Inc. 20amlogic Amlogic, Inc.
21ampire Ampire Co., Ltd.
20ams AMS AG 22ams AMS AG
21amstaos AMS-Taos Inc. 23amstaos AMS-Taos Inc.
22apm Applied Micro Circuits Corporation (APM) 24apm Applied Micro Circuits Corporation (APM)
25aptina Aptina Imaging
23arasan Arasan Chip Systems 26arasan Arasan Chip Systems
24arm ARM Ltd. 27arm ARM Ltd.
25armadeus ARMadeus Systems SARL 28armadeus ARMadeus Systems SARL
29artesyn Artesyn Embedded Technologies Inc.
26asahi-kasei Asahi Kasei Corp. 30asahi-kasei Asahi Kasei Corp.
27atmel Atmel Corporation 31atmel Atmel Corporation
28auo AU Optronics Corporation 32auo AU Optronics Corporation
@@ -81,6 +85,7 @@ globalscale Globalscale Technologies, Inc.
81gmt Global Mixed-mode Technology, Inc. 85gmt Global Mixed-mode Technology, Inc.
82goodix Shenzhen Huiding Technology Co., Ltd. 86goodix Shenzhen Huiding Technology Co., Ltd.
83google Google, Inc. 87google Google, Inc.
88grinn Grinn
84gumstix Gumstix, Inc. 89gumstix Gumstix, Inc.
85gw Gateworks Corporation 90gw Gateworks Corporation
86hannstar HannStar Display Corporation 91hannstar HannStar Display Corporation
@@ -116,6 +121,7 @@ merrii Merrii Technology Co., Ltd.
116micrel Micrel Inc. 121micrel Micrel Inc.
117microchip Microchip Technology Inc. 122microchip Microchip Technology Inc.
118micron Micron Technology Inc. 123micron Micron Technology Inc.
124minix MINIX Technology Ltd.
119mitsubishi Mitsubishi Electric Corporation 125mitsubishi Mitsubishi Electric Corporation
120mosaixtech Mosaix Technologies, Inc. 126mosaixtech Mosaix Technologies, Inc.
121moxa Moxa 127moxa Moxa
@@ -135,6 +141,7 @@ nvidia NVIDIA
135nxp NXP Semiconductors 141nxp NXP Semiconductors
136onnn ON Semiconductor Corp. 142onnn ON Semiconductor Corp.
137opencores OpenCores.org 143opencores OpenCores.org
144ortustech Ortus Technology Co., Ltd.
138ovti OmniVision Technologies 145ovti OmniVision Technologies
139panasonic Panasonic Corporation 146panasonic Panasonic Corporation
140parade Parade Technologies Inc. 147parade Parade Technologies Inc.
diff --git a/Documentation/devicetree/bindings/video/atmel,lcdc.txt b/Documentation/devicetree/bindings/video/atmel,lcdc.txt
index f059dd0b3d28..ecb8da063d07 100644
--- a/Documentation/devicetree/bindings/video/atmel,lcdc.txt
+++ b/Documentation/devicetree/bindings/video/atmel,lcdc.txt
@@ -10,7 +10,9 @@ Required properties:
10 "atmel,at91sam9g45es-lcdc" , 10 "atmel,at91sam9g45es-lcdc" ,
11 "atmel,at91sam9rl-lcdc" , 11 "atmel,at91sam9rl-lcdc" ,
12 "atmel,at32ap-lcdc" 12 "atmel,at32ap-lcdc"
13- reg : Should contain 1 register ranges(address and length) 13- reg : Should contain 1 register ranges(address and length).
14 Can contain an additional register range(address and length)
15 for fixed framebuffer memory. Useful for dedicated memories.
14- interrupts : framebuffer controller interrupt 16- interrupts : framebuffer controller interrupt
15- display: a phandle pointing to the display node 17- display: a phandle pointing to the display node
16 18
@@ -38,6 +40,14 @@ Example:
38 40
39 }; 41 };
40 42
43Example for fixed framebuffer memory:
44
45 fb0: fb@0x00500000 {
46 compatible = "atmel,at91sam9263-lcdc";
47 reg = <0x00700000 0x1000 0x70000000 0x200000>;
48 [...]
49 };
50
41Atmel LCDC Display 51Atmel LCDC Display
42----------------------------------------------------- 52-----------------------------------------------------
43Required properties (as per of_videomode_helper): 53Required properties (as per of_videomode_helper):
diff --git a/Documentation/devicetree/bindings/video/ti,omap-dss.txt b/Documentation/devicetree/bindings/video/ti,omap-dss.txt
index d5f1a3fe3109..e1ef29569338 100644
--- a/Documentation/devicetree/bindings/video/ti,omap-dss.txt
+++ b/Documentation/devicetree/bindings/video/ti,omap-dss.txt
@@ -25,8 +25,8 @@ Video Ports
25----------- 25-----------
26 26
27The DSS Core and the encoders have video port outputs. The structure of the 27The DSS Core and the encoders have video port outputs. The structure of the
28video ports is described in Documentation/devicetree/bindings/video/video- 28video ports is described in Documentation/devicetree/bindings/graph.txt,
29ports.txt, and the properties for the ports and endpoints for each encoder are 29and the properties for the ports and endpoints for each encoder are
30described in the SoC's DSS binding documentation. 30described in the SoC's DSS binding documentation.
31 31
32The video ports are used to describe the connections to external hardware, like 32The video ports are used to describe the connections to external hardware, like
diff --git a/Documentation/devicetree/bindings/arm/bcm/kona-wdt.txt b/Documentation/devicetree/bindings/watchdog/brcm,kona-wdt.txt
index 2b86a00e351d..2b86a00e351d 100644
--- a/Documentation/devicetree/bindings/arm/bcm/kona-wdt.txt
+++ b/Documentation/devicetree/bindings/watchdog/brcm,kona-wdt.txt
diff --git a/Documentation/devicetree/booting-without-of.txt b/Documentation/devicetree/booting-without-of.txt
index 77685185cf3b..e49e423268c0 100644
--- a/Documentation/devicetree/booting-without-of.txt
+++ b/Documentation/devicetree/booting-without-of.txt
@@ -15,6 +15,7 @@ Table of Contents
15 1) Entry point for arch/arm 15 1) Entry point for arch/arm
16 2) Entry point for arch/powerpc 16 2) Entry point for arch/powerpc
17 3) Entry point for arch/x86 17 3) Entry point for arch/x86
18 4) Entry point for arch/mips/bmips
18 19
19 II - The DT block format 20 II - The DT block format
20 1) Header 21 1) Header
@@ -288,6 +289,33 @@ it with special cases.
288 or initrd address. It simply holds information which can not be retrieved 289 or initrd address. It simply holds information which can not be retrieved
289 otherwise like interrupt routing or a list of devices behind an I2C bus. 290 otherwise like interrupt routing or a list of devices behind an I2C bus.
290 291
2924) Entry point for arch/mips/bmips
293----------------------------------
294
295 Some bootloaders only support a single entry point, at the start of the
296 kernel image. Other bootloaders will jump to the ELF start address.
297 Both schemes are supported; CONFIG_BOOT_RAW=y and CONFIG_NO_EXCEPT_FILL=y,
298 so the first instruction immediately jumps to kernel_entry().
299
300 Similar to the arch/arm case (b), a DT-aware bootloader is expected to
301 set up the following registers:
302
303 a0 : 0
304
305 a1 : 0xffffffff
306
307 a2 : Physical pointer to the device tree block (defined in chapter
308 II) in RAM. The device tree can be located anywhere in the first
309 512MB of the physical address space (0x00000000 - 0x1fffffff),
310 aligned on a 64 bit boundary.
311
312 Legacy bootloaders do not use this convention, and they do not pass in a
313 DT block. In this case, Linux will look for a builtin DTB, selected via
314 CONFIG_DT_*.
315
316 This convention is defined for 32-bit systems only, as there are not
317 currently any 64-bit BMIPS implementations.
318
291II - The DT block format 319II - The DT block format
292======================== 320========================
293 321
diff --git a/Documentation/devicetree/of_selftest.txt b/Documentation/devicetree/of_unittest.txt
index 57a808b588bf..3e4e7d48ae93 100644
--- a/Documentation/devicetree/of_selftest.txt
+++ b/Documentation/devicetree/of_unittest.txt
@@ -1,11 +1,11 @@
1Open Firmware Device Tree Selftest 1Open Firmware Device Tree Unittest
2---------------------------------- 2----------------------------------
3 3
4Author: Gaurav Minocha <gaurav.minocha.os@gmail.com> 4Author: Gaurav Minocha <gaurav.minocha.os@gmail.com>
5 5
61. Introduction 61. Introduction
7 7
8This document explains how the test data required for executing OF selftest 8This document explains how the test data required for executing OF unittest
9is attached to the live tree dynamically, independent of the machine's 9is attached to the live tree dynamically, independent of the machine's
10architecture. 10architecture.
11 11
@@ -22,31 +22,31 @@ most of the device drivers in various use cases.
22 22
232. Test-data 232. Test-data
24 24
25The Device Tree Source file (drivers/of/testcase-data/testcases.dts) contains 25The Device Tree Source file (drivers/of/unittest-data/testcases.dts) contains
26the test data required for executing the unit tests automated in 26the test data required for executing the unit tests automated in
27drivers/of/selftests.c. Currently, following Device Tree Source Include files 27drivers/of/unittest.c. Currently, following Device Tree Source Include files
28(.dtsi) are included in testcase.dts: 28(.dtsi) are included in testcases.dts:
29 29
30drivers/of/testcase-data/tests-interrupts.dtsi 30drivers/of/unittest-data/tests-interrupts.dtsi
31drivers/of/testcase-data/tests-platform.dtsi 31drivers/of/unittest-data/tests-platform.dtsi
32drivers/of/testcase-data/tests-phandle.dtsi 32drivers/of/unittest-data/tests-phandle.dtsi
33drivers/of/testcase-data/tests-match.dtsi 33drivers/of/unittest-data/tests-match.dtsi
34 34
35When the kernel is build with OF_SELFTEST enabled, then the following make rule 35When the kernel is build with OF_SELFTEST enabled, then the following make rule
36 36
37$(obj)/%.dtb: $(src)/%.dts FORCE 37$(obj)/%.dtb: $(src)/%.dts FORCE
38 $(call if_changed_dep, dtc) 38 $(call if_changed_dep, dtc)
39 39
40is used to compile the DT source file (testcase.dts) into a binary blob 40is used to compile the DT source file (testcases.dts) into a binary blob
41(testcase.dtb), also referred as flattened DT. 41(testcases.dtb), also referred as flattened DT.
42 42
43After that, using the following rule the binary blob above is wrapped as an 43After that, using the following rule the binary blob above is wrapped as an
44assembly file (testcase.dtb.S). 44assembly file (testcases.dtb.S).
45 45
46$(obj)/%.dtb.S: $(obj)/%.dtb 46$(obj)/%.dtb.S: $(obj)/%.dtb
47 $(call cmd, dt_S_dtb) 47 $(call cmd, dt_S_dtb)
48 48
49The assembly file is compiled into an object file (testcase.dtb.o), and is 49The assembly file is compiled into an object file (testcases.dtb.o), and is
50linked into the kernel image. 50linked into the kernel image.
51 51
52 52
@@ -98,7 +98,7 @@ child11 -> sibling12 -> sibling13 -> sibling14 -> null
98Figure 1: Generic structure of un-flattened device tree 98Figure 1: Generic structure of un-flattened device tree
99 99
100 100
101Before executing OF selftest, it is required to attach the test data to 101Before executing OF unittest, it is required to attach the test data to
102machine's device tree (if present). So, when selftest_data_add() is called, 102machine's device tree (if present). So, when selftest_data_add() is called,
103at first it reads the flattened device tree data linked into the kernel image 103at first it reads the flattened device tree data linked into the kernel image
104via the following kernel symbols: 104via the following kernel symbols:
diff --git a/Documentation/dma-buf-sharing.txt b/Documentation/dma-buf-sharing.txt
index bb9753b635a3..480c8de3c2c4 100644
--- a/Documentation/dma-buf-sharing.txt
+++ b/Documentation/dma-buf-sharing.txt
@@ -49,25 +49,26 @@ The dma_buf buffer sharing API usage contains the following steps:
49 The buffer exporter announces its wish to export a buffer. In this, it 49 The buffer exporter announces its wish to export a buffer. In this, it
50 connects its own private buffer data, provides implementation for operations 50 connects its own private buffer data, provides implementation for operations
51 that can be performed on the exported dma_buf, and flags for the file 51 that can be performed on the exported dma_buf, and flags for the file
52 associated with this buffer. 52 associated with this buffer. All these fields are filled in struct
53 dma_buf_export_info, defined via the DEFINE_DMA_BUF_EXPORT_INFO macro.
53 54
54 Interface: 55 Interface:
55 struct dma_buf *dma_buf_export_named(void *priv, struct dma_buf_ops *ops, 56 DEFINE_DMA_BUF_EXPORT_INFO(exp_info)
56 size_t size, int flags, 57 struct dma_buf *dma_buf_export(struct dma_buf_export_info *exp_info)
57 const char *exp_name)
58 58
59 If this succeeds, dma_buf_export_named allocates a dma_buf structure, and 59 If this succeeds, dma_buf_export allocates a dma_buf structure, and
60 returns a pointer to the same. It also associates an anonymous file with this 60 returns a pointer to the same. It also associates an anonymous file with this
61 buffer, so it can be exported. On failure to allocate the dma_buf object, 61 buffer, so it can be exported. On failure to allocate the dma_buf object,
62 it returns NULL. 62 it returns NULL.
63 63
64 'exp_name' is the name of exporter - to facilitate information while 64 'exp_name' in struct dma_buf_export_info is the name of exporter - to
65 debugging. 65 facilitate information while debugging. It is set to KBUILD_MODNAME by
66 default, so exporters don't have to provide a specific name, if they don't
67 wish to.
68
69 DEFINE_DMA_BUF_EXPORT_INFO macro defines the struct dma_buf_export_info,
70 zeroes it out and pre-populates exp_name in it.
66 71
67 Exporting modules which do not wish to provide any specific name may use the
68 helper define 'dma_buf_export()', with the same arguments as above, but
69 without the last argument; a KBUILD_MODNAME pre-processor directive will be
70 inserted in place of 'exp_name' instead.
71 72
722. Userspace gets a handle to pass around to potential buffer-users 732. Userspace gets a handle to pass around to potential buffer-users
73 74
diff --git a/Documentation/driver-model/devres.txt b/Documentation/driver-model/devres.txt
index e1e2bbd7a404..831a5363f6be 100644
--- a/Documentation/driver-model/devres.txt
+++ b/Documentation/driver-model/devres.txt
@@ -276,6 +276,7 @@ IOMAP
276 devm_ioport_unmap() 276 devm_ioport_unmap()
277 devm_ioremap() 277 devm_ioremap()
278 devm_ioremap_nocache() 278 devm_ioremap_nocache()
279 devm_ioremap_wc()
279 devm_ioremap_resource() : checks resource, requests memory region, ioremaps 280 devm_ioremap_resource() : checks resource, requests memory region, ioremaps
280 devm_iounmap() 281 devm_iounmap()
281 pcim_iomap() 282 pcim_iomap()
diff --git a/Documentation/email-clients.txt b/Documentation/email-clients.txt
index eede6088f978..c7d49b885559 100644
--- a/Documentation/email-clients.txt
+++ b/Documentation/email-clients.txt
@@ -211,7 +211,7 @@ Thunderbird (GUI)
211Thunderbird is an Outlook clone that likes to mangle text, but there are ways 211Thunderbird is an Outlook clone that likes to mangle text, but there are ways
212to coerce it into behaving. 212to coerce it into behaving.
213 213
214- Allows use of an external editor: 214- Allow use of an external editor:
215 The easiest thing to do with Thunderbird and patches is to use an 215 The easiest thing to do with Thunderbird and patches is to use an
216 "external editor" extension and then just use your favorite $EDITOR 216 "external editor" extension and then just use your favorite $EDITOR
217 for reading/merging patches into the body text. To do this, download 217 for reading/merging patches into the body text. To do this, download
@@ -219,6 +219,15 @@ to coerce it into behaving.
219 View->Toolbars->Customize... and finally just click on it when in the 219 View->Toolbars->Customize... and finally just click on it when in the
220 Compose dialog. 220 Compose dialog.
221 221
222 Please note that "external editor" requires that your editor must not
223 fork, or in other words, the editor must not return before closing.
224 You may have to pass additional flags or change the settings of your
225 editor. Most notably if you are using gvim then you must pass the -f
226 option to gvim by putting "/usr/bin/gvim -f" (if the binary is in
227 /usr/bin) to the text editor field in "external editor" settings. If you
228 are using some other editor then please read its manual to find out how
229 to do this.
230
222To beat some sense out of the internal editor, do this: 231To beat some sense out of the internal editor, do this:
223 232
224- Edit your Thunderbird config settings so that it won't use format=flowed. 233- Edit your Thunderbird config settings so that it won't use format=flowed.
diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking
index 7c3f187d48bf..0a926e2ba3ab 100644
--- a/Documentation/filesystems/Locking
+++ b/Documentation/filesystems/Locking
@@ -196,7 +196,7 @@ prototypes:
196 void (*invalidatepage) (struct page *, unsigned int, unsigned int); 196 void (*invalidatepage) (struct page *, unsigned int, unsigned int);
197 int (*releasepage) (struct page *, int); 197 int (*releasepage) (struct page *, int);
198 void (*freepage)(struct page *); 198 void (*freepage)(struct page *);
199 int (*direct_IO)(int, struct kiocb *, struct iov_iter *iter, loff_t offset); 199 int (*direct_IO)(struct kiocb *, struct iov_iter *iter, loff_t offset);
200 int (*migratepage)(struct address_space *, struct page *, struct page *); 200 int (*migratepage)(struct address_space *, struct page *, struct page *);
201 int (*launder_page)(struct page *); 201 int (*launder_page)(struct page *);
202 int (*is_partially_uptodate)(struct page *, unsigned long, unsigned long); 202 int (*is_partially_uptodate)(struct page *, unsigned long, unsigned long);
diff --git a/Documentation/filesystems/f2fs.txt b/Documentation/filesystems/f2fs.txt
index dac11d7fef27..e9e750e59efc 100644
--- a/Documentation/filesystems/f2fs.txt
+++ b/Documentation/filesystems/f2fs.txt
@@ -140,6 +140,12 @@ nobarrier This option can be used if underlying storage guarantees
140fastboot This option is used when a system wants to reduce mount 140fastboot This option is used when a system wants to reduce mount
141 time as much as possible, even though normal performance 141 time as much as possible, even though normal performance
142 can be sacrificed. 142 can be sacrificed.
143extent_cache Enable an extent cache based on rb-tree, it can cache
144 as many as extent which map between contiguous logical
145 address and physical address per inode, resulting in
146 increasing the cache hit ratio.
147noinline_data Disable the inline data feature, inline data feature is
148 enabled by default.
143 149
144================================================================================ 150================================================================================
145DEBUGFS ENTRIES 151DEBUGFS ENTRIES
diff --git a/Documentation/filesystems/nfs/nfs-rdma.txt b/Documentation/filesystems/nfs/nfs-rdma.txt
index 724043858b08..95c13aa575ff 100644
--- a/Documentation/filesystems/nfs/nfs-rdma.txt
+++ b/Documentation/filesystems/nfs/nfs-rdma.txt
@@ -187,8 +187,10 @@ Check RDMA and NFS Setup
187 To further test the InfiniBand software stack, use IPoIB (this 187 To further test the InfiniBand software stack, use IPoIB (this
188 assumes you have two IB hosts named host1 and host2): 188 assumes you have two IB hosts named host1 and host2):
189 189
190 host1$ ifconfig ib0 a.b.c.x 190 host1$ ip link set dev ib0 up
191 host2$ ifconfig ib0 a.b.c.y 191 host1$ ip address add dev ib0 a.b.c.x
192 host2$ ip link set dev ib0 up
193 host2$ ip address add dev ib0 a.b.c.y
192 host1$ ping a.b.c.y 194 host1$ ping a.b.c.y
193 host2$ ping a.b.c.x 195 host2$ ping a.b.c.x
194 196
@@ -229,7 +231,8 @@ NFS/RDMA Setup
229 231
230 $ modprobe ib_mthca 232 $ modprobe ib_mthca
231 $ modprobe ib_ipoib 233 $ modprobe ib_ipoib
232 $ ifconfig ib0 a.b.c.d 234 $ ip li set dev ib0 up
235 $ ip addr add dev ib0 a.b.c.d
233 236
234 NOTE: use unique addresses for the client and server 237 NOTE: use unique addresses for the client and server
235 238
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt
index a07ba61662ed..c3b6b301d8b0 100644
--- a/Documentation/filesystems/proc.txt
+++ b/Documentation/filesystems/proc.txt
@@ -200,12 +200,12 @@ contains details information about the process itself. Its fields are
200explained in Table 1-4. 200explained in Table 1-4.
201 201
202(for SMP CONFIG users) 202(for SMP CONFIG users)
203For making accounting scalable, RSS related information are handled in 203For making accounting scalable, RSS related information are handled in an
204asynchronous manner and the vaule may not be very precise. To see a precise 204asynchronous manner and the value may not be very precise. To see a precise
205snapshot of a moment, you can see /proc/<pid>/smaps file and scan page table. 205snapshot of a moment, you can see /proc/<pid>/smaps file and scan page table.
206It's slow but very precise. 206It's slow but very precise.
207 207
208Table 1-2: Contents of the status files (as of 2.6.30-rc7) 208Table 1-2: Contents of the status files (as of 3.20.0)
209.............................................................................. 209..............................................................................
210 Field Content 210 Field Content
211 Name filename of the executable 211 Name filename of the executable
@@ -213,6 +213,7 @@ Table 1-2: Contents of the status files (as of 2.6.30-rc7)
213 in an uninterruptible wait, Z is zombie, 213 in an uninterruptible wait, Z is zombie,
214 T is traced or stopped) 214 T is traced or stopped)
215 Tgid thread group ID 215 Tgid thread group ID
216 Ngid NUMA group ID (0 if none)
216 Pid process id 217 Pid process id
217 PPid process id of the parent process 218 PPid process id of the parent process
218 TracerPid PID of process tracing this process (0 if not) 219 TracerPid PID of process tracing this process (0 if not)
@@ -220,6 +221,10 @@ Table 1-2: Contents of the status files (as of 2.6.30-rc7)
220 Gid Real, effective, saved set, and file system GIDs 221 Gid Real, effective, saved set, and file system GIDs
221 FDSize number of file descriptor slots currently allocated 222 FDSize number of file descriptor slots currently allocated
222 Groups supplementary group list 223 Groups supplementary group list
224 NStgid descendant namespace thread group ID hierarchy
225 NSpid descendant namespace process ID hierarchy
226 NSpgid descendant namespace process group ID hierarchy
227 NSsid descendant namespace session ID hierarchy
223 VmPeak peak virtual memory size 228 VmPeak peak virtual memory size
224 VmSize total program size 229 VmSize total program size
225 VmLck locked memory size 230 VmLck locked memory size
@@ -1255,9 +1260,9 @@ Various pieces of information about kernel activity are available in the
1255since the system first booted. For a quick look, simply cat the file: 1260since the system first booted. For a quick look, simply cat the file:
1256 1261
1257 > cat /proc/stat 1262 > cat /proc/stat
1258 cpu 2255 34 2290 22625563 6290 127 456 0 0 1263 cpu 2255 34 2290 22625563 6290 127 456 0 0 0
1259 cpu0 1132 34 1441 11311718 3675 127 438 0 0 1264 cpu0 1132 34 1441 11311718 3675 127 438 0 0 0
1260 cpu1 1123 0 849 11313845 2614 0 18 0 0 1265 cpu1 1123 0 849 11313845 2614 0 18 0 0 0
1261 intr 114930548 113199788 3 0 5 263 0 4 [... lots more numbers ...] 1266 intr 114930548 113199788 3 0 5 263 0 4 [... lots more numbers ...]
1262 ctxt 1990473 1267 ctxt 1990473
1263 btime 1062191376 1268 btime 1062191376
@@ -1704,6 +1709,10 @@ A typical output is
1704 flags: 0100002 1709 flags: 0100002
1705 mnt_id: 19 1710 mnt_id: 19
1706 1711
1712All locks associated with a file descriptor are shown in its fdinfo too.
1713
1714lock: 1: FLOCK ADVISORY WRITE 359 00:13:11691 0 EOF
1715
1707The files such as eventfd, fsnotify, signalfd, epoll among the regular pos/flags 1716The files such as eventfd, fsnotify, signalfd, epoll among the regular pos/flags
1708pair provide additional information particular to the objects they represent. 1717pair provide additional information particular to the objects they represent.
1709 1718
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt
index 207cdca68bed..5d833b32bbcd 100644
--- a/Documentation/filesystems/vfs.txt
+++ b/Documentation/filesystems/vfs.txt
@@ -590,7 +590,7 @@ struct address_space_operations {
590 void (*invalidatepage) (struct page *, unsigned int, unsigned int); 590 void (*invalidatepage) (struct page *, unsigned int, unsigned int);
591 int (*releasepage) (struct page *, int); 591 int (*releasepage) (struct page *, int);
592 void (*freepage)(struct page *); 592 void (*freepage)(struct page *);
593 ssize_t (*direct_IO)(int, struct kiocb *, struct iov_iter *iter, loff_t offset); 593 ssize_t (*direct_IO)(struct kiocb *, struct iov_iter *iter, loff_t offset);
594 /* migrate the contents of a page to the specified target */ 594 /* migrate the contents of a page to the specified target */
595 int (*migratepage) (struct page *, struct page *); 595 int (*migratepage) (struct page *, struct page *);
596 int (*launder_page) (struct page *); 596 int (*launder_page) (struct page *);
diff --git a/Documentation/filesystems/xfs.txt b/Documentation/filesystems/xfs.txt
index 0bfafe108357..5a5a05582b58 100644
--- a/Documentation/filesystems/xfs.txt
+++ b/Documentation/filesystems/xfs.txt
@@ -228,30 +228,19 @@ default behaviour.
228Deprecated Mount Options 228Deprecated Mount Options
229======================== 229========================
230 230
231 delaylog/nodelaylog 231None at present.
232 Delayed logging is the only logging method that XFS supports
233 now, so these mount options are now ignored.
234
235 Due for removal in 3.12.
236
237 ihashsize=value
238 In memory inode hashes have been removed, so this option has
239 no function as of August 2007. Option is deprecated.
240
241 Due for removal in 3.12.
242 232
243 irixsgid
244 This behaviour is now controlled by a sysctl, so the mount
245 option is ignored.
246 233
247 Due for removal in 3.12. 234Removed Mount Options
235=====================
248 236
249 osyncisdsync 237 Name Removed
250 osyncisosync 238 ---- -------
251 O_SYNC and O_DSYNC are fully supported, so there is no need 239 delaylog/nodelaylog v3.20
252 for these options any more. 240 ihashsize v3.20
241 irixsgid v3.20
242 osyncisdsync/osyncisosync v3.20
253 243
254 Due for removal in 3.12.
255 244
256sysctls 245sysctls
257======= 246=======
diff --git a/Documentation/gpio/board.txt b/Documentation/gpio/board.txt
index 8b35f51fe7b6..b80606de545a 100644
--- a/Documentation/gpio/board.txt
+++ b/Documentation/gpio/board.txt
@@ -50,10 +50,43 @@ gpiod_is_active_low(power) will be true).
50 50
51ACPI 51ACPI
52---- 52----
53ACPI does not support function names for GPIOs. Therefore, only the "idx" 53ACPI also supports function names for GPIOs in a similar fashion to DT.
54argument of gpiod_get_index() is useful to discriminate between GPIOs assigned 54The above DT example can be converted to an equivalent ACPI description
55to a device. The "con_id" argument can still be set for debugging purposes (it 55with the help of _DSD (Device Specific Data), introduced in ACPI 5.1:
56will appear under error messages as well as debug and sysfs nodes). 56
57 Device (FOO) {
58 Name (_CRS, ResourceTemplate () {
59 GpioIo (Exclusive, ..., IoRestrictionOutputOnly,
60 "\\_SB.GPI0") {15} // red
61 GpioIo (Exclusive, ..., IoRestrictionOutputOnly,
62 "\\_SB.GPI0") {16} // green
63 GpioIo (Exclusive, ..., IoRestrictionOutputOnly,
64 "\\_SB.GPI0") {17} // blue
65 GpioIo (Exclusive, ..., IoRestrictionOutputOnly,
66 "\\_SB.GPI0") {1} // power
67 })
68
69 Name (_DSD, Package () {
70 ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
71 Package () {
72 Package () {
73 "led-gpios",
74 Package () {
75 ^FOO, 0, 0, 1,
76 ^FOO, 1, 0, 1,
77 ^FOO, 2, 0, 1,
78 }
79 },
80 Package () {
81 "power-gpios",
82 Package () {^FOO, 3, 0, 0},
83 },
84 }
85 })
86 }
87
88For more information about the ACPI GPIO bindings see
89Documentation/acpi/gpio-properties.txt.
57 90
58Platform Data 91Platform Data
59------------- 92-------------
diff --git a/Documentation/gpio/consumer.txt b/Documentation/gpio/consumer.txt
index d85fbae451ea..c21c1313f09e 100644
--- a/Documentation/gpio/consumer.txt
+++ b/Documentation/gpio/consumer.txt
@@ -58,7 +58,6 @@ pattern where a GPIO is optional, the gpiod_get_optional() and
58gpiod_get_index_optional() functions can be used. These functions return NULL 58gpiod_get_index_optional() functions can be used. These functions return NULL
59instead of -ENOENT if no GPIO has been assigned to the requested function: 59instead of -ENOENT if no GPIO has been assigned to the requested function:
60 60
61
62 struct gpio_desc *gpiod_get_optional(struct device *dev, 61 struct gpio_desc *gpiod_get_optional(struct device *dev,
63 const char *con_id, 62 const char *con_id,
64 enum gpiod_flags flags) 63 enum gpiod_flags flags)
@@ -68,6 +67,27 @@ instead of -ENOENT if no GPIO has been assigned to the requested function:
68 unsigned int index, 67 unsigned int index,
69 enum gpiod_flags flags) 68 enum gpiod_flags flags)
70 69
70For a function using multiple GPIOs all of those can be obtained with one call:
71
72 struct gpio_descs *gpiod_get_array(struct device *dev,
73 const char *con_id,
74 enum gpiod_flags flags)
75
76This function returns a struct gpio_descs which contains an array of
77descriptors:
78
79 struct gpio_descs {
80 unsigned int ndescs;
81 struct gpio_desc *desc[];
82 }
83
84The following function returns NULL instead of -ENOENT if no GPIOs have been
85assigned to the requested function:
86
87 struct gpio_descs *gpiod_get_array_optional(struct device *dev,
88 const char *con_id,
89 enum gpiod_flags flags)
90
71Device-managed variants of these functions are also defined: 91Device-managed variants of these functions are also defined:
72 92
73 struct gpio_desc *devm_gpiod_get(struct device *dev, const char *con_id, 93 struct gpio_desc *devm_gpiod_get(struct device *dev, const char *con_id,
@@ -82,20 +102,37 @@ Device-managed variants of these functions are also defined:
82 const char *con_id, 102 const char *con_id,
83 enum gpiod_flags flags) 103 enum gpiod_flags flags)
84 104
85 struct gpio_desc * devm_gpiod_get_index_optional(struct device *dev, 105 struct gpio_desc *devm_gpiod_get_index_optional(struct device *dev,
86 const char *con_id, 106 const char *con_id,
87 unsigned int index, 107 unsigned int index,
88 enum gpiod_flags flags) 108 enum gpiod_flags flags)
89 109
110 struct gpio_descs *devm_gpiod_get_array(struct device *dev,
111 const char *con_id,
112 enum gpiod_flags flags)
113
114 struct gpio_descs *devm_gpiod_get_array_optional(struct device *dev,
115 const char *con_id,
116 enum gpiod_flags flags)
117
90A GPIO descriptor can be disposed of using the gpiod_put() function: 118A GPIO descriptor can be disposed of using the gpiod_put() function:
91 119
92 void gpiod_put(struct gpio_desc *desc) 120 void gpiod_put(struct gpio_desc *desc)
93 121
94It is strictly forbidden to use a descriptor after calling this function. The 122For an array of GPIOs this function can be used:
95device-managed variant is, unsurprisingly: 123
124 void gpiod_put_array(struct gpio_descs *descs)
125
126It is strictly forbidden to use a descriptor after calling these functions.
127It is also not allowed to individually release descriptors (using gpiod_put())
128from an array acquired with gpiod_get_array().
129
130The device-managed variants are, unsurprisingly:
96 131
97 void devm_gpiod_put(struct device *dev, struct gpio_desc *desc) 132 void devm_gpiod_put(struct device *dev, struct gpio_desc *desc)
98 133
134 void devm_gpiod_put_array(struct device *dev, struct gpio_descs *descs)
135
99 136
100Using GPIOs 137Using GPIOs
101=========== 138===========
@@ -222,6 +259,26 @@ GPIOs belonging to the same bank or chip simultaneously if supported by the
222corresponding chip driver. In that case a significantly improved performance 259corresponding chip driver. In that case a significantly improved performance
223can be expected. If simultaneous setting is not possible the GPIOs will be set 260can be expected. If simultaneous setting is not possible the GPIOs will be set
224sequentially. 261sequentially.
262
263The gpiod_set_array() functions take three arguments:
264 * array_size - the number of array elements
265 * desc_array - an array of GPIO descriptors
266 * value_array - an array of values to assign to the GPIOs
267
268The descriptor array can be obtained using the gpiod_get_array() function
269or one of its variants. If the group of descriptors returned by that function
270matches the desired group of GPIOs, those GPIOs can be set by simply using
271the struct gpio_descs returned by gpiod_get_array():
272
273 struct gpio_descs *my_gpio_descs = gpiod_get_array(...);
274 gpiod_set_array(my_gpio_descs->ndescs, my_gpio_descs->desc,
275 my_gpio_values);
276
277It is also possible to set a completely arbitrary array of descriptors. The
278descriptors may be obtained using any combination of gpiod_get() and
279gpiod_get_array(). Afterwards the array of descriptors has to be setup
280manually before it can be used with gpiod_set_array().
281
225Note that for optimal performance GPIOs belonging to the same chip should be 282Note that for optimal performance GPIOs belonging to the same chip should be
226contiguous within the array of descriptors. 283contiguous within the array of descriptors.
227 284
diff --git a/Documentation/i2o/README b/Documentation/i2o/README
deleted file mode 100644
index ee91e2626ff0..000000000000
--- a/Documentation/i2o/README
+++ /dev/null
@@ -1,63 +0,0 @@
1
2 Linux I2O Support (c) Copyright 1999 Red Hat Software
3 and others.
4
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public License
7 as published by the Free Software Foundation; either version
8 2 of the License, or (at your option) any later version.
9
10AUTHORS (so far)
11
12Alan Cox, Building Number Three Ltd.
13 Core code, SCSI and Block OSMs
14
15Steve Ralston, LSI Logic Corp.
16 Debugging SCSI and Block OSM
17
18Deepak Saxena, Intel Corp.
19 Various core/block extensions
20 /proc interface, bug fixes
21 Ioctl interfaces for control
22 Debugging LAN OSM
23
24Philip Rumpf
25 Fixed assorted dumb SMP locking bugs
26
27Juha Sievanen, University of Helsinki Finland
28 LAN OSM code
29 /proc interface to LAN class
30 Bug fixes
31 Core code extensions
32
33Auvo Häkkinen, University of Helsinki Finland
34 LAN OSM code
35 /Proc interface to LAN class
36 Bug fixes
37 Core code extensions
38
39Taneli Vähäkangas, University of Helsinki Finland
40 Fixes to i2o_config
41
42CREDITS
43
44 This work was made possible by
45
46Red Hat Software
47 Funding for the Building #3 part of the project
48
49Symbios Logic (Now LSI)
50 Host adapters, hints, known to work platforms when I hit
51 compatibility problems
52
53BoxHill Corporation
54 Loan of initial FibreChannel disk array used for development work.
55
56European Commission
57 Funding the work done by the University of Helsinki
58
59SysKonnect
60 Loan of FDDI and Gigabit Ethernet cards
61
62ASUSTeK
63 Loan of I2O motherboard
diff --git a/Documentation/i2o/ioctl b/Documentation/i2o/ioctl
deleted file mode 100644
index 27c3c5493116..000000000000
--- a/Documentation/i2o/ioctl
+++ /dev/null
@@ -1,394 +0,0 @@
1
2Linux I2O User Space Interface
3rev 0.3 - 04/20/99
4
5=============================================================================
6Originally written by Deepak Saxena(deepak@plexity.net)
7Currently maintained by Deepak Saxena(deepak@plexity.net)
8=============================================================================
9
10I. Introduction
11
12The Linux I2O subsystem provides a set of ioctl() commands that can be
13utilized by user space applications to communicate with IOPs and devices
14on individual IOPs. This document defines the specific ioctl() commands
15that are available to the user and provides examples of their uses.
16
17This document assumes the reader is familiar with or has access to the
18I2O specification as no I2O message parameters are outlined. For information
19on the specification, see http://www.i2osig.org
20
21This document and the I2O user space interface are currently maintained
22by Deepak Saxena. Please send all comments, errata, and bug fixes to
23deepak@csociety.purdue.edu
24
25II. IOP Access
26
27Access to the I2O subsystem is provided through the device file named
28/dev/i2o/ctl. This file is a character file with major number 10 and minor
29number 166. It can be created through the following command:
30
31 mknod /dev/i2o/ctl c 10 166
32
33III. Determining the IOP Count
34
35 SYNOPSIS
36
37 ioctl(fd, I2OGETIOPS, int *count);
38
39 u8 count[MAX_I2O_CONTROLLERS];
40
41 DESCRIPTION
42
43 This function returns the system's active IOP table. count should
44 point to a buffer containing MAX_I2O_CONTROLLERS entries. Upon
45 returning, each entry will contain a non-zero value if the given
46 IOP unit is active, and NULL if it is inactive or non-existent.
47
48 RETURN VALUE.
49
50 Returns 0 if no errors occur, and -1 otherwise. If an error occurs,
51 errno is set appropriately:
52
53 EFAULT Invalid user space pointer was passed
54
55IV. Getting Hardware Resource Table
56
57 SYNOPSIS
58
59 ioctl(fd, I2OHRTGET, struct i2o_cmd_hrt *hrt);
60
61 struct i2o_cmd_hrtlct
62 {
63 u32 iop; /* IOP unit number */
64 void *resbuf; /* Buffer for result */
65 u32 *reslen; /* Buffer length in bytes */
66 };
67
68 DESCRIPTION
69
70 This function returns the Hardware Resource Table of the IOP specified
71 by hrt->iop in the buffer pointed to by hrt->resbuf. The actual size of
72 the data is written into *(hrt->reslen).
73
74 RETURNS
75
76 This function returns 0 if no errors occur. If an error occurs, -1
77 is returned and errno is set appropriately:
78
79 EFAULT Invalid user space pointer was passed
80 ENXIO Invalid IOP number
81 ENOBUFS Buffer not large enough. If this occurs, the required
82 buffer length is written into *(hrt->reslen)
83
84V. Getting Logical Configuration Table
85
86 SYNOPSIS
87
88 ioctl(fd, I2OLCTGET, struct i2o_cmd_lct *lct);
89
90 struct i2o_cmd_hrtlct
91 {
92 u32 iop; /* IOP unit number */
93 void *resbuf; /* Buffer for result */
94 u32 *reslen; /* Buffer length in bytes */
95 };
96
97 DESCRIPTION
98
99 This function returns the Logical Configuration Table of the IOP specified
100 by lct->iop in the buffer pointed to by lct->resbuf. The actual size of
101 the data is written into *(lct->reslen).
102
103 RETURNS
104
105 This function returns 0 if no errors occur. If an error occurs, -1
106 is returned and errno is set appropriately:
107
108 EFAULT Invalid user space pointer was passed
109 ENXIO Invalid IOP number
110 ENOBUFS Buffer not large enough. If this occurs, the required
111 buffer length is written into *(lct->reslen)
112
113VI. Setting Parameters
114
115 SYNOPSIS
116
117 ioctl(fd, I2OPARMSET, struct i2o_parm_setget *ops);
118
119 struct i2o_cmd_psetget
120 {
121 u32 iop; /* IOP unit number */
122 u32 tid; /* Target device TID */
123 void *opbuf; /* Operation List buffer */
124 u32 oplen; /* Operation List buffer length in bytes */
125 void *resbuf; /* Result List buffer */
126 u32 *reslen; /* Result List buffer length in bytes */
127 };
128
129 DESCRIPTION
130
131 This function posts a UtilParamsSet message to the device identified
132 by ops->iop and ops->tid. The operation list for the message is
133 sent through the ops->opbuf buffer, and the result list is written
134 into the buffer pointed to by ops->resbuf. The number of bytes
135 written is placed into *(ops->reslen).
136
137 RETURNS
138
139 The return value is the size in bytes of the data written into
140 ops->resbuf if no errors occur. If an error occurs, -1 is returned
141 and errno is set appropriately:
142
143 EFAULT Invalid user space pointer was passed
144 ENXIO Invalid IOP number
145 ENOBUFS Buffer not large enough. If this occurs, the required
146 buffer length is written into *(ops->reslen)
147 ETIMEDOUT Timeout waiting for reply message
148 ENOMEM Kernel memory allocation error
149
150 A return value of 0 does not mean that the value was actually
151 changed properly on the IOP. The user should check the result
152 list to determine the specific status of the transaction.
153
154VII. Getting Parameters
155
156 SYNOPSIS
157
158 ioctl(fd, I2OPARMGET, struct i2o_parm_setget *ops);
159
160 struct i2o_parm_setget
161 {
162 u32 iop; /* IOP unit number */
163 u32 tid; /* Target device TID */
164 void *opbuf; /* Operation List buffer */
165 u32 oplen; /* Operation List buffer length in bytes */
166 void *resbuf; /* Result List buffer */
167 u32 *reslen; /* Result List buffer length in bytes */
168 };
169
170 DESCRIPTION
171
172 This function posts a UtilParamsGet message to the device identified
173 by ops->iop and ops->tid. The operation list for the message is
174 sent through the ops->opbuf buffer, and the result list is written
175 into the buffer pointed to by ops->resbuf. The actual size of data
176 written is placed into *(ops->reslen).
177
178 RETURNS
179
180 EFAULT Invalid user space pointer was passed
181 ENXIO Invalid IOP number
182 ENOBUFS Buffer not large enough. If this occurs, the required
183 buffer length is written into *(ops->reslen)
184 ETIMEDOUT Timeout waiting for reply message
185 ENOMEM Kernel memory allocation error
186
187 A return value of 0 does not mean that the value was actually
188 properly retrieved. The user should check the result list
189 to determine the specific status of the transaction.
190
191VIII. Downloading Software
192
193 SYNOPSIS
194
195 ioctl(fd, I2OSWDL, struct i2o_sw_xfer *sw);
196
197 struct i2o_sw_xfer
198 {
199 u32 iop; /* IOP unit number */
200 u8 flags; /* DownloadFlags field */
201 u8 sw_type; /* Software type */
202 u32 sw_id; /* Software ID */
203 void *buf; /* Pointer to software buffer */
204 u32 *swlen; /* Length of software buffer */
205 u32 *maxfrag; /* Number of fragments */
206 u32 *curfrag; /* Current fragment number */
207 };
208
209 DESCRIPTION
210
211 This function downloads a software fragment pointed by sw->buf
212 to the iop identified by sw->iop. The DownloadFlags, SwID, SwType
213 and SwSize fields of the ExecSwDownload message are filled in with
214 the values of sw->flags, sw->sw_id, sw->sw_type and *(sw->swlen).
215
216 The fragments _must_ be sent in order and be 8K in size. The last
217 fragment _may_ be shorter, however. The kernel will compute its
218 size based on information in the sw->swlen field.
219
220 Please note that SW transfers can take a long time.
221
222 RETURNS
223
224 This function returns 0 no errors occur. If an error occurs, -1
225 is returned and errno is set appropriately:
226
227 EFAULT Invalid user space pointer was passed
228 ENXIO Invalid IOP number
229 ETIMEDOUT Timeout waiting for reply message
230 ENOMEM Kernel memory allocation error
231
232IX. Uploading Software
233
234 SYNOPSIS
235
236 ioctl(fd, I2OSWUL, struct i2o_sw_xfer *sw);
237
238 struct i2o_sw_xfer
239 {
240 u32 iop; /* IOP unit number */
241 u8 flags; /* UploadFlags */
242 u8 sw_type; /* Software type */
243 u32 sw_id; /* Software ID */
244 void *buf; /* Pointer to software buffer */
245 u32 *swlen; /* Length of software buffer */
246 u32 *maxfrag; /* Number of fragments */
247 u32 *curfrag; /* Current fragment number */
248 };
249
250 DESCRIPTION
251
252 This function uploads a software fragment from the IOP identified
253 by sw->iop, sw->sw_type, sw->sw_id and optionally sw->swlen fields.
254 The UploadFlags, SwID, SwType and SwSize fields of the ExecSwUpload
255 message are filled in with the values of sw->flags, sw->sw_id,
256 sw->sw_type and *(sw->swlen).
257
258 The fragments _must_ be requested in order and be 8K in size. The
259 user is responsible for allocating memory pointed by sw->buf. The
260 last fragment _may_ be shorter.
261
262 Please note that SW transfers can take a long time.
263
264 RETURNS
265
266 This function returns 0 if no errors occur. If an error occurs, -1
267 is returned and errno is set appropriately:
268
269 EFAULT Invalid user space pointer was passed
270 ENXIO Invalid IOP number
271 ETIMEDOUT Timeout waiting for reply message
272 ENOMEM Kernel memory allocation error
273
274X. Removing Software
275
276 SYNOPSIS
277
278 ioctl(fd, I2OSWDEL, struct i2o_sw_xfer *sw);
279
280 struct i2o_sw_xfer
281 {
282 u32 iop; /* IOP unit number */
283 u8 flags; /* RemoveFlags */
284 u8 sw_type; /* Software type */
285 u32 sw_id; /* Software ID */
286 void *buf; /* Unused */
287 u32 *swlen; /* Length of the software data */
288 u32 *maxfrag; /* Unused */
289 u32 *curfrag; /* Unused */
290 };
291
292 DESCRIPTION
293
294 This function removes software from the IOP identified by sw->iop.
295 The RemoveFlags, SwID, SwType and SwSize fields of the ExecSwRemove message
296 are filled in with the values of sw->flags, sw->sw_id, sw->sw_type and
297 *(sw->swlen). Give zero in *(sw->len) if the value is unknown. IOP uses
298 *(sw->swlen) value to verify correct identication of the module to remove.
299 The actual size of the module is written into *(sw->swlen).
300
301 RETURNS
302
303 This function returns 0 if no errors occur. If an error occurs, -1
304 is returned and errno is set appropriately:
305
306 EFAULT Invalid user space pointer was passed
307 ENXIO Invalid IOP number
308 ETIMEDOUT Timeout waiting for reply message
309 ENOMEM Kernel memory allocation error
310
311X. Validating Configuration
312
313 SYNOPSIS
314
315 ioctl(fd, I2OVALIDATE, int *iop);
316 u32 iop;
317
318 DESCRIPTION
319
320 This function posts an ExecConfigValidate message to the controller
321 identified by iop. This message indicates that the current
322 configuration is accepted. The iop changes the status of suspect drivers
323 to valid and may delete old drivers from its store.
324
325 RETURNS
326
327 This function returns 0 if no erro occur. If an error occurs, -1 is
328 returned and errno is set appropriately:
329
330 ETIMEDOUT Timeout waiting for reply message
331 ENXIO Invalid IOP number
332
333XI. Configuration Dialog
334
335 SYNOPSIS
336
337 ioctl(fd, I2OHTML, struct i2o_html *htquery);
338 struct i2o_html
339 {
340 u32 iop; /* IOP unit number */
341 u32 tid; /* Target device ID */
342 u32 page; /* HTML page */
343 void *resbuf; /* Buffer for reply HTML page */
344 u32 *reslen; /* Length in bytes of reply buffer */
345 void *qbuf; /* Pointer to HTTP query string */
346 u32 qlen; /* Length in bytes of query string buffer */
347 };
348
349 DESCRIPTION
350
351 This function posts an UtilConfigDialog message to the device identified
352 by htquery->iop and htquery->tid. The requested HTML page number is
353 provided by the htquery->page field, and the resultant data is stored
354 in the buffer pointed to by htquery->resbuf. If there is an HTTP query
355 string that is to be sent to the device, it should be sent in the buffer
356 pointed to by htquery->qbuf. If there is no query string, this field
357 should be set to NULL. The actual size of the reply received is written
358 into *(htquery->reslen).
359
360 RETURNS
361
362 This function returns 0 if no error occur. If an error occurs, -1
363 is returned and errno is set appropriately:
364
365 EFAULT Invalid user space pointer was passed
366 ENXIO Invalid IOP number
367 ENOBUFS Buffer not large enough. If this occurs, the required
368 buffer length is written into *(ops->reslen)
369 ETIMEDOUT Timeout waiting for reply message
370 ENOMEM Kernel memory allocation error
371
372XII. Events
373
374 In the process of determining this. Current idea is to have use
375 the select() interface to allow user apps to periodically poll
376 the /dev/i2o/ctl device for events. When select() notifies the user
377 that an event is available, the user would call read() to retrieve
378 a list of all the events that are pending for the specific device.
379
380=============================================================================
381Revision History
382=============================================================================
383
384Rev 0.1 - 04/01/99
385- Initial revision
386
387Rev 0.2 - 04/06/99
388- Changed return values to match UNIX ioctl() standard. Only return values
389 are 0 and -1. All errors are reported through errno.
390- Added summary of proposed possible event interfaces
391
392Rev 0.3 - 04/20/99
393- Changed all ioctls() to use pointers to user data instead of actual data
394- Updated error values to match the code
diff --git a/Documentation/input/alps.txt b/Documentation/input/alps.txt
index 92ae734c00c3..c86f2f1ae4f6 100644
--- a/Documentation/input/alps.txt
+++ b/Documentation/input/alps.txt
@@ -58,7 +58,7 @@ To exit command mode, PSMOUSE_CMD_SETSTREAM (EA) is sent to the touchpad.
58While in command mode, register addresses can be set by first sending a 58While in command mode, register addresses can be set by first sending a
59specific command, either EC for v3 devices or F5 for v4 devices. Then the 59specific command, either EC for v3 devices or F5 for v4 devices. Then the
60address is sent one nibble at a time, where each nibble is encoded as a 60address is sent one nibble at a time, where each nibble is encoded as a
61command with optional data. This enoding differs slightly between the v3 and 61command with optional data. This encoding differs slightly between the v3 and
62v4 protocols. 62v4 protocols.
63 63
64Once an address has been set, the addressed register can be read by sending 64Once an address has been set, the addressed register can be read by sending
@@ -94,6 +94,10 @@ PS/2 packet format
94 94
95Note that the device never signals overflow condition. 95Note that the device never signals overflow condition.
96 96
97For protocol version 2 devices when the trackpoint is used, and no fingers
98are on the touchpad, the M R L bits signal the combined status of both the
99pointingstick and touchpad buttons.
100
97ALPS Absolute Mode - Protocol Version 1 101ALPS Absolute Mode - Protocol Version 1
98-------------------------------------- 102--------------------------------------
99 103
@@ -107,7 +111,7 @@ ALPS Absolute Mode - Protocol Version 1
107ALPS Absolute Mode - Protocol Version 2 111ALPS Absolute Mode - Protocol Version 2
108--------------------------------------- 112---------------------------------------
109 113
110 byte 0: 1 ? ? ? 1 ? ? ? 114 byte 0: 1 ? ? ? 1 PSM PSR PSL
111 byte 1: 0 x6 x5 x4 x3 x2 x1 x0 115 byte 1: 0 x6 x5 x4 x3 x2 x1 x0
112 byte 2: 0 x10 x9 x8 x7 ? fin ges 116 byte 2: 0 x10 x9 x8 x7 ? fin ges
113 byte 3: 0 y9 y8 y7 1 M R L 117 byte 3: 0 y9 y8 y7 1 M R L
@@ -115,7 +119,8 @@ ALPS Absolute Mode - Protocol Version 2
115 byte 5: 0 z6 z5 z4 z3 z2 z1 z0 119 byte 5: 0 z6 z5 z4 z3 z2 z1 z0
116 120
117Protocol Version 2 DualPoint devices send standard PS/2 mouse packets for 121Protocol Version 2 DualPoint devices send standard PS/2 mouse packets for
118the DualPoint Stick. 122the DualPoint Stick. For non interleaved dualpoint devices the pointingstick
123buttons get reported separately in the PSM, PSR and PSL bits.
119 124
120Dualpoint device -- interleaved packet format 125Dualpoint device -- interleaved packet format
121--------------------------------------------- 126---------------------------------------------
@@ -139,7 +144,7 @@ ALPS Absolute Mode - Protocol Version 3
139--------------------------------------- 144---------------------------------------
140 145
141ALPS protocol version 3 has three different packet formats. The first two are 146ALPS protocol version 3 has three different packet formats. The first two are
142associated with touchpad events, and the third is associatd with trackstick 147associated with touchpad events, and the third is associated with trackstick
143events. 148events.
144 149
145The first type is the touchpad position packet. 150The first type is the touchpad position packet.
diff --git a/Documentation/input/event-codes.txt b/Documentation/input/event-codes.txt
index 96705616f582..3f0f5ce3338b 100644
--- a/Documentation/input/event-codes.txt
+++ b/Documentation/input/event-codes.txt
@@ -229,7 +229,7 @@ such device to feedback.
229EV_PWR: 229EV_PWR:
230---------- 230----------
231EV_PWR events are a special type of event used specifically for power 231EV_PWR events are a special type of event used specifically for power
232mangement. Its usage is not well defined. To be addressed later. 232management. Its usage is not well defined. To be addressed later.
233 233
234Device properties: 234Device properties:
235================= 235=================
diff --git a/Documentation/input/gpio-tilt.txt b/Documentation/input/gpio-tilt.txt
index 06d60c3ff5e7..2cdfd9bcb1af 100644
--- a/Documentation/input/gpio-tilt.txt
+++ b/Documentation/input/gpio-tilt.txt
@@ -28,7 +28,7 @@ Example:
28-------- 28--------
29 29
30Example configuration for a single TS1003 tilt switch that rotates around 30Example configuration for a single TS1003 tilt switch that rotates around
31one axis in 4 steps and emitts the current tilt via two GPIOs. 31one axis in 4 steps and emits the current tilt via two GPIOs.
32 32
33static int sg060_tilt_enable(struct device *dev) { 33static int sg060_tilt_enable(struct device *dev) {
34 /* code to enable the sensors */ 34 /* code to enable the sensors */
diff --git a/Documentation/input/iforce-protocol.txt b/Documentation/input/iforce-protocol.txt
index 2d5fbfd6023e..66287151c54a 100644
--- a/Documentation/input/iforce-protocol.txt
+++ b/Documentation/input/iforce-protocol.txt
@@ -97,7 +97,7 @@ LEN= 0e
97*** Attack and fade *** 97*** Attack and fade ***
98OP= 02 98OP= 02
99LEN= 08 99LEN= 08
10000-01 Address where to store the parameteres 10000-01 Address where to store the parameters
10102-03 Duration of attack (little endian encoding, in ms) 10102-03 Duration of attack (little endian encoding, in ms)
10204 Level at end of attack. Signed byte. 10204 Level at end of attack. Signed byte.
10305-06 Duration of fade. 10305-06 Duration of fade.
diff --git a/Documentation/input/walkera0701.txt b/Documentation/input/walkera0701.txt
index 561385d38482..49e3ac60dcef 100644
--- a/Documentation/input/walkera0701.txt
+++ b/Documentation/input/walkera0701.txt
@@ -91,7 +91,7 @@ absolute binary value. (10 bits per channel). Next nibble is checksum for
91first ten nibbles. 91first ten nibbles.
92 92
93Next nibbles 12 .. 21 represents four channels (not all channels can be 93Next nibbles 12 .. 21 represents four channels (not all channels can be
94directly controlled from TX). Binary representations ar the same as in first 94directly controlled from TX). Binary representations are the same as in first
95four channels. In nibbles 22 and 23 is a special magic number. Nibble 24 is 95four channels. In nibbles 22 and 23 is a special magic number. Nibble 24 is
96checksum for nibbles 12..23. 96checksum for nibbles 12..23.
97 97
diff --git a/Documentation/input/yealink.txt b/Documentation/input/yealink.txt
index 5360e434486c..8277b76ec506 100644
--- a/Documentation/input/yealink.txt
+++ b/Documentation/input/yealink.txt
@@ -93,7 +93,7 @@ Format description:
93 Format specifier 93 Format specifier
94 '8' : Generic 7 segment digit with individual addressable segments 94 '8' : Generic 7 segment digit with individual addressable segments
95 95
96 Reduced capability 7 segm digit, when segments are hard wired together. 96 Reduced capability 7 segment digit, when segments are hard wired together.
97 '1' : 2 segments digit only able to produce a 1. 97 '1' : 2 segments digit only able to produce a 1.
98 'e' : Most significant day of the month digit, 98 'e' : Most significant day of the month digit,
99 able to produce at least 1 2 3. 99 able to produce at least 1 2 3.
diff --git a/Documentation/ioctl/ioctl-number.txt b/Documentation/ioctl/ioctl-number.txt
index 8136e1fd30fd..51f4221657bf 100644
--- a/Documentation/ioctl/ioctl-number.txt
+++ b/Documentation/ioctl/ioctl-number.txt
@@ -321,6 +321,7 @@ Code Seq#(hex) Include File Comments
3210xDB 00-0F drivers/char/mwave/mwavepub.h 3210xDB 00-0F drivers/char/mwave/mwavepub.h
3220xDD 00-3F ZFCP device driver see drivers/s390/scsi/ 3220xDD 00-3F ZFCP device driver see drivers/s390/scsi/
323 <mailto:aherrman@de.ibm.com> 323 <mailto:aherrman@de.ibm.com>
3240xEC 00-01 drivers/platform/chrome/cros_ec_dev.h ChromeOS EC driver
3240xF3 00-3F drivers/usb/misc/sisusbvga/sisusb.h sisfb (in development) 3250xF3 00-3F drivers/usb/misc/sisusbvga/sisusb.h sisfb (in development)
325 <mailto:thomas@winischhofer.net> 326 <mailto:thomas@winischhofer.net>
3260xF4 00-1F video/mbxfb.h mbxfb 3270xF4 00-1F video/mbxfb.h mbxfb
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 491bbd104b06..f6befa9855c1 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -165,7 +165,7 @@ multipliers 'Kilo', 'Mega', and 'Giga', equalling 2^10, 2^20, and 2^30
165bytes respectively. Such letter suffixes can also be entirely omitted. 165bytes respectively. Such letter suffixes can also be entirely omitted.
166 166
167 167
168 acpi= [HW,ACPI,X86] 168 acpi= [HW,ACPI,X86,ARM64]
169 Advanced Configuration and Power Interface 169 Advanced Configuration and Power Interface
170 Format: { force | off | strict | noirq | rsdt } 170 Format: { force | off | strict | noirq | rsdt }
171 force -- enable ACPI if default was off 171 force -- enable ACPI if default was off
@@ -175,6 +175,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
175 strictly ACPI specification compliant. 175 strictly ACPI specification compliant.
176 rsdt -- prefer RSDT over (default) XSDT 176 rsdt -- prefer RSDT over (default) XSDT
177 copy_dsdt -- copy DSDT to memory 177 copy_dsdt -- copy DSDT to memory
178 For ARM64, ONLY "acpi=off" or "acpi=force" are available
178 179
179 See also Documentation/power/runtime_pm.txt, pci=noacpi 180 See also Documentation/power/runtime_pm.txt, pci=noacpi
180 181
@@ -713,10 +714,18 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
713 714
714 uart[8250],io,<addr>[,options] 715 uart[8250],io,<addr>[,options]
715 uart[8250],mmio,<addr>[,options] 716 uart[8250],mmio,<addr>[,options]
717 uart[8250],mmio32,<addr>[,options]
718 uart[8250],0x<addr>[,options]
716 Start an early, polled-mode console on the 8250/16550 719 Start an early, polled-mode console on the 8250/16550
717 UART at the specified I/O port or MMIO address, 720 UART at the specified I/O port or MMIO address,
718 switching to the matching ttyS device later. The 721 switching to the matching ttyS device later.
719 options are the same as for ttyS, above. 722 MMIO inter-register address stride is either 8-bit
723 (mmio) or 32-bit (mmio32).
724 If none of [io|mmio|mmio32], <addr> is assumed to be
725 equivalent to 'mmio'. 'options' are specified in the
726 same format described for ttyS above; if unspecified,
727 the h/w is not re-initialized.
728
720 hvc<n> Use the hypervisor console device <n>. This is for 729 hvc<n> Use the hypervisor console device <n>. This is for
721 both Xen and PowerPC hypervisors. 730 both Xen and PowerPC hypervisors.
722 731
@@ -928,6 +937,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
928 Enable debug messages at boot time. See 937 Enable debug messages at boot time. See
929 Documentation/dynamic-debug-howto.txt for details. 938 Documentation/dynamic-debug-howto.txt for details.
930 939
940 eagerfpu= [X86]
941 on enable eager fpu restore
942 off disable eager fpu restore
943 auto selects the default scheme, which automatically
944 enables eagerfpu restore for xsaveopt.
945
931 early_ioremap_debug [KNL] 946 early_ioremap_debug [KNL]
932 Enable debug messages in early_ioremap support. This 947 Enable debug messages in early_ioremap support. This
933 is useful for tracking down temporary early mappings 948 is useful for tracking down temporary early mappings
@@ -944,11 +959,15 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
944 uart[8250],io,<addr>[,options] 959 uart[8250],io,<addr>[,options]
945 uart[8250],mmio,<addr>[,options] 960 uart[8250],mmio,<addr>[,options]
946 uart[8250],mmio32,<addr>[,options] 961 uart[8250],mmio32,<addr>[,options]
962 uart[8250],0x<addr>[,options]
947 Start an early, polled-mode console on the 8250/16550 963 Start an early, polled-mode console on the 8250/16550
948 UART at the specified I/O port or MMIO address. 964 UART at the specified I/O port or MMIO address.
949 MMIO inter-register address stride is either 8-bit 965 MMIO inter-register address stride is either 8-bit
950 (mmio) or 32-bit (mmio32). 966 (mmio) or 32-bit (mmio32).
951 The options are the same as for ttyS, above. 967 If none of [io|mmio|mmio32], <addr> is assumed to be
968 equivalent to 'mmio'. 'options' are specified in the
969 same format described for "console=ttyS<n>"; if
970 unspecified, the h/w is not initialized.
952 971
953 pl011,<addr> 972 pl011,<addr>
954 Start an early, polled-mode console on a pl011 serial 973 Start an early, polled-mode console on a pl011 serial
@@ -1966,6 +1985,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
1966 or 1985 or
1967 memmap=0x10000$0x18690000 1986 memmap=0x10000$0x18690000
1968 1987
1988 memmap=nn[KMG]!ss[KMG]
1989 [KNL,X86] Mark specific memory as protected.
1990 Region of memory to be used, from ss to ss+nn.
1991 The memory region may be marked as e820 type 12 (0xc)
1992 and is NVDIMM or ADR memory.
1993
1969 memory_corruption_check=0/1 [X86] 1994 memory_corruption_check=0/1 [X86]
1970 Some BIOSes seem to corrupt the first 64k of 1995 Some BIOSes seem to corrupt the first 64k of
1971 memory when doing things like suspend/resume. 1996 memory when doing things like suspend/resume.
@@ -2317,7 +2342,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
2317 noexec32=off: disable non-executable mappings 2342 noexec32=off: disable non-executable mappings
2318 read implies executable mappings 2343 read implies executable mappings
2319 2344
2320 nofpu [SH] Disable hardware FPU at boot time. 2345 nofpu [MIPS,SH] Disable hardware FPU at boot time.
2321 2346
2322 nofxsr [BUGS=X86-32] Disables x86 floating point extended 2347 nofxsr [BUGS=X86-32] Disables x86 floating point extended
2323 register save and restore. The kernel will only save 2348 register save and restore. The kernel will only save
@@ -2344,12 +2369,6 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
2344 parameter, xsave area per process might occupy more 2369 parameter, xsave area per process might occupy more
2345 memory on xsaves enabled systems. 2370 memory on xsaves enabled systems.
2346 2371
2347 eagerfpu= [X86]
2348 on enable eager fpu restore
2349 off disable eager fpu restore
2350 auto selects the default scheme, which automatically
2351 enables eagerfpu restore for xsaveopt.
2352
2353 nohlt [BUGS=ARM,SH] Tells the kernel that the sleep(SH) or 2372 nohlt [BUGS=ARM,SH] Tells the kernel that the sleep(SH) or
2354 wfi(ARM) instruction doesn't work correctly and not to 2373 wfi(ARM) instruction doesn't work correctly and not to
2355 use it. This is also useful when using JTAG debugger. 2374 use it. This is also useful when using JTAG debugger.
diff --git a/Documentation/kmemcheck.txt b/Documentation/kmemcheck.txt
index a41bdebbe87b..80aae85d8da6 100644
--- a/Documentation/kmemcheck.txt
+++ b/Documentation/kmemcheck.txt
@@ -82,8 +82,8 @@ menu to even appear in "menuconfig". These are:
82 82
83 o CONFIG_DEBUG_PAGEALLOC=n 83 o CONFIG_DEBUG_PAGEALLOC=n
84 84
85 This option is located under "Kernel hacking" / "Debug page memory 85 This option is located under "Kernel hacking" / "Memory Debugging"
86 allocations". 86 / "Debug page memory allocations".
87 87
88In addition, I highly recommend turning on CONFIG_DEBUG_INFO=y. This is also 88In addition, I highly recommend turning on CONFIG_DEBUG_INFO=y. This is also
89located under "Kernel hacking". With this, you will be able to get line number 89located under "Kernel hacking". With this, you will be able to get line number
diff --git a/Documentation/kprobes.txt b/Documentation/kprobes.txt
index 1488b6525eb6..1f9b3e2b98ae 100644
--- a/Documentation/kprobes.txt
+++ b/Documentation/kprobes.txt
@@ -305,8 +305,8 @@ architectures:
3053. Configuring Kprobes 3053. Configuring Kprobes
306 306
307When configuring the kernel using make menuconfig/xconfig/oldconfig, 307When configuring the kernel using make menuconfig/xconfig/oldconfig,
308ensure that CONFIG_KPROBES is set to "y". Under "Instrumentation 308ensure that CONFIG_KPROBES is set to "y". Under "General setup", look
309Support", look for "Kprobes". 309for "Kprobes".
310 310
311So that you can load and unload Kprobes-based instrumentation modules, 311So that you can load and unload Kprobes-based instrumentation modules,
312make sure "Loadable module support" (CONFIG_MODULES) and "Module 312make sure "Loadable module support" (CONFIG_MODULES) and "Module
diff --git a/Documentation/laptops/thinkpad-acpi.txt b/Documentation/laptops/thinkpad-acpi.txt
index fc04c14de4bb..72a150d8f3df 100644
--- a/Documentation/laptops/thinkpad-acpi.txt
+++ b/Documentation/laptops/thinkpad-acpi.txt
@@ -1355,6 +1355,24 @@ Sysfs notes:
1355 rfkill controller switch "tpacpi_uwb_sw": refer to 1355 rfkill controller switch "tpacpi_uwb_sw": refer to
1356 Documentation/rfkill.txt for details. 1356 Documentation/rfkill.txt for details.
1357 1357
1358Adaptive keyboard
1359-----------------
1360
1361sysfs device attribute: adaptive_kbd_mode
1362
1363This sysfs attribute controls the keyboard "face" that will be shown on the
1364Lenovo X1 Carbon 2nd gen (2014)'s adaptive keyboard. The value can be read
1365and set.
1366
13671 = Home mode
13682 = Web-browser mode
13693 = Web-conference mode
13704 = Function mode
13715 = Layflat mode
1372
1373For more details about which buttons will appear depending on the mode, please
1374review the laptop's user guide:
1375http://www.lenovo.com/shop/americas/content/user_guides/x1carbon_2_ug_en.pdf
1358 1376
1359Multiple Commands, Module Parameters 1377Multiple Commands, Module Parameters
1360------------------------------------ 1378------------------------------------
diff --git a/Documentation/md-cluster.txt b/Documentation/md-cluster.txt
new file mode 100644
index 000000000000..de1af7db3355
--- /dev/null
+++ b/Documentation/md-cluster.txt
@@ -0,0 +1,176 @@
1The cluster MD is a shared-device RAID for a cluster.
2
3
41. On-disk format
5
6Separate write-intent-bitmap are used for each cluster node.
7The bitmaps record all writes that may have been started on that node,
8and may not yet have finished. The on-disk layout is:
9
100 4k 8k 12k
11-------------------------------------------------------------------
12| idle | md super | bm super [0] + bits |
13| bm bits[0, contd] | bm super[1] + bits | bm bits[1, contd] |
14| bm super[2] + bits | bm bits [2, contd] | bm super[3] + bits |
15| bm bits [3, contd] | | |
16
17During "normal" functioning we assume the filesystem ensures that only one
18node writes to any given block at a time, so a write
19request will
20 - set the appropriate bit (if not already set)
21 - commit the write to all mirrors
22 - schedule the bit to be cleared after a timeout.
23
24Reads are just handled normally. It is up to the filesystem to
25ensure one node doesn't read from a location where another node (or the same
26node) is writing.
27
28
292. DLM Locks for management
30
31There are two locks for managing the device:
32
332.1 Bitmap lock resource (bm_lockres)
34
35 The bm_lockres protects individual node bitmaps. They are named in the
36 form bitmap001 for node 1, bitmap002 for node and so on. When a node
37 joins the cluster, it acquires the lock in PW mode and it stays so
38 during the lifetime the node is part of the cluster. The lock resource
39 number is based on the slot number returned by the DLM subsystem. Since
40 DLM starts node count from one and bitmap slots start from zero, one is
41 subtracted from the DLM slot number to arrive at the bitmap slot number.
42
433. Communication
44
45Each node has to communicate with other nodes when starting or ending
46resync, and metadata superblock updates.
47
483.1 Message Types
49
50 There are 3 types, of messages which are passed
51
52 3.1.1 METADATA_UPDATED: informs other nodes that the metadata has been
53 updated, and the node must re-read the md superblock. This is performed
54 synchronously.
55
56 3.1.2 RESYNC: informs other nodes that a resync is initiated or ended
57 so that each node may suspend or resume the region.
58
593.2 Communication mechanism
60
61 The DLM LVB is used to communicate within nodes of the cluster. There
62 are three resources used for the purpose:
63
64 3.2.1 Token: The resource which protects the entire communication
65 system. The node having the token resource is allowed to
66 communicate.
67
68 3.2.2 Message: The lock resource which carries the data to
69 communicate.
70
71 3.2.3 Ack: The resource, acquiring which means the message has been
72 acknowledged by all nodes in the cluster. The BAST of the resource
73 is used to inform the receive node that a node wants to communicate.
74
75The algorithm is:
76
77 1. receive status
78
79 sender receiver receiver
80 ACK:CR ACK:CR ACK:CR
81
82 2. sender get EX of TOKEN
83 sender get EX of MESSAGE
84 sender receiver receiver
85 TOKEN:EX ACK:CR ACK:CR
86 MESSAGE:EX
87 ACK:CR
88
89 Sender checks that it still needs to send a message. Messages received
90 or other events that happened while waiting for the TOKEN may have made
91 this message inappropriate or redundant.
92
93 3. sender write LVB.
94 sender down-convert MESSAGE from EX to CR
95 sender try to get EX of ACK
96 [ wait until all receiver has *processed* the MESSAGE ]
97
98 [ triggered by bast of ACK ]
99 receiver get CR of MESSAGE
100 receiver read LVB
101 receiver processes the message
102 [ wait finish ]
103 receiver release ACK
104
105 sender receiver receiver
106 TOKEN:EX MESSAGE:CR MESSAGE:CR
107 MESSAGE:CR
108 ACK:EX
109
110 4. triggered by grant of EX on ACK (indicating all receivers have processed
111 message)
112 sender down-convert ACK from EX to CR
113 sender release MESSAGE
114 sender release TOKEN
115 receiver upconvert to EX of MESSAGE
116 receiver get CR of ACK
117 receiver release MESSAGE
118
119 sender receiver receiver
120 ACK:CR ACK:CR ACK:CR
121
122
1234. Handling Failures
124
1254.1 Node Failure
126 When a node fails, the DLM informs the cluster with the slot. The node
127 starts a cluster recovery thread. The cluster recovery thread:
128 - acquires the bitmap<number> lock of the failed node
129 - opens the bitmap
130 - reads the bitmap of the failed node
131 - copies the set bitmap to local node
132 - cleans the bitmap of the failed node
133 - releases bitmap<number> lock of the failed node
134 - initiates resync of the bitmap on the current node
135
136 The resync process, is the regular md resync. However, in a clustered
137 environment when a resync is performed, it needs to tell other nodes
138 of the areas which are suspended. Before a resync starts, the node
139 send out RESYNC_START with the (lo,hi) range of the area which needs
140 to be suspended. Each node maintains a suspend_list, which contains
141 the list of ranges which are currently suspended. On receiving
142 RESYNC_START, the node adds the range to the suspend_list. Similarly,
143 when the node performing resync finishes, it send RESYNC_FINISHED
144 to other nodes and other nodes remove the corresponding entry from
145 the suspend_list.
146
147 A helper function, should_suspend() can be used to check if a particular
148 I/O range should be suspended or not.
149
1504.2 Device Failure
151 Device failures are handled and communicated with the metadata update
152 routine.
153
1545. Adding a new Device
155For adding a new device, it is necessary that all nodes "see" the new device
156to be added. For this, the following algorithm is used:
157
158 1. Node 1 issues mdadm --manage /dev/mdX --add /dev/sdYY which issues
159 ioctl(ADD_NEW_DISC with disc.state set to MD_DISK_CLUSTER_ADD)
160 2. Node 1 sends NEWDISK with uuid and slot number
161 3. Other nodes issue kobject_uevent_env with uuid and slot number
162 (Steps 4,5 could be a udev rule)
163 4. In userspace, the node searches for the disk, perhaps
164 using blkid -t SUB_UUID=""
165 5. Other nodes issue either of the following depending on whether the disk
166 was found:
167 ioctl(ADD_NEW_DISK with disc.state set to MD_DISK_CANDIDATE and
168 disc.number set to slot number)
169 ioctl(CLUSTERED_DISK_NACK)
170 6. Other nodes drop lock on no-new-devs (CR) if device is found
171 7. Node 1 attempts EX lock on no-new-devs
172 8. If node 1 gets the lock, it sends METADATA_UPDATED after unmarking the disk
173 as SpareLocal
174 9. If not (get no-new-dev lock), it fails the operation and sends METADATA_UPDATED
175 10. Other nodes get the information whether a disk is added or not
176 by the following METADATA_UPDATED.
diff --git a/Documentation/memory-barriers.txt b/Documentation/memory-barriers.txt
index 6974f1c2b4e1..f95746189b5d 100644
--- a/Documentation/memory-barriers.txt
+++ b/Documentation/memory-barriers.txt
@@ -1727,7 +1727,7 @@ There are some more advanced barrier functions:
1727 } 1727 }
1728 1728
1729 The dma_rmb() allows us guarantee the device has released ownership 1729 The dma_rmb() allows us guarantee the device has released ownership
1730 before we read the data from the descriptor, and he dma_wmb() allows 1730 before we read the data from the descriptor, and the dma_wmb() allows
1731 us to guarantee the data is written to the descriptor before the device 1731 us to guarantee the data is written to the descriptor before the device
1732 can see it now has ownership. The wmb() is needed to guarantee that the 1732 can see it now has ownership. The wmb() is needed to guarantee that the
1733 cache coherent memory writes have completed before attempting a write to 1733 cache coherent memory writes have completed before attempting a write to
diff --git a/Documentation/memory-hotplug.txt b/Documentation/memory-hotplug.txt
index ea03abfc97e9..ce2cfcf35c27 100644
--- a/Documentation/memory-hotplug.txt
+++ b/Documentation/memory-hotplug.txt
@@ -149,7 +149,7 @@ For example, assume 1GiB memory block size. A device for a memory starting at
149(0x100000000 / 1Gib = 4) 149(0x100000000 / 1Gib = 4)
150This device covers address range [0x100000000 ... 0x140000000) 150This device covers address range [0x100000000 ... 0x140000000)
151 151
152Under each memory block, you can see 4 files: 152Under each memory block, you can see 5 files:
153 153
154/sys/devices/system/memory/memoryXXX/phys_index 154/sys/devices/system/memory/memoryXXX/phys_index
155/sys/devices/system/memory/memoryXXX/phys_device 155/sys/devices/system/memory/memoryXXX/phys_device
@@ -359,38 +359,51 @@ Need more implementation yet....
359-------------------------------- 359--------------------------------
3608. Memory hotplug event notifier 3608. Memory hotplug event notifier
361-------------------------------- 361--------------------------------
362Memory hotplug has event notifier. There are 6 types of notification. 362Hotplugging events are sent to a notification queue.
363 363
364MEMORY_GOING_ONLINE 364There are six types of notification defined in include/linux/memory.h:
365
366MEM_GOING_ONLINE
365 Generated before new memory becomes available in order to be able to 367 Generated before new memory becomes available in order to be able to
366 prepare subsystems to handle memory. The page allocator is still unable 368 prepare subsystems to handle memory. The page allocator is still unable
367 to allocate from the new memory. 369 to allocate from the new memory.
368 370
369MEMORY_CANCEL_ONLINE 371MEM_CANCEL_ONLINE
370 Generated if MEMORY_GOING_ONLINE fails. 372 Generated if MEMORY_GOING_ONLINE fails.
371 373
372MEMORY_ONLINE 374MEM_ONLINE
373 Generated when memory has successfully brought online. The callback may 375 Generated when memory has successfully brought online. The callback may
374 allocate pages from the new memory. 376 allocate pages from the new memory.
375 377
376MEMORY_GOING_OFFLINE 378MEM_GOING_OFFLINE
377 Generated to begin the process of offlining memory. Allocations are no 379 Generated to begin the process of offlining memory. Allocations are no
378 longer possible from the memory but some of the memory to be offlined 380 longer possible from the memory but some of the memory to be offlined
379 is still in use. The callback can be used to free memory known to a 381 is still in use. The callback can be used to free memory known to a
380 subsystem from the indicated memory block. 382 subsystem from the indicated memory block.
381 383
382MEMORY_CANCEL_OFFLINE 384MEM_CANCEL_OFFLINE
383 Generated if MEMORY_GOING_OFFLINE fails. Memory is available again from 385 Generated if MEMORY_GOING_OFFLINE fails. Memory is available again from
384 the memory block that we attempted to offline. 386 the memory block that we attempted to offline.
385 387
386MEMORY_OFFLINE 388MEM_OFFLINE
387 Generated after offlining memory is complete. 389 Generated after offlining memory is complete.
388 390
389A callback routine can be registered by 391A callback routine can be registered by calling
392
390 hotplug_memory_notifier(callback_func, priority) 393 hotplug_memory_notifier(callback_func, priority)
391 394
392The second argument of callback function (action) is event types of above. 395Callback functions with higher values of priority are called before callback
393The third argument is passed by pointer of struct memory_notify. 396functions with lower values.
397
398A callback function must have the following prototype:
399
400 int callback_func(
401 struct notifier_block *self, unsigned long action, void *arg);
402
403The first argument of the callback function (self) is a pointer to the block
404of the notifier chain that points to the callback function itself.
405The second argument (action) is one of the event types described above.
406The third argument (arg) passes a pointer of struct memory_notify.
394 407
395struct memory_notify { 408struct memory_notify {
396 unsigned long start_pfn; 409 unsigned long start_pfn;
@@ -412,6 +425,18 @@ node loses all memory. If this is -1, then nodemask status is not changed.
412If status_changed_nid* >= 0, callback should create/discard structures for the 425If status_changed_nid* >= 0, callback should create/discard structures for the
413node if necessary. 426node if necessary.
414 427
428The callback routine shall return one of the values
429NOTIFY_DONE, NOTIFY_OK, NOTIFY_BAD, NOTIFY_STOP
430defined in include/linux/notifier.h
431
432NOTIFY_DONE and NOTIFY_OK have no effect on the further processing.
433
434NOTIFY_BAD is used as response to the MEM_GOING_ONLINE, MEM_GOING_OFFLINE,
435MEM_ONLINE, or MEM_OFFLINE action to cancel hotplugging. It stops
436further processing of the notification queue.
437
438NOTIFY_STOP stops further processing of the notification queue.
439
415-------------- 440--------------
4169. Future Work 4419. Future Work
417-------------- 442--------------
diff --git a/Documentation/powerpc/pci_iov_resource_on_powernv.txt b/Documentation/powerpc/pci_iov_resource_on_powernv.txt
new file mode 100644
index 000000000000..b55c5cd83f8d
--- /dev/null
+++ b/Documentation/powerpc/pci_iov_resource_on_powernv.txt
@@ -0,0 +1,301 @@
1Wei Yang <weiyang@linux.vnet.ibm.com>
2Benjamin Herrenschmidt <benh@au1.ibm.com>
3Bjorn Helgaas <bhelgaas@google.com>
426 Aug 2014
5
6This document describes the requirement from hardware for PCI MMIO resource
7sizing and assignment on PowerKVM and how generic PCI code handles this
8requirement. The first two sections describe the concepts of Partitionable
9Endpoints and the implementation on P8 (IODA2). The next two sections talks
10about considerations on enabling SRIOV on IODA2.
11
121. Introduction to Partitionable Endpoints
13
14A Partitionable Endpoint (PE) is a way to group the various resources
15associated with a device or a set of devices to provide isolation between
16partitions (i.e., filtering of DMA, MSIs etc.) and to provide a mechanism
17to freeze a device that is causing errors in order to limit the possibility
18of propagation of bad data.
19
20There is thus, in HW, a table of PE states that contains a pair of "frozen"
21state bits (one for MMIO and one for DMA, they get set together but can be
22cleared independently) for each PE.
23
24When a PE is frozen, all stores in any direction are dropped and all loads
25return all 1's value. MSIs are also blocked. There's a bit more state that
26captures things like the details of the error that caused the freeze etc., but
27that's not critical.
28
29The interesting part is how the various PCIe transactions (MMIO, DMA, ...)
30are matched to their corresponding PEs.
31
32The following section provides a rough description of what we have on P8
33(IODA2). Keep in mind that this is all per PHB (PCI host bridge). Each PHB
34is a completely separate HW entity that replicates the entire logic, so has
35its own set of PEs, etc.
36
372. Implementation of Partitionable Endpoints on P8 (IODA2)
38
39P8 supports up to 256 Partitionable Endpoints per PHB.
40
41 * Inbound
42
43 For DMA, MSIs and inbound PCIe error messages, we have a table (in
44 memory but accessed in HW by the chip) that provides a direct
45 correspondence between a PCIe RID (bus/dev/fn) with a PE number.
46 We call this the RTT.
47
48 - For DMA we then provide an entire address space for each PE that can
49 contain two "windows", depending on the value of PCI address bit 59.
50 Each window can be configured to be remapped via a "TCE table" (IOMMU
51 translation table), which has various configurable characteristics
52 not described here.
53
54 - For MSIs, we have two windows in the address space (one at the top of
55 the 32-bit space and one much higher) which, via a combination of the
56 address and MSI value, will result in one of the 2048 interrupts per
57 bridge being triggered. There's a PE# in the interrupt controller
58 descriptor table as well which is compared with the PE# obtained from
59 the RTT to "authorize" the device to emit that specific interrupt.
60
61 - Error messages just use the RTT.
62
63 * Outbound. That's where the tricky part is.
64
65 Like other PCI host bridges, the Power8 IODA2 PHB supports "windows"
66 from the CPU address space to the PCI address space. There is one M32
67 window and sixteen M64 windows. They have different characteristics.
68 First what they have in common: they forward a configurable portion of
69 the CPU address space to the PCIe bus and must be naturally aligned
70 power of two in size. The rest is different:
71
72 - The M32 window:
73
74 * Is limited to 4GB in size.
75
76 * Drops the top bits of the address (above the size) and replaces
77 them with a configurable value. This is typically used to generate
78 32-bit PCIe accesses. We configure that window at boot from FW and
79 don't touch it from Linux; it's usually set to forward a 2GB
80 portion of address space from the CPU to PCIe
81 0x8000_0000..0xffff_ffff. (Note: The top 64KB are actually
82 reserved for MSIs but this is not a problem at this point; we just
83 need to ensure Linux doesn't assign anything there, the M32 logic
84 ignores that however and will forward in that space if we try).
85
86 * It is divided into 256 segments of equal size. A table in the chip
87 maps each segment to a PE#. That allows portions of the MMIO space
88 to be assigned to PEs on a segment granularity. For a 2GB window,
89 the segment granularity is 2GB/256 = 8MB.
90
91 Now, this is the "main" window we use in Linux today (excluding
92 SR-IOV). We basically use the trick of forcing the bridge MMIO windows
93 onto a segment alignment/granularity so that the space behind a bridge
94 can be assigned to a PE.
95
96 Ideally we would like to be able to have individual functions in PEs
97 but that would mean using a completely different address allocation
98 scheme where individual function BARs can be "grouped" to fit in one or
99 more segments.
100
101 - The M64 windows:
102
103 * Must be at least 256MB in size.
104
105 * Do not translate addresses (the address on PCIe is the same as the
106 address on the PowerBus). There is a way to also set the top 14
107 bits which are not conveyed by PowerBus but we don't use this.
108
109 * Can be configured to be segmented. When not segmented, we can
110 specify the PE# for the entire window. When segmented, a window
111 has 256 segments; however, there is no table for mapping a segment
112 to a PE#. The segment number *is* the PE#.
113
114 * Support overlaps. If an address is covered by multiple windows,
115 there's a defined ordering for which window applies.
116
117 We have code (fairly new compared to the M32 stuff) that exploits that
118 for large BARs in 64-bit space:
119
120 We configure an M64 window to cover the entire region of address space
121 that has been assigned by FW for the PHB (about 64GB, ignore the space
122 for the M32, it comes out of a different "reserve"). We configure it
123 as segmented.
124
125 Then we do the same thing as with M32, using the bridge alignment
126 trick, to match to those giant segments.
127
128 Since we cannot remap, we have two additional constraints:
129
130 - We do the PE# allocation *after* the 64-bit space has been assigned
131 because the addresses we use directly determine the PE#. We then
132 update the M32 PE# for the devices that use both 32-bit and 64-bit
133 spaces or assign the remaining PE# to 32-bit only devices.
134
135 - We cannot "group" segments in HW, so if a device ends up using more
136 than one segment, we end up with more than one PE#. There is a HW
137 mechanism to make the freeze state cascade to "companion" PEs but
138 that only works for PCIe error messages (typically used so that if
139 you freeze a switch, it freezes all its children). So we do it in
140 SW. We lose a bit of effectiveness of EEH in that case, but that's
141 the best we found. So when any of the PEs freezes, we freeze the
142 other ones for that "domain". We thus introduce the concept of
143 "master PE" which is the one used for DMA, MSIs, etc., and "secondary
144 PEs" that are used for the remaining M64 segments.
145
146 We would like to investigate using additional M64 windows in "single
147 PE" mode to overlay over specific BARs to work around some of that, for
148 example for devices with very large BARs, e.g., GPUs. It would make
149 sense, but we haven't done it yet.
150
1513. Considerations for SR-IOV on PowerKVM
152
153 * SR-IOV Background
154
155 The PCIe SR-IOV feature allows a single Physical Function (PF) to
156 support several Virtual Functions (VFs). Registers in the PF's SR-IOV
157 Capability control the number of VFs and whether they are enabled.
158
159 When VFs are enabled, they appear in Configuration Space like normal
160 PCI devices, but the BARs in VF config space headers are unusual. For
161 a non-VF device, software uses BARs in the config space header to
162 discover the BAR sizes and assign addresses for them. For VF devices,
163 software uses VF BAR registers in the *PF* SR-IOV Capability to
164 discover sizes and assign addresses. The BARs in the VF's config space
165 header are read-only zeros.
166
167 When a VF BAR in the PF SR-IOV Capability is programmed, it sets the
168 base address for all the corresponding VF(n) BARs. For example, if the
169 PF SR-IOV Capability is programmed to enable eight VFs, and it has a
170 1MB VF BAR0, the address in that VF BAR sets the base of an 8MB region.
171 This region is divided into eight contiguous 1MB regions, each of which
172 is a BAR0 for one of the VFs. Note that even though the VF BAR
173 describes an 8MB region, the alignment requirement is for a single VF,
174 i.e., 1MB in this example.
175
176 There are several strategies for isolating VFs in PEs:
177
178 - M32 window: There's one M32 window, and it is split into 256
179 equally-sized segments. The finest granularity possible is a 256MB
180 window with 1MB segments. VF BARs that are 1MB or larger could be
181 mapped to separate PEs in this window. Each segment can be
182 individually mapped to a PE via the lookup table, so this is quite
183 flexible, but it works best when all the VF BARs are the same size. If
184 they are different sizes, the entire window has to be small enough that
185 the segment size matches the smallest VF BAR, which means larger VF
186 BARs span several segments.
187
188 - Non-segmented M64 window: A non-segmented M64 window is mapped entirely
189 to a single PE, so it could only isolate one VF.
190
191 - Single segmented M64 windows: A segmented M64 window could be used just
192 like the M32 window, but the segments can't be individually mapped to
193 PEs (the segment number is the PE#), so there isn't as much
194 flexibility. A VF with multiple BARs would have to be in a "domain" of
195 multiple PEs, which is not as well isolated as a single PE.
196
197 - Multiple segmented M64 windows: As usual, each window is split into 256
198 equally-sized segments, and the segment number is the PE#. But if we
199 use several M64 windows, they can be set to different base addresses
200 and different segment sizes. If we have VFs that each have a 1MB BAR
201 and a 32MB BAR, we could use one M64 window to assign 1MB segments and
202 another M64 window to assign 32MB segments.
203
204 Finally, the plan to use M64 windows for SR-IOV, which will be described
205 more in the next two sections. For a given VF BAR, we need to
206 effectively reserve the entire 256 segments (256 * VF BAR size) and
207 position the VF BAR to start at the beginning of a free range of
208 segments/PEs inside that M64 window.
209
210 The goal is of course to be able to give a separate PE for each VF.
211
212 The IODA2 platform has 16 M64 windows, which are used to map MMIO
213 range to PE#. Each M64 window defines one MMIO range and this range is
214 divided into 256 segments, with each segment corresponding to one PE.
215
216 We decide to leverage this M64 window to map VFs to individual PEs, since
217 SR-IOV VF BARs are all the same size.
218
219 But doing so introduces another problem: total_VFs is usually smaller
220 than the number of M64 window segments, so if we map one VF BAR directly
221 to one M64 window, some part of the M64 window will map to another
222 device's MMIO range.
223
224 IODA supports 256 PEs, so segmented windows contain 256 segments, so if
225 total_VFs is less than 256, we have the situation in Figure 1.0, where
226 segments [total_VFs, 255] of the M64 window may map to some MMIO range on
227 other devices:
228
229 0 1 total_VFs - 1
230 +------+------+- -+------+------+
231 | | | ... | | |
232 +------+------+- -+------+------+
233
234 VF(n) BAR space
235
236 0 1 total_VFs - 1 255
237 +------+------+- -+------+------+- -+------+------+
238 | | | ... | | | ... | | |
239 +------+------+- -+------+------+- -+------+------+
240
241 M64 window
242
243 Figure 1.0 Direct map VF(n) BAR space
244
245 Our current solution is to allocate 256 segments even if the VF(n) BAR
246 space doesn't need that much, as shown in Figure 1.1:
247
248 0 1 total_VFs - 1 255
249 +------+------+- -+------+------+- -+------+------+
250 | | | ... | | | ... | | |
251 +------+------+- -+------+------+- -+------+------+
252
253 VF(n) BAR space + extra
254
255 0 1 total_VFs - 1 255
256 +------+------+- -+------+------+- -+------+------+
257 | | | ... | | | ... | | |
258 +------+------+- -+------+------+- -+------+------+
259
260 M64 window
261
262 Figure 1.1 Map VF(n) BAR space + extra
263
264 Allocating the extra space ensures that the entire M64 window will be
265 assigned to this one SR-IOV device and none of the space will be
266 available for other devices. Note that this only expands the space
267 reserved in software; there are still only total_VFs VFs, and they only
268 respond to segments [0, total_VFs - 1]. There's nothing in hardware that
269 responds to segments [total_VFs, 255].
270
2714. Implications for the Generic PCI Code
272
273The PCIe SR-IOV spec requires that the base of the VF(n) BAR space be
274aligned to the size of an individual VF BAR.
275
276In IODA2, the MMIO address determines the PE#. If the address is in an M32
277window, we can set the PE# by updating the table that translates segments
278to PE#s. Similarly, if the address is in an unsegmented M64 window, we can
279set the PE# for the window. But if it's in a segmented M64 window, the
280segment number is the PE#.
281
282Therefore, the only way to control the PE# for a VF is to change the base
283of the VF(n) BAR space in the VF BAR. If the PCI core allocates the exact
284amount of space required for the VF(n) BAR space, the VF BAR value is fixed
285and cannot be changed.
286
287On the other hand, if the PCI core allocates additional space, the VF BAR
288value can be changed as long as the entire VF(n) BAR space remains inside
289the space allocated by the core.
290
291Ideally the segment size will be the same as an individual VF BAR size.
292Then each VF will be in its own PE. The VF BARs (and therefore the PE#s)
293are contiguous. If VF0 is in PE(x), then VF(n) is in PE(x+n). If we
294allocate 256 segments, there are (256 - numVFs) choices for the PE# of VF0.
295
296If the segment size is smaller than the VF BAR size, it will take several
297segments to cover a VF BAR, and a VF will be in several PEs. This is
298possible, but the isolation isn't as good, and it reduces the number of PE#
299choices because instead of consuming only numVFs segments, the VF(n) BAR
300space will consume (numVFs * n) segments. That means there aren't as many
301available segments for adjusting base of the VF(n) BAR space.
diff --git a/Documentation/powerpc/transactional_memory.txt b/Documentation/powerpc/transactional_memory.txt
index 9791e98ab49c..ba0a2a4a54ba 100644
--- a/Documentation/powerpc/transactional_memory.txt
+++ b/Documentation/powerpc/transactional_memory.txt
@@ -74,22 +74,23 @@ Causes of transaction aborts
74Syscalls 74Syscalls
75======== 75========
76 76
77Performing syscalls from within transaction is not recommended, and can lead 77Syscalls made from within an active transaction will not be performed and the
78to unpredictable results. 78transaction will be doomed by the kernel with the failure code TM_CAUSE_SYSCALL
79| TM_CAUSE_PERSISTENT.
79 80
80Syscalls do not by design abort transactions, but beware: The kernel code will 81Syscalls made from within a suspended transaction are performed as normal and
81not be running in transactional state. The effect of syscalls will always 82the transaction is not explicitly doomed by the kernel. However, what the
82remain visible, but depending on the call they may abort your transaction as a 83kernel does to perform the syscall may result in the transaction being doomed
83side-effect, read soon-to-be-aborted transactional data that should not remain 84by the hardware. The syscall is performed in suspended mode so any side
84invisible, etc. If you constantly retry a transaction that constantly aborts 85effects will be persistent, independent of transaction success or failure. No
85itself by calling a syscall, you'll have a livelock & make no progress. 86guarantees are provided by the kernel about which syscalls will affect
87transaction success.
86 88
87Simple syscalls (e.g. sigprocmask()) "could" be OK. Even things like write() 89Care must be taken when relying on syscalls to abort during active transactions
88from, say, printf() should be OK as long as the kernel does not access any 90if the calls are made via a library. Libraries may cache values (which may
89memory that was accessed transactionally. 91give the appearance of success) or perform operations that cause transaction
90 92failure before entering the kernel (which may produce different failure codes).
91Consider any syscalls that happen to work as debug-only -- not recommended for 93Examples are glibc's getpid() and lazy symbol resolution.
92production use. Best to queue them up till after the transaction is over.
93 94
94 95
95Signals 96Signals
@@ -174,10 +175,9 @@ These are defined in <asm/reg.h>, and distinguish different reasons why the
174kernel aborted a transaction: 175kernel aborted a transaction:
175 176
176 TM_CAUSE_RESCHED Thread was rescheduled. 177 TM_CAUSE_RESCHED Thread was rescheduled.
177 TM_CAUSE_TLBI Software TLB invalide. 178 TM_CAUSE_TLBI Software TLB invalid.
178 TM_CAUSE_FAC_UNAV FP/VEC/VSX unavailable trap. 179 TM_CAUSE_FAC_UNAV FP/VEC/VSX unavailable trap.
179 TM_CAUSE_SYSCALL Currently unused; future syscalls that must abort 180 TM_CAUSE_SYSCALL Syscall from active transaction.
180 transactions for consistency will use this.
181 TM_CAUSE_SIGNAL Signal delivered. 181 TM_CAUSE_SIGNAL Signal delivered.
182 TM_CAUSE_MISC Currently unused. 182 TM_CAUSE_MISC Currently unused.
183 TM_CAUSE_ALIGNMENT Alignment fault. 183 TM_CAUSE_ALIGNMENT Alignment fault.
@@ -185,7 +185,7 @@ kernel aborted a transaction:
185 185
186These can be checked by the user program's abort handler as TEXASR[0:7]. If 186These can be checked by the user program's abort handler as TEXASR[0:7]. If
187bit 7 is set, it indicates that the error is consider persistent. For example 187bit 7 is set, it indicates that the error is consider persistent. For example
188a TM_CAUSE_ALIGNMENT will be persistent while a TM_CAUSE_RESCHED will not.q 188a TM_CAUSE_ALIGNMENT will be persistent while a TM_CAUSE_RESCHED will not.
189 189
190GDB 190GDB
191=== 191===
diff --git a/Documentation/printk-formats.txt b/Documentation/printk-formats.txt
index cb6a596072bb..2216eb187c21 100644
--- a/Documentation/printk-formats.txt
+++ b/Documentation/printk-formats.txt
@@ -228,7 +228,7 @@ UUID/GUID addresses:
228 lower ('l') or upper case ('L') hex characters - and big endian order 228 lower ('l') or upper case ('L') hex characters - and big endian order
229 in lower ('b') or upper case ('B') hex characters. 229 in lower ('b') or upper case ('B') hex characters.
230 230
231 Where no additional specifiers are used the default little endian 231 Where no additional specifiers are used the default big endian
232 order with lower case hex characters will be printed. 232 order with lower case hex characters will be printed.
233 233
234 Passed by reference. 234 Passed by reference.
@@ -273,6 +273,16 @@ struct clk:
273 273
274 Passed by reference. 274 Passed by reference.
275 275
276bitmap and its derivatives such as cpumask and nodemask:
277
278 %*pb 0779
279 %*pbl 0,3-6,8-10
280
281 For printing bitmap and its derivatives such as cpumask and nodemask,
282 %*pb output the bitmap with field width as the number of bits and %*pbl
283 output the bitmap as range list with field width as the number of bits.
284
285 Passed by reference.
276 286
277Thank you for your cooperation and attention. 287Thank you for your cooperation and attention.
278 288
diff --git a/Documentation/scheduler/completion.txt b/Documentation/scheduler/completion.txt
index f77651eca31e..2622bc7a188b 100644
--- a/Documentation/scheduler/completion.txt
+++ b/Documentation/scheduler/completion.txt
@@ -7,24 +7,24 @@ Introduction:
7------------- 7-------------
8 8
9If you have one or more threads of execution that must wait for some process 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 10to have reached a point or a specific state, completions can provide a
11free solution to this problem. Semantically they are somewhat like a 11race-free solution to this problem. Semantically they are somewhat like a
12pthread_barriers and have similar use-cases. 12pthread_barrier and have similar use-cases.
13 13
14Completions are a code synchronization mechanism that is preferable to any 14Completions are a code synchronization mechanism which is preferable to any
15misuse of locks. Any time you think of using yield() or some quirky 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 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 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 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 19efficient code as both threads can continue until the result is actually
20needed. 20needed.
21 21
22Completions are built on top of the generic event infrastructure in Linux, 22Completions are built on top of the generic event infrastructure in Linux,
23with the event reduced to a simple flag appropriately called "done" in 23with the event reduced to a simple flag (appropriately called "done") in
24struct completion, that tells the waiting threads of execution if they 24struct completion that tells the waiting threads of execution if they
25can continue safely. 25can continue safely.
26 26
27As completions are scheduling related the code is found in 27As completions are scheduling related, the code is found in
28kernel/sched/completion.c - for details on completion design and 28kernel/sched/completion.c - for details on completion design and
29implementation see completions-design.txt 29implementation see completions-design.txt
30 30
@@ -32,9 +32,9 @@ implementation see completions-design.txt
32Usage: 32Usage:
33------ 33------
34 34
35There are three parts to the using completions, the initialization of the 35There are three parts to using completions, the initialization of the
36struct completion, the waiting part through a call to one of the variants of 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(), 37wait_for_completion() and the signaling side through a call to complete()
38or complete_all(). Further there are some helper functions for checking the 38or complete_all(). Further there are some helper functions for checking the
39state of completions. 39state of completions.
40 40
@@ -50,7 +50,7 @@ handling of completions is:
50providing the wait queue to place tasks on for waiting and the flag for 50providing the wait queue to place tasks on for waiting and the flag for
51indicating the state of affairs. 51indicating the state of affairs.
52 52
53Completions should be named to convey the intent of the waiter. A good 53Completions should be named to convey the intent of the waiter. A good
54example is: 54example is:
55 55
56 wait_for_completion(&early_console_added); 56 wait_for_completion(&early_console_added);
@@ -73,7 +73,7 @@ the default state to "not available", that is, "done" is set to 0.
73 73
74The re-initialization function, reinit_completion(), simply resets the 74The re-initialization function, reinit_completion(), simply resets the
75done element to "not available", thus again to 0, without touching the 75done element to "not available", thus again to 0, without touching the
76wait queue. Calling init_completion() on the same completions object is 76wait queue. Calling init_completion() twice on the same completion object is
77most likely a bug as it re-initializes the queue to an empty queue and 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. 78enqueued tasks could get "lost" - use reinit_completion() in that case.
79 79
@@ -87,10 +87,17 @@ initialization should always use:
87 DECLARE_COMPLETION_ONSTACK(setup_done) 87 DECLARE_COMPLETION_ONSTACK(setup_done)
88 88
89suitable for automatic/local variables on the stack and will make lockdep 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 90happy. Note also that one needs to make *sure* the completion passed to
91work threads remains in-scope, and no references remain to on-stack data 91work threads remains in-scope, and no references remain to on-stack data
92when the initiating function returns. 92when the initiating function returns.
93 93
94Using on-stack completions for code that calls any of the _timeout or
95_interruptible/_killable variants is not advisable as they will require
96additional synchronization to prevent the on-stack completion object in
97the timeout/signal cases from going out of scope. Consider using dynamically
98allocated completions when intending to use the _interruptible/_killable
99or _timeout variants of wait_for_completion().
100
94 101
95Waiting for completions: 102Waiting for completions:
96------------------------ 103------------------------
@@ -99,34 +106,38 @@ For a thread of execution to wait for some concurrent work to finish, it
99calls wait_for_completion() on the initialized completion structure. 106calls wait_for_completion() on the initialized completion structure.
100A typical usage scenario is: 107A typical usage scenario is:
101 108
102 structure completion setup_done; 109 struct completion setup_done;
103 init_completion(&setup_done); 110 init_completion(&setup_done);
104 initialze_work(...,&setup_done,...) 111 initialize_work(...,&setup_done,...)
105 112
106 /* run non-dependent code */ /* do setup */ 113 /* run non-dependent code */ /* do setup */
107 114
108 wait_for_completion(&seupt_done); complete(setup_done) 115 wait_for_completion(&setup_done); complete(setup_done)
109 116
110This is not implying any temporal order of wait_for_completion() and the 117This is not implying any temporal order on wait_for_completion() and the
111call to complete() - if the call to complete() happened before the call 118call to complete() - if the call to complete() happened before the call
112to wait_for_completion() then the waiting side simply will continue 119to wait_for_completion() then the waiting side simply will continue
113immediately as all dependencies are satisfied. 120immediately as all dependencies are satisfied if not it will block until
121completion is signaled by complete().
114 122
115Note that wait_for_completion() is calling spin_lock_irq/spin_unlock_irq 123Note 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. 124so 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 125Calling it from hard-irq or irqs-off atomic contexts will result in
118enabling of interrupts. 126hard-to-detect spurious enabling of interrupts.
119 127
120wait_for_completion(): 128wait_for_completion():
121 129
122 void wait_for_completion(struct completion *done): 130 void wait_for_completion(struct completion *done):
123 131
124The default behavior is to wait without a timeout and mark the task as 132The default behavior is to wait without a timeout and to mark the task as
125uninterruptible. wait_for_completion() and its variants are only safe 133uninterruptible. wait_for_completion() and its variants are only safe
126in soft-interrupt or process context but not in hard-irq context. 134in process context (as they can sleep) but not in atomic context,
135interrupt context, with disabled irqs. or preemption is disabled - see also
136try_wait_for_completion() below for handling completion in atomic/interrupt
137context.
138
127As all variants of wait_for_completion() can (obviously) block for a long 139As 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 140time, you probably don't want to call this with held mutexes.
129try_wait_for_completion() below.
130 141
131 142
132Variants available: 143Variants available:
@@ -141,43 +152,44 @@ A 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 152so 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 153type. Checking for the specific meaning of return values also has been found
143to be quite inaccurate e.g. constructs like 154to be quite inaccurate e.g. constructs like
144if(!wait_for_completion_interruptible_timeout(...)) would execute the same 155if (!wait_for_completion_interruptible_timeout(...)) would execute the same
145code path for successful completion and for the interrupted case - which is 156code path for successful completion and for the interrupted case - which is
146probably not what you want. 157probably not what you want.
147 158
148 int wait_for_completion_interruptible(struct completion *done) 159 int wait_for_completion_interruptible(struct completion *done)
149 160
150marking the task TASK_INTERRUPTIBLE. If a signal was received while waiting. 161This function marks the task TASK_INTERRUPTIBLE. If a signal was received
151It will return -ERESTARTSYS and 0 otherwise. 162while waiting it will return -ERESTARTSYS; 0 otherwise.
152 163
153 unsigned long wait_for_completion_timeout(struct completion *done, 164 unsigned long wait_for_completion_timeout(struct completion *done,
154 unsigned long timeout) 165 unsigned long timeout)
155 166
156The task is marked as TASK_UNINTERRUPTIBLE and will wait at most timeout 167The 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 168(in jiffies). If timeout occurs it returns 0 else the remaining time in
158jiffies (but at least 1). Timeouts are preferably passed by msecs_to_jiffies() 169jiffies (but at least 1). Timeouts are preferably calculated with
159or usecs_to_jiffies(). If the returned timeout value is deliberately ignored 170msecs_to_jiffies() or usecs_to_jiffies(). If the returned timeout value is
160a comment should probably explain why (e.g. see drivers/mfd/wm8350-core.c 171deliberately ignored a comment should probably explain why (e.g. see
161wm8350_read_auxadc()) 172drivers/mfd/wm8350-core.c wm8350_read_auxadc())
162 173
163 long wait_for_completion_interruptible_timeout( 174 long wait_for_completion_interruptible_timeout(
164 struct completion *done, unsigned long timeout) 175 struct completion *done, unsigned long timeout)
165 176
166passing a timeout in jiffies and marking the task as TASK_INTERRUPTIBLE. If a 177This function passes a timeout in jiffies and marks the task as
167signal was received it will return -ERESTARTSYS, 0 if completion timed-out and 178TASK_INTERRUPTIBLE. If a signal was received it will return -ERESTARTSYS;
168the remaining time in jiffies if completion occurred. 179otherwise it returns 0 if the completion timed out or the remaining time in
180jiffies if completion occurred.
169 181
170Further variants include _killable which passes TASK_KILLABLE as the 182Further variants include _killable which uses TASK_KILLABLE as the
171designated tasks state and will return a -ERESTARTSYS if interrupted or 183designated tasks state and will return -ERESTARTSYS if it is interrupted or
172else 0 if completions was achieved as well as a _timeout variant. 184else 0 if completion was achieved. There is a _timeout variant as well:
173 185
174 long wait_for_completion_killable(struct completion *done) 186 long wait_for_completion_killable(struct completion *done)
175 long wait_for_completion_killable_timeout(struct completion *done, 187 long wait_for_completion_killable_timeout(struct completion *done,
176 unsigned long timeout) 188 unsigned long timeout)
177 189
178The _io variants wait_for_completion_io behave the same as the non-_io 190The _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 191variants, except for accounting waiting time as waiting on IO, which has
180an impact on how scheduling is calculated. 192an impact on how the task is accounted in scheduling stats.
181 193
182 void wait_for_completion_io(struct completion *done) 194 void wait_for_completion_io(struct completion *done)
183 unsigned long wait_for_completion_io_timeout(struct completion *done 195 unsigned long wait_for_completion_io_timeout(struct completion *done
@@ -187,13 +199,13 @@ an impact on how scheduling is calculated.
187Signaling completions: 199Signaling completions:
188---------------------- 200----------------------
189 201
190A thread of execution that wants to signal that the conditions for 202A thread that wants to signal that the conditions for continuation have been
191continuation have been achieved calls complete() to signal exactly one 203achieved calls complete() to signal exactly one of the waiters that it can
192of the waiters that it can continue. 204continue.
193 205
194 void complete(struct completion *done) 206 void complete(struct completion *done)
195 207
196or calls complete_all to signal all current and future waiters. 208or calls complete_all() to signal all current and future waiters.
197 209
198 void complete_all(struct completion *done) 210 void complete_all(struct completion *done)
199 211
@@ -205,32 +217,32 @@ wakeup order is the same in which they were enqueued (FIFO order).
205If complete() is called multiple times then this will allow for that number 217If complete() is called multiple times then this will allow for that number
206of waiters to continue - each call to complete() will simply increment the 218of waiters to continue - each call to complete() will simply increment the
207done element. Calling complete_all() multiple times is a bug though. Both 219done element. Calling complete_all() multiple times is a bug though. Both
208complete() and complete_all() can be called in hard-irq context safely. 220complete() and complete_all() can be called in hard-irq/atomic context safely.
209 221
210There only can be one thread calling complete() or complete_all() on a 222There only can be one thread calling complete() or complete_all() on a
211particular struct completions at any time - serialized through the wait 223particular struct completion at any time - serialized through the wait
212queue spinlock. Any such concurrent calls to complete() or complete_all() 224queue spinlock. Any such concurrent calls to complete() or complete_all()
213probably are a design bug. 225probably are a design bug.
214 226
215Signaling completion from hard-irq context is fine as it will appropriately 227Signaling completion from hard-irq context is fine as it will appropriately
216lock with spin_lock_irqsave/spin_unlock_irqrestore. 228lock with spin_lock_irqsave/spin_unlock_irqrestore and it will never sleep.
217 229
218 230
219try_wait_for_completion()/completion_done(): 231try_wait_for_completion()/completion_done():
220-------------------------------------------- 232--------------------------------------------
221 233
222The try_wait_for_completion will not put the thread on the wait queue but 234The try_wait_for_completion() function will not put the thread on the wait
223rather returns false if it would need to enqueue (block) the thread, else it 235queue but rather returns false if it would need to enqueue (block) the thread,
224consumes any posted completions and returns true. 236else it consumes one posted completion and returns true.
225 237
226 bool try_wait_for_completion(struct completion *done) 238 bool try_wait_for_completion(struct completion *done)
227 239
228Finally to check state of a completions without changing it in any way is 240Finally, to check the state of a completion without changing it in any way,
229provided by completion_done() returning false if there are any posted 241call completion_done(), which returns false if there are no posted
230completion that was not yet consumed by waiters implying that there are 242completions that were not yet consumed by waiters (implying that there are
231waiters and true otherwise; 243waiters) and true otherwise;
232 244
233 bool completion_done(struct completion *done) 245 bool completion_done(struct completion *done)
234 246
235Both try_wait_for_completion() and completion_done() are safe to be called in 247Both try_wait_for_completion() and completion_done() are safe to be called in
236hard-irq context. 248hard-irq or atomic context.
diff --git a/Documentation/spi/spidev_test.c b/Documentation/spi/spidev_test.c
index 94f574b0fdb2..135b3f592b83 100644
--- a/Documentation/spi/spidev_test.c
+++ b/Documentation/spi/spidev_test.c
@@ -80,7 +80,7 @@ static void hex_dump(const void *src, size_t length, size_t line_size, char *pre
80 * Unescape - process hexadecimal escape character 80 * Unescape - process hexadecimal escape character
81 * converts shell input "\x23" -> 0x23 81 * converts shell input "\x23" -> 0x23
82 */ 82 */
83int unespcape(char *_dst, char *_src, size_t len) 83static int unescape(char *_dst, char *_src, size_t len)
84{ 84{
85 int ret = 0; 85 int ret = 0;
86 char *src = _src; 86 char *src = _src;
@@ -304,7 +304,7 @@ int main(int argc, char *argv[])
304 size = strlen(input_tx+1); 304 size = strlen(input_tx+1);
305 tx = malloc(size); 305 tx = malloc(size);
306 rx = malloc(size); 306 rx = malloc(size);
307 size = unespcape((char *)tx, input_tx, size); 307 size = unescape((char *)tx, input_tx, size);
308 transfer(fd, tx, rx, size); 308 transfer(fd, tx, rx, size);
309 free(rx); 309 free(rx);
310 free(tx); 310 free(tx);
diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt
index 99d7eb3a1416..c831001c45f1 100644
--- a/Documentation/sysctl/kernel.txt
+++ b/Documentation/sysctl/kernel.txt
@@ -872,6 +872,27 @@ can be ORed together:
872 872
873============================================================== 873==============================================================
874 874
875threads-max
876
877This value controls the maximum number of threads that can be created
878using fork().
879
880During initialization the kernel sets this value such that even if the
881maximum number of threads is created, the thread structures occupy only
882a part (1/8th) of the available RAM pages.
883
884The minimum value that can be written to threads-max is 20.
885The maximum value that can be written to threads-max is given by the
886constant FUTEX_TID_MASK (0x3fffffff).
887If a value outside of this range is written to threads-max an error
888EINVAL occurs.
889
890The value written is checked against the available RAM pages. If the
891thread structures would occupy too much (more than 1/8th) of the
892available RAM pages threads-max is reduced accordingly.
893
894==============================================================
895
875unknown_nmi_panic: 896unknown_nmi_panic:
876 897
877The value in this file affects behavior of handling NMI. When the 898The value in this file affects behavior of handling NMI. When the
diff --git a/Documentation/target/tcm_mod_builder.py b/Documentation/target/tcm_mod_builder.py
index 2b47704f75cb..2ba71cea0172 100755
--- a/Documentation/target/tcm_mod_builder.py
+++ b/Documentation/target/tcm_mod_builder.py
@@ -237,8 +237,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name):
237 buf += "#include \"" + fabric_mod_name + "_base.h\"\n" 237 buf += "#include \"" + fabric_mod_name + "_base.h\"\n"
238 buf += "#include \"" + fabric_mod_name + "_fabric.h\"\n\n" 238 buf += "#include \"" + fabric_mod_name + "_fabric.h\"\n\n"
239 239
240 buf += "/* Local pointer to allocated TCM configfs fabric module */\n" 240 buf += "static const struct target_core_fabric_ops " + fabric_mod_name + "_ops;\n\n"
241 buf += "struct target_fabric_configfs *" + fabric_mod_name + "_fabric_configfs;\n\n"
242 241
243 buf += "static struct se_node_acl *" + fabric_mod_name + "_make_nodeacl(\n" 242 buf += "static struct se_node_acl *" + fabric_mod_name + "_make_nodeacl(\n"
244 buf += " struct se_portal_group *se_tpg,\n" 243 buf += " struct se_portal_group *se_tpg,\n"
@@ -309,8 +308,8 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name):
309 buf += " }\n" 308 buf += " }\n"
310 buf += " tpg->" + fabric_mod_port + " = " + fabric_mod_port + ";\n" 309 buf += " tpg->" + fabric_mod_port + " = " + fabric_mod_port + ";\n"
311 buf += " tpg->" + fabric_mod_port + "_tpgt = tpgt;\n\n" 310 buf += " tpg->" + fabric_mod_port + "_tpgt = tpgt;\n\n"
312 buf += " ret = core_tpg_register(&" + fabric_mod_name + "_fabric_configfs->tf_ops, wwn,\n" 311 buf += " ret = core_tpg_register(&" + fabric_mod_name + "_ops, wwn,\n"
313 buf += " &tpg->se_tpg, (void *)tpg,\n" 312 buf += " &tpg->se_tpg, tpg,\n"
314 buf += " TRANSPORT_TPG_TYPE_NORMAL);\n" 313 buf += " TRANSPORT_TPG_TYPE_NORMAL);\n"
315 buf += " if (ret < 0) {\n" 314 buf += " if (ret < 0) {\n"
316 buf += " kfree(tpg);\n" 315 buf += " kfree(tpg);\n"
@@ -370,7 +369,10 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name):
370 buf += " NULL,\n" 369 buf += " NULL,\n"
371 buf += "};\n\n" 370 buf += "};\n\n"
372 371
373 buf += "static struct target_core_fabric_ops " + fabric_mod_name + "_ops = {\n" 372 buf += "static const struct target_core_fabric_ops " + fabric_mod_name + "_ops = {\n"
373 buf += " .module = THIS_MODULE,\n"
374 buf += " .name = " + fabric_mod_name + ",\n"
375 buf += " .get_fabric_proto_ident = " + fabric_mod_name + "_get_fabric_proto_ident,\n"
374 buf += " .get_fabric_name = " + fabric_mod_name + "_get_fabric_name,\n" 376 buf += " .get_fabric_name = " + fabric_mod_name + "_get_fabric_name,\n"
375 buf += " .get_fabric_proto_ident = " + fabric_mod_name + "_get_fabric_proto_ident,\n" 377 buf += " .get_fabric_proto_ident = " + fabric_mod_name + "_get_fabric_proto_ident,\n"
376 buf += " .tpg_get_wwn = " + fabric_mod_name + "_get_fabric_wwn,\n" 378 buf += " .tpg_get_wwn = " + fabric_mod_name + "_get_fabric_wwn,\n"
@@ -413,75 +415,18 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name):
413 buf += " .fabric_drop_np = NULL,\n" 415 buf += " .fabric_drop_np = NULL,\n"
414 buf += " .fabric_make_nodeacl = " + fabric_mod_name + "_make_nodeacl,\n" 416 buf += " .fabric_make_nodeacl = " + fabric_mod_name + "_make_nodeacl,\n"
415 buf += " .fabric_drop_nodeacl = " + fabric_mod_name + "_drop_nodeacl,\n" 417 buf += " .fabric_drop_nodeacl = " + fabric_mod_name + "_drop_nodeacl,\n"
416 buf += "};\n\n" 418 buf += "\n"
417 419 buf += " .tfc_wwn_attrs = " + fabric_mod_name + "_wwn_attrs;\n"
418 buf += "static int " + fabric_mod_name + "_register_configfs(void)\n"
419 buf += "{\n"
420 buf += " struct target_fabric_configfs *fabric;\n"
421 buf += " int ret;\n\n"
422 buf += " printk(KERN_INFO \"" + fabric_mod_name.upper() + " fabric module %s on %s/%s\"\n"
423 buf += " \" on \"UTS_RELEASE\"\\n\"," + fabric_mod_name.upper() + "_VERSION, utsname()->sysname,\n"
424 buf += " utsname()->machine);\n"
425 buf += " /*\n"
426 buf += " * Register the top level struct config_item_type with TCM core\n"
427 buf += " */\n"
428 buf += " fabric = target_fabric_configfs_init(THIS_MODULE, \"" + fabric_mod_name + "\");\n"
429 buf += " if (IS_ERR(fabric)) {\n"
430 buf += " printk(KERN_ERR \"target_fabric_configfs_init() failed\\n\");\n"
431 buf += " return PTR_ERR(fabric);\n"
432 buf += " }\n"
433 buf += " /*\n"
434 buf += " * Setup fabric->tf_ops from our local " + fabric_mod_name + "_ops\n"
435 buf += " */\n"
436 buf += " fabric->tf_ops = " + fabric_mod_name + "_ops;\n"
437 buf += " /*\n"
438 buf += " * Setup default attribute lists for various fabric->tf_cit_tmpl\n"
439 buf += " */\n"
440 buf += " fabric->tf_cit_tmpl.tfc_wwn_cit.ct_attrs = " + fabric_mod_name + "_wwn_attrs;\n"
441 buf += " fabric->tf_cit_tmpl.tfc_tpg_base_cit.ct_attrs = NULL;\n"
442 buf += " fabric->tf_cit_tmpl.tfc_tpg_attrib_cit.ct_attrs = NULL;\n"
443 buf += " fabric->tf_cit_tmpl.tfc_tpg_param_cit.ct_attrs = NULL;\n"
444 buf += " fabric->tf_cit_tmpl.tfc_tpg_np_base_cit.ct_attrs = NULL;\n"
445 buf += " fabric->tf_cit_tmpl.tfc_tpg_nacl_base_cit.ct_attrs = NULL;\n"
446 buf += " fabric->tf_cit_tmpl.tfc_tpg_nacl_attrib_cit.ct_attrs = NULL;\n"
447 buf += " fabric->tf_cit_tmpl.tfc_tpg_nacl_auth_cit.ct_attrs = NULL;\n"
448 buf += " fabric->tf_cit_tmpl.tfc_tpg_nacl_param_cit.ct_attrs = NULL;\n"
449 buf += " /*\n"
450 buf += " * Register the fabric for use within TCM\n"
451 buf += " */\n"
452 buf += " ret = target_fabric_configfs_register(fabric);\n"
453 buf += " if (ret < 0) {\n"
454 buf += " printk(KERN_ERR \"target_fabric_configfs_register() failed\"\n"
455 buf += " \" for " + fabric_mod_name.upper() + "\\n\");\n"
456 buf += " return ret;\n"
457 buf += " }\n"
458 buf += " /*\n"
459 buf += " * Setup our local pointer to *fabric\n"
460 buf += " */\n"
461 buf += " " + fabric_mod_name + "_fabric_configfs = fabric;\n"
462 buf += " printk(KERN_INFO \"" + fabric_mod_name.upper() + "[0] - Set fabric -> " + fabric_mod_name + "_fabric_configfs\\n\");\n"
463 buf += " return 0;\n"
464 buf += "};\n\n"
465 buf += "static void __exit " + fabric_mod_name + "_deregister_configfs(void)\n"
466 buf += "{\n"
467 buf += " if (!" + fabric_mod_name + "_fabric_configfs)\n"
468 buf += " return;\n\n"
469 buf += " target_fabric_configfs_deregister(" + fabric_mod_name + "_fabric_configfs);\n"
470 buf += " " + fabric_mod_name + "_fabric_configfs = NULL;\n"
471 buf += " printk(KERN_INFO \"" + fabric_mod_name.upper() + "[0] - Cleared " + fabric_mod_name + "_fabric_configfs\\n\");\n"
472 buf += "};\n\n" 420 buf += "};\n\n"
473 421
474 buf += "static int __init " + fabric_mod_name + "_init(void)\n" 422 buf += "static int __init " + fabric_mod_name + "_init(void)\n"
475 buf += "{\n" 423 buf += "{\n"
476 buf += " int ret;\n\n" 424 buf += " return target_register_template(" + fabric_mod_name + "_ops);\n"
477 buf += " ret = " + fabric_mod_name + "_register_configfs();\n"
478 buf += " if (ret < 0)\n"
479 buf += " return ret;\n\n"
480 buf += " return 0;\n"
481 buf += "};\n\n" 425 buf += "};\n\n"
426
482 buf += "static void __exit " + fabric_mod_name + "_exit(void)\n" 427 buf += "static void __exit " + fabric_mod_name + "_exit(void)\n"
483 buf += "{\n" 428 buf += "{\n"
484 buf += " " + fabric_mod_name + "_deregister_configfs();\n" 429 buf += " target_unregister_template(" + fabric_mod_name + "_ops);\n"
485 buf += "};\n\n" 430 buf += "};\n\n"
486 431
487 buf += "MODULE_DESCRIPTION(\"" + fabric_mod_name.upper() + " series fabric driver\");\n" 432 buf += "MODULE_DESCRIPTION(\"" + fabric_mod_name.upper() + " series fabric driver\");\n"
diff --git a/Documentation/target/tcmu-design.txt b/Documentation/target/tcmu-design.txt
index 5518465290bf..43e94ea6d2ca 100644
--- a/Documentation/target/tcmu-design.txt
+++ b/Documentation/target/tcmu-design.txt
@@ -138,27 +138,40 @@ signals the kernel via a 4-byte write(). When cmd_head equals
138cmd_tail, the ring is empty -- no commands are currently waiting to be 138cmd_tail, the ring is empty -- no commands are currently waiting to be
139processed by userspace. 139processed by userspace.
140 140
141TCMU commands start with a common header containing "len_op", a 32-bit 141TCMU commands are 8-byte aligned. They start with a common header
142value that stores the length, as well as the opcode in the lowest 142containing "len_op", a 32-bit value that stores the length, as well as
143unused bits. Currently only two opcodes are defined, TCMU_OP_PAD and 143the opcode in the lowest unused bits. It also contains cmd_id and
144TCMU_OP_CMD. When userspace encounters a command with PAD opcode, it 144flags fields for setting by the kernel (kflags) and userspace
145should skip ahead by the bytes in "length". (The kernel inserts PAD 145(uflags).
146entries to ensure each CMD entry fits contigously into the circular 146
147buffer.) 147Currently only two opcodes are defined, TCMU_OP_CMD and TCMU_OP_PAD.
148 148
149When userspace handles a CMD, it finds the SCSI CDB (Command Data 149When the opcode is CMD, the entry in the command ring is a struct
150Block) via tcmu_cmd_entry.req.cdb_off. This is an offset from the 150tcmu_cmd_entry. Userspace finds the SCSI CDB (Command Data Block) via
151start of the overall shared memory region, not the entry. The data 151tcmu_cmd_entry.req.cdb_off. This is an offset from the start of the
152in/out buffers are accessible via tht req.iov[] array. Note that 152overall shared memory region, not the entry. The data in/out buffers
153each iov.iov_base is also an offset from the start of the region. 153are accessible via tht req.iov[] array. iov_cnt contains the number of
154 154entries in iov[] needed to describe either the Data-In or Data-Out
155TCMU currently does not support BIDI operations. 155buffers. For bidirectional commands, iov_cnt specifies how many iovec
156entries cover the Data-Out area, and iov_bidi_count specifies how many
157iovec entries immediately after that in iov[] cover the Data-In
158area. Just like other fields, iov.iov_base is an offset from the start
159of the region.
156 160
157When completing a command, userspace sets rsp.scsi_status, and 161When completing a command, userspace sets rsp.scsi_status, and
158rsp.sense_buffer if necessary. Userspace then increments 162rsp.sense_buffer if necessary. Userspace then increments
159mailbox.cmd_tail by entry.hdr.length (mod cmdr_size) and signals the 163mailbox.cmd_tail by entry.hdr.length (mod cmdr_size) and signals the
160kernel via the UIO method, a 4-byte write to the file descriptor. 164kernel via the UIO method, a 4-byte write to the file descriptor.
161 165
166When the opcode is PAD, userspace only updates cmd_tail as above --
167it's a no-op. (The kernel inserts PAD entries to ensure each CMD entry
168is contiguous within the command ring.)
169
170More opcodes may be added in the future. If userspace encounters an
171opcode it does not handle, it must set UNKNOWN_OP bit (bit 0) in
172hdr.uflags, update cmd_tail, and proceed with processing additional
173commands, if any.
174
162The Data Area: 175The Data Area:
163 176
164This is shared-memory space after the command ring. The organization 177This is shared-memory space after the command ring. The organization
diff --git a/Documentation/trace/coresight.txt b/Documentation/trace/coresight.txt
index 02361552a3ea..77d14d51a670 100644
--- a/Documentation/trace/coresight.txt
+++ b/Documentation/trace/coresight.txt
@@ -14,7 +14,7 @@ document is concerned with the latter.
14HW assisted tracing is becoming increasingly useful when dealing with systems 14HW assisted tracing is becoming increasingly useful when dealing with systems
15that have many SoCs and other components like GPU and DMA engines. ARM has 15that have many SoCs and other components like GPU and DMA engines. ARM has
16developed a HW assisted tracing solution by means of different components, each 16developed a HW assisted tracing solution by means of different components, each
17being added to a design at systhesis time to cater to specific tracing needs. 17being added to a design at synthesis time to cater to specific tracing needs.
18Compoments are generally categorised as source, link and sinks and are 18Compoments are generally categorised as source, link and sinks and are
19(usually) discovered using the AMBA bus. 19(usually) discovered using the AMBA bus.
20 20
diff --git a/Documentation/video4linux/v4l2-controls.txt b/Documentation/video4linux/v4l2-controls.txt
index 0f84ce8c9a7b..5517db602f37 100644
--- a/Documentation/video4linux/v4l2-controls.txt
+++ b/Documentation/video4linux/v4l2-controls.txt
@@ -344,7 +344,9 @@ implement g_volatile_ctrl like this:
344 } 344 }
345 345
346Note that you use the 'new value' union as well in g_volatile_ctrl. In general 346Note that you use the 'new value' union as well in g_volatile_ctrl. In general
347controls that need to implement g_volatile_ctrl are read-only controls. 347controls that need to implement g_volatile_ctrl are read-only controls. If they
348are not, a V4L2_EVENT_CTRL_CH_VALUE will not be generated when the control
349changes.
348 350
349To mark a control as volatile you have to set V4L2_CTRL_FLAG_VOLATILE: 351To mark a control as volatile you have to set V4L2_CTRL_FLAG_VOLATILE:
350 352
diff --git a/Documentation/video4linux/v4l2-framework.txt b/Documentation/video4linux/v4l2-framework.txt
index f586e29ce221..59e619f9bbf5 100644
--- a/Documentation/video4linux/v4l2-framework.txt
+++ b/Documentation/video4linux/v4l2-framework.txt
@@ -793,8 +793,8 @@ 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', 'debug' and 'index' attributes. The 'name' 796video0 and you will see 'name', 'dev_debug' and 'index' attributes. The 'name'
797attribute is the 'name' field of the video_device struct. The 'debug' attribute 797attribute is the 'name' field of the video_device struct. The 'dev_debug' attribute
798can be used to enable core debugging. See the next section for more detailed 798can be used to enable core debugging. See the next section for more detailed
799information on this. 799information on this.
800 800
@@ -821,7 +821,7 @@ unregister the device if the registration failed.
821video device debugging 821video device debugging
822---------------------- 822----------------------
823 823
824The 'debug' attribute that is created for each video, vbi, radio or swradio 824The 'dev_debug' attribute that is created for each video, vbi, radio or swradio
825device in /sys/class/video4linux/<devX>/ allows you to enable logging of 825device in /sys/class/video4linux/<devX>/ allows you to enable logging of
826file operations. 826file operations.
827 827
diff --git a/Documentation/video4linux/vivid.txt b/Documentation/video4linux/vivid.txt
index 6cfc8541a362..cd4b5a1ac529 100644
--- a/Documentation/video4linux/vivid.txt
+++ b/Documentation/video4linux/vivid.txt
@@ -912,6 +912,11 @@ looped to the video input provided that:
912 sequence and field counting in struct v4l2_buffer on the capture side may not 912 sequence and field counting in struct v4l2_buffer on the capture side may not
913 be 100% accurate. 913 be 100% accurate.
914 914
915- field settings V4L2_FIELD_SEQ_TB/BT are not supported. While it is possible to
916 implement this, it would mean a lot of work to get this right. Since these
917 field values are rarely used the decision was made not to implement this for
918 now.
919
915- on the input side the "Standard Signal Mode" for the S-Video input or the 920- on the input side the "Standard Signal Mode" for the S-Video input or the
916 "DV Timings Signal Mode" for the HDMI input should be configured so that a 921 "DV Timings Signal Mode" for the HDMI input should be configured so that a
917 valid signal is passed to the video input. 922 valid signal is passed to the video input.
diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt
index bc9f6fe44e27..9fa2bf8c3f6f 100644
--- a/Documentation/virtual/kvm/api.txt
+++ b/Documentation/virtual/kvm/api.txt
@@ -3573,3 +3573,20 @@ struct {
3573@ar - access register number 3573@ar - access register number
3574 3574
3575KVM handlers should exit to userspace with rc = -EREMOTE. 3575KVM handlers should exit to userspace with rc = -EREMOTE.
3576
3577
35788. Other capabilities.
3579----------------------
3580
3581This section lists capabilities that give information about other
3582features of the KVM implementation.
3583
35848.1 KVM_CAP_PPC_HWRNG
3585
3586Architectures: ppc
3587
3588This capability, if KVM_CHECK_EXTENSION indicates that it is
3589available, means that that the kernel has an implementation of the
3590H_RANDOM hypercall backed by a hardware random-number generator.
3591If present, the kernel H_RANDOM handler can be enabled for guest use
3592with the KVM_CAP_PPC_ENABLE_HCALL capability.
diff --git a/Documentation/vm/pagemap.txt b/Documentation/vm/pagemap.txt
index 6fbd55ef6b45..6bfbc172cdb9 100644
--- a/Documentation/vm/pagemap.txt
+++ b/Documentation/vm/pagemap.txt
@@ -131,7 +131,8 @@ Short descriptions to the page flags:
13113. SWAPCACHE page is mapped to swap space, ie. has an associated swap entry 13113. SWAPCACHE page is mapped to swap space, ie. has an associated swap entry
13214. SWAPBACKED page is backed by swap/RAM 13214. SWAPBACKED page is backed by swap/RAM
133 133
134The page-types tool in this directory can be used to query the above flags. 134The page-types tool in the tools/vm directory can be used to query the
135above flags.
135 136
136Using pagemap to do something useful: 137Using pagemap to do something useful:
137 138
diff --git a/Documentation/vm/transhuge.txt b/Documentation/vm/transhuge.txt
index 6b31cfbe2a9a..8143b9e8373d 100644
--- a/Documentation/vm/transhuge.txt
+++ b/Documentation/vm/transhuge.txt
@@ -159,6 +159,17 @@ for each pass:
159 159
160/sys/kernel/mm/transparent_hugepage/khugepaged/full_scans 160/sys/kernel/mm/transparent_hugepage/khugepaged/full_scans
161 161
162max_ptes_none specifies how many extra small pages (that are
163not already mapped) can be allocated when collapsing a group
164of small pages into one large page.
165
166/sys/kernel/mm/transparent_hugepage/khugepaged/max_ptes_none
167
168A higher value leads to use additional memory for programs.
169A lower value leads to gain less thp performance. Value of
170max_ptes_none can waste cpu time very little, you can
171ignore it.
172
162== Boot parameter == 173== Boot parameter ==
163 174
164You can change the sysfs boot time defaults of Transparent Hugepage 175You can change the sysfs boot time defaults of Transparent Hugepage
diff --git a/Documentation/zh_CN/arm64/booting.txt b/Documentation/zh_CN/arm64/booting.txt
index 6f6d956ac1c9..7cd36af11e71 100644
--- a/Documentation/zh_CN/arm64/booting.txt
+++ b/Documentation/zh_CN/arm64/booting.txt
@@ -15,6 +15,8 @@ Documentation/arm64/booting.txt 的中文翻译
15交流有困难的话,也可以向中文版维护者求助。如果本翻译更新不及时或者翻 15交流有困难的话,也可以向中文版维护者求助。如果本翻译更新不及时或者翻
16译存在问题,请联系中文版维护者。 16译存在问题,请联系中文版维护者。
17 17
18本文翻译提交时的 Git 检出点为: bc465aa9d045feb0e13b4a8f32cc33c1943f62d6
19
18英文版维护者: Will Deacon <will.deacon@arm.com> 20英文版维护者: Will Deacon <will.deacon@arm.com>
19中文版维护者: 傅炜 Fu Wei <wefu@redhat.com> 21中文版维护者: 傅炜 Fu Wei <wefu@redhat.com>
20中文版翻译者: 傅炜 Fu Wei <wefu@redhat.com> 22中文版翻译者: 傅炜 Fu Wei <wefu@redhat.com>
@@ -88,22 +90,44 @@ AArch64 内核当前没有提供自解压代码,因此如果使用了压缩内
88 90
89 u32 code0; /* 可执行代码 */ 91 u32 code0; /* 可执行代码 */
90 u32 code1; /* 可执行代码 */ 92 u32 code1; /* 可执行代码 */
91 u64 text_offset; /* 映像装载偏移 */ 93 u64 text_offset; /* 映像装载偏移,小端模式 */
92 u64 res0 = 0; /* */ 94 u64 image_size; /* 映像实大小, 小端模式 */
93 u64 res1 = 0; /* */ 95 u64 flags; /* 内核旗标, 小模式 *
94 u64 res2 = 0; /* 保留 */ 96 u64 res2 = 0; /* 保留 */
95 u64 res3 = 0; /* 保留 */ 97 u64 res3 = 0; /* 保留 */
96 u64 res4 = 0; /* 保留 */ 98 u64 res4 = 0; /* 保留 */
97 u32 magic = 0x644d5241; /* 魔数, 小端, "ARM\x64" */ 99 u32 magic = 0x644d5241; /* 魔数, 小端, "ARM\x64" */
98 u32 res5 = 0; /* 保留 */ 100 u32 res5; /* 保留 (用于 PE COFF 偏移) */
99 101
100 102
101映像头注释: 103映像头注释:
102 104
105- 自 v3.17 起,除非另有说明,所有域都是小端模式。
106
103- code0/code1 负责跳转到 stext. 107- code0/code1 负责跳转到 stext.
104 108
105映像必须位于系统 RAM 起始处的特定偏移(当前是 0x80000)。系统 RAM 109- 当通过 EFI 启动时, 最初 code0/code1 被跳过。
106的起始地址必须是以 2MB 对齐的。 110 res5 是到 PE 文件头的偏移,而 PE 文件头含有 EFI 的启动入口点 (efi_stub_entry)。
111 当 stub 代码完成了它的使命,它会跳转到 code0 继续正常的启动流程。
112
113- v3.17 之前,未明确指定 text_offset 的字节序。此时,image_size 为零,
114 且 text_offset 依照内核字节序为 0x80000。
115 当 image_size 非零,text_offset 为小端模式且是有效值,应被引导加载程序使用。
116 当 image_size 为零,text_offset 可假定为 0x80000。
117
118- flags 域 (v3.17 引入) 为 64 位小端模式,其编码如下:
119 位 0: 内核字节序。 1 表示大端模式,0 表示小端模式。
120 位 1-63: 保留。
121
122- 当 image_size 为零时,引导装载程序应该试图在内核映像末尾之后尽可能多地保留空闲内存
123 供内核直接使用。对内存空间的需求量因所选定的内核特性而异, 且无实际限制。
124
125内核映像必须被放置在靠近可用系统内存起始的 2MB 对齐为基址的 text_offset 字节处,并从那里被调用。
126当前,对 Linux 来说在此基址以下的内存是无法使用的,因此强烈建议将系统内存的起始作为这个基址。
127从映像起始地址算起,最少必须为内核释放出 image_size 字节的空间。
128
129任何提供给内核的内存(甚至在 2MB 对齐的基地址之前),若未从内核中标记为保留
130(如在设备树(dtb)的 memreserve 区域),都将被认为对内核是可用。
107 131
108在跳转入内核前,必须符合以下状态: 132在跳转入内核前,必须符合以下状态:
109 133
@@ -124,8 +148,12 @@ AArch64 内核当前没有提供自解压代码,因此如果使用了压缩内
124- 高速缓存、MMU 148- 高速缓存、MMU
125 MMU 必须关闭。 149 MMU 必须关闭。
126 指令缓存开启或关闭都可以。 150 指令缓存开启或关闭都可以。
127 数据缓存必须关闭且无效。 151 已载入的内核映像的相应内存区必须被清理,以达到缓存一致性点(PoC)。
128 外部高速缓存(如果存在)必须配置并禁用。 152 当存在系统缓存或其他使能缓存的一致性主控器时,通常需使用虚拟地址维护其缓存,而非 set/way 操作。
153 遵从通过虚拟地址操作维护构架缓存的系统缓存必须被配置,并可以被使能。
154 而不通过虚拟地址操作维护构架缓存的系统缓存(不推荐),必须被配置且禁用。
155
156 *译者注:对于 PoC 以及缓存相关内容,请参考 ARMv8 构架参考手册 ARM DDI 0487A
129 157
130- 架构计时器 158- 架构计时器
131 CNTFRQ 必须设定为计时器的频率,且 CNTVOFF 必须设定为对所有 CPU 159 CNTFRQ 必须设定为计时器的频率,且 CNTVOFF 必须设定为对所有 CPU
@@ -141,6 +169,14 @@ AArch64 内核当前没有提供自解压代码,因此如果使用了压缩内
141 在进入内核映像的异常级中,所有构架中可写的系统寄存器必须通过软件 169 在进入内核映像的异常级中,所有构架中可写的系统寄存器必须通过软件
142 在一个更高的异常级别下初始化,以防止在 未知 状态下运行。 170 在一个更高的异常级别下初始化,以防止在 未知 状态下运行。
143 171
172 对于拥有 GICv3 中断控制器的系统:
173 - 若当前在 EL3 :
174 ICC_SRE_EL3.Enable (位 3) 必须初始化为 0b1。
175 ICC_SRE_EL3.SRE (位 0) 必须初始化为 0b1。
176 - 若内核运行在 EL1:
177 ICC_SRE_EL2.Enable (位 3) 必须初始化为 0b1。
178 ICC_SRE_EL2.SRE (位 0) 必须初始化为 0b1。
179
144以上对于 CPU 模式、高速缓存、MMU、架构计时器、一致性、系统寄存器的 180以上对于 CPU 模式、高速缓存、MMU、架构计时器、一致性、系统寄存器的
145必要条件描述适用于所有 CPU。所有 CPU 必须在同一异常级别跳入内核。 181必要条件描述适用于所有 CPU。所有 CPU 必须在同一异常级别跳入内核。
146 182
@@ -170,7 +206,7 @@ AArch64 内核当前没有提供自解压代码,因此如果使用了压缩内
170 ARM DEN 0022A:用于 ARM 上的电源状态协调接口系统软件)中描述的 206 ARM DEN 0022A:用于 ARM 上的电源状态协调接口系统软件)中描述的
171 CPU_ON 调用来将 CPU 带入内核。 207 CPU_ON 调用来将 CPU 带入内核。
172 208
173 *译者注:文档翻译时,此文档更新 ARM DEN 0022B 209 *译者注: ARM DEN 0022A 已更新 ARM DEN 0022C
174 210
175 设备树必须包含一个 ‘psci’ 节点,请参考以下文档: 211 设备树必须包含一个 ‘psci’ 节点,请参考以下文档:
176 Documentation/devicetree/bindings/arm/psci.txt 212 Documentation/devicetree/bindings/arm/psci.txt
diff --git a/Documentation/zh_CN/arm64/legacy_instructions.txt b/Documentation/zh_CN/arm64/legacy_instructions.txt
new file mode 100644
index 000000000000..68362a1ab717
--- /dev/null
+++ b/Documentation/zh_CN/arm64/legacy_instructions.txt
@@ -0,0 +1,72 @@
1Chinese translated version of Documentation/arm64/legacy_instructions.txt
2
3If you have any comment or update to the content, please contact the
4original document maintainer directly. However, if you have a problem
5communicating in English you can also ask the Chinese maintainer for
6help. Contact the Chinese maintainer if this translation is outdated
7or if there is a problem with the translation.
8
9Maintainer: Punit Agrawal <punit.agrawal@arm.com>
10 Suzuki K. Poulose <suzuki.poulose@arm.com>
11Chinese maintainer: Fu Wei <wefu@redhat.com>
12---------------------------------------------------------------------
13Documentation/arm64/legacy_instructions.txt 的中文翻译
14
15如果想评论或更新本文的内容,请直接联系原文档的维护者。如果你使用英文
16交流有困难的话,也可以向中文版维护者求助。如果本翻译更新不及时或者翻
17译存在问题,请联系中文版维护者。
18
19本文翻译提交时的 Git 检出点为: bc465aa9d045feb0e13b4a8f32cc33c1943f62d6
20
21英文版维护者: Punit Agrawal <punit.agrawal@arm.com>
22 Suzuki K. Poulose <suzuki.poulose@arm.com>
23中文版维护者: 傅炜 Fu Wei <wefu@redhat.com>
24中文版翻译者: 傅炜 Fu Wei <wefu@redhat.com>
25中文版校译者: 傅炜 Fu Wei <wefu@redhat.com>
26
27以下为正文
28---------------------------------------------------------------------
29Linux 内核在 arm64 上的移植提供了一个基础框架,以支持构架中正在被淘汰或已废弃指令的模拟执行。
30这个基础框架的代码使用未定义指令钩子(hooks)来支持模拟。如果指令存在,它也允许在硬件中启用该指令。
31
32模拟模式可通过写 sysctl 节点(/proc/sys/abi)来控制。
33不同的执行方式及 sysctl 节点的相应值,解释如下:
34
35* Undef(未定义)
36 值: 0
37 产生未定义指令终止异常。它是那些构架中已废弃的指令,如 SWP,的默认处理方式。
38
39* Emulate(模拟)
40 值: 1
41 使用软件模拟方式。为解决软件迁移问题,这种模拟指令模式的使用是被跟踪的,并会发出速率限制警告。
42 它是那些构架中正在被淘汰的指令,如 CP15 barriers(隔离指令),的默认处理方式。
43
44* Hardware Execution(硬件执行)
45 值: 2
46 虽然标记为正在被淘汰,但一些实现可能提供硬件执行这些指令的使能/禁用操作。
47 使用硬件执行一般会有更好的性能,但将无法收集运行时对正被淘汰指令的使用统计数据。
48
49默认执行模式依赖于指令在构架中状态。正在被淘汰的指令应该以模拟(Emulate)作为默认模式,
50而已废弃的指令必须默认使用未定义(Undef)模式
51
52注意:指令模拟可能无法应对所有情况。更多详情请参考单独的指令注释。
53
54受支持的遗留指令
55-------------
56* SWP{B}
57节点: /proc/sys/abi/swp
58状态: 已废弃
59默认执行方式: Undef (0)
60
61* CP15 Barriers
62节点: /proc/sys/abi/cp15_barrier
63状态: 正被淘汰,不推荐使用
64默认执行方式: Emulate (1)
65
66* SETEND
67节点: /proc/sys/abi/setend
68状态: 正被淘汰,不推荐使用
69默认执行方式: Emulate (1)*
70注:为了使能这个特性,系统中的所有 CPU 必须在 EL0 支持混合字节序。
71如果一个新的 CPU (不支持混合字节序) 在使能这个特性后被热插入系统,
72在应用中可能会出现不可预期的结果。
diff --git a/Documentation/zh_CN/arm64/memory.txt b/Documentation/zh_CN/arm64/memory.txt
index a782704c1cb5..19b3a52d5d94 100644
--- a/Documentation/zh_CN/arm64/memory.txt
+++ b/Documentation/zh_CN/arm64/memory.txt
@@ -15,6 +15,8 @@ Documentation/arm64/memory.txt 的中文翻译
15交流有困难的话,也可以向中文版维护者求助。如果本翻译更新不及时或者翻 15交流有困难的话,也可以向中文版维护者求助。如果本翻译更新不及时或者翻
16译存在问题,请联系中文版维护者。 16译存在问题,请联系中文版维护者。
17 17
18本文翻译提交时的 Git 检出点为: bc465aa9d045feb0e13b4a8f32cc33c1943f62d6
19
18英文版维护者: Catalin Marinas <catalin.marinas@arm.com> 20英文版维护者: Catalin Marinas <catalin.marinas@arm.com>
19中文版维护者: 傅炜 Fu Wei <wefu@redhat.com> 21中文版维护者: 傅炜 Fu Wei <wefu@redhat.com>
20中文版翻译者: 傅炜 Fu Wei <wefu@redhat.com> 22中文版翻译者: 傅炜 Fu Wei <wefu@redhat.com>
@@ -26,69 +28,53 @@ Documentation/arm64/memory.txt 的中文翻译
26 =========================== 28 ===========================
27 29
28作者: Catalin Marinas <catalin.marinas@arm.com> 30作者: Catalin Marinas <catalin.marinas@arm.com>
29日期: 2012 年 02 月 20 日
30 31
31本文档描述 AArch64 Linux 内核所使用的虚拟内存布局。此构架可以实现 32本文档描述 AArch64 Linux 内核所使用的虚拟内存布局。此构架可以实现
32页大小为 4KB 的 4 级转换表和页大小为 64KB 的 3 级转换表。 33页大小为 4KB 的 4 级转换表和页大小为 64KB 的 3 级转换表。
33 34
34AArch64 Linux 使用页大小为 4KB 3 级转换表配置,对于用户和内核 35AArch64 Linux 使用 3 4 级转换表,其大小为 4KB,对于用户和内核
35都有 39-bit (512GB) 的虚拟地址空间。对于页大小为 64KB的配置,仅 36分别都有 39-bit (512GB) 或 48-bit (256TB) 的虚拟地址空间。
36使用 2 级转换表,但内存布局相同。 37页大小为 64KB的配,仅用 2 级转换表,有 42-bit (4TB) 的虚拟地址空间,但内存布局相同。
37 38
38用户地址空间的 63:39 位为 0,而内核地址空间的相应位为 1。TTBRx 的 39用户地址空间的 63:48 位为 0,而内核地址空间的相应位为 1。TTBRx 的
39选择由虚拟地址的 63 位给出。swapper_pg_dir 仅包含内核(全局)映射, 40选择由虚拟地址的 63 位给出。swapper_pg_dir 仅包含内核(全局)映射,
40而用户 pgd 仅包含用户(非全局)映射。swapper_pgd_dir 地址被写入 41而用户 pgd 仅包含用户(非全局)映射。swapper_pg_dir 地址被写入
41TTBR1 中,且从不写入 TTBR0。 42TTBR1 中,且从不写入 TTBR0。
42 43
43 44
44AArch64 Linux 在页大小为 4KB 时的内存布局: 45AArch64 Linux 在页大小为 4KB,并使用 3 级转的内存布局:
45 46
46起始地址 结束地址 大小 用途 47起始地址 结束地址 大小 用途
47----------------------------------------------------------------------- 48-----------------------------------------------------------------------
480000000000000000 0000007fffffffff 512GB 用户空间 490000000000000000 0000007fffffffff 512GB 用户空间
50ffffff8000000000 ffffffffffffffff 512GB 内核空间
49 51
50ffffff8000000000 ffffffbbfffeffff ~240GB vmalloc
51
52ffffffbbffff0000 ffffffbbffffffff 64KB [防护页]
53
54ffffffbc00000000 ffffffbdffffffff 8GB vmemmap
55
56ffffffbe00000000 ffffffbffbbfffff ~8GB [防护页,未来用于 vmmemap]
57 52
58ffffffbffbc00000 ffffffbffbdfffff 2MB earlyprintk 53AArch64 Linux 在页大小为 4KB,并使用 4 换表时的存布局:
59 54
60ffffffbffbe00000 ffffffbffbe0ffff 64KB PCI I/O 空间 55起始地址 结束地址 大小 用途
61 56-----------------------------------------------------------------------
62ffffffbffbe10000 ffffffbcffffffff ~2MB [防护页] 570000000000000000 0000ffffffffffff 256TB 用户空间
63 58ffff000000000000 ffffffffffffffff 256TB 内核空间
64ffffffbffc000000 ffffffbfffffffff 64MB 模块
65
66ffffffc000000000 ffffffffffffffff 256GB 内核逻辑内存映射
67 59
68 60
69AArch64 Linux 在页大小为 64KB 时的内存布局: 61AArch64 Linux 在页大小为 64KB,并使用 2 级转的内存布局:
70 62
71起始地址 结束地址 大小 用途 63起始地址 结束地址 大小 用途
72----------------------------------------------------------------------- 64-----------------------------------------------------------------------
730000000000000000 000003ffffffffff 4TB 用户空间 650000000000000000 000003ffffffffff 4TB 用户空间
66fffffc0000000000 ffffffffffffffff 4TB 内核空间
74 67
75fffffc0000000000 fffffdfbfffeffff ~2TB vmalloc
76
77fffffdfbffff0000 fffffdfbffffffff 64KB [防护页]
78
79fffffdfc00000000 fffffdfdffffffff 8GB vmemmap
80
81fffffdfe00000000 fffffdfffbbfffff ~8GB [防护页,未来用于 vmmemap]
82 68
83fffffdfffbc00000 fffffdfffbdfffff 2MB earlyprintk 69AArch64 Linux 在页大小为 64KB,并使用 3 换表时的存布局:
84 70
85fffffdfffbe00000 fffffdfffbe0ffff 64KB PCI I/O 空间 71起始地址 结束地址 大小 用途
86 72-----------------------------------------------------------------------
87fffffdfffbe10000 fffffdfffbffffff ~2MB [防护页] 730000000000000000 0000ffffffffffff 256TB 用户空间
74ffff000000000000 ffffffffffffffff 256TB 内核空间
88 75
89fffffdfffc000000 fffffdffffffffff 64MB 模块
90 76
91fffffe0000000000 ffffffffffffffff 2TB 内核内存 77更详细的内核内存布局,请参动信息。
92 78
93 79
944KB 页大小的转换表查找: 804KB 页大小的转换表查找:
@@ -102,7 +88,7 @@ fffffe0000000000 ffffffffffffffff 2TB 内核逻辑内存映射
102 | | | | +-> [20:12] L3 索引 88 | | | | +-> [20:12] L3 索引
103 | | | +-----------> [29:21] L2 索引 89 | | | +-----------> [29:21] L2 索引
104 | | +---------------------> [38:30] L1 索引 90 | | +---------------------> [38:30] L1 索引
105 | +-------------------------------> [47:39] L0 索引 (未使用) 91 | +-------------------------------> [47:39] L0 索引
106 +-------------------------------------------------> [63] TTBR0/1 92 +-------------------------------------------------> [63] TTBR0/1
107 93
108 94
@@ -115,10 +101,11 @@ fffffe0000000000 ffffffffffffffff 2TB 内核逻辑内存映射
115 | | | | v 101 | | | | v
116 | | | | [15:0] 页内偏移 102 | | | | [15:0] 页内偏移
117 | | | +----------> [28:16] L3 索引 103 | | | +----------> [28:16] L3 索引
118 | | +--------------------------> [41:29] L2 索引 (仅使用 38:29 ) 104 | | +--------------------------> [41:29] L2 索引
119 | +-------------------------------> [47:42] L1 索引 (未使用) 105 | +-------------------------------> [47:42] L1 索引
120 +-------------------------------------------------> [63] TTBR0/1 106 +-------------------------------------------------> [63] TTBR0/1
121 107
108
122当使用 KVM 时, 管理程序(hypervisor)在 EL2 中通过相对内核虚拟地址的 109当使用 KVM 时, 管理程序(hypervisor)在 EL2 中通过相对内核虚拟地址的
123一个固定偏移来映射内核页(内核虚拟地址的高 24 位设为零): 110一个固定偏移来映射内核页(内核虚拟地址的高 24 位设为零):
124 111